完成签署协议功能

This commit is contained in:
赵毅 2025-12-10 08:42:09 +08:00
parent d24b5efcb7
commit f702962715
7 changed files with 1828 additions and 1533 deletions

View File

@ -6,5 +6,7 @@ export const apiArr = {
applyLedgerReceiver: "/api/v2/wechat/lkl-split-business/apply-ledger-receiver", //分账接收方创建申请
applyBind: "/api/v2/wechat/lkl-split-business/apply-bind", //分账关系绑定申请
addMer: "/api/v2/wechat/lkl-split-business/add-mer", //商户进件
queryMerchant: "/api/v2/wechat/lkl-split-business/query-merchant", //商户进件信息查询
applyLedgerMer: "/api/v2/wechat/lkl-split-business/apply-ledger-mer", //商户分账业务开通申请
queryLedgerMer: "/api/v2/wechat/lkl-split-business/query-ledger-mer", //商户分账信息查询
};

View File

@ -15,7 +15,8 @@
<view class="form-item">
<label class="form-label required">分账接收方编号</label>
<input type="text" class="form-input" v-model="formData.receiverNo" placeholder="请输入分账接收方编号" required>
<input type="text" class="form-input" v-model="formData.receiverNo" placeholder="请输入分账接收方编号"
required>
</view>
</view>
@ -23,7 +24,8 @@
<view class="form-section">
<view class="form-item">
<label class="form-label required">附件名称</label>
<input type="text" class="form-input" v-model="formData.entrustFileName" placeholder="请输入合作协议附件名称" required>
<input type="text" class="form-input" v-model="formData.entrustFileName" placeholder="请输入合作协议附件名称"
required>
</view>
<button class="upload-btn" @click="uploadEntrustFile">上传合作协议</button>
<view v-if="formData.entrustFilePath" class="file-info">
@ -40,8 +42,8 @@
<view class="form-item">
<label class="form-label">附件类型</label>
<view class="popup-select" @click="showAttachTypePopup = index">
<span>{{ getAttachTypeLabel(attachment.attachType) || '请选择附件类型' }}</span>
</view>
<span>{{ getAttachTypeLabel(attachment.attachType) || '请选择附件类型' }}</span>
</view>
</view>
<view class="form-item">
<label class="form-label">附件名称</label>
@ -67,7 +69,8 @@
<view class="popup-content">
<view class="popup-title">选择附件类型</view>
<view class="popup-list">
<view class="popup-item" v-for="type in attachTypeOptions" :key="type.value" @click="selectAttachType(showAttachTypePopup, type)">
<view class="popup-item" v-for="type in attachTypeOptions" :key="type.value"
@click="selectAttachType(showAttachTypePopup, type)">
{{ type.label }}
</view>
</view>
@ -121,7 +124,11 @@ export default {
entrustFileName: '',
entrustFilePath: '',
//
attachments: []
attachments: [{
attachType: '',
attachName: '',
attachStorePath: ''
}]
}
};
},

View File

@ -1,430 +1,322 @@
/* 全局样式重置与基础设置 */
/* 全局样式重置 */
* {
margin: 0;
padding: 0;
font-family: "SimSun", "宋体", serif;
margin: 0;
padding: 0;
box-sizing: border-box;
}
page {
padding-bottom: 0;
body {
font-family: 'SimSun', '宋体', serif;
font-size: 28rpx;
color: #333;
line-height: 1.5;
background-color: #fff;
}
page{
padding-bottom: 0rpx;
}
/* 合同容器 */
.contract-container {
width: 100%;
background-color: #fff;
padding: 15px;
box-sizing: border-box;
margin: 0 auto;
position: relative;
word-break: break-word;
overflow-x: hidden;
max-width: 1200rpx;
margin: 0 auto;
padding: 140rpx 30rpx 40rpx;
background-color: #fff;
}
/* 导航栏样式 */
.nav {
display: flex;
justify-content: space-between;
align-items: center;
padding: 20rpx 30rpx;
border-bottom: 1px solid #e5e5e5;
background-color: #fafafa;
/* 提交申请按钮样式 */
.submit-container {
display: flex;
justify-content: center;
align-items: center;
margin: 40rpx 0;
padding: 20rpx;
}
.nav-title {
font-size: 32rpx;
font-weight: bold;
color: #333333;
}
.save-btn {
font-size: 26rpx;
color: #0066cc;
background: transparent;
padding: 0;
margin: 0;
}
/* 滚动容器样式 */
.contract-scroll {
width: 100%;
padding: 20rpx 30rpx;
box-sizing: border-box;
}
/* 合同内容区基础样式 */
.contract-content {
width: 100%;
line-height: 1.8;
font-size: 28rpx;
color: #333333;
}
/* 合同头部样式 */
.header {
margin-bottom: 40rpx;
/* text-align: center; */
}
.qrcode-tip {
font-size: 24rpx;
color: #666666;
margin-bottom: 20rpx;
}
.contract-title {
font-size: 36rpx;
font-weight: bold;
margin: 20rpx 0;
color: #333333;
}
.party-info {
text-align: left;
margin: 30rpx 0;
line-height: 2;
}
.preamble {
text-indent: 56rpx;
/* 首行缩进2字符28rpx*2 */
margin-bottom: 20rpx;
}
/* 条款通用样式 */
.clauses {
margin-bottom: 60rpx;
}
.clause {
margin-bottom: 40rpx;
}
.clause-num {
font-size: 30rpx;
font-weight: bold;
margin: 20rpx 0;
color: #333333;
}
.clause-content {
margin-left: 40rpx;
line-height: 1.8;
}
/* 服务项样式 */
.service-item {
font-size: 28rpx;
font-weight: 600;
margin: 20rpx 0 10rpx 0;
display: block;
}
.service-desc {
text-indent: 56rpx;
margin: 10rpx 0;
display: block;
}
.service-list {
list-style: disc;
margin-left: 50rpx;
margin-bottom: 20rpx;
padding-left: 20rpx;
}
.service-list li {
margin-bottom: 15rpx;
line-height: 1.8;
display: block;
}
/* 表格通用样式 */
.fee-table,
.info-table {
width: 100%;
border-collapse: collapse;
margin: 20rpx 0;
font-size: 26rpx;
}
.fee-table th,
.fee-table td,
.info-table th,
.info-table td {
border: 1px solid #333333;
padding: 12rpx 8rpx;
text-align: center;
}
.fee-table th,
.info-table th,
.info-table .table-label {
background-color: #f5f5f5;
font-weight: bold;
}
/* 填写项样式 */
.fill-input {
border: 1px solid #ddd;
border-radius: 4rpx;
padding: 0 8px;
margin: 0 4rpx;
font-size: 13px;
color: #333333;
background-color: #ffffff;
flex-shrink: 0;
height: 28px;
width: 80px;
box-sizing: border-box;
vertical-align: middle;
}
.fill-tiny {
width: 60px;
/* 小尺寸输入框(如百分比、台数) */
text-align: center;
}
.fill-small {
width: 140px;
/* 中尺寸输入框(如银行名称、其他说明) */
}
.fill-normal {
width: 300rpx;
/* 常规尺寸输入框(如商户名称、地址) */
}
.fill-date {
width: 220rpx;
/* 日期输入框 */
text-align: center;
}
.fill-table {
width: 100%;
/* 表格内输入框:填满单元格 */
margin: 0;
box-sizing: border-box;
}
/* 单选/多选样式 */
.radio-label,
.checkbox-label {
margin-right: 25rpx;
margin-bottom: 15rpx;
display: inline-flex;
align-items: center;
font-size: 26rpx;
color: #333;
flex-wrap: wrap;
gap: 8rpx;
line-height: 1.6;
}
/* 单选/多选组容器:控制整体间距 */
.radio-group-container,
.checkbox-group-container {
display: flex;
flex-direction: column;
gap: 15rpx;
margin: 15rpx 0;
width: 100%;
}
/* 单个单选/多选选项:垂直居中对齐,统一高度 */
.radio-label,
.checkbox-label {
display: flex;
align-items: flex-start;
margin-right: 0;
margin-bottom: 0;
word-break: break-word;
max-width: 100%;
flex-wrap: wrap;
gap: 8rpx;
/* radio/checkbox 与文本的间距 */
font-size: 26rpx;
color: #333;
padding: 8rpx 0;
line-height: 1.8;
}
/* 商户更名输入框:仅在选中时显示,与文本对齐 */
#input-original-name {
margin-left: 10rpx;
/* 与“商户更名”文本的间距 */
margin-top: 0;
/* 清除默认margin确保垂直居中 */
}
/* 备注/说明文本样式 */
.note,
.mode-note,
.risk-note,
.deduct-note,
.table-note,
.appendix-footnote {
font-size: 24rpx;
color: #666666;
margin: 10rpx 0;
text-indent: 56rpx;
}
/* 签字区域样式 */
.sign-main,
.sign-appendix {
display: flex;
justify-content: space-between;
margin: 60rpx 0;
padding: 0 40rpx;
}
.sign-party {
text-align: center;
width: 45%;
line-height: 2.2;
}
/* 附件通用样式 */
.appendix {
margin: 80rpx 0;
padding: 20rpx;
border-top: 1px dashed #cccccc;
}
.appendix-title {
font-size: 32rpx;
font-weight: bold;
text-align: center;
margin: 30rpx 0;
color: #333333;
}
.appendix-subtitle {
font-size: 28rpx;
font-weight: bold;
margin: 30rpx 0 15rpx;
color: #333333;
}
.appendix-note {
font-size: 24rpx;
color: #666666;
text-align: right;
margin-bottom: 30rpx;
}
/* 授权书内容样式 */
.authorization-content {
text-indent: 56rpx;
margin: 15rpx 0;
line-height: 1.8;
}
/* 提交按钮样式 */
.submit-btn {
width: 90%;
margin: 0 auto;
background-color: #0066cc;
color: #ffffff;
font-size: 32rpx;
padding: 18rpx 0;
border-radius: 12rpx;
font-weight: 600;
width: 80%;
max-width: 400rpx;
height: 80rpx;
background-color: #007bff;
color: #fff;
border: none;
border-radius: 10rpx;
font-size: 32rpx;
font-weight: bold;
cursor: pointer;
transition: background-color 0.3s;
}
/* 适配小程序端滚动条样式(隐藏默认滚动条) */
::-webkit-scrollbar {
width: 0;
height: 0;
color: transparent;
.submit-btn:hover {
background-color: #0056b3;
}
/* 补充样式优化 */
.radio-group-container {
display: flex;
flex-wrap: wrap;
gap: 20rpx;
margin: 10rpx 0;
.submit-btn:active {
background-color: #004085;
}
.radio-label,
.checkbox-label {
display: inline-flex;
align-items: center;
margin-right: 25rpx;
margin-bottom: 10rpx;
font-size: 26rpx;
.header{
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 1000;
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 30rpx;
background-color: #fff;
padding: 20rpx 30rpx;
box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.1);
}
/* 合同标题 */
.contract-title {
font-size: 36rpx;
font-weight: bold;
text-align: center;
margin-bottom: 40rpx;
color: #333;
}
.header-title{
font-size: 36rpx;
}
.print-btn{
padding: 2rpx 20rpx;
background-color: #007bff;
color: #fff;
border: none;
border-radius: 8rpx;
font-size: 28rpx;
cursor: pointer;
}
/* 甲乙双方信息 */
.party-info {
margin-bottom: 40rpx;
}
.party-info p {
margin-bottom: 20rpx;
font-size: 28rpx;
}
/* 合同内容 */
.contract-content {
margin-bottom: 40rpx;
}
.contract-intro {
margin-bottom: 30rpx;
text-align: justify;
font-size: 28rpx;
}
/* 标题样式 */
h2 {
font-size: 32rpx;
font-weight: bold;
margin-bottom: 30rpx;
color: #333;
}
h3 {
font-size: 30rpx;
font-weight: bold;
margin-bottom: 20rpx;
color: #333;
}
/* 章节样式 */
.section {
margin-top: 20rpx;
margin-bottom: 40rpx;
}
.section-desc input {
display: inline-block;
}
.section-desc {
margin-bottom: 20rpx;
font-size: 28rpx;
}
.section-desc {
line-height: 1.5;
}
.input-field {
width: 40px;
vertical-align: middle;
}
.subsection {
margin-bottom: 30rpx;
margin-left: 40rpx;
}
.subsection p {
margin-bottom: 15rpx;
font-size: 28rpx;
}
.subsection-item view {
display: flex;
align-items: center;
}
.subsection-item input {
display: inline-block;
}
/* 复选框组 */
.checkbox-group {
display: flex;
flex-wrap: wrap;
gap: 15rpx;
display: flex;
flex-wrap: wrap;
gap: 20rpx;
margin-bottom: 20rpx;
}
.service-list li {
margin-bottom: 15rpx;
line-height: 1.6;
.checkbox-item {
display: flex;
align-items: center;
font-size: 28rpx;
cursor: pointer;
}
.fee-label {
display: block;
margin: 8rpx 0;
.checkbox-label {
margin-right: 10rpx;
}
.mode-item {
margin: 15rpx 0;
text-indent: 56rpx;
/* 输入框样式 */
.input-field1 {
width: 500rpx;
height: 60rpx;
border: 1rpx solid #ccc;
border-radius: 8rpx;
padding: 0 20rpx;
font-size: 28rpx;
margin: 0 10rpx;
}
.mode-note {
font-size: 24rpx;
color: #666;
margin: 10rpx 0;
text-indent: 56rpx;
.input-field {
width: 200rpx;
height: 40rpx;
border: 1rpx solid #ccc;
border-radius: 8rpx;
padding: 0 20rpx;
font-size: 28rpx;
margin: 0 10rpx;
}
.table-note {
font-size: 24rpx;
color: #666;
margin: 10rpx 0 5rpx 0;
.input-field.small {
width: 100rpx;
}
.authorization-content {
text-indent: 56rpx;
margin: 15rpx 0;
line-height: 1.8;
.input-field.very-small {
width: 100rpx;
}
.sign-appendix {
display: flex;
flex-direction: column;
gap: 20rpx;
margin: 40rpx 0;
padding: 0 20rpx;
/* 费用标准样式 */
.fee-standard {
display: flex;
flex-direction: column;
gap: 20rpx;
margin-bottom: 20rpx;
}
.sign-appendix p {
line-height: 2;
.fee-standard .checkbox-item {
display: flex;
align-items: center;
font-size: 28rpx;
cursor: pointer;
flex-wrap: wrap;
}
/* 表格样式 */
.fee-table {
width: 100%;
border-collapse: collapse;
margin-bottom: 30rpx;
font-size: 28rpx;
}
.wrap-text {
word-wrap: break-word;
word-break: break-all;
max-width: 100%;
}
.fee-table th,
.fee-table td {
display: flex;
justify-content: center;
align-items: center;
border: 1rpx solid #ccc;
padding: 20rpx;
text-align: center;
}
.fee-table th {
background-color: #f5f5f5;
font-weight: bold;
}
.fee-table tr:nth-child(even) {
background-color: #fafafa;
}
/* 响应式设计 */
@media (max-width: 750rpx) {
.contract-container {
padding: 20rpx 15rpx;
}
.contract-title {
font-size: 32rpx;
}
h2 {
font-size: 28rpx;
}
h3 {
font-size: 26rpx;
display: flex;
align-items: center;
gap: 10rpx;
}
.input-field {
width: 250rpx;
height: 50rpx;
font-size: 26rpx;
}
.input-field.small {
width: 150rpx;
}
.input-field.very-small {
width: 80rpx;
}
.fee-table th,
.fee-table td {
padding: 15rpx;
font-size: 26rpx;
}
}
/* 优化表格内输入框 */
.info-table .fill-input,
.fee-table .fill-input {
box-sizing: border-box;
border: 1px solid #0066cc;
margin: 2rpx;
}
/* 打印样式 */
@media print {
.contract-container {
max-width: 100%;
padding: 0;
}
/* 优化单选/多选按钮对齐 */
radio,
checkbox {
margin-right: 8rpx;
vertical-align: middle;
.input-field {
border: 1rpx solid #000;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -172,8 +172,8 @@ export default {
//
accountTypeOptions: [
{ value: 'PERSONAL', label: '个人账户' },
{ value: 'COMPANY', label: '企业账户' }
{ value: '57', label: '对公' },
{ value: '58', label: '对私' }
],
//

View File

@ -134,6 +134,7 @@ export default {
data() {
return {
formData: {
mch_id: '000',
ec_type_code: 'Ec007',
cert_type: '',
cert_name: '',
@ -176,6 +177,22 @@ export default {
if (options.ec_content) {
this.formData.ec_content_parameters = options.ec_content;
}
//
uni.$on('agreementSigned', (data) => {
if (data && data.ec_content) {
this.formData.ec_content_parameters = data.ec_content;
uni.showToast({
title: '协议签署成功',
icon: 'success'
});
}
});
},
//
onUnload() {
uni.$off('agreementSigned');
},
methods: {
//

View File

@ -132,6 +132,16 @@ export default {
name: "电子签约",
url: "/packages/customerService/sign/index",
},
{
image: "https://static.hshuishang.com/contract.png",
name: "商户进件",
url: "/packages/customerService/addMer/index",
},
{
image: "https://static.hshuishang.com/contract.png",
name: "分账开通",
url: "/packages/customerService/applyLedgerMer/index",
},
{
image: "https://static.hshuishang.com/contract.png",
name: "创建接收方",
@ -141,16 +151,6 @@ export default {
image: "https://static.hshuishang.com/contract.png",
name: "申请绑定",
url: "/packages/customerService/applyBind/index",
},
{
image: "https://static.hshuishang.com/contract.png",
name: "商户进件",
url: "/packages/customerService/addMer/index",
},
{
image: "https://static.hshuishang.com/contract.png",
name: "分账申请",
url: "/packages/customerService/applyLedgerMer/index",
}
],
walletInfo: {},