feat: 🚀 获取所有邮件模板内容,修复路由添加和更新问题
This commit is contained in:
parent
c72d9587ff
commit
c8fc4d7249
|
@ -1,30 +1,27 @@
|
||||||
import { http } from '@/api/service/request';
|
import { http } from '@/api/service/request';
|
||||||
import type { BaseResult, ResultTable } from '@/api/service/types';
|
import type { BaseResult, ResultTable } from '@/api/service/types';
|
||||||
|
|
||||||
/**
|
/** 邮件模板表---获取邮件模板表列表 */
|
||||||
* 邮件模板表---获取邮件模板表列表
|
|
||||||
*/
|
|
||||||
export const fetchGetEmailTemplateList = (data: any) => {
|
export const fetchGetEmailTemplateList = (data: any) => {
|
||||||
return http.request<BaseResult<ResultTable>>('get', `emailTemplate/getEmailTemplateList/${data.currentPage}/${data.pageSize}`, { params: data });
|
return http.request<BaseResult<ResultTable>>('get', `emailTemplate/getEmailTemplateList/${data.currentPage}/${data.pageSize}`, { params: data });
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/** 邮件模板表---查询所有邮件模板 */
|
||||||
* 邮件模板表---添加邮件模板表
|
export const fetchGetAllEmailTemplates = () => {
|
||||||
*/
|
return http.request<BaseResult<any>>('get', 'emailTemplate/getAllEmailTemplates');
|
||||||
|
};
|
||||||
|
|
||||||
|
/** 邮件模板表---添加邮件模板表 */
|
||||||
export const fetchAddEmailTemplate = (data: any) => {
|
export const fetchAddEmailTemplate = (data: any) => {
|
||||||
return http.request<BaseResult<object>>('post', 'emailTemplate/addEmailTemplate', { data });
|
return http.request<BaseResult<object>>('post', 'emailTemplate/addEmailTemplate', { data });
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/** 邮件模板表---更新邮件模板表 */
|
||||||
* 邮件模板表---更新邮件模板表
|
|
||||||
*/
|
|
||||||
export const fetchUpdateEmailTemplate = (data: any) => {
|
export const fetchUpdateEmailTemplate = (data: any) => {
|
||||||
return http.request<BaseResult<object>>('put', 'emailTemplate/updateEmailTemplate', { data });
|
return http.request<BaseResult<object>>('put', 'emailTemplate/updateEmailTemplate', { data });
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/** 邮件模板表---删除邮件模板表 */
|
||||||
* 邮件模板表---删除邮件模板表
|
|
||||||
*/
|
|
||||||
export const fetchDeleteEmailTemplate = (data: any) => {
|
export const fetchDeleteEmailTemplate = (data: any) => {
|
||||||
return http.request<BaseResult<object>>('delete', 'emailTemplate/deleteEmailTemplate', { data });
|
return http.request<BaseResult<object>>('delete', 'emailTemplate/deleteEmailTemplate', { data });
|
||||||
};
|
};
|
||||||
|
|
|
@ -24,9 +24,11 @@ const form = ref(props.formInline);
|
||||||
*/
|
*/
|
||||||
const onSearch = async () => {
|
const onSearch = async () => {
|
||||||
innerForm.loading = true;
|
innerForm.loading = true;
|
||||||
|
const { currentPage, pageSize } = innerForm;
|
||||||
|
|
||||||
// 获取数据
|
// 获取数据
|
||||||
const baseResult = await fetchGetMenuIconList(innerForm);
|
const baseResult = await fetchGetMenuIconList({ currentPage, pageSize });
|
||||||
|
if (baseResult.code !== 200) return;
|
||||||
const data = baseResult.data;
|
const data = baseResult.data;
|
||||||
|
|
||||||
// 赋值内容
|
// 赋值内容
|
||||||
|
@ -34,7 +36,6 @@ const onSearch = async () => {
|
||||||
innerForm.currentPage = data.pageNo;
|
innerForm.currentPage = data.pageNo;
|
||||||
innerForm.pageSize = data.pageSize;
|
innerForm.pageSize = data.pageSize;
|
||||||
innerForm.total = data.total;
|
innerForm.total = data.total;
|
||||||
|
|
||||||
innerForm.loading = false;
|
innerForm.loading = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -49,16 +50,15 @@ const onChangeIcon = (value: any) => {
|
||||||
/**
|
/**
|
||||||
* * 清除图标
|
* * 清除图标
|
||||||
*/
|
*/
|
||||||
const onClear = () => {
|
const onClear = () => (form.value.icon = '');
|
||||||
form.value.icon = '';
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* * 修改当前页
|
* * 修改当前页
|
||||||
* @param value
|
* @param value
|
||||||
*/
|
*/
|
||||||
const onCurrentChange = (value: number) => {
|
const onCurrentChange = async (value: number) => {
|
||||||
innerForm.currentPage = value;
|
innerForm.currentPage = value;
|
||||||
|
await onSearch();
|
||||||
};
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
@ -76,12 +76,12 @@ onMounted(() => {
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<ul class="flex flex-wrap px-2 ml-2">
|
<ul class="flex flex-wrap px-2 ml-2 h-[210px]">
|
||||||
<li
|
<li
|
||||||
v-for="(item, key) in innerForm.datalist"
|
v-for="(item, key) in innerForm.datalist"
|
||||||
:key="key"
|
:key="key"
|
||||||
|
:class="`icon-item p-2 cursor-pointer mr-2 mt-1 flex justify-center items-center border border-[#e5e7eb] ${item.iconCode === form.icon ? 'current' : ''}`"
|
||||||
:title="item.iconName"
|
:title="item.iconName"
|
||||||
class="icon-item p-2 cursor-pointer mr-2 mt-1 flex justify-center items-center border border-[#e5e7eb]"
|
|
||||||
@click="onChangeIcon(item)"
|
@click="onChangeIcon(item)"
|
||||||
>
|
>
|
||||||
<IconifyIconOnline :icon="item.iconCode" height="20px" width="20px" />
|
<IconifyIconOnline :icon="item.iconCode" height="20px" width="20px" />
|
||||||
|
@ -109,7 +109,17 @@ onMounted(() => {
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
.current {
|
||||||
|
color: var(--el-color-primary);
|
||||||
|
border-color: var(--el-color-primary);
|
||||||
|
transition: all 0.4s;
|
||||||
|
transform: scaleX(1.05);
|
||||||
|
}
|
||||||
|
|
||||||
.icon-item {
|
.icon-item {
|
||||||
|
width: 38px;
|
||||||
|
height: 38px;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: var(--el-color-primary);
|
color: var(--el-color-primary);
|
||||||
border-color: var(--el-color-primary);
|
border-color: var(--el-color-primary);
|
||||||
|
|
|
@ -16,8 +16,6 @@ export const useEmailUsersStore = defineStore('emailUsersStore', {
|
||||||
form: {
|
form: {
|
||||||
// 邮箱
|
// 邮箱
|
||||||
email: undefined,
|
email: undefined,
|
||||||
// 使用邮件模板
|
|
||||||
emailTemplate: undefined,
|
|
||||||
// Host地址
|
// Host地址
|
||||||
host: undefined,
|
host: undefined,
|
||||||
// 端口号
|
// 端口号
|
|
@ -1,8 +1,8 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import { FormInstance } from 'element-plus';
|
import { FormInstance } from 'element-plus';
|
||||||
import { rules } from '@/views/system/emailTemplate/utils/columns';
|
import { rules } from '@/views/configuration/emailTemplate/utils/columns';
|
||||||
import { FormProps } from '@/views/system/emailTemplate/utils/types';
|
import { FormProps } from '@/views/configuration/emailTemplate/utils/types';
|
||||||
import { $t } from '@/plugins/i18n';
|
import { $t } from '@/plugins/i18n';
|
||||||
|
|
||||||
const props = withDefaults(defineProps<FormProps>(), {
|
const props = withDefaults(defineProps<FormProps>(), {
|
|
@ -1,16 +1,16 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { onMounted, ref } from 'vue';
|
import { onMounted, ref } from 'vue';
|
||||||
import { columns } from '@/views/system/emailTemplate/utils/columns';
|
import { columns } from '@/views/configuration/emailTemplate/utils/columns';
|
||||||
import PureTableBar from '@/components/TableBar/src/bar';
|
import PureTableBar from '@/components/TableBar/src/bar';
|
||||||
import AddFill from '@iconify-icons/ri/add-circle-line';
|
import AddFill from '@iconify-icons/ri/add-circle-line';
|
||||||
import PureTable from '@pureadmin/table';
|
import PureTable from '@pureadmin/table';
|
||||||
import { onAdd, onDelete, onSearch, onUpdate } from '@/views/system/emailTemplate/utils/hooks';
|
import { onAdd, onDelete, onSearch, onUpdate } from '@/views/configuration/emailTemplate/utils/hooks';
|
||||||
import Delete from '@iconify-icons/ep/delete';
|
import Delete from '@iconify-icons/ep/delete';
|
||||||
import EditPen from '@iconify-icons/ep/edit-pen';
|
import EditPen from '@iconify-icons/ep/edit-pen';
|
||||||
import Refresh from '@iconify-icons/ep/refresh';
|
import Refresh from '@iconify-icons/ep/refresh';
|
||||||
import { selectUserinfo } from '@/components/Table/Userinfo/columns';
|
import { selectUserinfo } from '@/components/Table/Userinfo/columns';
|
||||||
import { $t } from '@/plugins/i18n';
|
import { $t } from '@/plugins/i18n';
|
||||||
import { useEmailTemplateStore } from '@/store/system/emailTemplate.ts';
|
import { useEmailTemplateStore } from '@/store/configuration/emailTemplate.ts';
|
||||||
import { useRenderIcon } from '@/components/CommonIcon/src/hooks';
|
import { useRenderIcon } from '@/components/CommonIcon/src/hooks';
|
||||||
|
|
||||||
const tableRef = ref();
|
const tableRef = ref();
|
|
@ -1,9 +1,9 @@
|
||||||
import { addDialog } from '@/components/BaseDialog/index';
|
import { addDialog } from '@/components/BaseDialog/index';
|
||||||
import EmailTemplateDialog from '@/views/system/emailTemplate/email-template-dialog.vue';
|
import EmailTemplateDialog from '@/views/configuration/emailTemplate/email-template-dialog.vue';
|
||||||
import { useEmailTemplateStore } from '@/store/system/emailTemplate.ts';
|
import { useEmailTemplateStore } from '@/store/configuration/emailTemplate.ts';
|
||||||
import { h, ref } from 'vue';
|
import { h, ref } from 'vue';
|
||||||
import { messageBox } from '@/utils/message';
|
import { messageBox } from '@/utils/message';
|
||||||
import type { FormItemProps } from '@/views/system/emailTemplate/utils/types';
|
import type { FormItemProps } from '@/views/configuration/emailTemplate/utils/types';
|
||||||
import { $t } from '@/plugins/i18n';
|
import { $t } from '@/plugins/i18n';
|
||||||
|
|
||||||
export const formRef = ref();
|
export const formRef = ref();
|
|
@ -1,10 +1,11 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import { onMounted, ref } from 'vue';
|
||||||
import { FormInstance } from 'element-plus';
|
import { FormInstance } from 'element-plus';
|
||||||
import { rules } from '@/views/system/emailUsers/utils/columns';
|
import { rules } from '@/views/configuration/emailUsers/utils/columns';
|
||||||
import { FormProps } from '@/views/system/emailUsers/utils/types';
|
import { FormProps } from '@/views/configuration/emailUsers/utils/types';
|
||||||
import { $t } from '@/plugins/i18n';
|
import { $t } from '@/plugins/i18n';
|
||||||
import { usePublicHooks } from '@/views/hooks';
|
import { usePublicHooks } from '@/views/hooks';
|
||||||
|
import { fetchGetAllEmailTemplates } from '@/api/v1/emailTemplate';
|
||||||
|
|
||||||
const props = withDefaults(defineProps<FormProps>(), {
|
const props = withDefaults(defineProps<FormProps>(), {
|
||||||
formInline: () => ({
|
formInline: () => ({
|
||||||
|
@ -29,6 +30,22 @@ const formRef = ref<FormInstance>();
|
||||||
const form = ref(props.formInline);
|
const form = ref(props.formInline);
|
||||||
// 用户是否停用样式
|
// 用户是否停用样式
|
||||||
const { switchStyle } = usePublicHooks();
|
const { switchStyle } = usePublicHooks();
|
||||||
|
// 邮件模板列表
|
||||||
|
const emailTemplateList = ref();
|
||||||
|
|
||||||
|
/** 查询所有邮件模板 */
|
||||||
|
const getAllEmailTemplates = async () => {
|
||||||
|
const result = await fetchGetAllEmailTemplates();
|
||||||
|
if (result.code !== 200) return;
|
||||||
|
emailTemplateList.value = result.data.map(({ id, templateName }) => ({
|
||||||
|
value: id,
|
||||||
|
label: templateName,
|
||||||
|
}));
|
||||||
|
};
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getAllEmailTemplates();
|
||||||
|
});
|
||||||
|
|
||||||
defineExpose({ formRef });
|
defineExpose({ formRef });
|
||||||
</script>
|
</script>
|
||||||
|
@ -39,7 +56,9 @@ defineExpose({ formRef });
|
||||||
<el-input v-model="form.email" autocomplete="off" type="text" />
|
<el-input v-model="form.email" autocomplete="off" type="text" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('emailUsers_emailTemplate')" prop="emailTemplate">
|
<el-form-item :label="$t('emailUsers_emailTemplate')" prop="emailTemplate">
|
||||||
<el-input v-model="form.emailTemplate" autocomplete="off" type="text" />
|
<el-select v-model="form.emailTemplate" :placeholder="$t('input') + $t('emailUsers_emailTemplate')" clearable filterable>
|
||||||
|
<el-option v-for="(item, index) in emailTemplateList" :key="index" :label="item.label" :navigationBar="false" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('emailUsers_password')" prop="password">
|
<el-form-item :label="$t('emailUsers_password')" prop="password">
|
||||||
<el-input v-model="form.password" autocomplete="off" type="text" />
|
<el-input v-model="form.password" autocomplete="off" type="text" />
|
|
@ -1,16 +1,16 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { onMounted, ref } from 'vue';
|
import { onMounted, ref } from 'vue';
|
||||||
import { columns } from '@/views/system/emailUsers/utils/columns';
|
import { columns } from '@/views/configuration/emailUsers/utils/columns';
|
||||||
import PureTableBar from '@/components/TableBar/src/bar';
|
import PureTableBar from '@/components/TableBar/src/bar';
|
||||||
import AddFill from '@iconify-icons/ri/add-circle-line';
|
import AddFill from '@iconify-icons/ri/add-circle-line';
|
||||||
import PureTable from '@pureadmin/table';
|
import PureTable from '@pureadmin/table';
|
||||||
import { deleteIds, onAdd, onChangeDefault, onDelete, onDeleteBatch, onSearch, onUpdate, switchLoadMap } from '@/views/system/emailUsers/utils/hooks';
|
import { deleteIds, onAdd, onChangeDefault, onDelete, onDeleteBatch, onSearch, onUpdate, switchLoadMap } from '@/views/configuration/emailUsers/utils/hooks';
|
||||||
import Delete from '@iconify-icons/ep/delete';
|
import Delete from '@iconify-icons/ep/delete';
|
||||||
import EditPen from '@iconify-icons/ep/edit-pen';
|
import EditPen from '@iconify-icons/ep/edit-pen';
|
||||||
import Refresh from '@iconify-icons/ep/refresh';
|
import Refresh from '@iconify-icons/ep/refresh';
|
||||||
import { selectUserinfo } from '@/components/Table/Userinfo/columns';
|
import { selectUserinfo } from '@/components/Table/Userinfo/columns';
|
||||||
import { $t } from '@/plugins/i18n';
|
import { $t } from '@/plugins/i18n';
|
||||||
import { useEmailUsersStore } from '@/store/system/emailUsers';
|
import { useEmailUsersStore } from '@/store/configuration/emailUsers';
|
||||||
import { useRenderIcon } from '@/components/CommonIcon/src/hooks';
|
import { useRenderIcon } from '@/components/CommonIcon/src/hooks';
|
||||||
import { usePublicHooks } from '@/views/hooks';
|
import { usePublicHooks } from '@/views/hooks';
|
||||||
import { FormInstance } from 'element-plus';
|
import { FormInstance } from 'element-plus';
|
||||||
|
@ -67,9 +67,6 @@ onMounted(() => {
|
||||||
<el-form-item :label="$t('emailUsers_email')" prop="email">
|
<el-form-item :label="$t('emailUsers_email')" prop="email">
|
||||||
<el-input v-model="emailUsersStore.form.email" :placeholder="`${$t('input')}${$t('emailUsers_email')}`" class="!w-[180px]" clearable />
|
<el-input v-model="emailUsersStore.form.email" :placeholder="`${$t('input')}${$t('emailUsers_email')}`" class="!w-[180px]" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('emailUsers_emailTemplate')" prop="emailTemplate">
|
|
||||||
<el-input v-model="emailUsersStore.form.emailTemplate" :placeholder="`${$t('input')}${$t('emailUsers_emailTemplate')}`" class="!w-[180px]" clearable />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item :label="$t('emailUsers_host')" prop="host">
|
<el-form-item :label="$t('emailUsers_host')" prop="host">
|
||||||
<el-input v-model="emailUsersStore.form.host" :placeholder="`${$t('input')}${$t('emailUsers_host')}`" class="!w-[180px]" clearable />
|
<el-input v-model="emailUsersStore.form.host" :placeholder="`${$t('input')}${$t('emailUsers_host')}`" class="!w-[180px]" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
|
@ -7,18 +7,18 @@ export const columns: TableColumnList = [
|
||||||
{ type: 'index', index: (index: number) => index + 1, label: '序号', width: 60 },
|
{ type: 'index', index: (index: number) => index + 1, label: '序号', width: 60 },
|
||||||
// 邮箱
|
// 邮箱
|
||||||
{ label: $t('emailUsers_email'), prop: 'email' },
|
{ label: $t('emailUsers_email'), prop: 'email' },
|
||||||
// 邮件模板
|
// // 邮件模板
|
||||||
{ label: $t('emailUsers_emailTemplate'), prop: 'emailTemplate' },
|
// { label: $t('emailUsers_emailTemplate'), prop: 'emailTemplate' },
|
||||||
// 密码
|
// 密码
|
||||||
{ label: $t('emailUsers_password'), prop: 'password' },
|
{ label: $t('emailUsers_password'), prop: 'password' },
|
||||||
// Host地址
|
// Host地址
|
||||||
{ label: $t('emailUsers_host'), prop: 'host' },
|
{ label: $t('emailUsers_host'), prop: 'host' },
|
||||||
// 端口号
|
// 端口号
|
||||||
{ label: $t('emailUsers_port'), prop: 'port' },
|
{ label: $t('emailUsers_port'), prop: 'port', width: 90 },
|
||||||
// 邮箱协议
|
// 邮箱协议
|
||||||
{ label: $t('emailUsers_smtpAgreement'), prop: 'smtpAgreement' },
|
{ label: $t('emailUsers_smtpAgreement'), prop: 'smtpAgreement', width: 100 },
|
||||||
// 是否为默认邮件
|
// 是否为默认邮件
|
||||||
{ label: $t('emailUsers_isDefault'), prop: 'isDefault', slot: 'isDefault' },
|
{ label: $t('emailUsers_isDefault'), prop: 'isDefault', slot: 'isDefault', width: 100 },
|
||||||
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true, width: 160 },
|
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true, width: 160 },
|
||||||
{ label: $t('table.createTime'), prop: 'createTime', sortable: true, width: 160 },
|
{ label: $t('table.createTime'), prop: 'createTime', sortable: true, width: 160 },
|
||||||
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', width: 90 },
|
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', width: 90 },
|
|
@ -1,9 +1,9 @@
|
||||||
import { addDialog } from '@/components/BaseDialog/index';
|
import { addDialog } from '@/components/BaseDialog/index';
|
||||||
import EmailUsersDialog from '@/views/system/emailUsers/email-users-dialog.vue';
|
import EmailUsersDialog from '@/views/configuration/emailUsers/email-users-dialog.vue';
|
||||||
import { useEmailUsersStore } from '@/store/system/emailUsers';
|
import { useEmailUsersStore } from '@/store/configuration/emailUsers';
|
||||||
import { h, ref } from 'vue';
|
import { h, ref } from 'vue';
|
||||||
import { messageBox } from '@/utils/message';
|
import { messageBox } from '@/utils/message';
|
||||||
import type { FormItemProps } from '@/views/system/emailUsers/utils/types';
|
import type { FormItemProps } from '@/views/configuration/emailUsers/utils/types';
|
||||||
import { $t } from '@/plugins/i18n';
|
import { $t } from '@/plugins/i18n';
|
||||||
|
|
||||||
export const formRef = ref();
|
export const formRef = ref();
|
|
@ -1,18 +1,18 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { onMounted, ref } from 'vue';
|
import { onMounted, ref } from 'vue';
|
||||||
import { columns } from '@/views/system/menuIcon/utils/columns';
|
import { columns } from '@/views/configuration/menuIcon/utils/columns';
|
||||||
import PureTableBar from '@/components/TableBar/src/bar';
|
import PureTableBar from '@/components/TableBar/src/bar';
|
||||||
import { useRenderIcon } from '@/components/CommonIcon/src/hooks';
|
import { useRenderIcon } from '@/components/CommonIcon/src/hooks';
|
||||||
import AddFill from '@iconify-icons/ri/add-circle-line';
|
import AddFill from '@iconify-icons/ri/add-circle-line';
|
||||||
import PureTable from '@pureadmin/table';
|
import PureTable from '@pureadmin/table';
|
||||||
import { deleteIds, onAdd, onDelete, onDeleteBatch, onSearch, onUpdate } from '@/views/system/menuIcon/utils/hooks';
|
import { deleteIds, onAdd, onDelete, onDeleteBatch, onSearch, onUpdate } from '@/views/configuration/menuIcon/utils/hooks';
|
||||||
import Delete from '@iconify-icons/ep/delete';
|
import Delete from '@iconify-icons/ep/delete';
|
||||||
import EditPen from '@iconify-icons/ep/edit-pen';
|
import EditPen from '@iconify-icons/ep/edit-pen';
|
||||||
import Refresh from '@iconify-icons/ep/refresh';
|
import Refresh from '@iconify-icons/ep/refresh';
|
||||||
import { selectUserinfo } from '@/components/Table/Userinfo/columns';
|
import { selectUserinfo } from '@/components/Table/Userinfo/columns';
|
||||||
import { $t } from '@/plugins/i18n';
|
import { $t } from '@/plugins/i18n';
|
||||||
import { useMenuIconStore } from '@/store/system/menuIcon';
|
import { useMenuIconStore } from '@/store/configuration/menuIcon';
|
||||||
import MenuIconSelectIconName from '@/views/system/menuIcon/menu-icon-select-icon-name.vue';
|
import MenuIconSelectIconName from '@/views/configuration/menuIcon/menu-icon-select-icon-name.vue';
|
||||||
|
|
||||||
const tableRef = ref();
|
const tableRef = ref();
|
||||||
const formRef = ref();
|
const formRef = ref();
|
|
@ -1,11 +1,11 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import { FormInstance } from 'element-plus';
|
import { FormInstance } from 'element-plus';
|
||||||
import { rules } from '@/views/system/menuIcon/utils/columns';
|
import { rules } from '@/views/configuration/menuIcon/utils/columns';
|
||||||
import { FormProps } from '@/views/system/menuIcon/utils/types';
|
import { FormProps } from '@/views/configuration/menuIcon/utils/types';
|
||||||
import { $t } from '@/plugins/i18n';
|
import { $t } from '@/plugins/i18n';
|
||||||
import { useRenderIcon } from '@/components/CommonIcon/src/hooks';
|
import { useRenderIcon } from '@/components/CommonIcon/src/hooks';
|
||||||
import MenuIconSelectIconName from '@/views/system/menuIcon/menu-icon-select-icon-name.vue';
|
import MenuIconSelectIconName from '@/views/configuration/menuIcon/menu-icon-select-icon-name.vue';
|
||||||
|
|
||||||
const props = withDefaults(defineProps<FormProps>(), {
|
const props = withDefaults(defineProps<FormProps>(), {
|
||||||
formInline: () => ({
|
formInline: () => ({
|
|
@ -3,7 +3,7 @@ import { $t } from '@/plugins/i18n';
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import { fetchGetIconNameList } from '@/api/v1/menuIcon';
|
import { fetchGetIconNameList } from '@/api/v1/menuIcon';
|
||||||
import LoadingSvg from '@/assets/svg/loading.svg';
|
import LoadingSvg from '@/assets/svg/loading.svg';
|
||||||
import { FormProps } from '@/views/system/menuIcon/utils/types';
|
import { FormProps } from '@/views/configuration/menuIcon/utils/types';
|
||||||
|
|
||||||
const props = withDefaults(defineProps<FormProps>(), {
|
const props = withDefaults(defineProps<FormProps>(), {
|
||||||
formInline: () => ({
|
formInline: () => ({
|
|
@ -1,9 +1,9 @@
|
||||||
import { addDialog } from '@/components/BaseDialog/index';
|
import { addDialog } from '@/components/BaseDialog/index';
|
||||||
import MenuIconDialog from '@/views/system/menuIcon/menu-icon-dialog.vue';
|
import MenuIconDialog from '@/views/configuration/menuIcon/menu-icon-dialog.vue';
|
||||||
import { useMenuIconStore } from '@/store/system/menuIcon';
|
import { useMenuIconStore } from '@/store/configuration/menuIcon';
|
||||||
import { h, ref } from 'vue';
|
import { h, ref } from 'vue';
|
||||||
import { messageBox } from '@/utils/message';
|
import { messageBox } from '@/utils/message';
|
||||||
import type { FormItemProps } from '@/views/system/menuIcon/utils/types';
|
import type { FormItemProps } from '@/views/configuration/menuIcon/utils/types';
|
||||||
import { $t } from '@/plugins/i18n';
|
import { $t } from '@/plugins/i18n';
|
||||||
|
|
||||||
export const formRef = ref();
|
export const formRef = ref();
|
|
@ -1,8 +1,8 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import { FormInstance } from 'element-plus';
|
import { FormInstance } from 'element-plus';
|
||||||
import { rules } from '@/views/system/files/utils/columns';
|
import { rules } from '@/views/monitor/files/utils/columns';
|
||||||
import { FormProps } from '@/views/system/files/utils/types';
|
import { FormProps } from '@/views/monitor/files/utils/types';
|
||||||
import { $t } from '@/plugins/i18n';
|
import { $t } from '@/plugins/i18n';
|
||||||
|
|
||||||
const props = withDefaults(defineProps<FormProps>(), {
|
const props = withDefaults(defineProps<FormProps>(), {
|
|
@ -1,16 +1,16 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { onMounted, ref } from 'vue';
|
import { onMounted, ref } from 'vue';
|
||||||
import { columns } from '@/views/system/files/utils/columns';
|
import { columns } from '@/views/monitor/files/utils/columns';
|
||||||
import PureTableBar from '@/components/TableBar/src/bar';
|
import PureTableBar from '@/components/TableBar/src/bar';
|
||||||
import AddFill from '@iconify-icons/ri/add-circle-line';
|
import AddFill from '@iconify-icons/ri/add-circle-line';
|
||||||
import PureTable from '@pureadmin/table';
|
import PureTable from '@pureadmin/table';
|
||||||
import { onAdd, onDelete, onSearch, onUpdate } from '@/views/system/files/utils/hooks';
|
import { onAdd, onDelete, onSearch, onUpdate } from '@/views/monitor/files/utils/hooks';
|
||||||
import Delete from '@iconify-icons/ep/delete';
|
import Delete from '@iconify-icons/ep/delete';
|
||||||
import EditPen from '@iconify-icons/ep/edit-pen';
|
import EditPen from '@iconify-icons/ep/edit-pen';
|
||||||
import Refresh from '@iconify-icons/ep/refresh';
|
import Refresh from '@iconify-icons/ep/refresh';
|
||||||
import { selectUserinfo } from '@/components/Table/Userinfo/columns';
|
import { selectUserinfo } from '@/components/Table/Userinfo/columns';
|
||||||
import { $t } from '@/plugins/i18n';
|
import { $t } from '@/plugins/i18n';
|
||||||
import { useFilesStore } from '@/store/system/files.ts';
|
import { useFilesStore } from '@/store/monitor/files.ts';
|
||||||
import { useRenderIcon } from '@/components/CommonIcon/src/hooks';
|
import { useRenderIcon } from '@/components/CommonIcon/src/hooks';
|
||||||
import { FormInstance } from 'element-plus';
|
import { FormInstance } from 'element-plus';
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import { addDialog } from '@/components/BaseDialog/index';
|
import { addDialog } from '@/components/BaseDialog/index';
|
||||||
import FilesDialog from '@/views/system/files/files-dialog.vue';
|
import FilesDialog from '@/views/monitor/files/files-dialog.vue';
|
||||||
import { useFilesStore } from '@/store/system/files';
|
import { useFilesStore } from '@/store/monitor/files';
|
||||||
import { h, ref } from 'vue';
|
import { h, ref } from 'vue';
|
||||||
import { messageBox } from '@/utils/message';
|
import { messageBox } from '@/utils/message';
|
||||||
import type { FormItemProps } from '@/views/system/files/utils/types';
|
import type { FormItemProps } from '@/views/monitor/files/utils/types';
|
||||||
import { $t } from '@/plugins/i18n';
|
import { $t } from '@/plugins/i18n';
|
||||||
|
|
||||||
export const formRef = ref();
|
export const formRef = ref();
|
|
@ -1,6 +1,6 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { onMounted, ref } from 'vue';
|
import { onMounted, ref } from 'vue';
|
||||||
import ListCard from '@/views/monitoring/server/list-card.vue';
|
import ListCard from '@/views/monitor/server/list-card.vue';
|
||||||
import { fetchSystemHealthList } from '@/api/v1/system';
|
import { fetchSystemHealthList } from '@/api/v1/system';
|
||||||
import { $t } from '@/plugins/i18n';
|
import { $t } from '@/plugins/i18n';
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { computed, PropType } from 'vue';
|
import { computed, PropType } from 'vue';
|
||||||
import shopIcon from '@/assets/svg/shop.svg?component';
|
import { useRenderIcon } from '@/components/CommonIcon/src/hooks';
|
||||||
import laptopIcon from '@/assets/svg/laptop.svg?component';
|
|
||||||
import serviceIcon from '@/assets/svg/service.svg?component';
|
|
||||||
import calendarIcon from '@/assets/svg/calendar.svg?component';
|
|
||||||
import userAvatarIcon from '@/assets/svg/user_avatar.svg?component';
|
|
||||||
|
|
||||||
interface CardProductType {
|
interface CardProductType {
|
||||||
type: string;
|
type: string;
|
||||||
|
@ -27,11 +23,11 @@ const cardLogoClass = computed(() => ['list-card-item_detail--logo', { 'list-car
|
||||||
<div class="list-card-item_detail bg-bg_color">
|
<div class="list-card-item_detail bg-bg_color">
|
||||||
<el-row justify="space-between">
|
<el-row justify="space-between">
|
||||||
<div :class="cardLogoClass">
|
<div :class="cardLogoClass">
|
||||||
<shopIcon v-if="product.type === 'db'" />
|
<component :is="useRenderIcon('raphael:db')" v-if="product.type === 'db'" />
|
||||||
<calendarIcon v-if="product.type === 'redis'" />
|
<component :is="useRenderIcon('devicon:redis')" v-if="product.type === 'redis'" />
|
||||||
<serviceIcon v-if="product.type === 'ping'" />
|
<component :is="useRenderIcon('material-symbols:terminal')" v-if="product.type === 'ping'" />
|
||||||
<userAvatarIcon v-if="product.type === 'minio'" />
|
<component :is="useRenderIcon('simple-icons:minio')" v-if="product.type === 'minio'" />
|
||||||
<laptopIcon v-if="product.type === 'diskSpace'" />
|
<component :is="useRenderIcon('mage:compact-disk')" v-if="product.type === 'diskSpace'" />
|
||||||
</div>
|
</div>
|
||||||
<div class="list-card-item_detail--operation">
|
<div class="list-card-item_detail--operation">
|
||||||
<el-tag :color="product.status ? '#00a870' : '#eee'" class="mx-1 list-card-item_detail--operation--tag" effect="dark">
|
<el-tag :color="product.status ? '#00a870' : '#eee'" class="mx-1 list-card-item_detail--operation--tag" effect="dark">
|
|
@ -31,7 +31,7 @@ const props = withDefaults(defineProps<FormProps>(), {
|
||||||
// 状态
|
// 状态
|
||||||
status: undefined,
|
status: undefined,
|
||||||
// 部门
|
// 部门
|
||||||
deptIds: undefined,
|
deptId: undefined,
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ export interface FormItemProps {
|
||||||
// 状态
|
// 状态
|
||||||
status: boolean;
|
status: boolean;
|
||||||
// 部门
|
// 部门
|
||||||
deptIds: string[];
|
deptId: string[];
|
||||||
}
|
}
|
||||||
|
|
||||||
// 添加或修改表单Props
|
// 添加或修改表单Props
|
||||||
|
|
|
@ -126,12 +126,15 @@ export const onUpdate = (row?: FormItemProps) => {
|
||||||
beforeSure: (done, { options }) => {
|
beforeSure: (done, { options }) => {
|
||||||
const menuFormRef = formRef.value.menuFormRef;
|
const menuFormRef = formRef.value.menuFormRef;
|
||||||
const curData = options.props.formInline as FormItemProps;
|
const curData = options.props.formInline as FormItemProps;
|
||||||
menuFormRef.validate(async (valid: any) => {
|
|
||||||
if (!valid) return;
|
|
||||||
delete curData.higherMenuOptions;
|
delete curData.higherMenuOptions;
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
menuFormRef.validate(async (valid: any) => {
|
||||||
|
if (!valid) return;
|
||||||
|
curData.parentId = curData.parentId ?? 0;
|
||||||
curData.id = row.id;
|
curData.id = row.id;
|
||||||
const result = await menuStore.updateMenu(curData);
|
const result = await menuStore.updateMenu(curData);
|
||||||
|
|
||||||
// 刷新表格数据
|
// 刷新表格数据
|
||||||
if (result) {
|
if (result) {
|
||||||
done();
|
done();
|
||||||
|
|
Loading…
Reference in New Issue