From dc218e3d0ec8d99987b479d18034540cf912e2e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wei=5F=E4=BD=B3?= Date: Thu, 27 Nov 2025 12:26:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9C=A8=E8=AF=81=E4=B9=A6=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E5=BC=B9=E7=AA=97=E4=B8=AD=E5=A2=9E=E5=8A=A0=E7=9F=AD?= =?UTF-8?q?=E4=BF=A1=E9=80=9A=E7=9F=A5=E5=8A=9F=E8=83=BD=E5=B9=B6=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E5=8F=91=E7=A5=A8=E5=8F=91=E9=80=81=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/api/index.js | 1 + web/src/views/transaction/invoice/index.vue | 1 + .../audit/components/CertificateModal.vue | 25 ++++++++++++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/web/src/api/index.js b/web/src/api/index.js index 785d092..1b92614 100644 --- a/web/src/api/index.js +++ b/web/src/api/index.js @@ -68,4 +68,5 @@ export default { request.post(`/valuations/${data.valuation_id || data.id}/reject`, { admin_notes: data.admin_notes }), updateValuationNotes: (data = {}) => request.put(`/valuations/${data.valuation_id || data.id}/admin-notes`, { admin_notes: data.admin_notes }), + sendSmsReport: (data = {}) => request.post('/sms/send-report', data), } diff --git a/web/src/views/transaction/invoice/index.vue b/web/src/views/transaction/invoice/index.vue index 87ee127..7657198 100644 --- a/web/src/views/transaction/invoice/index.vue +++ b/web/src/views/transaction/invoice/index.vue @@ -296,6 +296,7 @@ async function handleInvoiceConfirm(formData) { subject: formData.email, // 用户要求 subject 传 email body: formData.content, // 映射 content -> body file_url: formData.attachments, // 映射 attachments -> file_url + status:'success' } let res = await api.sendInvoice(payload) diff --git a/web/src/views/valuation/audit/components/CertificateModal.vue b/web/src/views/valuation/audit/components/CertificateModal.vue index 3b96e65..c73cdec 100644 --- a/web/src/views/valuation/audit/components/CertificateModal.vue +++ b/web/src/views/valuation/audit/components/CertificateModal.vue @@ -15,6 +15,7 @@ import { import { getToken } from '@/utils/auth/token' import { generateReport } from '@/utils/report' +import api from '@/api' const props = defineProps({ visible: { @@ -188,6 +189,25 @@ const handlePreview = (file) => { // 图片文件返回 true,让 NUpload 使用内置预览 return true } + +// 短信通知 +const handleSmsNotify = async () => { + try { + const phone = props.certificateData?.detailData?.user_phone + if (!phone) { + message.error('缺少手机号,无法发送短信') + return + } + message.loading('正在发送短信...') + await api.sendSmsReport({ + phone: phone + }) + message.success('短信发送成功') + } catch (error) { + console.error(error) + message.error('短信发送失败') + } +}