From 8a8c8f56f5484ce01e4e3c4668462cdb4b5c52f4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=A7=A6=E5=BD=A6=E7=A5=96?= <605893810@qq.com>
Date: Wed, 13 Aug 2025 20:41:56 +0800
Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E8=A7=A3=E5=86=B3=E6=89=93?=
=?UTF-8?q?=E5=8C=85=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
manifest.json | 2 +-
pages/contract/index.vue | 142 +++++++++++++++----
pages/mine_package/mine_order/mine_order.vue | 25 ++--
3 files changed, 131 insertions(+), 38 deletions(-)
diff --git a/manifest.json b/manifest.json
index d37fc25..85eebd9 100644
--- a/manifest.json
+++ b/manifest.json
@@ -124,5 +124,5 @@
"uniStatistics" : {
"enable" : false
},
- "vueVersion" : "3"
+ "vueVersion" : "2"
}
diff --git a/pages/contract/index.vue b/pages/contract/index.vue
index 24b9e29..ba1033a 100644
--- a/pages/contract/index.vue
+++ b/pages/contract/index.vue
@@ -1,14 +1,16 @@
-
+
-
+
-
+
+
+
+
+
@@ -18,30 +20,35 @@ import Header from '@/components/common/header.vue';
import TopSafe from '@/components/common/top-safe.nvue'
import ContractItem from './components/contract-item.vue'
import DownPopup from '@/components/common/down-popup.vue';
-import { getContractList,signContract } from '@/api/contract.js'
+import { getContractList, signContract } from '@/api/contract.js'
+import { getSignUrl, getMiniProgramSignUrl } from '@/api/order.js';
import func from '@/utils/func.js';
export default {
- components: { Header,TopSafe,ContractItem,DownPopup },
+ components: { Header, TopSafe, ContractItem, DownPopup },
data() {
return {
- type:false,
- obj:null
+ type: false,
+ obj: null,
+ flowId: null,
+ signUrl: null,
+ downShow: false,
+ selectItem: null,
};
},
onShow() {
this.init();
},
methods: {
- init(){
+ init() {
// this.isSignContract()
this.getSignContract()
},
- isSignContract(){
- signContract().then(res=>{
- if(res.bizcode == 100){
+ isSignContract() {
+ signContract().then(res => {
+ if (res.bizcode == 100) {
this.type = res.data;
- }else{
+ } else {
this.$refs.uToastRef.show({
type: 'error',
message: res.msg,
@@ -49,12 +56,12 @@ export default {
}
})
},
- getSignContract(){
- getContractList().then(res=>{
- if(res.bizcode == 100){
+ getSignContract() {
+ getContractList().then(res => {
+ if (res.bizcode == 100) {
this.obj = res.data[0];
- this.obj.time = func.formatDate(new Date(res.data[0].signatureTime),3)
- }else{
+ this.obj.time = func.formatDate(new Date(res.data[0].signatureTime), 3)
+ } else {
this.$refs.uToastRef.show({
type: 'error',
message: res.msg,
@@ -62,25 +69,104 @@ export default {
}
})
},
- onBtn(){
- if(this.type){
+ onBtn() {
+ if (this.type) {
//查看
uni.navigateTo({
- url:`/pages/contract/check`
+ url: `/pages/contract/check`
})
- }else{
+ } else {
//去签署
-
+ this.downShow = true;
}
+ },
+ // 发起合同签章
+ async onSignContract() {
+ const params = {
+ // 需要的参数
+ orderId: this.selectItem.id,
+ }
+ const { bizcode, data } = await signContract(params);
+ if (bizcode === 100) {
+ this.flowId = data.flowId;
+
+ if (this.flowId)
+ // #ifdef APP-PLUS || WEB
+ this.onGetSignUrl(this.flowId);
+ // #endif
+
+ // #ifdef MP-WEIXIN
+ // 小程序
+ this.onGetMiniProgramSignUrl(this.flowId)
+ // #endif
+ }
+ },
+
+ // 获取H5签署链接
+ async onGetSignUrl(flowId) {
+ const params = {
+ // 需要的参数
+ flowId: flowId,
+ }
+ const { bizcode, data } = await getSignUrl(params);
+ if (bizcode === 100) {
+ this.signUrl = data.flowApproverUrlInfos[0].longUrl;
+ } else {
+ this.$refs.uToastRef.show({
+ type: 'error',
+ message: "获取签署链接失败,请稍后再试",
+ });
+ return null;
+ }
+ },
+ // 获取跳转至腾讯电子签小程序的签署链接
+ async onGetMiniProgramSignUrl(flowId) {
+ const params = {
+ flowId: flowId,
+ endPoint: 'HTTP_SHORT_URL'
+ }
+ const { bizcode, data } = await getMiniProgramSignUrl(params);
+ if (bizcode === 100) {
+ console.log("跳转至腾讯电子签小程序的签署链接", data);
+ this.openTencentESign(data.schemeUrl);
+ } else {
+ this.$refs.uToastRef.show({
+ type: 'error',
+ message: "获取签署链接失败,请稍后再试",
+ });
+ return null;
+ }
+ },
+
+ // 电子签的回调地址
+ handleMessage(e) {
+ const data = e.detail;
+ console.log('电子签的回调地址', e);
+ },
+ // 小程序签名
+ openTencentESign(signPath) {
+ // 这个链接需要后端调用腾讯电子签 API 获取
+ uni.navigateToMiniProgram({
+ appId: 'wxa023b292fd19d41d', // 腾讯电子签官方小程序的 appId
+ path: signPath, // 跳转到的页面路径 + 参数
+ extraData: {}, // 如果需要传额外参数
+ envVersion: 'release', // 小程序版本 release / trial / develop
+ success(res) {
+ console.log('跳转成功', res)
+ },
+ fail(err) {
+ console.error('跳转失败', err)
+ }
+ })
}
}
}