feat: 签约提示/赠送次数/自动划付提醒,自营支付成功弹窗,隐藏微信登录

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-27 03:28:31 +08:00
parent 85cddfbf8d
commit 683a9411fd
19 changed files with 469 additions and 99 deletions
+121 -20
View File
@@ -833,6 +833,42 @@
<el-dialog title="支付凭证" :visible.sync="showPayVoucher" width="50%">
<el-image :src="payVoucher" :preview-src-list="[payVoucher]"/>
</el-dialog>
<el-dialog
title="重要提示"
:visible.sync="signTipDialog.show"
width="640px"
:close-on-click-modal="false"
append-to-body
custom-class="sign-tip-dialog"
@close="onSignTipDialogClose"
>
<div class="sign-tip-content">
<p>1、若全体签约方未完成全部签约流程,本签约文件不发生法律效力,系统无法为该文件提供存储及司法调证服务;</p>
<p>2、本次签约的实名主体信息须与注册认证阶段提交的信息保持一致;若信息发生变更,您须完成重新认证后方可继续签约。本次签约系由实名认证主体操作或经其全权授权操作,以此防范法律风险及经济损失;</p>
<p>
3、因法律法规及监管政策可能发生不定期更新,请您在使用我方产品及服务前,查阅最新版
<span class="sign-tip-link" @click.stop="openUsageAgreement">《使用协议和隐私协议》</span>
;若系统提示您需完成实名认证更新、证书续期等相关事项,您须在签约前完成对应操作,否则由此产生的一切损失,本平台不承担任何责任;您使用本平台服务即视为您已同意前述全部内容。
</p>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="confirmSignTipDialog">知悉同意</el-button>
</div>
</el-dialog>
<el-dialog
:title="agreementDialog.title || '使用协议和隐私协议'"
:visible.sync="agreementDialog.show"
width="70%"
append-to-body
top="5vh"
>
<div class="agreement-dialog-body" v-loading="agreementDialog.loading" v-html="agreementDialog.content"></div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="agreementDialog.show = false">关闭</el-button>
</div>
</el-dialog>
</view>
</template>
@@ -851,6 +887,17 @@ export default {
qybNum: 0
},
dialogVisible: false,
signTipDialog: {
show: false,
resolve: null,
reject: null
},
agreementDialog: {
show: false,
loading: false,
title: '',
content: ''
},
qybPackageList: [],
selectedQyb: null,
contractTemplate: '',
@@ -1155,18 +1202,16 @@ export default {
this.form2.props.loading = false
return false
}
const res = await this.$confirm(`1、您确认,若全体各签约方未完成全部签约流程,本签约文件不发生法律效力,系统无法对该签约文件予以保存及提供司法调证服务;<br>2、您确认,当前签约的实名主体名称、手机号码与注册认证阶段提交的信息未发生变更;若发生变更,必须及时进行重新认证后方可继续签约,避免产生严重法律风险与经济损失;<br>3、您确认,本次签约为本系统实名认证主体操作,如若不是实名认证主体操作,授权委托人需本系统进行授权认证后签约;<br>4、您确认,您与其他签约方均系在平等、自愿的基础上完成本次签约;<br>5、你确认,此次签约内容符合《中华人民共和国电子签名法》《民法典》生效保护范畴;<br>6、如因法律法规、监管部门政策更新等原因,系统提示您重新进行实名认证、证书续期等重要提示时,请您必须在签约前完成,否则造成任何损失,平台不承担任何责任;以上签约条件您均已经知悉并确认,否则您有权拒绝本次签约。`, '特别重要提示', {
confirmButtonText: '知悉同意',
showCancelButton: false,
type: 'warning',
dangerouslyUseHTMLString: true
})
if (res === 'confirm') {
try {
await this.showSignImportantTip()
await vk.callFunction({
url: 'client/contract/kh/addSign',
data: this.form2.data
})
vk.redirectTo({url: '/pages/contract/index?tab=1'})
} catch (e) {
this.form2.props.loading = false
return false
}
}
console.log('complete:', pdfRes)
@@ -2052,15 +2097,47 @@ export default {
* @param sign
* @param contract
*/
showSignImportantTip() {
return new Promise((resolve, reject) => {
this.signTipDialog.resolve = resolve
this.signTipDialog.reject = reject
this.signTipDialog.show = true
})
},
confirmSignTipDialog() {
const resolve = this.signTipDialog.resolve
this.signTipDialog.resolve = null
this.signTipDialog.reject = null
this.signTipDialog.show = false
if (typeof resolve === 'function') resolve('confirm')
},
onSignTipDialogClose() {
const reject = this.signTipDialog.reject
this.signTipDialog.resolve = null
this.signTipDialog.reject = null
if (typeof reject === 'function') reject('cancel')
},
async openUsageAgreement() {
this.agreementDialog.show = true
this.agreementDialog.loading = true
this.agreementDialog.content = ''
try {
const data = await vk.callFunction({
url: 'client/otherArticle/list/pub/getDetail',
data: { id: 'adea4666684a336402937a2c5dcc448e' }
})
this.agreementDialog.title = data.name || data.title || '使用协议和隐私协议'
this.agreementDialog.content = data.content || ''
} catch (e) {
this.agreementDialog.content = '<p>协议内容加载失败,请稍后重试</p>'
} finally {
this.agreementDialog.loading = false
}
},
async extSign(sign, contract) {
if (sign) return
try {
await this.$confirm(`1、您确认,若全体各签约方未完成全部签约流程,本签约文件不发生法律效力,系统无法对该签约文件予以保存及提供司法调证服务;<br>2、您确认,当前签约的实名主体名称、手机号码与注册认证阶段提交的信息未发生变更;若发生变更,必须及时进行重新认证后方可继续签约,避免产生严重法律风险与经济损失;<br>3、您确认,本次签约为本系统实名认证主体操作,如若不是实名认证主体操作,授权委托人需本系统进行授权认证后签约;<br>4、您确认,您与其他签约方均系在平等、自愿的基础上完成本次签约;<br>5、你确认,此次签约内容符合《中华人民共和国电子签名法》《民法典》生效保护范畴;<br>6、如因法律法规、监管部门政策更新等原因,系统提示您重新进行实名认证、证书续期等重要提示时,请您必须在签约前完成,否则造成任何损失,平台不承担任何责任;以上签约条件您均已经知悉并确认,否则您有权拒绝本次签约。`, '提示', {
confirmButtonText: '知悉同意',
showCancelButton: false,
type: 'warning',
dangerouslyUseHTMLString: true
})
await this.showSignImportantTip()
} catch (e) {
return
}
@@ -2500,18 +2577,16 @@ export default {
this.form1.props.loading = false
return false
}
const res = await this.$confirm(`1、您确认,若全体各签约方未完成全部签约流程,本签约文件不发生法律效力,系统无法对该签约文件予以保存及提供司法调证服务;<br>2、您确认,当前签约的实名主体名称、手机号码与注册认证阶段提交的信息未发生变更;若发生变更,必须及时进行重新认证后方可继续签约,避免产生严重法律风险与经济损失;<br>3、您确认,本次签约为本系统实名认证主体操作,如若不是实名认证主体操作,授权委托人需本系统进行授权认证后签约;<br>4、您确认,您与其他签约方均系在平等、自愿的基础上完成本次签约;<br>5、你确认,此次签约内容符合《中华人民共和国电子签名法》《民法典》生效保护范畴;<br>6、如因法律法规、监管部门政策更新等原因,系统提示您重新进行实名认证、证书续期等重要提示时,请您必须在签约前完成,否则造成任何损失,平台不承担任何责任;以上签约条件您均已经知悉并确认,否则您有权拒绝本次签约。`, '提示', {
confirmButtonText: '知悉同意',
showCancelButton: false,
type: 'warning',
dangerouslyUseHTMLString: true
})
if (res === 'confirm') {
try {
await this.showSignImportantTip()
await vk.callFunction({
url: 'client/contract/kh/launch',
data: this.form1.data
})
vk.redirectTo({url: '/pages/contract/index?tab=1'})
} catch (e) {
this.form1.props.loading = false
return false
}
}
uni.hideLoading()
@@ -3182,4 +3257,30 @@ export default {
.report-item .report-info {
flex: 1;
}
.sign-tip-content {
color: #333;
font-size: 14px;
line-height: 1.8;
max-height: 60vh;
overflow-y: auto;
p {
margin: 0 0 12px;
text-align: justify;
}
}
.sign-tip-link {
color: #bd3124;
cursor: pointer;
text-decoration: underline;
}
.agreement-dialog-body {
max-height: 70vh;
overflow-y: auto;
line-height: 1.7;
padding: 0 8px;
}
</style>