feat(contract): 新增产品内容组件并优化合同管理功能

refactor(contract): 重构合同预览和列表组件
fix(contract): 修复合同ID类型校验问题
style(contract): 优化合同列表样式
docs(contract): 更新合同默认内容模板
This commit is contained in:
砂糖
2026-04-02 16:49:07 +08:00
parent 5ec293fc94
commit 74eae50ab0
8 changed files with 1096 additions and 53 deletions

View File

@@ -26,14 +26,32 @@
</el-descriptions>
<div style="margin-top: 20px;">
<h4 style="margin-bottom: 10px; color: #606266;">产品内容</h4>
<div v-html="contract.productContent" style="border: 1px solid #e4e7ed; padding: 10px; border-radius: 4px;"></div>
<h4 style="margin-bottom: 10px; color: #606266;">产品内容</h4>
<ProductContent v-model="contract.productContent" readonly />
<!-- <div v-html="contract.productContent" style="border: 1px solid #e4e7ed; padding: 10px; border-radius: 4px;"></div> -->
</div>
<div style="margin-top: 20px;">
<h4 style="margin-bottom: 10px; color: #606266;">合同内容</h4>
<div>
<!-- <h4 style="margin-bottom: 10px; color: #606266;">合同内容</h4> -->
<div v-html="contract.contractContent" style="border: 1px solid #e4e7ed; padding: 10px; border-radius: 4px;"></div>
</div>
<div style="border: 1px solid #e4e7ed; padding: 10px; border-radius: 4px;">
<el-descriptions :column="2">
<el-descriptions-item label="供方(甲方)">{{ contract.supplier }}</el-descriptions-item>
<el-descriptions-item label="需方(乙方)">{{ contract.customer }}</el-descriptions-item>
<el-descriptions-item label="地址">{{ contract.supplierAddress }}</el-descriptions-item>
<el-descriptions-item label="地址">{{ contract.customerAddress }}</el-descriptions-item>
<el-descriptions-item label="电话">{{ contract.supplierPhone }}</el-descriptions-item>
<el-descriptions-item label="电话">{{ contract.customerPhone }}</el-descriptions-item>
<el-descriptions-item label="开户行">{{ contract.supplierBank }}</el-descriptions-item>
<el-descriptions-item label="开户行">{{ contract.customerBank }}</el-descriptions-item>
<el-descriptions-item label="账号">{{ contract.supplierAccount }}</el-descriptions-item>
<el-descriptions-item label="账号">{{ contract.customerAccount }}</el-descriptions-item>
<el-descriptions-item label="税号">{{ contract.supplierTaxNo }}</el-descriptions-item>
<el-descriptions-item label="税号">{{ contract.customerTaxNo }}</el-descriptions-item>
</el-descriptions>
</div>
</div>
<div v-else class="no-selection" style="display: flex; align-items: center; justify-content: center; height: 100%;">
<el-empty description="请先选择合同" />
@@ -42,10 +60,13 @@
</template>
<script>
import { updateContract } from '@/api/crm/contract';
import ProductContent from './ProductContent.vue';
export default {
name: "ContractPreview",
components: {
ProductContent
},
props: {
contract: {
type: Object,