完成签署协议功能

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", //分账接收方创建申请 applyLedgerReceiver: "/api/v2/wechat/lkl-split-business/apply-ledger-receiver", //分账接收方创建申请
applyBind: "/api/v2/wechat/lkl-split-business/apply-bind", //分账关系绑定申请 applyBind: "/api/v2/wechat/lkl-split-business/apply-bind", //分账关系绑定申请
addMer: "/api/v2/wechat/lkl-split-business/add-mer", //商户进件 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", //商户分账业务开通申请 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"> <view class="form-item">
<label class="form-label required">分账接收方编号</label> <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>
</view> </view>
@ -23,7 +24,8 @@
<view class="form-section"> <view class="form-section">
<view class="form-item"> <view class="form-item">
<label class="form-label required">附件名称</label> <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> </view>
<button class="upload-btn" @click="uploadEntrustFile">上传合作协议</button> <button class="upload-btn" @click="uploadEntrustFile">上传合作协议</button>
<view v-if="formData.entrustFilePath" class="file-info"> <view v-if="formData.entrustFilePath" class="file-info">
@ -40,8 +42,8 @@
<view class="form-item"> <view class="form-item">
<label class="form-label">附件类型</label> <label class="form-label">附件类型</label>
<view class="popup-select" @click="showAttachTypePopup = index"> <view class="popup-select" @click="showAttachTypePopup = index">
<span>{{ getAttachTypeLabel(attachment.attachType) || '请选择附件类型' }}</span> <span>{{ getAttachTypeLabel(attachment.attachType) || '请选择附件类型' }}</span>
</view> </view>
</view> </view>
<view class="form-item"> <view class="form-item">
<label class="form-label">附件名称</label> <label class="form-label">附件名称</label>
@ -67,7 +69,8 @@
<view class="popup-content"> <view class="popup-content">
<view class="popup-title">选择附件类型</view> <view class="popup-title">选择附件类型</view>
<view class="popup-list"> <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 }} {{ type.label }}
</view> </view>
</view> </view>
@ -121,7 +124,11 @@ export default {
entrustFileName: '', entrustFileName: '',
entrustFilePath: '', entrustFilePath: '',
// //
attachments: [] attachments: [{
attachType: '',
attachName: '',
attachStorePath: ''
}]
} }
}; };
}, },

View File

@ -1,430 +1,322 @@
/* 全局样式重置与基础设置 */ /* 全局样式重置 */
* { * {
margin: 0; margin: 0;
padding: 0; padding: 0;
font-family: "SimSun", "宋体", serif; box-sizing: border-box;
} }
page { body {
padding-bottom: 0; font-family: 'SimSun', '宋体', serif;
font-size: 28rpx;
color: #333;
line-height: 1.5;
background-color: #fff;
} }
page{
padding-bottom: 0rpx;
}
/* 合同容器 */
.contract-container { .contract-container {
width: 100%; max-width: 1200rpx;
background-color: #fff; margin: 0 auto;
padding: 15px; padding: 140rpx 30rpx 40rpx;
box-sizing: border-box; background-color: #fff;
margin: 0 auto;
position: relative;
word-break: break-word;
overflow-x: hidden;
} }
/* 导航栏样式 */ /* 提交申请按钮样式 */
.nav { .submit-container {
display: flex; display: flex;
justify-content: space-between; justify-content: center;
align-items: center; align-items: center;
padding: 20rpx 30rpx; margin: 40rpx 0;
border-bottom: 1px solid #e5e5e5; padding: 20rpx;
background-color: #fafafa;
} }
.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 { .submit-btn {
width: 90%; width: 80%;
margin: 0 auto; max-width: 400rpx;
background-color: #0066cc; height: 80rpx;
color: #ffffff; background-color: #007bff;
font-size: 32rpx; color: #fff;
padding: 18rpx 0; border: none;
border-radius: 12rpx; border-radius: 10rpx;
font-weight: 600; font-size: 32rpx;
font-weight: bold;
cursor: pointer;
transition: background-color 0.3s;
} }
/* 适配小程序端滚动条样式(隐藏默认滚动条) */ .submit-btn:hover {
::-webkit-scrollbar { background-color: #0056b3;
width: 0;
height: 0;
color: transparent;
} }
/* 补充样式优化 */ .submit-btn:active {
.radio-group-container { background-color: #004085;
display: flex;
flex-wrap: wrap;
gap: 20rpx;
margin: 10rpx 0;
} }
.radio-label, .header{
.checkbox-label { position: fixed;
display: inline-flex; top: 0;
align-items: center; left: 0;
margin-right: 25rpx; right: 0;
margin-bottom: 10rpx; z-index: 1000;
font-size: 26rpx; 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 { .checkbox-group {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
gap: 15rpx; gap: 20rpx;
margin-bottom: 20rpx;
} }
.service-list li { .checkbox-item {
margin-bottom: 15rpx; display: flex;
line-height: 1.6; align-items: center;
font-size: 28rpx;
cursor: pointer;
} }
.fee-label { .checkbox-label {
display: block; margin-right: 10rpx;
margin: 8rpx 0;
} }
.mode-item { /* 输入框样式 */
margin: 15rpx 0; .input-field1 {
text-indent: 56rpx; width: 500rpx;
height: 60rpx;
border: 1rpx solid #ccc;
border-radius: 8rpx;
padding: 0 20rpx;
font-size: 28rpx;
margin: 0 10rpx;
} }
.mode-note { .input-field {
font-size: 24rpx; width: 200rpx;
color: #666; height: 40rpx;
margin: 10rpx 0; border: 1rpx solid #ccc;
text-indent: 56rpx; border-radius: 8rpx;
padding: 0 20rpx;
font-size: 28rpx;
margin: 0 10rpx;
} }
.table-note { .input-field.small {
font-size: 24rpx; width: 100rpx;
color: #666;
margin: 10rpx 0 5rpx 0;
} }
.authorization-content { .input-field.very-small {
text-indent: 56rpx; width: 100rpx;
margin: 15rpx 0;
line-height: 1.8;
} }
.sign-appendix { /* 费用标准样式 */
display: flex; .fee-standard {
flex-direction: column; display: flex;
gap: 20rpx; flex-direction: column;
margin: 40rpx 0; gap: 20rpx;
padding: 0 20rpx; margin-bottom: 20rpx;
} }
.sign-appendix p { .fee-standard .checkbox-item {
line-height: 2; 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; 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, @media print {
.fee-table .fill-input { .contract-container {
box-sizing: border-box; max-width: 100%;
border: 1px solid #0066cc; padding: 0;
margin: 2rpx; }
}
/* 优化单选/多选按钮对齐 */ .input-field {
radio, border: 1rpx solid #000;
checkbox { }
margin-right: 8rpx;
vertical-align: middle;
} }

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -134,6 +134,7 @@ export default {
data() { data() {
return { return {
formData: { formData: {
mch_id: '000',
ec_type_code: 'Ec007', ec_type_code: 'Ec007',
cert_type: '', cert_type: '',
cert_name: '', cert_name: '',
@ -176,6 +177,22 @@ export default {
if (options.ec_content) { if (options.ec_content) {
this.formData.ec_content_parameters = 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: { methods: {
// //

View File

@ -132,6 +132,16 @@ export default {
name: "电子签约", name: "电子签约",
url: "/packages/customerService/sign/index", 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", image: "https://static.hshuishang.com/contract.png",
name: "创建接收方", name: "创建接收方",
@ -141,16 +151,6 @@ export default {
image: "https://static.hshuishang.com/contract.png", image: "https://static.hshuishang.com/contract.png",
name: "申请绑定", name: "申请绑定",
url: "/packages/customerService/applyBind/index", 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: {}, walletInfo: {},