driverSchool/pages/index/contract.vue
2025-04-14 17:11:28 +08:00

179 lines
4.4 KiB
Vue

<template>
<view class="content">
<view class="container">
<headers :titles="titles">
<uni-icons type="arrow-left" color="#000000" size="22px"></uni-icons>
</headers>
<view class="f-box">
<u-parse :content="content"></u-parse>
</view>
<jushi-signature :settings="settings" base64 @cancel="signatureCancel"
@change="signatureChange"></jushi-signature>
</view>
</view>
</template>
<script>
import headers from '../../components/header/headers.vue'
import request from '@/utils/request.js'
export default {
data() {
return {
titles: "合同",
settings: { //签名设置
width: '750', //签名区域的宽
height: '500', //签名区域的高
lineWidth: 4, //签名时线宽
textColor: '#000' //签名文字颜色
},
contentTemp: '',
content: '',
List: [],
show: false,
status: 'loading',
name: '',
Address: '',
tenantId: '',
contractData: {},
userData: {},
callback: null,
}
},
onLoad(options) {
/*this.name = option.name
this.Address = option.Address
this.tenantId = option.tenantId
console.log('name',this.name)
console.log('Address',this.Address)
console.log('tenantId',this.tenantId)*/
if (options.data) {
this.contractData = JSON.parse(decodeURIComponent(options.data));
this.callback = options.callback;
}
this.callback = options.callback;
this.userData = uni.getStorageSync('userInfo');
},
onShow() {
this.getdriveSchool()
// this.actList = ["1", "1", "1", "1", "1", ]
// this.status = "nomore" 底部刷新结束
},
onPullDownRefresh() {
console.log("刷新");
uni.stopPullDownRefresh()
},
onReachBottom() {
// this.show = true
setTimeout(() => {
console.log("加载执行");
}, 2000)
},
components: {
headers
},
methods: {
async getdriveSchool() {
let res = await request({
url: `/app-api/small/driveSchool/obtainContract/tenantId/${this.contractData.tenantId}`,
method: 'get',
})
this.content = res.data.content
// 执行替换
for (const [key, value] of Object.entries(this.contractData)) {
this.content = this.content.replace(
new RegExp(`&nbsp;${key}&nbsp;|${key}`, 'g'),
value
);
}
// 处理特殊格式的占位符(如下划线格式)
this.content = this.content.replace(/<u[^>]*>([^<]*)name([^<]*)<\/u>/g, `<u>$1${this.contractData.name}$2</u>`);
this.content = this.content.replace(/<u[^>]*>([^<]*)type([^<]*)<\/u>/g, `<u>$1${this.contractData.type}$2</u>`);
},
signatureCancel() {
uni.navigateBack()
},
async signatureChange(e) {
this.imgUrl = e
let res = await request({
url: '/app-api/small/driveSchool/obtainContract',
method: 'post',
data: {
userName: this.contractData.name,
tenantId: this.tenantId,
userId: this.userData.id,
content: this.content,
}
})
console.log(res);
uni.showToast({
title: '报名成功',
duration: 3000
});
const pages = getCurrentPages();
const prevPage = pages[pages.length - 2];
if (prevPage && (prevPage.route === 'newPages/register/index' || prevPage.route === '/newPages/register/index')) {
if (this.callback) { // 从onLoad中获取的callback
try {
const callback = decodeURIComponent(this.callback);
if (prevPage.$vm && typeof prevPage.$vm[callback] === 'function') {
prevPage.$vm[callback]();
}
} catch (e) {
console.error('回调执行失败:', e);
}
}
}
setTimeout(function () {
// 在这里写需要延迟执行的代码
uni.navigateTo({
url: '/newPages/newIndex/index'
})
}, 2600); // 3000毫秒即为3秒
// const index = e.lastIndexOf("/")
// let fileName = e.substring(index + 1, e.length)
// this.uploadFile(this.imgUrl, fileName)
},
goback() {
uni.navigateBack()
},
}
}
</script>
<style scoped lang="scss">
.content {
background: #f4f5f6;
height: 100vh;
}
.container {
width: 100%;
background: #f4f5f6;
box-sizing: border-box;
padding-top: 88px;
}
.f-box {
width: 100%;
box-sizing: border-box;
padding: 15px;
}
</style>