You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

123 lines
2.9 KiB

<template>
<view class="contract-container">
<view class="contract-list">
<view class="contract-item" v-for="(item, index) in contractList" :key="index" @click="viewContract(item)">
<view class="contract-header">
<image src="/static/images/微信图片_20250806143327_217.png" class="contract-icon"></image>
<text class="contract-title">{{ item.title }}</text>
</view>
<view class="contract-info">
<view class="info-item">
<text class="label">合同编号:</text>
<text class="value">{{ item.contractNo }}</text>
</view>
<view class="info-item">
<text class="label">签订日期:</text>
<text class="value">{{ item.signDate }}</text>
</view>
<view class="info-item">
<text class="label">合同状态:</text>
<text class="value">{{ item.status }}</text>
</view>
</view>
<view class="contract-footer">
<u-button type="primary" size="mini" @click.stop="downloadContract(item)">下载合同</u-button>
</view>
</view>
<u-empty v-if="contractList.length === 0" text="暂无合同数据"></u-empty>
</view>
<view class="footer">
<view class="p-30">
<u-button type="success" shape="circle">上传合同</u-button>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
contractList: [
{
title: '售电服务合同',
contractNo: 'SD2025080601',
signDate: '2025-08-06',
status: '已生效',
url: ''
}
]
}
},
methods: {
viewContract(contract) {
// 查看合同详情
console.log('查看合同:', contract)
},
downloadContract(contract) {
// 下载合同
uni.showToast({
title: '开始下载合同',
icon: 'success'
})
}
}
}
</script>
<style lang="scss" scoped>
.contract-container {
padding: 20px;
.contract-list {
.contract-item {
background: #fff;
border-radius: 10px;
padding: 15px;
margin-bottom: 15px;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
.contract-header {
display: flex;
align-items: center;
margin-bottom: 15px;
.contract-icon {
width: 24px;
height: 24px;
margin-right: 10px;
}
.contract-title {
font-size: 16px;
font-weight: bold;
color: #333;
}
}
.contract-info {
.info-item {
display: flex;
margin-bottom: 8px;
.label {
color: #666;
width: 80px;
}
.value {
color: #333;
flex: 1;
}
}
}
.contract-footer {
margin-top: 15px;
display: flex;
justify-content: flex-end;
}
}
}
}
</style>