This commit is contained in:
邹方成 2025-11-25 20:09:51 +08:00
commit d4b2c801f4
5 changed files with 19 additions and 44 deletions

View File

@ -61,6 +61,7 @@ const handleConfirm = () => {
if (!errors) { if (!errors) {
emit('confirm', { emit('confirm', {
...formData.value, ...formData.value,
attachments: fileList.value?.map((file) => file.url) || [],
id: props.invoiceData?.id, id: props.invoiceData?.id,
}) })
} }
@ -93,15 +94,11 @@ const handleUploadFinish = ({ file, event }) => {
const res = JSON.parse(event.target.response) const res = JSON.parse(event.target.response)
// url // url
if (res.code === 200 && res.data?.url) { if (res.code === 200 && res.data?.url) {
// fileList file.url = res.data.url
const targetFile = fileList.value.find(f => f.id === file.id) || file file.name = res.data.filename || file.name
targetFile.url = res.data.url file.status = 'finished'
targetFile.name = res.data.filename || targetFile.name
targetFile.status = 'finished' //
// formData.attachments
updateAttachments()
$message.success('上传成功') $message.success('上传成功')
return file
} else { } else {
$message.error(res.message || '上传失败') $message.error(res.message || '上传失败')
// //
@ -114,25 +111,6 @@ const handleUploadFinish = ({ file, event }) => {
const index = fileList.value.findIndex((item) => item.id === file.id) const index = fileList.value.findIndex((item) => item.id === file.id)
if (index > -1) fileList.value.splice(index, 1) if (index > -1) fileList.value.splice(index, 1)
} }
return file
}
//
const updateAttachments = () => {
// url
formData.value.attachments = fileList.value
.map(file => file.url)
.filter(url => !!url)
}
//
const handleRemove = ({ file }) => {
const index = fileList.value.findIndex(item => item.id === file.id)
if (index > -1) {
fileList.value.splice(index, 1)
updateAttachments()
}
return true
} }
const rules = { const rules = {
@ -201,7 +179,6 @@ const modalTitle = props.mode === 'invoice' ? '开票' : '查看发票'
:headers="uploadHeaders" :headers="uploadHeaders"
:before-upload="beforeUpload" :before-upload="beforeUpload"
@finish="handleUploadFinish" @finish="handleUploadFinish"
@remove="handleRemove"
:disabled="mode === 'view'" :disabled="mode === 'view'"
> >
<div class="upload-trigger"> <div class="upload-trigger">

View File

@ -230,7 +230,7 @@ async function handleInvoiceConfirm(formData) {
email: formData.email, email: formData.email,
subject: formData.email, // subject email subject: formData.email, // subject email
body: formData.content, // content -> body body: formData.content, // content -> body
file_url: formData.attachments?.[0] || '', // attachments -> file_url file_url: formData.attachments, // attachments -> file_url
} }
await api.sendInvoice(payload) await api.sendInvoice(payload)

View File

@ -335,11 +335,11 @@ const handleCertificateConfirm = async (data) => {
const certificateUrl = data.certificateFiles?.map(f => f.url).filter(Boolean) || [] const certificateUrl = data.certificateFiles?.map(f => f.url).filter(Boolean) || []
const reportUrl = data.reportFiles?.map(f => f.url).filter(Boolean) || [] const reportUrl = data.reportFiles?.map(f => f.url).filter(Boolean) || []
// 1
const payload = { const payload = {
...props.detailData, ...props.detailData,
certificate_url: certificateUrl, certificate_url: certificateUrl?.[0],
report_url: reportUrl, report_url: reportUrl?.[0],
status: 'success' status: 'success'
} }

View File

@ -203,13 +203,12 @@ const handlePreview = (file) => {
<div class="upload-content"> <div class="upload-content">
<NUpload <NUpload
v-model:file-list="reportFileList" v-model:file-list="reportFileList"
multiple max="1"
list-type="image-card" list-type="image-card"
:action="uploadUrl" :action="uploadUrl"
:headers="uploadHeaders" :headers="uploadHeaders"
:before-upload="beforeUpload" :before-upload="beforeUpload"
@finish="handleReportUploadFinish" @finish="handleReportUploadFinish"
:disabled="!isUploadMode" :disabled="!isUploadMode"
show-preview-button show-preview-button
show-download-button show-download-button
@ -225,13 +224,12 @@ const handlePreview = (file) => {
<div class="upload-content"> <div class="upload-content">
<NUpload <NUpload
v-model:file-list="certificateFileList" v-model:file-list="certificateFileList"
multiple
list-type="image-card" list-type="image-card"
:action="uploadUrl" :action="uploadUrl"
:headers="uploadHeaders" :headers="uploadHeaders"
:before-upload="beforeUpload" :before-upload="beforeUpload"
@finish="handleCertificateUploadFinish" @finish="handleCertificateUploadFinish"
max="1"
:disabled="!isUploadMode" :disabled="!isUploadMode"
show-preview-button show-preview-button
show-download-button show-download-button

View File

@ -62,7 +62,7 @@
</template> </template>
<NInput v-model:value="modalForm.institution" placeholder="请输入所属机构/权利人" /> <NInput v-model:value="modalForm.institution" placeholder="请输入所属机构/权利人" />
</n-form-item-gi> </n-form-item-gi>
<n-form-item-gi :span="12" label="统一社会信用代码/身份证号" path="credit_code"> <n-form-item-gi :span="12" label="统一社会信用代码/身份证号" path="credit_code_or_id">
<template #label> <template #label>
<div class="flex items-center gap-4"> <div class="flex items-center gap-4">
<span>统一社会信用代码/身份证号</span> <span>统一社会信用代码/身份证号</span>
@ -74,7 +74,7 @@
</n-tooltip> </n-tooltip>
</div> </div>
</template> </template>
<NInput v-model:value="modalForm.credit_code" placeholder="请输入统一社会信用代码/身份证号" /> <NInput v-model:value="modalForm.credit_code_or_id" placeholder="请输入统一社会信用代码/身份证号" />
</n-form-item-gi> </n-form-item-gi>
<n-form-item-gi :span="12" label="所属行业" path="industry"> <n-form-item-gi :span="12" label="所属行业" path="industry">
<template #label> <template #label>
@ -96,7 +96,7 @@
/> />
</n-form-item-gi> </n-form-item-gi>
<n-gi :span="12"></n-gi> <n-gi :span="12"></n-gi>
<n-form-item-gi :span="24" label="业务/传承介绍" path="business_heritage_intro"> <n-form-item-gi :span="24" label="业务/传承介绍" path="biz_intro">
<template #label> <template #label>
<div class="flex items-center gap-4"> <div class="flex items-center gap-4">
<span>业务/传承介绍</span> <span>业务/传承介绍</span>
@ -109,7 +109,7 @@
</div> </div>
</template> </template>
<n-input <n-input
v-model:value="modalForm.business_heritage_intro" v-model:value="modalForm.biz_intro"
type="textarea" type="textarea"
placeholder="请在此处自由填写受评估单位/人的详细业务与项目情况。建议着重介绍与本次所评估非遗IP资产直接相关的背景信息例如主要业务范围、核心技艺、传承谱系、运营模式、市场定位、近年发展状况等。本部分是评估师理解评估对象价值内涵的重要依据请务必详尽、客观地描述。" placeholder="请在此处自由填写受评估单位/人的详细业务与项目情况。建议着重介绍与本次所评估非遗IP资产直接相关的背景信息例如主要业务范围、核心技艺、传承谱系、运营模式、市场定位、近年发展状况等。本部分是评估师理解评估对象价值内涵的重要依据请务必详尽、客观地描述。"
:autosize="{ :autosize="{
@ -625,9 +625,9 @@ const historyList = ref([])
const modalForm = reactive({ const modalForm = reactive({
asset_name: '', asset_name: '',
institution: '', institution: '',
credit_code: '', credit_code_or_id: '',
industry: null, industry: null,
business_heritage_intro: '', biz_intro: '',
annual_revenue: '', annual_revenue: '',
rd_investment: '', rd_investment: '',
three_year_income: [], three_year_income: [],
@ -667,14 +667,14 @@ const modalRules = {
trigger: ['input', 'blur'], trigger: ['input', 'blur'],
}, },
], ],
credit_code: [ credit_code_or_id: [
{ {
required: true, required: true,
message: '请输入统一社会信用代码/身份证号', message: '请输入统一社会信用代码/身份证号',
trigger: ['input', 'blur'], trigger: ['input', 'blur'],
}, },
], ],
business_heritage_intro: [ biz_intro: [
{ {
required: true, required: true,
message: '请输入业务/传承介绍', message: '请输入业务/传承介绍',