Browse Source

同步德立站内信、邮件

intex
zhaoyiran 1 day ago
parent
commit
6cd22db98d
  1. 79
      src/views/system/mail/template/MailTemplateForm.vue
  2. 8
      src/views/system/mail/template/template.data.ts
  3. 17
      src/views/system/notify/template/NotifyTemplateForm.vue

79
src/views/system/mail/template/MailTemplateForm.vue

@ -6,7 +6,7 @@
:title="dialogTitle"
:width="800"
>
<Form ref="formRef" v-loading="formLoading" :rules="rules" :schema="allSchemas.formSchema" @onChange="onChange" />
<Form ref="formRef" v-loading="formLoading" :rules="rules" :schema="showSchemas.formSchema" @onChange="onChange" />
<template #footer>
<el-button :disabled="formLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
@ -17,6 +17,7 @@
import * as MailTemplateApi from '@/api/system/mail/template'
import { fi } from 'element-plus/es/locale'
import { allSchemas, rules } from './template.data'
import { cloneDeep } from 'lodash-es'
defineOptions({ name: 'SystemMailTemplateForm' })
@ -31,6 +32,7 @@ const formRef = ref() // 表单 Ref
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
showSchemas.value.formSchema = allSchemas.formSchema.filter(item => item.field != 'deptIdList' && item.field != 'roleIdList' &&item.field != 'postIdList'&&item.field != 'userIdList');
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
@ -88,13 +90,13 @@ const onChange = async (field, cur) => {
formRef.value.setValues(setV);
//
const fieldsToDisable = ['roleIdList', 'deptIdList', 'postIdList', 'userIdList'];
fieldsToDisable.forEach(field => {
const item = allSchemas.formSchema.find(item => item.field === field);
if (item) {
item.componentProps.disabled = true;
}
});
// const fieldsToDisable = ['roleIdList', 'deptIdList', 'postIdList', 'userIdList'];
// fieldsToDisable.forEach(field => {
// const item = allSchemas.formSchema.find(item => item.field === field);
// if (item) {
// item.componentProps.disabled = true;
// }
// });
// receiverType
const fieldMap = {
@ -105,11 +107,37 @@ const onChange = async (field, cur) => {
};
const enableField = fieldMap[cur];
if (enableField) {
if (enableField == 'deptIdList') {
showSchemas.value.formSchema = allSchemas.formSchema.filter(item => item.field != 'roleIdList' &&item.field != 'postIdList'&&item.field != 'userIdList');
const itemToEnable = allSchemas.formSchema.find(item => item.field === enableField);
if (itemToEnable) {
itemToEnable.componentProps.disabled = false;
rules.deptIdList = [{ required: true, message: '请选择部门' }];
}
} else if (enableField == 'roleIdList') {
showSchemas.value.formSchema = allSchemas.formSchema.filter(item => item.field != 'deptIdList' &&item.field != 'postIdList'&&item.field != 'userIdList');
const itemToEnable = allSchemas.formSchema.find(item => item.field === enableField);
if (itemToEnable) {
itemToEnable.componentProps.disabled = false;
rules.roleIdList = [{ required: true, message: '请选择角色' }];
}
} else if (enableField == 'postIdList') {
showSchemas.value.formSchema = allSchemas.formSchema.filter(item => item.field != 'deptIdList' &&item.field != 'roleIdList'&&item.field != 'userIdList');
const itemToEnable = allSchemas.formSchema.find(item => item.field === enableField);
if (itemToEnable) {
itemToEnable.componentProps.disabled = false;
rules.postIdList = [{ required: true, message: '请选择岗位' }];
}
} else if (enableField == 'userIdList') {
showSchemas.value.formSchema = allSchemas.formSchema.filter(item => item.field != 'deptIdList' &&item.field != 'roleIdList'&&item.field != 'postIdList');
const itemToEnable = allSchemas.formSchema.find(item => item.field === enableField);
if (itemToEnable) {
itemToEnable.componentProps.disabled = false;
rules.userIdList = [{ required: true, message: '请选择用户' }];
}
} else {
showSchemas.value.formSchema = allSchemas.formSchema.filter(item => item.field != 'roleIdList' && item.field != 'deptIdList' &&item.field != 'userIdList'&&item.field != 'postIdList');
}
}
}
@ -127,15 +155,15 @@ const resetReceiverType = () => {
formRef.value.setValues(setV);
//
const fieldsToDisable = ['roleIdList', 'deptIdList', 'postIdList', 'userIdList'];
fieldsToDisable.forEach(field => {
const item = allSchemas.formSchema.find(item => item.field === field);
if (item) {
item.componentProps.disabled = true;
}
});
}
// const fieldsToDisable = ['roleIdList', 'deptIdList', 'postIdList', 'userIdList'];
// fieldsToDisable.forEach(field => {
// const item = allSchemas.formSchema.find(item => item.field === field);
// if (item) {
// item.componentProps.disabled = true;
// }
// });
}
const showSchemas = ref(cloneDeep(allSchemas))
const showReceiver = (data) => {
if(data){
// receiverType
@ -146,11 +174,16 @@ const showReceiver = (data) => {
4: 'userIdList'
};
const enableField = fieldMap[data.receiverType];
if (enableField) {
const itemToEnable = allSchemas.formSchema.find(item => item.field === enableField);
if (itemToEnable) {
itemToEnable.componentProps.disabled = false;
}
if (enableField == 'roleIdList') {
showSchemas.value.formSchema = allSchemas.formSchema.filter(item => item.field != 'deptIdList' &&item.field != 'postIdList'&&item.field != 'userIdList');
} else if (enableField == 'deptIdList') {
showSchemas.value.formSchema = allSchemas.formSchema.filter(item => item.field != 'roleIdList' &&item.field != 'postIdList'&&item.field != 'userIdList');
} else if (enableField == 'postIdList') {
showSchemas.value.formSchema = allSchemas.formSchema.filter(item => item.field != 'roleIdList' &&item.field != 'deptIdList'&&item.field != 'userIdList');
} else if (enableField == 'userIdList') {
showSchemas.value.formSchema = allSchemas.formSchema.filter(item => item.field != 'roleIdList' &&item.field != 'postIdList'&&item.field != 'deptIdList');
} else {
showSchemas.value.formSchema = allSchemas.formSchema.filter(item => item.field != 'roleIdList' && item.field != 'deptIdList' &&item.field != 'userIdList'&&item.field != 'postIdList');
}
}
}

8
src/views/system/mail/template/template.data.ts

@ -95,7 +95,7 @@ const crudSchemas = reactive<CrudSchema[]>([
labelField: 'name',
valueField: 'id'
},
disabled: true,
disabled: false,
filterable: true,
multiple: true,
placeholder: "请选择角色"
@ -113,7 +113,7 @@ const crudSchemas = reactive<CrudSchema[]>([
component: 'TreeSelect',
componentProps: { // 假设deptList是部门数据列表
data: deptList,
disabled: true,
disabled: false,
placeholder: "请选择部门",
filterable: true,
multiple: true,
@ -135,7 +135,7 @@ const crudSchemas = reactive<CrudSchema[]>([
labelField: 'name',
valueField: 'id'
},
disabled: true,
disabled: false,
filterable: true,
multiple: true,
placeholder: "请选择"
@ -157,7 +157,7 @@ const crudSchemas = reactive<CrudSchema[]>([
labelField: 'nickname',
valueField: 'id'
},
disabled: true,
disabled: false,
filterable: true,
multiple: true,
placeholder: "请选择"

17
src/views/system/notify/template/NotifyTemplateForm.vue

@ -16,11 +16,11 @@
<el-form-item label="发件人名称" prop="nickname">
<el-input v-model="formData.nickname" placeholder="请输入发件人名称" />
</el-form-item>
<el-form-item label="角色" prop="roleIds">
<!-- <el-form-item label="角色" prop="roleIds">
<el-select v-model="formData.roleIds" multiple placeholder="请选择角色">
<el-option v-for="item in roleList" :key="item.id" :label="item.name" :value="item.id"
/></el-select>
</el-form-item>
</el-form-item> -->
<el-form-item label="接收人类型" prop="receiverType">
<el-select v-model="formData.receiverType" @change="onChangeReceiverType" placeholder="请选择角色">
<el-option
@ -30,12 +30,12 @@
:value="dict.value"
/></el-select>
</el-form-item>
<el-form-item v-show="roleShow" label="角色" prop="roleIdList">
<el-form-item v-show="roleShow" label="角色" prop="roleIdList" :required="roleShow">
<el-select v-model="formData.roleIdList" filterable multiple placeholder="请选择角色">
<el-option v-for="item in roleList" :key="item.id" :label="item.name" :value="item.id" />
/></el-select>
</el-form-item>
<el-form-item v-show="deptShow" label="部门" prop="deptIdList">
<el-form-item v-show="deptShow" label="部门" prop="deptIdList" :required="deptShow">
<el-tree-select
v-model="formData.deptIdList"
:data="deptList"
@ -47,7 +47,7 @@
multiple
/>
</el-form-item>
<el-form-item v-show="postShow" label="岗位" prop="postIdList">
<el-form-item v-show="postShow" label="岗位" prop="postIdList" :required="postShow">
<el-select v-model="formData.postIdList" filterable multiple placeholder="请选择">
<el-option
v-for="item in postList"
@ -57,7 +57,7 @@
/>
</el-select>
</el-form-item>
<el-form-item v-show="userShow" label="用户" prop="userIdList">
<el-form-item v-show="userShow" label="用户" prop="userIdList" :required="userShow">
<el-select v-model="formData.userIdList" filterable multiple placeholder="请选择">
<el-option
v-for="item in userList"
@ -146,9 +146,10 @@ const formRules = reactive({
status: [{ required: true, message: '开启状态不能为空', trigger: 'blur' }],
code: [{ required: true, message: '模板编码不能为空', trigger: 'blur' }],
name: [{ required: true, message: '模板名称不能为空', trigger: 'blur' }],
roleIds: [{ required: true, message: '角色不能为空', trigger: 'blur' }],
// roleIds: [{ required: true, message: '', trigger: 'blur' }],
nickname: [{ required: true, message: '发件人姓名不能为空', trigger: 'blur' }],
content: [{ required: true, message: '模板内容不能为空', trigger: 'blur' }]
content: [{ required: true, message: '模板内容不能为空', trigger: 'blur' }],
receiverType: [{ required: true, message: '接收人类型不能为空', trigger: 'blur' }]
})
const formRef = ref() // Ref

Loading…
Cancel
Save