feat: 更新配置 API

This commit is contained in:
bunny 2025-04-26 10:25:12 +08:00
parent a461e0d1dd
commit cc209888f6
14 changed files with 74 additions and 50 deletions

View File

@ -2,11 +2,11 @@ import { http } from '@/api/service/request';
import type { BaseResult } from '@/api/service/types';
/** 获取修改前端配置文件 */
export const fetchGetWebConfig = () => {
return http.request<BaseResult<any>>('get', '/config/getWebConfig');
export const getWebConfig = () => {
return http.request<BaseResult<any>>('get', '/config');
};
/** 更新web配置文件 */
export const fetchUpdateWebConfiguration = (data: any) => {
return http.request<BaseResult<any>>('put', '/config/updateWebConfiguration', { data });
export const updateWebConfiguration = (data: any) => {
return http.request<BaseResult<any>>('put', '/config', { data });
};

View File

@ -2,22 +2,20 @@ import { http } from '@/api/service/request';
import type { BaseResult, ResultTable } from '@/api/service/types';
/** 邮件模板表---获取邮件模板表列表 */
export const fetchGetEmailTemplateList = (data: any) => {
return http.request<BaseResult<ResultTable>>(
'get',
`emailTemplate/getEmailTemplateList/${data.currentPage}/${data.pageSize}`,
{ params: data }
);
export const getEmailTemplatePage = (data: any) => {
return http.request<BaseResult<ResultTable>>('get', `emailTemplate/query/page/${data.currentPage}/${data.pageSize}`, {
params: data,
});
};
/** 邮件模板表---获取模板类型字段 */
export const fetchGetEmailTypes = () => {
return http.request<BaseResult<any>>('get', 'emailTemplate/getEmailTypes');
export const getEmailTypeList = () => {
return http.request<BaseResult<any>>('get', 'emailTemplate/query/emailTypes');
};
/** 邮件模板表---添加邮件模板表 */
export const fetchAddEmailTemplate = (data: any) => {
return http.request<BaseResult<object>>('post', 'emailTemplate/addEmailTemplate', { data });
export const addEmailTemplate = (data: any) => {
return http.request<BaseResult<object>>('post', 'emailTemplate/add/emailTemplate', { data });
};
/** 邮件模板表---更新邮件模板表 */

View File

@ -50,3 +50,5 @@ export const tableSelectButtonClass = computed(() => [
export const UserAvatar =
'https://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eoj0hHXhgJNOTSOFsS4uZs8x1ConecaVOB8eIl115xmJZcT4oCicvia7wMEufibKtTLqiaJeanU2Lpg3w/132';
export const RequestMethod = ['GET', 'PUT', 'POST', 'DELETE', 'HEAD', 'CONNECT', 'OPTIONS', 'TRACE', 'PATCH'];

View File

@ -1,10 +1,10 @@
import { defineStore } from 'pinia';
import {
fetchAddEmailTemplate,
addEmailTemplate,
fetchDeleteEmailTemplate,
fetchGetEmailTemplateList,
fetchGetEmailTypes,
fetchUpdateEmailTemplate,
getEmailTemplatePage,
getEmailTypeList,
} from '@/api/v1/email/emailTemplate';
import { pageSizes } from '@/enums/baseConstant';
import { storeMessage } from '@/utils/message';
@ -54,7 +54,7 @@ export const useEmailTemplateStore = defineStore('emailTemplateStore', {
},
actions: {
/** 获取邮件模板表 */
async getEmailTemplateList() {
async fetchEmailTemplatePage() {
// 整理请求参数
const data = { ...this.pagination, ...this.form };
delete data.pageSizes;
@ -62,7 +62,7 @@ export const useEmailTemplateStore = defineStore('emailTemplateStore', {
delete data.background;
// 获取邮件模板表列表
const result = await fetchGetEmailTemplateList(data);
const result = await getEmailTemplatePage(data);
// 公共页面函数hook
const pagination = storePagination.bind(this);
@ -78,15 +78,15 @@ export const useEmailTemplateStore = defineStore('emailTemplateStore', {
},
/** 获取模板类型字段 */
async getEmailTypes() {
const result = await fetchGetEmailTypes();
async loadEmailTypeList() {
const result = await getEmailTypeList();
if (result.code !== 200) return;
this.allEmailTypes = result.data;
},
/** 添加邮件模板表 */
async addEmailTemplate(data: any) {
const result = await fetchAddEmailTemplate(data);
const result = await addEmailTemplate(data);
return storeMessage(result);
},

View File

@ -29,6 +29,8 @@ export const usePowerStore = defineStore('powerStore', {
powerName: undefined,
// 请求路径
requestUrl: undefined,
// 请求方法
requestMethod: undefined,
},
// 分页查询结果
pagination: {

View File

@ -31,7 +31,7 @@ const formRef = ref<FormInstance>();
const form = ref(props.formInline);
onMounted(() => {
emailTemplateStore.getEmailTypes();
emailTemplateStore.loadEmailTypeList();
});
defineExpose({ formRef });

View File

@ -15,7 +15,7 @@ export const selectRows = ref([]);
/** 搜索初始化邮件模板表 */
export async function onSearch() {
emailTemplateStore.loading = true;
await emailTemplateStore.getEmailTemplateList();
await emailTemplateStore.fetchEmailTemplatePage();
emailTemplateStore.loading = false;
}

View File

@ -1,6 +1,6 @@
import { ref } from 'vue';
import type { FormInstance } from 'element-plus';
import { fetchGetWebConfig, fetchUpdateWebConfiguration } from '@/api/v1/configuration';
import { getWebConfig, updateWebConfiguration } from '@/api/v1/configuration';
import { message, messageBox } from '@/utils/message';
import { $t } from '@/plugins/i18n';
@ -35,7 +35,7 @@ export const form = ref({
/** 获取前端配置文件 */
export const onSearch = async () => {
const result = await fetchGetWebConfig();
const result = await getWebConfig();
if (result.code !== 200) return;
const data = result.data;
@ -82,7 +82,7 @@ export const submitForm = async (formEl: FormInstance | undefined) => {
if (!confirm) return;
// 修改内容
const result = await fetchUpdateWebConfiguration(form.value);
const result = await updateWebConfiguration(form.value);
if (result.code !== 200) return;
// 提交成功后刷新

View File

@ -1,4 +1,4 @@
import editForm from '@/views/system/menu/components/menu-dialog.vue';
import EditForm from '@/views/system/menu/components/menu-dialog.vue';
import { $t } from '@/plugins/i18n';
import { addDialog, closeAllDialog } from '@/components/ReDialog/index';
import { h, ref } from 'vue';
@ -40,8 +40,8 @@ function onAdd(parentId: any = 0) {
icon: '',
id: '',
extraIcon: '',
enterTransition: 'fade',
leaveTransition: 'fade',
enterTransition: 'fade-transform',
leaveTransition: 'fade-transform',
activePath: '',
redirect: '',
roles: [],
@ -58,7 +58,7 @@ function onAdd(parentId: any = 0) {
draggable: true,
closeOnClickModal: false,
fullscreenIcon: true,
contentRenderer: () => h(editForm, { ref: dialogFormRef }),
contentRenderer: () => h(EditForm, { ref: dialogFormRef }),
beforeSure: (done, { options }) => {
const menuFormRef = dialogFormRef.value.menuFormRef;
const curData = options.props.formInline as FormItemProps;
@ -115,7 +115,7 @@ function onUpdate(row?: FormItemProps) {
fullscreen: deviceDetection(),
fullscreenIcon: true,
closeOnClickModal: false,
contentRenderer: () => h(editForm, { ref: dialogFormRef }),
contentRenderer: () => h(EditForm, { ref: dialogFormRef }),
beforeSure: (done, { options }) => {
const menuFormRef = dialogFormRef.value.menuFormRef;
const curData = options.props.formInline as FormItemProps;
@ -193,12 +193,13 @@ export const clearAllRolesSelect = async () => {
/* 更新是整理后端参数 */
export const mergeArgs = (curData: any) => {
// 判断 入场 和 离场动画是否添加
let transition = { enterTransition: 'fade', leaveTransition: 'fade' };
const enterTransition = curData.enterTransition;
const leaveTransition = curData.leaveTransition;
transition.enterTransition = enterTransition ? `animate__${enterTransition}` : 'fade';
transition.leaveTransition = leaveTransition ? `animate__${leaveTransition}` : 'fade';
let transition = { enterTransition: '', leaveTransition: '' };
transition.enterTransition = enterTransition ? `animate__${enterTransition}` : '';
transition.leaveTransition = leaveTransition ? `animate__${leaveTransition}` : '';
// 整理参数返回后端
return {

View File

@ -5,6 +5,7 @@ import { FormProps, powerCascadeProps, rules } from '@/views/system/permission/u
import { $t } from '@/plugins/i18n';
import { handleTree } from '@pureadmin/utils';
import { usePowerStore } from '@/store/system/power';
import { RequestMethod } from '@/enums/baseConstant';
const props = withDefaults(defineProps<FormProps>(), {
formInline: () => ({
@ -16,6 +17,8 @@ const props = withDefaults(defineProps<FormProps>(), {
powerName: undefined,
//
requestUrl: undefined,
//
requestMethod: undefined,
}),
});
@ -52,5 +55,16 @@ defineExpose({ formRef });
<el-form-item :label="$t('power_requestUrl')" prop="requestUrl">
<el-input v-model="form.requestUrl" :placeholder="$t('inputRequestUrlTip')" autocomplete="off" type="text" />
</el-form-item>
<el-form-item :label="$t('requestMethod')" prop="requestMethod">
<el-select
v-model="form.requestMethod"
:placeholder="$t('requestMethod')"
autocomplete="off"
clearable
filterable
>
<el-option v-for="item in RequestMethod" :key="item" :label="item" :value="item" />
</el-select>
</el-form-item>
</el-form>
</template>

View File

@ -25,6 +25,7 @@ import { handleTree } from '@pureadmin/utils';
import { FormInstance } from 'element-plus';
import { hasAuth } from '@/router/utils';
import ReAuth from '@/components/ReAuth/src/auth';
import { RequestMethod } from '@/enums/baseConstant';
defineOptions({ name: 'PermissionManger' });
@ -33,35 +34,24 @@ const formRef = ref();
const powerStore = usePowerStore();
const datalist = computed(() => handleTree(powerStore.datalist));
/**
* * 当前页改变时
*/
/* 当前页改变时 */
const onCurrentPageChange = async (value: number) => {
powerStore.pagination.currentPage = value;
await onSearch();
};
/**
* * 当分页发生变化
* @param value
*/
/* 当分页发生变化 */
const onPageSizeChange = async (value: number) => {
powerStore.pagination.pageSize = value;
await onSearch();
};
/**
* * 选择多行
* @param rows
*/
/* 选择多行 */
const onSelectionChange = (rows: Array<any>) => {
powerIds.value = rows.map((row: any) => row.id);
};
/**
* 重置表单
* @param formEl
*/
/* 重置表单 */
const resetForm = async (formEl: FormInstance) => {
if (!formEl) return;
formEl.resetFields();
@ -106,6 +96,18 @@ onMounted(() => {
clearable
/>
</el-form-item>
<el-form-item :label="$t('requestMethod')" prop="requestMethod">
<el-select
v-model="powerStore.form.requestMethod"
:placeholder="$t('requestMethod')"
autocomplete="off"
class="!w-[180px]"
clearable
filterable
>
<el-option v-for="item in RequestMethod" :key="item" :label="item" :value="item" />
</el-select>
</el-form-item>
<el-form-item>
<el-button
:icon="useRenderIcon('ri:search-line')"

View File

@ -12,6 +12,7 @@ export const columns: TableColumnList = [
{ label: $t('power_powerName'), prop: 'powerName', minWidth: 320 },
// 请求路径
{ label: $t('power_requestUrl'), prop: 'requestUrl', minWidth: 360 },
{ label: $t('requestMethod'), prop: 'requestMethod', minWidth: 360 },
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true, minWidth: 160 },
{ label: $t('table.createTime'), prop: 'createTime', sortable: true, minWidth: 160 },
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', minWidth: 130 },

View File

@ -33,6 +33,7 @@ export function onAdd(parentId = 0) {
powerCode: undefined,
powerName: undefined,
requestUrl: undefined,
requestMethod: undefined,
},
},
draggable: true,
@ -67,6 +68,7 @@ export function onUpdate(row: any) {
powerCode: row.powerCode,
powerName: row.powerName,
requestUrl: row.requestUrl,
requestMethod: row.requestMethod,
},
},
draggable: true,

View File

@ -8,6 +8,8 @@ export interface FormItemProps {
powerName: string;
// 请求路径
requestUrl: string;
// 请求方法
requestMethod: string;
}
// 添加或修改表单Props