tanxue hace 4 horas
padre
commit
62c791bd87

+ 16 - 3
common/styles/global/pages.scss

@@ -706,17 +706,30 @@
 	padding: 16rpx 0;border:1rpx solid  rgba(0, 0, 0, 0.3);}
 	.pdf-img{width: 93%;margin: 16rpx auto;}
 	.pdf-tip-box{
-		position: absolute;top: calc(110rpx + var(--status-bar-height));left: 0;right:0;bottom: 0;
+		position: absolute;top: calc(140rpx + var(--status-bar-height));left: 0;right:0;bottom: 0;
 		display: flex;align-items: center;justify-content: center;color: #666;background-color: #fff;
 		border: 24rpx solid #f8f9fd;}
 	.tip-img-box{display: flex;flex-direction: column;}
 	.tip-text{text-align: center;color: #666;}
-	.tip-text::before{content: '';width: 260rpx;height: 260rpx;display: block;margin-bottom: 16rpx;
-	// background-image: url("@/static/images/common/loading-icon.gif");
+	.tip-icon{width: 260rpx;height: 260rpx;display: block;margin-bottom: 16rpx;
 	background-size: cover;}
 	.no-hetong-box{
 		height: 100vh;display: flex;flex-direction: column;
 		align-items: center;justify-content: center;color: #666;}
 	.ht-btn{width: 180px;margin-bottom: 24px;}
 	.hetong-tip-box{color: #3fd2a1;font-size: 24rpx;margin:0 24rpx 24rpx;line-height: 1.4;}
+}
+.ht-qm-popup{
+	width: 100%;height: 100vh;display: flex;flex-direction: column;
+	position: relative;background-color: #f8f9fd;
+	.ht-qm-box{flex: 1;}
+	.qm-tip-box{background-color: #fff;border-radius: 6rpx;margin: 24rpx;
+	padding: 16rpx 24rpx;box-sizing: border-box;}
+	.lime-signature{width: 100%!important;height: 400rpx!important;
+	background-color: #f0f9f8;border-radius: 8rpx;margin-top: 10rpx;}
+	.qm-tip-text{font-size: 24rpx;color: #333;margin: 48rpx 0 12rpx;line-height: 1.6;}
+	.ht-btn-box{
+		display: flex;margin: 32rpx 80rpx;position: absolute;bottom: 0;left: 0;right: 0;
+		.phone-green-btn,.phone-white-btn{width: 240rpx;height: 70rpx;line-height: 70rpx;box-sizing: border-box;}
+	}
 }

+ 16 - 7
components/writeSign/index.vue

@@ -1,12 +1,21 @@
 <template>
-	<view style="width: 750rpx ;height: 500rpx;">
-		<jp-signature ref="signatureRef"></jp-signature>
+	<view class="ht-qm-box">
+		<view class="qm-tip-box">
+			<view>手写签名</view>
+			<jp-signature ref="signatureRef"></jp-signature>
+			<view class="qm-tip-text">
+				注意事项:<br/>
+				1.请仔细阅读全文,确认完全理解条款后签名。<br/>
+				2.需本人手写签名,签字即视为认可合同内容。<br/>
+				3.签名具有法律效力,签署后须履行约定义务,纠纷以签名数据为法律凭据。
+			</view>
+		</view>
 	</view>
-	<image :src="url" alt="" />
-	<view>
-		<button @click="clear">清空</button>
-		<button @click="undo">撤消</button>
-		<button @click="save">保存</button>
+	<image v-show="false" :src="url" alt="" />
+	<view class="ht-btn-box">
+		<button @click="save" type="default" class="phone-green-btn">保存</button>
+		<button @click="clear" type="default" class="phone-white-btn">清空</button>
+		<!-- <button @click="undo">撤消</button> -->
 	</view>
 </template>
 

+ 15 - 15
pages/client/hetong/HetongInfo.vue

@@ -1,10 +1,7 @@
 <template>
 	<view class="phone-hetong-page">
-		<view class="phone-navBar-box">
-			<view @click="goUpPage" class="nav-bar-icon"></view>
-			<text class="nav-bar-title">合同</text>
-			<view class="lsht-icon" @click="handleGoLishi"></view>
-		</view>
+		<!-- 导航区域 -->
+		<customNavbarVue title="合同" :show-back-btn="true" @back="handleGoLishi"></customNavbarVue>
 		<template v-if="tId">
 			<view class="pdf-box">
 				<img v-for="item in imgList" mode="aspectFit" :src="`data:image/png;base64,${item}`"
@@ -13,6 +10,7 @@
 			<!-- 加载提示 -->
 			<view class="pdf-tip-box" v-if="isLoading">
 				<view class="tip-img-box">
+					<view :style="{ backgroundImage: 'url(' + imgsArr.loadingIcon + ')' }" class="tip-icon"/>
 					 <view class="tip-text">加载中...</view>
 				</view>
 			</view>
@@ -24,12 +22,9 @@
 		<button @click="handleQianming" v-if="tId && info.status == 0" class="phone-green-btn ht-btn"
 			type="default">我已阅读</button>
 
-		<uni-popup ref="popupRef" type="bottom" background-color="#fff" :is-mask-click="false" :mask-click="false">
+		<uni-popup ref="popupRef" type="top" background-color="#fff" :is-mask-click="false" :mask-click="false">
 			<view class="ht-qm-popup">
-				<view class="icon-title-navBar-box">
-					<view @click="goback2" class="nav-bar-icon"></view>
-					<text class="nav-bar-title">签名</text>
-				</view>
+				<customNavbarVue title="签名" :show-back-btn="true" @back="goback2"></customNavbarVue>
 				<writeSign @getBase64="getBase64"></writeSign>
 			</view>
 		</uni-popup>
@@ -38,9 +33,11 @@
 
 <script setup>
 	import {
-		ref
+		ref,reactive
 	} from "vue";
 	import * as httpApi from "@/api/jzHetong.js"
+	import cacheManager from '@/utils/cacheManager.js'
+	import customNavbarVue from "@/components/custom-navbar/custom-navbar.vue";
 	import {
 		onLoad
 	} from "@dcloudio/uni-app"
@@ -60,9 +57,14 @@
 	const imgList = ref([])
 	const isLoading = ref(true)
 	const timer1 = ref(null)
+	const imgsArr = reactive({
+			loadingIcon: '',
+	})
 
 	onLoad((options) => {
 		tId.value = options.id;
+		const auth = cacheManager.get('auth');
+		imgsArr.loadingIcon = cacheManager.get('projectImg').loading_icon;
 		init();
 	})
 
@@ -115,7 +117,7 @@
 
 		httpApi.getHetongQianming({
 			id: tId.value,
-			yifangBase64: img.replace(/^data:image\/\w+;base64,/, '')
+			qianmingBase64: img.replace(/^data:image\/\w+;base64,/, '')
 		}).then(res => {
 			if (res.data) {
 				uni.showToast({
@@ -141,9 +143,7 @@
 
 	}
 	function handleGoLishi() {
-		uni.redirectTo({
-			url: '/pages/client/hetong/HetongList'
-		})
+		uni.navigateBack()
 	}
 
 	function goback2() {

+ 27 - 11
pages/client/hetong/HetongList.vue

@@ -1,23 +1,25 @@
 <template>
 	<view class="phone-list-page ht-list-page">
-		<view class="icon-title-navBar-box">
-			<view @click="goUpPage" class="nav-bar-icon"></view>
-			<text class="nav-bar-title">历史合同</text>
-		</view>
+		<!-- 导航区域 -->
+		<customNavbarVue title="我的合同" :show-back-btn="true" @back="goUpPage"></customNavbarVue>
 	<!-- 课程列表 -->
 	<scroll-view scroll-y="true" refresher-enabled="true" :refresher-triggered="data.loading"
 		:refresher-threshold="50" refresher-background="transparent" @refresherrefresh="onRefresh"  @scrolltolower="onScrolltolower"
-		class="admin-phone-tabbar-view">
+		:style="{ height: `calc(100vh - ${statusBarHeight}px - 212rpx);`}" class="admin-phone-tabbar-view">
 		<uni-list class="admin-list-box ht-list-box">
 			<uni-list-item v-for="item in data.list" class="ht-list-item-box">
 				<template v-slot:body>
 					<view class="ht-card-row">
 						<view class="ht-status-btn-row">
 							<view class="ht-status">合同状态:<view :class="'status-' + item.status">{{formatStatus(item.status)}}</view></view>
-							<view class="ht-biew-btn" @click="checkKecheng(item)">查看<icon class="ht-jt"></icon></view>
+							<view class="ht-biew-btn" @click="checkKecheng(item)">查看
+							<icon class="ht-jt" :style="{ backgroundImage: 'url(' + data.imgsArr.htjtIcon + ')' }"></icon>
+							</view>
 						</view>
-						<view class="ht-time"><icon class="phone-time-icon" />合同开始时间:{{formatTime(item.startDate)}} </view>
-						<view class="ht-time"><icon class="phone-time-icon" />合同结束时间:{{formatTime(item.endDate)}} </view>
+						<view class="ht-time">
+							<icon class="phone-time-icon" :style="{ backgroundImage: 'url(' + data.imgsArr.timeIcon + ')' }"/>合同开始时间:{{formatTime(item.startDate)}} </view>
+						<view class="ht-time">
+							<icon class="phone-time-icon" :style="{ backgroundImage: 'url(' + data.imgsArr.timeIcon + ')' }"/>合同结束时间:{{formatTime(item.endDate)}} </view>
 					</view>
 				</template>
 			</uni-list-item>
@@ -30,10 +32,13 @@
 </template>
 
 <script setup>
-import {ref,reactive} from "vue";
+import {ref,reactive,onMounted} from "vue";
 import {onLoad,onShow} from "@dcloudio/uni-app";
 import {getHetongList} from '@/api/jzHetong.js'
 import customTabbarClient from "@/components/custom-tabbar/custom-tabbar-client.vue"
+import customNavbarVue from "@/components/custom-navbar/custom-navbar.vue";
+import cacheManager from '@/utils/cacheManager.js'
+const statusBarHeight = ref(0);	
 const data = reactive({
 		list: [], // 考试列表
 		loading: false,
@@ -45,17 +50,28 @@ const data = reactive({
 			contentrefresh: '加载中',
 			contentnomore: '没有更多'
 		},
+		imgsArr: {
+			htjtIcon: '',
+			timeIcon: '',
+		},
 })	
 	
 onLoad((options) => {
 		data.from = options.from;
-		
+		data.imgsArr.htjtIcon = cacheManager.get('projectImg').nav_bar_jt_bottom;
+		data.imgsArr.timeIcon = cacheManager.get('projectImg').date_icon;
 	})
 
 onShow(() => {
   refreshData()
 })
-
+onMounted(() => {
+		uni.getSystemInfo({
+		success: (res) => {
+		statusBarHeight.value = res.statusBarHeight;
+		}
+		});
+	});
 function onRefresh() {
 	data.page = 0;
 	data.list = [];