Commit 70b9e0d4 by Sweet Zhang

按类型封装api

parent b09264c7
VITE_API_BASE_URL='http://139.224.145.34:9002/email/api' VITE_API_BASE_URL='/email/api'
\ No newline at end of file \ No newline at end of file
interface resPage {
page: number
pageSize: number
total: number
hasNextPage: boolean
pageTotal: number
}
interface itfRes {
code: number
msg: string | undefined
data: T
reason?: string
page?: resPage
}
import * as axios from 'axios'
declare module 'axios'
{interface AxiosResponse extends itfRes}
import request from '@/utils/request' import request from '@/utils/request'
import type { EditContactImport } from '@/types/index' import type {
EditContactImport,
// 新增联系人 SendEmail,
/** Contact,
* EmailProvider,
* @param data {"companyName":"","name":"","email":"","type":"","appellation":"","other":"","ccEmailList":[]} Sender,
* @returns Variable,
*/ VariableTemplate,
export const addContact = (data: { } from '@/types/index'
companyName?: string import type { ApiResponse } from '@/utils/request'
name?: string
email?: string // 联系人管理
type?: string export const contactApi = {
appellation?: string // 新增联系人
other?: string addContact: (data: Contact): Promise<ApiResponse> => {
ccEmailList?: string[] return request.post('/emailContact/add', data)
}) => { },
return request.post('/emailContact/add', data) // 获取联系人详情
} getContactDetail: (id: string): Promise<ApiResponse> => {
return request.get('/emailContact/detail', { params: { contactBizId: id } })
// 编辑联系人 },
/** // 更新联系人
* updateContact: (data: Contact): Promise<ApiResponse> => {
* @param data {"contactBizId":1,"companyName":"","name":"","email":"","type":"","appellation":"","other":"","ccEmailList":[]} return request.put('/emailContact/edit', data)
* @returns },
*/ // 删除联系人
export const editContact = (data: { deleteContact: (id: string): Promise<ApiResponse> => {
contactBizId?: string return request.delete('/emailContact/del?contactBizId=' + id)
companyName?: string },
name?: string // 获取联系人列表
email?: string getContactList: (data: Contact): Promise<ApiResponse> => {
type?: string return request.post('/emailContact/page', data)
appellation?: string },
other?: string }
ccEmailList?: string[]
}) => { //
return request.put('/emailContact/edit', data) /**邮件服务商列表 */
} export const emailProviderApi = {
getEmailProviderList: (data: EmailProvider): Promise<ApiResponse> => {
// 删除联系人 delete return request.post('/emailProviderConfig/page', data)
/** },
* }
* @param id 联系人id
* @returns /**发件人管理*/
*/ export const senderApi = {
export const deleteContact = (id: number) => { // 新增发送人配置
return request.delete('/emailContact/del?contactBizId=' + id) addEmailSenderConfig: (data: Sender): Promise<ApiResponse> => {
} return request.post('/emailSenderConfig/add', data)
},
// 获取联系人详情 // 删除发送人配置
/** deleteEmailSenderConfig: (id: string): Promise<ApiResponse> => {
* return request.delete('/emailSenderConfig/del?senderBizId=' + id)
* @param id 联系人id },
* @returns // 编辑发送人配置
*/ editEmailSenderConfig: (data: Sender): Promise<ApiResponse> => {
export const getContactDetail = (id: number) => { return request.put('/emailSenderConfig/edit', data)
return request.get('/emailContact/detail', { params: { contactBizId: id } }) },
} // 获取发送人配置详情
getEmailSenderConfigDetail: (id: string): Promise<ApiResponse> => {
// 获取联系人列表 post return request.get('/emailSenderConfig/detail', { params: { senderBizId: id } })
/** },
* // 获取发送配置列表
* @param params { getEmailSenderConfigList: (params: Sender): Promise<ApiResponse> => {
"companyName": "", //公司名称(保险公司等) return request.post('/emailSenderConfig/page', params)
"name": "", //联系人姓名 },
"email": "", //联系人邮箱 }
"pageNo": 1,
"pageSize": 1, /**变量管理 */
"sortField": "", export const variableApi = {
"sortOrder": "" // 分页查询变量
} getEmailVariableList: (params: Variable): Promise<ApiResponse> => {
* @returns return request.post('/emailVariable/page', params)
*/ },
export const getContactList = (params: { // 新增变量
companyName?: string addEmailVariable: (data: Variable): Promise<ApiResponse> => {
name?: string return request.post('/emailVariable/add', data)
email?: string },
pageNo?: number // 编辑变量
pageSize?: number editEmailVariable: (data: Variable): Promise<ApiResponse> => {
sortField?: string return request.put('/emailVariable/edit', data)
sortOrder?: string },
}) => { // 删除变量
return request.post('/emailContact/page', params) deleteEmailVariable: (id: string): Promise<ApiResponse> => {
} return request.delete('/emailVariable/del?variableBizId=' + id)
},
/**服务商列表 */ }
/** /** 变量分组管理 */
* export const variableGroupApi = {
* @param params { // 新增变量分组
"providerName": "", //邮箱服务商名称 addEmailVariableGroup: (data: VariableTemplate): Promise<ApiResponse> => {
"pageNo": 1, return request.post('/emailVariableGroup/add', data)
"pageSize": 1, },
"sortField": "", // 编辑变量分组
"sortOrder": "" editEmailVariableGroup: (data: VariableTemplate): Promise<ApiResponse> => {
} return request.put('/emailVariableGroup/edit', data)
* @returns },
*/ // 删除变量分组
export const getEmailProviderList = (params: { deleteEmailVariableGroup: (id: string): Promise<ApiResponse> => {
providerName?: string return request.delete('/emailVariableGroup/del?variableGroupBizId=' + id)
pageNo?: number },
pageSize?: number // 获取变量分组详情
sortField?: string getEmailVariableGroupDetail: (id: string): Promise<ApiResponse> => {
sortOrder?: string return request.get('/emailVariableGroup/detail?variableGroupBizId=' + id)
}) => { },
return request.post('/emailProviderConfig/page', params) // 获取变量分组列表
} getEmailVariableGroupList: (params: VariableTemplate): Promise<ApiResponse> => {
return request.post('/emailVariableGroup/page', params)
// 新增发送人配置 },
/** }
*
* @param data {"emailSenderConfigBizId":1,"emailSenderConfigName":"","emailSenderConfigEmail":"","emailSenderConfigType":"","emailSenderConfigAppellation":"","emailSenderConfigOther":"","emailSenderConfigCcEmailList":[]} /**
* @returns * 导入联系人管理
*/ */
export const addEmailSenderConfig = (data: { export const importContactApi = {
email?: string // 新增导入联系人
password?: string addEmailContactImport: (data: EditContactImport): Promise<ApiResponse> => {
providerBizId?: string return request.post('/emailContactImport/add', data)
displayName?: string },
active?: number // 导入时,获取sessionId
}) => { getEmailContactSessionId: (data: EditContactImport): Promise<ApiResponse> => {
return request.post('/emailSenderConfig/add', data) return request.post('/emailContactImport/select/add', data)
} },
// 编辑导入数据
// 编辑发送人配置 editEmailContactImport: (data: EditContactImport): Promise<ApiResponse> => {
/** return request.put('/emailContactImport/edit', data)
* },
* @param data {"emailSenderConfigBizId":1,"emailSenderConfigName":"","emailSenderConfigEmail":"","emailSenderConfigType":"","emailSenderConfigAppellation":"","emailSenderConfigOther":"","emailSenderConfigCcEmailList":[]} // 导入联系人列表查询
* @returns getEmailContactImportList: (params: EditContactImport): Promise<ApiResponse> => {
*/ return request.post('/emailContactImport/page', params)
export const editEmailSenderConfig = (data: { },
senderBizId?: string }
email?: string /**
password?: string * 发送邮件
providerBizId?: string */
displayName?: string export const sendEmailApi = {
active?: number // 发送邮件
}) => { sendEmail: (data: SendEmail): Promise<ApiResponse> => {
return request.put('/emailSenderConfig/edit', data) return request.post('/email/send', data)
} },
// 测试发送邮件
// 删除发送人配置 testSendEmail: (data: SendEmail): Promise<ApiResponse> => {
/** return request.post('/email/test/send', data)
* },
* @param id 发送配置id
* @returns
*/
export const deleteEmailSenderConfig = (id: string) => {
return request.delete('/emailSenderConfig/del?senderBizId=' + id)
}
// 获取发送人配置详情
/**
*
* @param id 发送配置id
* @returns
*/
export const getEmailSenderConfigDetail = (id: string) => {
return request.get('/emailSenderConfig/detail', { params: { senderBizId: id } })
}
// 获取发送配置列表
/**
*
* @param params {
"emailSenderConfigName": "", //发送配置名称
"emailSenderConfigEmail": "", //发送配置邮箱
"pageNo": 1,
"pageSize": 1,
"sortField": "",
"sortOrder": ""
}
* @returns
*/
export const getEmailSenderConfigList = (params: {
emailSenderConfigName?: string
emailSenderConfigEmail?: string
pageNo?: number
pageSize?: number
sortField?: string
sortOrder?: string
}) => {
return request.post('/emailSenderConfig/page', params)
}
// 分页查询变量
// 接口地址:/emailVariable/page
// 请求参数:{"variableNameCn":"","variableNameEn":"","pageNo":1,"pageSize":1,"sortField":"","sortOrder":""}
/**
*
* @param params {
"variableNameCn": "", //变量名称(中文)
"variableNameEn": "", //变量名称(英文)
"pageNo": 1,
"pageSize": 1,
"sortField": "",
"sortOrder": ""
}
* @returns
*/
export const getEmailVariableList = (params: {
variableNameCn?: string
variableNameEn?: string
pageNo?: number
pageSize?: number
sortField?: string
sortOrder?: string
}) => {
return request.post('/emailVariable/page', params)
}
// 新增变量
// 接口地址:/emailVariable/add
/**
*
* @param data {"variableNameCn": "", //变量字段名称中文名
"variableNameEn": "", //变量字段名称英文名
"description": "" //变量描述
}
* @returns
*/
export const addEmailVariable = (data: {
variableNameCn?: string
variableNameEn?: string
description?: string
}) => {
return request.post('/emailVariable/add', data)
}
// 编辑变量
// 接口地址:/emailVariable/edit
/**
*
* @param data {"id": 1, //变量表主键ID
"variableBizId": "", //变量唯一业务ID
"variableNameCn": "", //变量字段名称中文名
"variableNameEn": "", //变量字段名称英文名
"description": "" //变量描述
}
* @returns
*/
export const editEmailVariable = (data: {
id?: number
variableBizId?: string
variableNameCn?: string
variableNameEn?: string
description?: string
}) => {
return request.put('/emailVariable/edit', data)
}
// 删除变量
// 接口地址:/emailVariable/del?variableBizId=
// 请求参数:
/**
*
* @param id 变量id
* @returns
*/
export const deleteEmailVariable = (id: string) => {
return request.delete('/emailVariable/del?variableBizId=' + id)
}
/**
* 新增变量分组
* @param data {"variableGroupBizId": "", //变量分组唯一业务ID
"variableGroupName": "", //变量分组名称
"description": "" //变量分组描述
}
* @returns
*/
export const addEmailVariableGroup = (data: {
variableBizIdList?: string[]
groupName?: string
description?: string
}) => {
return request.post('/emailVariableGroup/add', data)
}
/**
* 编辑变量分组
* @param data {"variableGroupBizId": "", //变量分组唯一业务ID
"variableGroupName": "", //变量分组名称
"description": "" //变量分组描述
}
* @returns
*/
export const editEmailVariableGroup = (data: {
variableGroupBizId?: string
groupName?: string
description?: string
variableBizIdList?: string[]
}) => {
return request.put('/emailVariableGroup/edit', data)
}
/**
* 删除变量分组
* @param id 变量分组id
* @returns
*/
export const deleteEmailVariableGroup = (id: string) => {
return request.delete('/emailVariableGroup/del?variableGroupBizId=' + id)
}
/**
* 列表查询变量分组
* @param params {
"variableGroupName": "", //变量分组名称
"pageNo": 1,
"pageSize": 1,
"sortField": "",
"sortOrder": ""
}
* @returns
*/
export const getEmailVariableGroupList = (params: {
groupName?: string
pageNo?: number
pageSize?: number
sortField?: string
sortOrder?: string
}) => {
return request.post('/emailVariableGroup/page', params)
}
/**
* 获取变量分组详情
* @param id 变量分组id
* @returns
*/
export const getEmailVariableGroupDetail = (id: string) => {
return request.get('/emailVariableGroup/detail?variableGroupBizId=' + id)
}
/**
* 选择联系人时,调用接口,获取sessionId
*/
/**
*
* @returns
*/
export const getEmailContactSessionId = (params) => {
return request.post('/emailContactImport/select/add', params)
}
/**
* 编辑-邮件联系人导入信息
*/
/**
*
* @param data {"sessionId": "", //会话ID
"apiEmailContactDtoList": [
{
"email": "", //邮箱
"name": "" //姓名
}
] //联系人列表
}
* @returns
*/
export const editEmailContactImport = (data: EditContactImport) => {
return request.put('/emailContactImport/edit', data)
}
/**
* 邮件联系人导入列表查询
*/
/**
*
* @param params {
"sessionId": "", //会话ID
"pageNo": 1,
"pageSize": 1,
"sortField": "",
"sortOrder": ""
}
* @returns
*/
export const getEmailContactImportList = (params: EditContactImport) => {
return request.post('/emailContactImport/page', params)
} }
declare module '*.vue' {
import type { DefineComponent } from 'vue'
const component: DefineComponent<object, object, unknown>
export default component
}
// 分页类型
export interface Pagination<T> {
records?: T[]
total?: number
pageSize?: number
sortField?: string
sortOrder?: string
pageNo?: number
}
// 联系人类型 // 联系人类型
export interface Contact { export interface Contact extends Pagination<Contact> {
contactBizId?: string contactBizId?: string
name?: string name?: string
type?: string type?: string
...@@ -11,17 +21,19 @@ export interface Contact { ...@@ -11,17 +21,19 @@ export interface Contact {
} }
// 发件人类型 // 发件人类型
export interface Sender { export interface Sender extends Pagination<Sender> {
senderBizId?: string senderBizId?: string
email?: string email?: string
password?: string password?: string
displayName?: string displayName?: string
providerBizId?: string providerBizId?: string
active?: number active?: number
emailSenderConfigName?: string
emailSenderConfigEmail?: string
} }
// 变量类型 // 变量类型
export interface Variable { export interface Variable extends Pagination<Variable> {
id?: string id?: string
variableBizId?: string variableBizId?: string
variableNameCn?: string variableNameCn?: string
...@@ -30,7 +42,7 @@ export interface Variable { ...@@ -30,7 +42,7 @@ export interface Variable {
} }
// 变量模板类型 // 变量模板类型
export interface VariableTemplate { export interface VariableTemplate extends Pagination<VariableTemplate> {
variableGroupBizId?: string variableGroupBizId?: string
groupName?: string groupName?: string
description?: string description?: string
...@@ -39,7 +51,7 @@ export interface VariableTemplate { ...@@ -39,7 +51,7 @@ export interface VariableTemplate {
} }
// 邮件类型 // 邮件类型
export interface Email { export interface Email extends Pagination<Email> {
id?: string id?: string
sender?: string sender?: string
to?: string[] to?: string[]
...@@ -52,7 +64,7 @@ export interface Email { ...@@ -52,7 +64,7 @@ export interface Email {
} }
// 邮件表单类型 // 邮件表单类型
export interface EmailForm { export interface EmailForm extends Pagination<EmailForm> {
to: string to: string
cc: string cc: string
subject: string subject: string
...@@ -84,12 +96,27 @@ export interface ContactSessionId { ...@@ -84,12 +96,27 @@ export interface ContactSessionId {
} }
// 编辑-邮件联系人导入信息 // 编辑-邮件联系人导入信息
export interface EditContactImport { export interface EditContactImport extends Pagination<EditContactImport> {
receiveEmail?: string receiveEmail?: string
sessionId?: string sessionId?: string
source?: string source?: string
pageNo?: number }
pageSize?: number // 发送邮件
sortField?: string export interface SendEmail {
sortOrder?: string senderBizId?: string
recipientEmailList?: string[]
ccEmailList?: string[]
bccEmailList?: string[]
subject?: string
body?: string
}
//邮件服务商类型
export interface EmailProvider extends Pagination<EmailProvider> {
providerBizId?: string
providerName?: string
smtpHost?: string
smtpPort?: string
sslEnabled?: number
active?: number
description?: string
} }
import axios, { AxiosError } from 'axios' import axios, { type AxiosError, type AxiosResponse, type InternalAxiosRequestConfig } from 'axios'
// 定义统一的响应类型
export interface ApiResponse<T = object> {
code: number
message?: string
data: T
success: boolean
msg?: string
}
// 创建axios实例 // 创建axios实例
const request = axios.create({ const request = axios.create({
...@@ -14,7 +23,7 @@ const request = axios.create({ ...@@ -14,7 +23,7 @@ const request = axios.create({
// 请求拦截器 - 添加Authorization头 // 请求拦截器 - 添加Authorization头
request.interceptors.request.use( request.interceptors.request.use(
(config) => { (config: InternalAxiosRequestConfig) => {
// 从本地存储获取token // 从本地存储获取token
const token = localStorage.getItem('authToken') const token = localStorage.getItem('authToken')
...@@ -33,7 +42,7 @@ request.interceptors.request.use( ...@@ -33,7 +42,7 @@ request.interceptors.request.use(
// 响应拦截器 - 处理常见错误 // 响应拦截器 - 处理常见错误
request.interceptors.response.use( request.interceptors.response.use(
(response) => { (response: AxiosResponse) => {
// 直接返回响应数据 // 直接返回响应数据
return response.data return response.data
}, },
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500" class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
> >
<option v-for="sender in senders" :key="sender.senderBizId" :value="sender"> <option v-for="sender in senders" :key="sender.senderBizId" :value="sender">
{{ sender.email }} {{ sender.email }} - {{ sender.displayName }}
</option> </option>
</select> </select>
</div> </div>
...@@ -43,6 +43,7 @@ ...@@ -43,6 +43,7 @@
type="text" type="text"
class="flex-1 px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500" class="flex-1 px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
placeholder="输入收件人邮箱,多个邮箱用逗号分隔" placeholder="输入收件人邮箱,多个邮箱用逗号分隔"
:disabled="!!selectedVariableTemplate"
/> />
<!-- 当选择模版有值时,不显示选择联系人按钮 --> <!-- 当选择模版有值时,不显示选择联系人按钮 -->
<button <button
...@@ -69,6 +70,7 @@ ...@@ -69,6 +70,7 @@
type="text" type="text"
class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500" class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
placeholder="输入抄送人邮箱,多个邮箱用逗号分隔" placeholder="输入抄送人邮箱,多个邮箱用逗号分隔"
:disabled="!!selectedVariableTemplate"
/> />
</div> </div>
...@@ -261,12 +263,7 @@ import type { ...@@ -261,12 +263,7 @@ import type {
ImportRecord, ImportRecord,
} from '../types' } from '../types'
// 引入api接口,获取联系人列表、发件人列表、变量模版列表 // 引入api接口,获取联系人列表、发件人列表、变量模版列表
import { import { senderApi, variableGroupApi, contactApi, getContactList } from '../api/api'
getContactList,
getEmailSenderConfigList,
getEmailVariableGroupList,
getEmailVariableGroupDetail,
} from '../api/api'
// 引入弹窗组件 // 引入弹窗组件
import CommonModal from '@/components/CommonModal.vue' import CommonModal from '@/components/CommonModal.vue'
// 弹窗提示信息对象 // 弹窗提示信息对象
...@@ -301,28 +298,34 @@ const handleCancel = (triggerKey: string) => { ...@@ -301,28 +298,34 @@ const handleCancel = (triggerKey: string) => {
} }
// 初始化数据 // 初始化数据
const getSenders = () => { const getSenders = () => {
getEmailSenderConfigList({ senderApi
pageNo: 1, .getEmailSenderConfigList({
pageSize: 100, pageNo: 1,
}).then((res) => { pageSize: 100,
senders.value = res.data?.records || [] })
}) .then((res) => {
senders.value = res.data?.records || []
})
} }
const getContacts = () => { const getContacts = () => {
getContactList({ contactApi
pageNo: 1, .getContactList({
pageSize: 100, pageNo: 1,
}).then((res) => { pageSize: 100,
contacts.value = res.data?.records || [] })
}) .then((res) => {
contacts.value = res.data?.records || []
})
} }
const getGroups = () => { const getGroups = () => {
getEmailVariableGroupList({ variableGroupApi
pageNo: 1, .getEmailVariableGroupList({
pageSize: 100, pageNo: 1,
}).then((res) => { pageSize: 100,
groups.value = res.data?.records || [] })
}) .then((res) => {
groups.value = res.data?.records || []
})
} }
const senders = ref<Sender[]>([]) const senders = ref<Sender[]>([])
...@@ -388,9 +391,11 @@ const removeAttachment = (index: number) => { ...@@ -388,9 +391,11 @@ const removeAttachment = (index: number) => {
const applyVariableTemplate = () => { const applyVariableTemplate = () => {
if (!selectedVariableTemplate.value) return if (!selectedVariableTemplate.value) return
if (selectedVariableTemplate.value.variableGroupBizId) { if (selectedVariableTemplate.value.variableGroupBizId) {
getEmailVariableGroupDetail(selectedVariableTemplate.value.variableGroupBizId).then((res) => { variableGroupApi
variables.value = res.data?.emailVariableDtoList || [] .getEmailVariableGroupDetail(selectedVariableTemplate.value.variableGroupBizId)
}) .then((res) => {
variables.value = res.data?.emailVariableDtoList || []
})
} }
} }
......
...@@ -319,14 +319,7 @@ ...@@ -319,14 +319,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, computed, onMounted } from 'vue' import { ref, computed, onMounted } from 'vue'
// 引入我们创建的api拦截器 // 引入我们创建的api拦截器
import { import { contactApi } from '@/api/api'
addContact,
editContact,
deleteContact,
getContactDetail,
getContactList,
getEmailSenderConfigList,
} from '@/api/api'
import type { Contact } from '@/types/index' import type { Contact } from '@/types/index'
// 引入弹窗组件 // 引入弹窗组件
import CommonModal from '@/components/CommonModal.vue' import CommonModal from '@/components/CommonModal.vue'
...@@ -355,7 +348,7 @@ const handleConfirm = (triggerKey: string) => { ...@@ -355,7 +348,7 @@ const handleConfirm = (triggerKey: string) => {
modalVisible.value = false modalVisible.value = false
console.log('用户确认操作', triggerKey) console.log('用户确认操作', triggerKey)
if (triggerKey === 'deleteContactModal' && form.value.contactBizId) { if (triggerKey === 'deleteContactModal' && form.value.contactBizId) {
deleteContact(form.value.contactBizId as string).then((res) => { contactApi.deleteContact(form.value.contactBizId as string).then((res) => {
if (res.code === 200) { if (res.code === 200) {
fetchContacts() fetchContacts()
openModal({ openModal({
...@@ -476,7 +469,7 @@ const totalPages = computed(() => { ...@@ -476,7 +469,7 @@ const totalPages = computed(() => {
const fetchContacts = async () => { const fetchContacts = async () => {
try { try {
isLoading.value = true isLoading.value = true
const data = await getContactList({ const data = await contactApi.getContactList({
pageNo: currentPage.value, pageNo: currentPage.value,
pageSize: pageSize.value, pageSize: pageSize.value,
sortField: sortBy.value, sortField: sortBy.value,
...@@ -614,7 +607,7 @@ const saveContact = async () => { ...@@ -614,7 +607,7 @@ const saveContact = async () => {
if (isEditing.value && form.value.contactBizId) { if (isEditing.value && form.value.contactBizId) {
// 更新现有联系人 // 更新现有联系人
editContact({ ...contactData }).then((res) => { contactApi.updateContact({ ...contactData }).then((res) => {
if (res.code === 200) { if (res.code === 200) {
openModal({ openModal({
title: '更新联系人成功', title: '更新联系人成功',
...@@ -631,7 +624,7 @@ const saveContact = async () => { ...@@ -631,7 +624,7 @@ const saveContact = async () => {
}) })
} else { } else {
// 添加新联系人 // 添加新联系人
await addContact(contactData).then((res) => { await contactApi.addContact(contactData).then((res) => {
if (res.code === 200) { if (res.code === 200) {
openModal({ openModal({
title: '添加联系人成功', title: '添加联系人成功',
......
...@@ -102,8 +102,8 @@ ...@@ -102,8 +102,8 @@
<td class="px-6 py-4 whitespace-nowrap">{{ sender.email }}</td> <td class="px-6 py-4 whitespace-nowrap">{{ sender.email }}</td>
<td class="px-6 py-4 whitespace-nowrap"> <td class="px-6 py-4 whitespace-nowrap">
{{ {{
providers.find((provider) => provider.providerBizId === sender.providerBizId) providers.find((i) => i.providerBizId === sender.providerBizId)?.providerName ||
?.providerName || '未知' '未知'
}} }}
</td> </td>
<td class="px-6 py-4 whitespace-nowrap">{{ sender.displayName }}</td> <td class="px-6 py-4 whitespace-nowrap">{{ sender.displayName }}</td>
...@@ -149,13 +149,7 @@ ...@@ -149,13 +149,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, defineProps, defineEmits, onMounted } from 'vue' import { ref, defineProps, defineEmits, onMounted } from 'vue'
import { import { emailProviderApi, senderApi, getEmailSenderConfigList } from '@/api/api'
getEmailSenderConfigList,
getEmailProviderList,
deleteEmailSenderConfig,
addEmailSenderConfig,
editEmailSenderConfig,
} from '@/api/api'
import type { Sender } from '@/types/index' import type { Sender } from '@/types/index'
// 引入弹窗组件 // 引入弹窗组件
import CommonModal from '@/components/CommonModal.vue' import CommonModal from '@/components/CommonModal.vue'
...@@ -184,7 +178,7 @@ const handleConfirm = (triggerKey: string) => { ...@@ -184,7 +178,7 @@ const handleConfirm = (triggerKey: string) => {
modalVisible.value = false modalVisible.value = false
console.log('用户确认操作', triggerKey) console.log('用户确认操作', triggerKey)
if (triggerKey === 'deleteModal') { if (triggerKey === 'deleteModal') {
deleteEmailSenderConfig(editingSenderId.value).then((res) => { senderApi.deleteEmailSenderConfig(editingSenderId.value).then((res) => {
if (res.code === 200) { if (res.code === 200) {
openModal({ openModal({
title: '删除确认', title: '删除确认',
...@@ -235,22 +229,24 @@ const resetForm = () => { ...@@ -235,22 +229,24 @@ const resetForm = () => {
} }
} }
const getProviders = () => { const getProviders = () => {
getEmailProviderList({ emailProviderApi
providerName: '', .getEmailProviderList({
pageNo: 1, providerName: '',
pageSize: 100, })
}).then((res) => { .then((res) => {
providers.value = res.data?.records || [] providers.value = res.data?.records || []
}) })
} }
const getSenders = () => { const getSenders = () => {
getEmailSenderConfigList({ senderApi
emailSenderConfigName: '', .getEmailSenderConfigList({
pageNo: 1, emailSenderConfigName: '',
pageSize: 100, pageNo: 1,
}).then((res) => { pageSize: 100,
senders.value = res.data?.records || [] })
}) .then((res) => {
senders.value = res.data?.records || []
})
} }
const saveSender = () => { const saveSender = () => {
console.log(formData.value) console.log(formData.value)
...@@ -264,23 +260,25 @@ const saveSender = () => { ...@@ -264,23 +260,25 @@ const saveSender = () => {
if (editingSenderId.value) { if (editingSenderId.value) {
// 更新现有发件人 // 更新现有发件人
editEmailSenderConfig({ senderApi
senderBizId: editingSenderId.value, .editEmailSenderConfig({
...formData.value, senderBizId: editingSenderId.value,
}).then((res) => { ...formData.value,
if (res.code === 200) { })
getSenders() .then((res) => {
openModal({ if (res.code === 200) {
title: '更新确认', getSenders()
message: '发件人更新成功', openModal({
}) title: '更新确认',
} else { message: '发件人更新成功',
openModal({ })
title: '更新失败', } else {
message: res.msg || '更新失败', openModal({
}) title: '更新失败',
} message: res.msg || '更新失败',
}) })
}
})
} else { } else {
// 添加新发件人 // 添加新发件人
const newSender: Sender = { const newSender: Sender = {
...@@ -290,7 +288,7 @@ const saveSender = () => { ...@@ -290,7 +288,7 @@ const saveSender = () => {
displayName: formData.value.displayName || '', displayName: formData.value.displayName || '',
active: formData.value.active ?? 1, active: formData.value.active ?? 1,
} }
addEmailSenderConfig(newSender).then((res) => { senderApi.addEmailSenderConfig(newSender).then((res) => {
// 补充异常处理 // 补充异常处理
if (res.code === 200) { if (res.code === 200) {
getSenders() getSenders()
......
...@@ -290,17 +290,7 @@ ...@@ -290,17 +290,7 @@
import { ref, defineProps, defineEmits, onMounted } from 'vue' import { ref, defineProps, defineEmits, onMounted } from 'vue'
import type { Variable, VariableTemplate } from '../types' import type { Variable, VariableTemplate } from '../types'
import { import { variableApi, variableGroupApi } from '@/api/api'
getEmailVariableList,
addEmailVariable,
editEmailVariable,
deleteEmailVariable,
addEmailVariableGroup,
editEmailVariableGroup,
deleteEmailVariableGroup,
getEmailVariableGroupList,
getEmailVariableGroupDetail,
} from '@/api/api'
// 引入弹窗组件 // 引入弹窗组件
import CommonModal from '@/components/CommonModal.vue' import CommonModal from '@/components/CommonModal.vue'
...@@ -386,26 +376,29 @@ const saveVariable = () => { ...@@ -386,26 +376,29 @@ const saveVariable = () => {
if (editingVariableId.value) { if (editingVariableId.value) {
// 更新接口 // 更新接口
editEmailVariable({ variableApi
variableBizId: variableForm.value.variableBizId || '', .editEmailVariable({
variableNameCn: variableForm.value.variableNameCn, variableBizId: variableForm.value.variableBizId || '',
variableNameEn: variableForm.value.variableNameEn, variableNameCn: variableForm.value.variableNameCn,
description: variableForm.value.description, variableNameEn: variableForm.value.variableNameEn,
}).then(() => { description: variableForm.value.description,
// 更新本地变量列表 })
fetchVariables() .then(() => {
openModal({ // 更新本地变量列表
title: '成功', fetchVariables()
message: '变量更新成功', openModal({
title: '成功',
message: '变量更新成功',
})
}) })
})
} else { } else {
// 创建接口 // 创建接口
addEmailVariable({ variableApi
variableNameCn: variableForm.value.variableNameCn, .addEmailVariable({
variableNameEn: variableForm.value.variableNameEn, variableNameCn: variableForm.value.variableNameCn,
description: variableForm.value.description, variableNameEn: variableForm.value.variableNameEn,
}) description: variableForm.value.description,
})
.then((res) => { .then((res) => {
// 刷新变量列表 // 刷新变量列表
fetchVariables() fetchVariables()
...@@ -441,7 +434,8 @@ const editVariable = (variable: Variable) => { ...@@ -441,7 +434,8 @@ const editVariable = (variable: Variable) => {
const deleteVariable = (id: string, type?: string) => { const deleteVariable = (id: string, type?: string) => {
editingVariableId.value = id editingVariableId.value = id
if (id && type === 'confirmDelete') { if (id && type === 'confirmDelete') {
deleteEmailVariable(id) variableApi
.deleteEmailVariable(id)
.then(() => { .then(() => {
// 刷新变量列表 // 刷新变量列表
fetchVariables() fetchVariables()
...@@ -483,7 +477,8 @@ const fetchVariables = () => { ...@@ -483,7 +477,8 @@ const fetchVariables = () => {
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
} }
getEmailVariableList(params) variableApi
.getEmailVariableList(params)
.then((res) => { .then((res) => {
variables.value = res.data.records || [] variables.value = res.data.records || []
}) })
...@@ -508,7 +503,8 @@ const fetchVariableTemplates = () => { ...@@ -508,7 +503,8 @@ const fetchVariableTemplates = () => {
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
} }
getEmailVariableGroupList(params) variableGroupApi
.getEmailVariableGroupList(params)
.then((res) => { .then((res) => {
variableTemplates.value = res.data.records || [] variableTemplates.value = res.data.records || []
}) })
...@@ -581,12 +577,13 @@ const saveVariableTemplate = () => { ...@@ -581,12 +577,13 @@ const saveVariableTemplate = () => {
if (editingTemplateId.value) { if (editingTemplateId.value) {
console.log('更新变量模版', templateForm.value) console.log('更新变量模版', templateForm.value)
// 更新现有模板 // 更新现有模板
editEmailVariableGroup({ variableGroupApi
variableGroupBizId: editingTemplateId.value, .editEmailVariableGroup({
groupName: templateForm.value.groupName || '', variableGroupBizId: editingTemplateId.value,
description: templateForm.value.description || '', groupName: templateForm.value.groupName || '',
variableBizIdList: templateForm.value.variableBizIdList || [], description: templateForm.value.description || '',
}) variableBizIdList: templateForm.value.variableBizIdList || [],
})
.then(() => { .then(() => {
// 刷新变量模版列表 // 刷新变量模版列表
fetchVariableTemplates() fetchVariableTemplates()
...@@ -607,11 +604,12 @@ const saveVariableTemplate = () => { ...@@ -607,11 +604,12 @@ const saveVariableTemplate = () => {
}) })
} else { } else {
// 调用变量组保存接口 // 调用变量组保存接口
addEmailVariableGroup({ variableGroupApi
groupName: templateForm.value.groupName || '', .addEmailVariableGroup({
description: templateForm.value.description || '', groupName: templateForm.value.groupName || '',
variableBizIdList: templateForm.value.variableBizIdList || [], description: templateForm.value.description || '',
}) variableBizIdList: templateForm.value.variableBizIdList || [],
})
.then(() => { .then(() => {
// 刷新变量模版列表 // 刷新变量模版列表
fetchVariableTemplates() fetchVariableTemplates()
...@@ -638,7 +636,8 @@ const saveVariableTemplate = () => { ...@@ -638,7 +636,8 @@ const saveVariableTemplate = () => {
const deleteVariableTemplate = (id: string, type?: string) => { const deleteVariableTemplate = (id: string, type?: string) => {
editingTemplateId.value = id editingTemplateId.value = id
if (type === 'confirmDelete') { if (type === 'confirmDelete') {
deleteEmailVariableGroup(editingTemplateId.value) variableGroupApi
.deleteEmailVariableGroup(editingTemplateId.value)
.then(() => { .then(() => {
// 刷新变量模版列表 // 刷新变量模版列表
fetchVariableTemplates() fetchVariableTemplates()
......
{ {
"files": [],
"references": [
{
"path": "./tsconfig.node.json"
},
{
"path": "./tsconfig.app.json"
},
{
"path": "./tsconfig.vitest.json"
}
],
"compilerOptions": { "compilerOptions": {
"target": "ES2020",
"useDefineForClassFields": true,
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"module": "ESNext",
"skipLibCheck": true, "skipLibCheck": true,
"strict": false "moduleResolution": "bundler",
} "allowImportingTsExtensions": true,
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "preserve",
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
"composite": true,
"declaration": true,
"declarationMap": true,
"baseUrl": "/yd-email",
"paths": {
"@/*": ["src/*"],
"@/components/*": ["src/components/*"],
"@/views/*": ["src/views/*"],
"@/utils/*": ["src/utils/*"],
"@/api/*": ["src/api/*"],
"@/types/*": ["src/types/*"],
"@/stores/*": ["src/stores/*"],
"@/assets/*": ["src/assets/*"]
}
},
"include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue", "src/**/*.d.ts", "src/shims-vue.d.ts"],
"exclude": ["node_modules", "dist"]
} }
...@@ -3,7 +3,7 @@ import { defineConfig } from 'vite' ...@@ -3,7 +3,7 @@ import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue' import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx' import vueJsx from '@vitejs/plugin-vue-jsx'
import vueDevTools from 'vite-plugin-vue-devtools' import vueDevTools from 'vite-plugin-vue-devtools'
/**设置server转发 */ import { resolve } from 'path'
export default defineConfig({ export default defineConfig({
// 关键配置:设置基础路径为子目录 yd-email // 关键配置:设置基础路径为子目录 yd-email
...@@ -12,6 +12,7 @@ export default defineConfig({ ...@@ -12,6 +12,7 @@ export default defineConfig({
resolve: { resolve: {
alias: { alias: {
'@': fileURLToPath(new URL('./src', import.meta.url)), '@': fileURLToPath(new URL('./src', import.meta.url)),
'@/components': resolve(__dirname, 'src/components'),
}, },
}, },
// 添加CSS配置 // 添加CSS配置
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment