Compare commits
3 Commits
cdb74c3aa6
...
a0c801ee61
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a0c801ee61 | ||
|
|
93dcdc6357 | ||
|
|
49f790fd21 |
@ -3,11 +3,11 @@
|
||||
<form class="acceptor-form" @submit.prevent="submitForm">
|
||||
<!-- 基本信息 -->
|
||||
<view class="form-section">
|
||||
<view class="form-item">
|
||||
<!-- <view class="form-item">
|
||||
<label class="form-label required">商户ID</label>
|
||||
<input type="number" class="form-input" v-model.number="formData.mch_id" placeholder="请输入商户ID"
|
||||
required>
|
||||
</view>
|
||||
</view> -->
|
||||
|
||||
<view class="form-item">
|
||||
<label class="form-label required">商户注册名称</label>
|
||||
@ -17,22 +17,20 @@
|
||||
|
||||
<view class="form-item">
|
||||
<label class="form-label required">商户地区代码</label>
|
||||
<view class="popup-select" @click="showAreaPopup = true">
|
||||
<span>{{ selectedAreaLabel || '请选择商户地区代码' }}</span>
|
||||
</view>
|
||||
<input type="text" class="form-input" v-model="formData.merRegDistCode"
|
||||
placeholder="请输入商户地区代码" required>
|
||||
</view>
|
||||
|
||||
<view class="form-item">
|
||||
<label class="form-label required">商户详细地址</label>
|
||||
<input type="text" class="form-input" v-model="formData.merRegAddr"
|
||||
placeholder="请输入去除省、市、区后的详细地址,6-200字符" required>
|
||||
placeholder="请输入去除省、市、区后的详细地址" required>
|
||||
</view>
|
||||
|
||||
<view class="form-item">
|
||||
<label class="form-label required">商户MCC编号</label>
|
||||
<view class="popup-select" @click="showMccPopup = true">
|
||||
<span>{{ selectedMccLabel || '请选择商户MCC编号' }}</span>
|
||||
</view>
|
||||
<input type="text" class="form-input" v-model="formData.mccCode"
|
||||
placeholder="请输入商户MCC编号" required>
|
||||
</view>
|
||||
|
||||
<view class="form-item">
|
||||
@ -58,9 +56,8 @@
|
||||
|
||||
<view class="form-item">
|
||||
<label class="form-label required">商户经营内容</label>
|
||||
<view class="popup-select" @click="showBusiContentPopup = true">
|
||||
<span>{{ selectedBusiContentLabel || '请选择商户经营内容' }}</span>
|
||||
</view>
|
||||
<input type="text" class="form-input" v-model="formData.merBusiContent"
|
||||
placeholder="请输入商户经营内容" required>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@ -148,6 +145,22 @@
|
||||
<span>{{ selectedAcctTypeLabel || '请选择结算账户性质' }}</span>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 费率信息 -->
|
||||
<view class="form-item">
|
||||
<label class="form-label required">费率类型</label>
|
||||
<input type="text" class="form-input" v-model="formData.feeData[0].feeRateTypeCode" placeholder="请输入费率类型" required>
|
||||
</view>
|
||||
|
||||
<view class="form-item">
|
||||
<label class="form-label required">费率类型名称</label>
|
||||
<input type="text" class="form-input" v-model="formData.feeData[0].feeRateTypeName" placeholder="请输入费率类型名称" required>
|
||||
</view>
|
||||
|
||||
<view class="form-item">
|
||||
<label class="form-label required">手续费率(%)</label>
|
||||
<input type="number" class="form-input" v-model="formData.feeData[0].feeRatePct" placeholder="请输入手续费率" step="0.01" required>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 附件上传 -->
|
||||
@ -283,7 +296,7 @@ export default {
|
||||
return {
|
||||
// 表单数据
|
||||
formData: {
|
||||
mch_id: null, // 商户ID
|
||||
mch_id: '000', // 商户ID
|
||||
merRegName: '', // 商户注册名称
|
||||
merRegDistCode: '', // 商户地区代码
|
||||
merRegAddr: '', // 商户详细地址
|
||||
@ -306,7 +319,13 @@ export default {
|
||||
acctNo: '', // 结算账户账号
|
||||
acctName: '', // 结算账户名称
|
||||
acctTypeCode: '', // 结算账户性质
|
||||
feeData: [], // 费率数据(可选)
|
||||
feeData: [
|
||||
{
|
||||
feeRateTypeCode: "",
|
||||
feeRateTypeName: "",
|
||||
feeRatePct: ""
|
||||
}
|
||||
], // 费率数据
|
||||
fileData: [
|
||||
{
|
||||
attType: '',
|
||||
@ -354,10 +373,15 @@ export default {
|
||||
],
|
||||
|
||||
idTypeOptions: [
|
||||
{ value: 'IDCARD', label: '身份证' },
|
||||
{ value: 'PASSPORT', label: '护照' },
|
||||
{ value: 'MILITARY_ID', label: '军人证' },
|
||||
{ value: 'OTHER', label: '其他' }
|
||||
{ value: '01', label: '身份证' },
|
||||
{ value: '02', label: '护照' },
|
||||
{ value: '03', label: '港澳通行证' },
|
||||
{ value: '04', label: '台胞证' },
|
||||
{ value: '10', label: '外国人永久居留身份证' },
|
||||
{ value: '11', label: '港澳居民居住证' },
|
||||
{ value: '12', label: '台湾居民居住证' },
|
||||
{ value: '13', label: '执行事务合伙人' },
|
||||
{ value: '99', label: '其它证件' },
|
||||
],
|
||||
|
||||
acctTypeOptions: [
|
||||
@ -632,6 +656,22 @@ export default {
|
||||
uni.showToast({ title: '请选择结算账户性质', icon: 'none' });
|
||||
return false;
|
||||
}
|
||||
|
||||
// 校验费率信息
|
||||
if (!formData.feeData[0].feeRateTypeCode) {
|
||||
uni.showToast({ title: '请输入费率类型', icon: 'none' });
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!formData.feeData[0].feeRateTypeName) {
|
||||
uni.showToast({ title: '请输入费率类型名称', icon: 'none' });
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!formData.feeData[0].feeRatePct) {
|
||||
uni.showToast({ title: '请输入手续费率', icon: 'none' });
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
@ -707,7 +747,7 @@ export default {
|
||||
acctNo: this.formData.acctNo,
|
||||
acctName: this.formData.acctName,
|
||||
acctTypeCode: this.formData.acctTypeCode,
|
||||
feeData: [],
|
||||
feeData: this.formData.feeData,
|
||||
fileData: []
|
||||
};
|
||||
|
||||
|
||||
@ -530,7 +530,7 @@
|
||||
<h3>第十条 </h3>
|
||||
<view class="subsection-item">
|
||||
<text>乙方(含乙方分支机构、合作方,下同)为甲方提供的受理终端(包含收款码)仅限甲方在</text>
|
||||
<input type="text" v-model="paramData.A101" class="input-field very-small" />
|
||||
<input type="text" v-model="paramData.A101" class="input-field" />
|
||||
<text>
|
||||
地区使用。甲方应提供符合受理终端安装要求的场地条件,并妥善保管和使用,如因甲方管理或使用不当造成终端损坏或遗失的,甲方应按市场价向乙方赔偿,赔付方式为现金、转账或授权乙方从甲方终端押金、交易资金等途径扣除。双方协议终止或解除时,乙方有权收回、关闭放置在甲方的受理终端或关闭网络支付接口。
|
||||
</text>
|
||||
@ -783,7 +783,7 @@
|
||||
<view class="subsection-item">
|
||||
<input type="text" class="input-field small" v-model="paramData.B1" placeholder="年" />年
|
||||
<input type="text" class="input-field small" v-model="paramData.B2" placeholder="月" />月
|
||||
NO:<input type="text" v-model="paramData.A115" class="input-field small" />
|
||||
NO:<input type="text" class="input-field small" />
|
||||
</view>
|
||||
|
||||
<view class="section">
|
||||
@ -1149,7 +1149,7 @@
|
||||
<view class="section">
|
||||
<view class="subsection-item">
|
||||
<text>鉴于:我方为拉卡拉支付股份有限公司(简称“拉卡拉”)的特约商户,已与拉卡拉签订《特约商户支付服务合作协议》,并且,我方结算账户所属银行【</text>
|
||||
<input type="text" v-model="paramData.D1" class="input-field very-small" />
|
||||
<input type="text" v-model="paramData.D1" class="input-field" />
|
||||
<text>】(简称“银行”)会不定期开展商户手续费补贴等营销活动。</text>
|
||||
</view>
|
||||
|
||||
@ -1182,9 +1182,9 @@
|
||||
|
||||
<view class="subsection-item">
|
||||
<text>我方同意并指定【</text>
|
||||
<input type="text" v-model="paramData.D4" class="input-field very-small" />
|
||||
<input type="text" v-model="paramData.D4" class="input-field" />
|
||||
<text>】公司(联系方式【</text>
|
||||
<input type="text" v-model="paramData.D5" class="input-field very-small" />
|
||||
<input type="text" v-model="paramData.D5" class="input-field" />
|
||||
<text>】)(含其分支机构及总公司,以下简称“数据处理方”)为我方提供数据处理服务,同意并授权数据处理方为终端布放与受理标识张贴、终端维护、商户培训、耗材配送、交易证明材料调取、对账目的收集、存储并向拉卡拉传送我方通过线下或线上方式提供的入网信息(包括但不限于《拉卡拉商户注册登记表》中的信息、商户提交的电子版及纸质版资料以及监管部门要求的其他信息),同意并授权拉卡拉将我方金融信息(包括我方企业名称、统一社会信用代码、法定代表人姓名及证件号码、经营地址。联系人姓名及证件号码、联系人手机号、联系人电子邮箱、结算账户信息、交易数据、入账信息、对账单明细数据,下同)提供给数据处理方,同意并授权数据处理方从拉卡拉接收并处理前述我方相关信息。</text>
|
||||
</view>
|
||||
|
||||
|
||||
@ -108,7 +108,7 @@
|
||||
<button type="button" class="submit-btn" @click="submitApplication">提交申请</button>
|
||||
</view>
|
||||
</form>
|
||||
|
||||
|
||||
<!-- 自定义弹窗 -->
|
||||
<view v-if="showCustomModal" class="custom-modal-overlay" @click="closeModal">
|
||||
<view class="custom-modal" @click.stop>
|
||||
@ -177,7 +177,7 @@ export default {
|
||||
if (options.ec_content) {
|
||||
this.formData.ec_content_parameters = options.ec_content;
|
||||
}
|
||||
|
||||
|
||||
// 监听协议签署成功事件
|
||||
uni.$on('agreementSigned', (data) => {
|
||||
if (data && data.ec_content) {
|
||||
@ -189,7 +189,7 @@ export default {
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
// 页面卸载时移除事件监听
|
||||
onUnload() {
|
||||
uni.$off('agreementSigned');
|
||||
@ -214,68 +214,103 @@ export default {
|
||||
mask: true
|
||||
});
|
||||
|
||||
// 构建完整的下载URL
|
||||
const downloadUrl = `${RequsetUrl}${apiArr.ecDownload}?ec_apply_id=${storeValue.ec_apply_id}`;
|
||||
request(apiArr.ecDownload, "POST", params).then(res => {
|
||||
const respData = res.resp_data;
|
||||
// 检查合同状态是否为已完成
|
||||
if (respData.ec_status === 'COMPLETED' && respData.ec_file) {
|
||||
try {
|
||||
// 处理Base64编码的文件数据(URL安全的Base64)
|
||||
const base64Data = respData.ec_file;
|
||||
// 替换URL安全的Base64字符
|
||||
const safeBase64 = base64Data.replace(/-/g, '+').replace(/_/g, '/');
|
||||
|
||||
// 调用uni.downloadFile进行文件下载
|
||||
uni.downloadFile({
|
||||
url: downloadUrl,
|
||||
header: {
|
||||
'Authorization': uni.getStorageSync('ctoken')
|
||||
},
|
||||
success: (res) => {
|
||||
uni.hideLoading();
|
||||
// 下载成功,保存文件到本地
|
||||
uni.saveFile({
|
||||
tempFilePath: res.tempFilePath,
|
||||
success: (saveRes) => {
|
||||
uni.showToast({
|
||||
title: '下载成功',
|
||||
icon: 'success'
|
||||
});
|
||||
// 提示用户打开文件
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '合同已下载完成,是否立即打开?',
|
||||
success: (modalRes) => {
|
||||
if (modalRes.confirm) {
|
||||
// 打开文件
|
||||
uni.openDocument({
|
||||
filePath: saveRes.savedFilePath,
|
||||
showMenu: true,
|
||||
success: (openRes) => {
|
||||
console.log('文件打开成功');
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('文件打开失败:', err);
|
||||
uni.showToast({
|
||||
title: '文件打开失败',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
// 文件名(可以根据需要设置)
|
||||
const fileName = `contract_${respData.ec_apply_id || Date.now()}.pdf`;
|
||||
|
||||
// 在uni-app中,我们需要使用文件系统API来保存文件
|
||||
// 首先获取文件系统管理器
|
||||
const fs = uni.getFileSystemManager();
|
||||
|
||||
// 生成临时文件路径
|
||||
const tempFilePath = `${uni.env.USER_DATA_PATH}/${fileName}`;
|
||||
|
||||
try {
|
||||
// 将Base64数据写入临时文件
|
||||
fs.writeFile({
|
||||
filePath: tempFilePath,
|
||||
data: safeBase64,
|
||||
encoding: 'base64',
|
||||
success: () => {
|
||||
uni.hideLoading();
|
||||
uni.showToast({
|
||||
title: '合同下载成功',
|
||||
icon: 'success'
|
||||
});
|
||||
console.log('文件保存成功:', tempFilePath);
|
||||
|
||||
// 打开文件
|
||||
uni.openDocument({
|
||||
filePath: tempFilePath,
|
||||
showMenu: true,
|
||||
success: (openRes) => {
|
||||
console.log('文件打开成功:', openRes);
|
||||
},
|
||||
fail: (openErr) => {
|
||||
console.error('文件打开失败:', openErr);
|
||||
uni.showToast({
|
||||
title: '文件打开失败',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
fail: (writeErr) => {
|
||||
uni.hideLoading();
|
||||
console.error('文件写入失败:', writeErr);
|
||||
uni.showToast({
|
||||
title: '合同下载失败',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('文件保存失败:', err);
|
||||
} catch (fsError) {
|
||||
uni.hideLoading();
|
||||
console.error('文件系统操作失败:', fsError);
|
||||
uni.showToast({
|
||||
title: '文件保存失败',
|
||||
title: '文件系统错误',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
fail: (err) => {
|
||||
} catch (error) {
|
||||
uni.hideLoading();
|
||||
console.error('处理文件数据失败:', error);
|
||||
uni.showToast({
|
||||
title: '文件处理失败',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
} else {
|
||||
uni.hideLoading();
|
||||
console.error('下载请求失败:', err);
|
||||
uni.showToast({
|
||||
title: '下载失败,请稍后重试',
|
||||
icon: 'none'
|
||||
});
|
||||
if (respData.ec_status !== 'COMPLETED') {
|
||||
uni.showToast({
|
||||
title: '电子合同尚未完成',
|
||||
icon: 'none'
|
||||
});
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: '合同文件不存在',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}).catch(err => {
|
||||
uni.hideLoading();
|
||||
console.error('下载合同失败:', err);
|
||||
uni.showToast({
|
||||
title: '下载失败,请重试',
|
||||
icon: 'none'
|
||||
});
|
||||
})
|
||||
},
|
||||
// 合同查询
|
||||
ecQuery() {
|
||||
@ -283,12 +318,12 @@ export default {
|
||||
this.applyUrl = uni.getStorageSync('applyUrl');
|
||||
this.showCustomModal = true;
|
||||
},
|
||||
|
||||
|
||||
// 关闭自定义弹窗
|
||||
closeModal() {
|
||||
this.showCustomModal = false;
|
||||
},
|
||||
|
||||
|
||||
// 打开申请链接
|
||||
openApplyUrl() {
|
||||
if (this.applyUrl) {
|
||||
@ -297,11 +332,11 @@ export default {
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
// 确认查询
|
||||
confirmQuery() {
|
||||
this.showCustomModal = false;
|
||||
|
||||
|
||||
// 继续查询流程
|
||||
const storeValue = uni.getStorageSync('storeValue');
|
||||
if (!storeValue || !storeValue.ec_apply_id) {
|
||||
@ -328,7 +363,7 @@ export default {
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
// 获取合同类别显示文本
|
||||
getEcTypeLabel(code) {
|
||||
// 兼容直接传入value或者包含value属性的对象
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user