index.ts 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667
  1. import request from '@/utils/request';
  2. import { AxiosPromise } from 'axios';
  3. import { EmailsVO, EmailsForm, EmailsQuery } from '@/api/emails/types';
  4. /**
  5. * 获取邮件列表
  6. * @param query
  7. * @returns {*}
  8. */
  9. export const listEmails = (query?: EmailsQuery): AxiosPromise<{records: EmailsVO[]}> => {
  10. return request({
  11. url: '/mail/page_list',
  12. method: 'post',
  13. data: query
  14. });
  15. };
  16. /**
  17. * 接收邮件列表
  18. * @param query
  19. * @returns {*}
  20. */
  21. export const receiveEmails = () => {
  22. return request({
  23. url: '/mail/receive_mail',
  24. method: 'post',
  25. data: {},
  26. timeout: 0
  27. });
  28. };
  29. /**
  30. * 查询邮件详细
  31. * @param id
  32. */
  33. export const getEmails = (mailId: string | number): AxiosPromise<EmailsVO> => {
  34. return request({
  35. url: '/mail/get_mail_detial',
  36. method: 'post',
  37. data: { mailId }
  38. });
  39. };
  40. /**
  41. * 修改邮件
  42. * @param data
  43. */
  44. export const updateEmails = (data: EmailsForm) => {
  45. return request({
  46. url: '/emails',
  47. method: 'put',
  48. data: data
  49. });
  50. };
  51. /**
  52. * 删除邮件
  53. * @param data
  54. */
  55. export const delEmails = (id: number | string) => {
  56. return request({
  57. url: '/mail/mark_trash',
  58. method: 'post',
  59. data: { emailId: id, isTrash: 1 }
  60. });
  61. };
  62. /**
  63. * 获取个人邮箱
  64. * @param data
  65. */
  66. export const getUserEmails = () => {
  67. return request({
  68. url: '/smtp/pop/setting/personal_mail_account',
  69. method: 'post',
  70. data: {}
  71. });
  72. }
  73. /**
  74. * 获取邮件配置列表信息
  75. * @param data
  76. */
  77. export const listEmailsSetting = (data: PageQuery) => {
  78. return request({
  79. url: '/smtp/pop/setting/pageList',
  80. method: 'post',
  81. data
  82. });
  83. }
  84. /**
  85. * 新增邮箱配置
  86. * @param data
  87. */
  88. export const addEmailsSetting = (data: EmailsForm) => {
  89. return request({
  90. url: '/smtp/pop/setting/save',
  91. method: 'post',
  92. data
  93. });
  94. };
  95. /**
  96. * 删除邮箱配置
  97. * @param data
  98. */
  99. export const delEmailsSetting = (id: string | number) => {
  100. return request({
  101. url: '/smtp/pop/setting/delete',
  102. method: 'post',
  103. data: { id }
  104. });
  105. };
  106. /**
  107. * 邮箱检测
  108. * @param data
  109. */
  110. export const emailsTest = (data: EmailsForm) => {
  111. return request({
  112. url: '/smtp/pop/setting/test_connect',
  113. method: 'post',
  114. data
  115. });
  116. };
  117. /**
  118. * 获取邮箱端口配置
  119. * @param data
  120. */
  121. export const getMailsPort = (mailAccount: string) => {
  122. return request({
  123. url: '/mail/mail_port_config',
  124. method: 'post',
  125. data: { mailAccount }
  126. });
  127. };
  128. /**
  129. * 发送邮件
  130. * @param data
  131. */
  132. export const sendEmails = (data: EmailsForm) => {
  133. return request({
  134. url: '/mail/send_mail',
  135. method: 'post',
  136. data
  137. });
  138. };
  139. /**
  140. * 保存草稿
  141. * @param data
  142. */
  143. export const saveDraft = (data: EmailsForm) => {
  144. return request({
  145. url: '/mail/save_draft',
  146. method: 'post',
  147. data
  148. });
  149. };
  150. /**
  151. * 获取邮件附件
  152. * @param query
  153. * @returns {*}
  154. */
  155. export const attachmentEmails = (query?: EmailsQuery): AxiosPromise<{records: EmailsVO[]}> => {
  156. return request({
  157. url: '/mail/list_mail_attachment',
  158. method: 'post',
  159. data: query
  160. });
  161. };
  162. /**
  163. * 设为星标邮件
  164. * @param query
  165. * @returns {*}
  166. */
  167. export const markStar = (query?: any): AxiosPromise<{records: EmailsVO[]}> => {
  168. return request({
  169. url: '/mail/mark_star',
  170. method: 'post',
  171. data: query
  172. });
  173. };
  174. /**
  175. * 全部标记为已读
  176. * @param query
  177. * @returns {*}
  178. */
  179. export const markAllRead = (query?: any): AxiosPromise<{records: EmailsVO[]}> => {
  180. return request({
  181. url: '/mail/mark_all_read',
  182. method: 'post',
  183. data: query
  184. });
  185. };
  186. /**
  187. * 标记为已读
  188. * @param query
  189. * @returns {*}
  190. */
  191. export const markRead = (query?: any): AxiosPromise<{records: EmailsVO[]}> => {
  192. return request({
  193. url: '/mail/mark_read',
  194. method: 'post',
  195. data: query
  196. });
  197. };
  198. /**
  199. * 删除邮件/移入垃圾箱
  200. * @param id
  201. */
  202. export const trashEmails = (query?: any): AxiosPromise<{records: EmailsVO[]}> => {
  203. return request({
  204. url: '/mail/mark_trash',
  205. method: 'post',
  206. data: query
  207. });
  208. };
  209. /**
  210. * 彻底删除邮件
  211. * @param ids
  212. * @returns {*}
  213. */
  214. export const completelyDelEmails = (ids: any): AxiosPromise<EmailsVO> => {
  215. return request({
  216. url: '/mail/deleteIds',
  217. method: 'post',
  218. data: { ids }
  219. });
  220. };
  221. /**
  222. * 删除草稿
  223. * @param ids
  224. * @returns {*}
  225. */
  226. export const completelyDelDraft = (ids: any): AxiosPromise<EmailsVO> => {
  227. return request({
  228. url: '/mail/deleteDraftIds',
  229. method: 'post',
  230. data: {ids}
  231. });
  232. };
  233. /**
  234. * 获取客户联系人邮箱
  235. * @param data
  236. */
  237. export const getCustomerEmails = (param: {scopeMenuId: string, pageSize: number, pageIndex: number, blurry?: string}) => {
  238. return request({
  239. url: '/mail/get_mail_customer_liaison',
  240. method: 'post',
  241. data: param
  242. });
  243. };
  244. /**
  245. * 获取同事邮箱
  246. * @param data
  247. */
  248. export const getColleagueEmails = () => {
  249. return request({
  250. url: '/mail/get_contact_mail',
  251. method: 'post',
  252. data: {}
  253. });
  254. };
  255. /**
  256. * 设置默认邮箱
  257. * @param data
  258. */
  259. export const setDefault = (id: string | number) => {
  260. return request({
  261. url: '/smtp/pop/setting/defaultUse',
  262. method: 'post',
  263. data: { id }
  264. });
  265. };
  266. /**
  267. * 获取邮件各类型未读数
  268. * @param data
  269. */
  270. export const getNoReadCount = () => {
  271. return request({
  272. url: '/mail/get_unread_count',
  273. method: 'post',
  274. data: {}
  275. });
  276. };
  277. /**
  278. * 获取邮件新邮件以及未读数
  279. * @param data
  280. */
  281. export const getNewMailCount = () => {
  282. return request({
  283. url: '/mail/get_new_mail',
  284. method: 'post',
  285. data: {}
  286. });
  287. };
  288. /**
  289. * 下载附件
  290. * @param query
  291. * @returns {*}
  292. */
  293. export const fileDownload = (query: any, type?: string) => {
  294. return request({
  295. url: '/mail/' + ((type == 'draft' || type == 'senting') ? 'draft_download' : 'download'),
  296. method: 'post',
  297. data: query,
  298. responseType: "blob",
  299. responseEncoding: "utf8"
  300. });
  301. };
  302. /**
  303. * 预览附件URL(给 window.open 使用)
  304. * 注意:保持与旧 sales 项目一致的 /sales 前缀,走 vite proxy。
  305. */
  306. export const filePreviewUrl = (id: string | number, type?: string) => {
  307. return (
  308. '/sales/mail/' +
  309. ((type == 'draft' || type == 'senting') ? 'draft_download' : 'download') +
  310. '?attachmentId=' + id
  311. );
  312. };
  313. /**
  314. * 打包下载附件
  315. * @param query
  316. * @returns {*}
  317. */
  318. export const downloadZip = (query: any) => {
  319. return request({
  320. url: '/mail/download_zip',
  321. method: 'post',
  322. data: query,
  323. responseType: "blob",
  324. responseEncoding: "utf8"
  325. });
  326. };
  327. /**
  328. * 详情里面获取邮件记录
  329. * @param data
  330. */
  331. export const getMailList = (data) => {
  332. return request({
  333. url: '/mail/email_list',
  334. method: 'post',
  335. data
  336. });
  337. };
  338. /**
  339. * 详情里面记录查看
  340. * @param data
  341. */
  342. export const setClickRecord = (customerMailId: string | number) => {
  343. return request({
  344. url: '/mail/click/click_record',
  345. method: 'post',
  346. data: { customerMailId }
  347. });
  348. };
  349. /**
  350. * 详情里面查看点击记录
  351. * @param data
  352. */
  353. export const getRecord = (data) => {
  354. return request({
  355. url: '/mail/click/page_list',
  356. method: 'post',
  357. data
  358. });
  359. };
  360. /**
  361. * 获取邮件具体内容
  362. * @param data
  363. */
  364. export const getEmailDetailContent = (data) => {
  365. return request({
  366. url: '/mail/getMailDetail',
  367. method: 'post',
  368. data
  369. });
  370. };
  371. /**
  372. * 邮件模板列表
  373. * @param data
  374. */
  375. export const getEmailTemplateList = (data) => {
  376. return request({
  377. url: '/email/templates/page_list',
  378. method: 'post',
  379. data
  380. });
  381. };
  382. /**
  383. * 添加邮件模板
  384. * @param data
  385. */
  386. export const addEmailTemplate = (data) => {
  387. return request({
  388. url: '/email/templates/save',
  389. method: 'post',
  390. data
  391. });
  392. };
  393. /**
  394. * 删除邮件模板
  395. * @param data
  396. */
  397. export const delEmailTemplate = (ids: (string | number)[]) => {
  398. return request({
  399. url: '/email/templates/deleteIds',
  400. method: 'post',
  401. data: { ids }
  402. });
  403. };
  404. /**
  405. * 邮件黑名单列表
  406. * @param data
  407. */
  408. export const getEmailBlackList = (data) => {
  409. return request({
  410. url: '/email/blacklist/page_list',
  411. method: 'post',
  412. data
  413. });
  414. };
  415. /**
  416. * 添加邮件黑名单
  417. * @param data
  418. */
  419. export const addEmailBlackList = (data) => {
  420. return request({
  421. url: '/email/blacklist/save',
  422. method: 'post',
  423. data
  424. });
  425. };
  426. /**
  427. * 删除邮件黑名单
  428. * @param data
  429. */
  430. export const delEmailBlackList = (ids: (string | number)[]) => {
  431. return request({
  432. url: '/email/blacklist/deleteIds',
  433. method: 'post',
  434. data: { ids }
  435. });
  436. };
  437. /**
  438. * 跟进邮件联查-批量修改跟进状态
  439. * @param data
  440. */
  441. export const editFollowStatus = (data) => {
  442. return request({
  443. url: '/customer-follow-up-emails/edit-follow-status',
  444. method: 'post',
  445. data
  446. });
  447. };
  448. /**
  449. * 导出邮件
  450. * @param query
  451. * @returns {*}
  452. */
  453. export const emilsExport = (query: any, type: string) => {
  454. return request({
  455. url: '/mail/download_mail_eml' + (type == 'batch' ? '_zip' : ''),
  456. method: 'post',
  457. data: query,
  458. responseType: "blob",
  459. responseEncoding: "utf8"
  460. });
  461. };
  462. /**
  463. * 邮件文件夹(不分页)
  464. * @param data
  465. */
  466. export const getEmailFolder = () => {
  467. return request({
  468. url: '/user/email/folder/list',
  469. method: 'post',
  470. data: {}
  471. });
  472. };
  473. /**
  474. * 邮件文件夹列表
  475. * @param data
  476. */
  477. export const getEmailFolderList = (data) => {
  478. return request({
  479. url: '/user/email/folder/page_list',
  480. method: 'post',
  481. data
  482. });
  483. };
  484. /**
  485. * 添加邮件文件夹
  486. * @param data
  487. */
  488. export const addEmailFolder = (data) => {
  489. return request({
  490. url: '/user/email/folder/save',
  491. method: 'post',
  492. data
  493. });
  494. };
  495. /**
  496. * 删除邮件文件夹
  497. * @param data
  498. */
  499. export const delEmailFolder = (ids: (string | number)[]) => {
  500. return request({
  501. url: '/user/email/folder/deleteIds',
  502. method: 'post',
  503. data: { ids }
  504. });
  505. };
  506. /**
  507. * 邮件文件夹设置列表(不分页)
  508. * @param data
  509. */
  510. export const getEmailFolderRuleList = () => {
  511. return request({
  512. url: '/email/folder/rule/list',
  513. method: 'post',
  514. data: {}
  515. });
  516. };
  517. /**
  518. * 获取文件夹设置规则
  519. * @param data
  520. */
  521. export const getFolderRule = () => {
  522. return request({
  523. url: '/email/folder/rule/get_folder_rule',
  524. method: 'post',
  525. data: {}
  526. });
  527. };
  528. /**
  529. * 设置文件夹规则
  530. * @param data
  531. */
  532. export const setEmailFolderRule = (data) => {
  533. return request({
  534. url: '/email/folder/rule/saveBatch',
  535. method: 'post',
  536. data
  537. });
  538. };
  539. /**
  540. * 删除文件夹规则
  541. * @param data
  542. */
  543. export const delEmailFolderRule = (ids: (string | number)[]) => {
  544. return request({
  545. url: '/email/folder/rule/deleteIds',
  546. method: 'post',
  547. data: { ids }
  548. });
  549. };
  550. /**
  551. * 移动文件到文件夹
  552. * @param data
  553. */
  554. export const moveEmailToFolder = (data) => {
  555. return request({
  556. url: '/mail/mv_custom_folder',
  557. method: 'post',
  558. data
  559. });
  560. };
  561. /**
  562. * 邮件主题历史列表
  563. * @param data
  564. */
  565. export const subjectRecordList = (data) => {
  566. return request({
  567. url: '/click/record/list',
  568. method: 'post',
  569. data
  570. });
  571. };
  572. /**
  573. * 记录邮件主题点击次数
  574. * @param data
  575. */
  576. export const subjectRecordClick = (data) => {
  577. return request({
  578. url: '/click/record/click_record',
  579. method: 'post',
  580. data
  581. });
  582. };
  583. /**
  584. * 设置自动回复
  585. * @param data
  586. */
  587. export const setAutomaticReply = (data) => {
  588. return request({
  589. url: '/smtp/pop/setting/setReplyContent',
  590. method: 'post',
  591. data
  592. });
  593. };
  594. /**
  595. * 陌生待处理修改处理状态
  596. * @param data
  597. */
  598. export const setStrangeStatus = (data) => {
  599. return request({
  600. url: '/mail/mark_reply_msg_id',
  601. method: 'post',
  602. data
  603. });
  604. };