diff --git a/manifest.json b/manifest.json index c0843d7..4226a04 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) + } + }) } } }