-
+
+
+
1. 客户及成交信息
-
+
+
+
2. 附件文档 (限1份)
@@ -107,7 +120,9 @@
:custom-request="({ file, onFinish, onError, onProgress }) => handleCustomUpload({ file, onFinish, onError, onProgress }, 'documentFileList')">
点击或拖拽上传
支持 PDF, DOCX, XLSX (Max 50MB)
@@ -120,7 +135,9 @@
-
+
+
+
4. 电子签名 (限1张)
@@ -129,7 +146,9 @@
@preview="handlePreview"
:custom-request="({ file, onFinish, onError, onProgress }) => handleCustomUpload({ file, onFinish, onError, onProgress }, 'signatureFileList')">
-
+
+
+
上传手写签名
@@ -142,7 +161,9 @@
-
+
+
+
3. 付款截图凭证 (可多张)
@@ -150,7 +171,9 @@
v-model:file-list="paymentFileListLast" @preview="handlePreview"
:custom-request="({ file, onFinish, onError, onProgress }) => handleCustomUpload({ file, onFinish, onError, onProgress }, 'paymentFileList')">
-
+
+
+
提交材料至中心
@@ -220,39 +245,39 @@ const themeOverrides = {
* 初始化企业微信 JSSDK
*/
async function getConfigSignature(url) {
- const response = await fetch('https://superdata.nycjy.cn/api/v1/wecom/agent-config-signature', {
- method: 'POST',
- headers: { 'Content-Type': 'application/json' },
- body: JSON.stringify({ url })
- })
- const ConfigSignature = await response.json()
- console.log('基础签名响应:', ConfigSignature)
- if (ConfigSignature.code === 200 && ConfigSignature.data) {
- return {
- timestamp: ConfigSignature.data.timestamp,
- nonceStr: ConfigSignature.data.nonceStr,
- signature: ConfigSignature.data.corpSignature
+ const response = await fetch('https://superdata.nycjy.cn/api/v1/wecom/agent-config-signature', {
+ method: 'POST',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify({ url })
+ })
+ const ConfigSignature = await response.json()
+ console.log('基础签名响应:', ConfigSignature)
+ if (ConfigSignature.code === 200 && ConfigSignature.data) {
+ return {
+ timestamp: ConfigSignature.data.timestamp,
+ nonceStr: ConfigSignature.data.nonceStr,
+ signature: ConfigSignature.data.corpSignature
+ }
}
- }
- throw new Error('基础签名获取失败')
+ throw new Error('基础签名获取失败')
}
async function getAgentConfigSignature(url) {
- const response = await fetch('https://superdata.nycjy.cn/api/v1/wecom/agent-config-signature', {
- method: 'POST',
- headers: { 'Content-Type': 'application/json' },
- body: JSON.stringify({ url })
- })
- const AgentConfigSignature = await response.json()
- console.log('应用签名响应:', AgentConfigSignature)
- if (AgentConfigSignature.code === 200 && AgentConfigSignature.data) {
- return {
- timestamp: AgentConfigSignature.data.timestamp,
- nonceStr: AgentConfigSignature.data.nonceStr,
- signature: AgentConfigSignature.data.signature
+ const response = await fetch('https://superdata.nycjy.cn/api/v1/wecom/agent-config-signature', {
+ method: 'POST',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify({ url })
+ })
+ const AgentConfigSignature = await response.json()
+ console.log('应用签名响应:', AgentConfigSignature)
+ if (AgentConfigSignature.code === 200 && AgentConfigSignature.data) {
+ return {
+ timestamp: AgentConfigSignature.data.timestamp,
+ nonceStr: AgentConfigSignature.data.nonceStr,
+ signature: AgentConfigSignature.data.signature
+ }
}
- }
- throw new Error('应用签名获取失败')
+ throw new Error('应用签名获取失败')
}
const initSDK = async () => {
try {
@@ -433,7 +458,7 @@ const handleSubmit = async () => {
message.error('未获取到客户ID,无法提交');
return;
}
-
+
const submitPayload = {
wecom_id: wecomId,
analyst_supervisor: formData.analystSupervisor,
@@ -445,6 +470,7 @@ const handleSubmit = async () => {
transaction_date: formatDate(formData.transactionDate),
transaction_amount: String(formData.transactionAmount || ''),
guidance_period: formData.guidancePeriod,
+ analyst_remark: formData.analystNotes,
payment_object_names: formData.paymentFileList.map(f => f.rawResponse?.data?.object_name).filter(Boolean),
signature_object_name: formData.signatureFileList[0]?.rawResponse?.data?.object_name || null,
attachment_object_name: formData.documentFileList[0]?.rawResponse?.data?.object_name || null,
@@ -471,7 +497,8 @@ const handleCancel = () => router.back()
.page-wrapper {
min-height: 100vh;
background-color: #f5f7fa;
- padding-bottom: 120px; /* 为底部悬浮栏留出空间 */
+ padding-bottom: 120px;
+ /* 为底部悬浮栏留出空间 */
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}
@@ -580,9 +607,19 @@ const handleCancel = () => router.back()
}
/* 布局辅助 */
-.mt-8 { margin-top: 8px; }
-.mt-20 { margin-top: 20px; }
-.full-h { height: 100%; display: flex; flex-direction: column; }
+.mt-8 {
+ margin-top: 8px;
+}
+
+.mt-20 {
+ margin-top: 20px;
+}
+
+.full-h {
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+}
/* 上传组件现代风格 */
.modern-dragger {
@@ -641,6 +678,7 @@ const handleCancel = () => router.back()
height: 120px;
border-radius: 12px;
}
+
.payment-modern-upload :deep(.n-upload-file.n-upload-file--image-card) {
width: 120px;
height: 120px;
@@ -705,17 +743,27 @@ const handleCancel = () => router.back()
height: 180px;
padding: 0 20px;
}
-
- .text-group h1 { font-size: 20px; }
- .text-group p { font-size: 11px; }
- .logout-btn { scale: 0.9; }
+
+ .text-group h1 {
+ font-size: 20px;
+ }
+
+ .text-group p {
+ font-size: 11px;
+ }
+
+ .logout-btn {
+ scale: 0.9;
+ }
.main-content {
margin-top: -40px;
padding: 0 12px;
}
- .card-body { padding: 16px; }
+ .card-body {
+ padding: 16px;
+ }
.footer-actions-wrapper {
bottom: 0;
@@ -723,9 +771,19 @@ const handleCancel = () => router.back()
border-radius: 0;
height: 80px;
}
-
- .footer-blur-bg { border-radius: 20px 20px 0 0; }
- .footer-content { justify-content: space-around; padding: 0 16px; }
- .btn-cancel, .btn-submit { flex: 1; }
+
+ .footer-blur-bg {
+ border-radius: 20px 20px 0 0;
+ }
+
+ .footer-content {
+ justify-content: space-around;
+ padding: 0 16px;
+ }
+
+ .btn-cancel,
+ .btn-submit {
+ flex: 1;
+ }
}
\ No newline at end of file
-
+
+
+
添加凭证
@@ -167,7 +190,9 @@