Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/2025北京诚祥-家政版' into 2025北京诚祥-家政版

wangguoyu 1 mēnesi atpakaļ
vecāks
revīzija
47bd4216f2

+ 3 - 81
common/styles/global/components.scss

@@ -99,28 +99,6 @@ view{box-sizing: border-box;}
 .phone-green-btn[type='default']:hover{background-color: #34c595;color: #fff;}
 
 /***** 标题栏  *****/
-// 三个元素
-.phone-navBar-box{
-	display: flex;align-items: center;justify-content: space-between;background-color: #fff;
-	padding: calc(20rpx + var(--status-bar-height)) 20rpx 20rpx;box-sizing: border-box;position: relative;
-	.nav-bar-icon{
-		width: 24rpx;height: 38rpx;
-		background-image: url("@/static/images/common/nav-bar-jt.svg");@include ezy-no-repeat-cover();
-	}
-	.nav-bar-title{font-size: 36rpx;color: #333;}
-	// 考试数字
-	.nav-bar-other{
-		font-size: 30rpx;color: #fff;margin-right: 2%;
-		.key-note{color: #ffff01;}
-	}
-	// 文字按钮
-	.text-btn{font-size: 26rpx;color: #666;padding-top: 4rpx;box-sizing: border-box;}
-	// 图标
-	.nav-bar-icon-box{
-		.nav-bar-right-icon{font-size: 42rpx;color: #666;}
-		.nav-bar-right-icon + .nav-bar-right-icon{margin-left: 24rpx;}
-	}
-}
 // 两个元素 
 .icon-title-navBar-box{
 	background-color: #fff;box-sizing: border-box;
@@ -128,28 +106,12 @@ view{box-sizing: border-box;}
 	.nav-bar-title{font-size: 32rpx;height: 64rpx;line-height: 64rpx;color: #333;max-width: 70%;}
 	.nav-bar-box{width: 64rpx;height: 64rpx;line-height: 64rpx;position: absolute;left: 10rpx;top: 10rpx;
 	display: flex;align-items: center;justify-content: center;}
-	.nav-bar-icon{
-		width: 24rpx;height: 38rpx;
-		background-image: url("@/static/images/common/nav-bar-jt.svg");@include ezy-no-repeat-cover();
-	}
+	.nav-bar-icon{width: 24rpx;height: 38rpx;@include ezy-no-repeat-cover();}
 	.bar-ml10{margin-left: 10rpx;}
 	.nav-bar-btn{font-size: 24rpx;position: absolute;right: 20rpx;
 			line-height: 50rpx;border-radius: 8rpx;padding: 0 10rpx;}
 }
 
-// 带背景色client使用
-.icon-title-bjcolor-navBar-box{
-	background-color: #fff;padding: 10rpx;border-bottom: 1rpx solid #e0e0e0;
-	.nav-bar-title{color: #3fd2a1;}
-	.nav-bar-icon{width: 100rpx;height: 63rpx;background-image:unset;top: calc(12rpx + var(--status-bar-height));}
-	.nav-bar-icon::before{content:'';width:50rpx;height: 50rpx;display: inline-block;margin-top: 6rpx;
-	@include ezy-no-repeat-cover();
-	background-image: url("@/static/images/common/return-icon.png");}
-}
-// 仅一个返回按钮
-.phone-nav-bar-icon{width: 24rpx;height: 38rpx;position: absolute;left: 24rpx;top: var(--status-bar-height);
-		background-image: url("@/static/images/common/nav-bar-jt.svg");@include ezy-no-repeat-cover();
-	}
 
 /***** tab *****/	
 // client
@@ -311,13 +273,13 @@ margin-right: 18rpx;display: inline-block;vertical-align: middle;}
 /***** 考试须知  *****/
 .phone-ksxz-dialog{
 	position: relative;
+	.phone-ksxz-body{width: 100%;position: relative;}
 	.uni-dialog-title{
 		padding: 24rpx 0!important;font-size: 30rpx;border-bottom: 1px solid #f5f5f5;
 		.uni-popup__info{color: #333!important;}
 	}
 	.ksxz-close-icon{width: 36rpx;height: 36rpx;@include ezy-no-repeat-cover;
-	position: absolute;top: 26rpx;right: 20rpx;
-			background-image: url("@/static/images/common/close-icon.svg");}
+	position: absolute;top: -100rpx;right: 20rpx;}
 	.uni-dialog-content{justify-content: flex-start!important;}
 	
 	.uni-dialog-button-text{color: #999!important;}
@@ -385,46 +347,6 @@ margin-right: 18rpx;display: inline-block;vertical-align: middle;}
 		text-align: center;margin:10rpx 2%;border:1rpx solid #6bccb0;color:#6bccb0;
 		box-sizing: border-box;padding: 0 6rpx;font-size: 26rpx;background-color:#e5f8f4;
 	}
-	.radio-btn-box{
-		width: 100%;display:block;text-align: center;
-		.radio-btn{color:#6bccb0;display:inline-block;margin: 16rpx 0;}
-		.radio-btn::after{
-			content: '';width: 30rpx;height: 30rpx;@include ezy-no-repeat-cover;
-			background-image: url("@/static/images/common/nav-bar-jt-bottom-green.svg");
-			display: inline-block;vertical-align: middle;margin-left: 10rpx;font-size: 30rpx;
-		}
-		.collapsed-btn::after{transform: rotate(180deg);}
-	}
-	.label-radio-btn-box{margin-right: 180rpx;}
-}
-
-// label-select
-.form-label-select{
-	width: 100%;display: flex;justify-content: space-between;
-	background-color: #fff;font-size: 30rpx;color: #333;
-	padding: 20rpx;box-sizing: border-box;margin-bottom: 2rpx;
-	.select-picker-box{width: 100%;display: flex;align-items: center;justify-content: flex-end;}
-	.select-picker-box[disabled="true"]{color: #999;}
-	.form-label-require{color: #ff0101;margin-right: 6rpx;width:16rpx;display: inline-block;}
-	.phone-form-label{min-width: 180rpx;line-height:60rpx;flex-shrink: 0;}
-	.form-radio-picker{width:auto!important;flex: unset!important;display: flex;align-items: center;}
-	.form-radio-select,.form-radio-disabled{
-		display: flex;align-items: center;
-		>view{flex: 1;}
-		icon{width: 30rpx;height: 30rpx;@include ezy-no-repeat-cover;
-			background-image: url("@/static/images/common/nav-bar-jt-bottom.svg");
-			transform: rotate(270deg);margin-left: 4rpx;}
-	}
-	.form-radio-disabled{
-		color: #999;
-		icon{background-image: url("@/static/images/common/nav-bar-jt-bottom-disabled.svg");}
-	}
-	
-	// 日期
-	.uni-date{
-		display: flex;align-items: center;
-		.uni-date-editor{flex: 1;display: flex;justify-content: flex-end;}
-	}
 }
 
 // label-switch

+ 1 - 42
common/styles/global/pages.scss

@@ -3,7 +3,7 @@
 .phone-login-page{
 	width:100%;height:100vh; background-color: #fff;position: relative;
 	.login-wrap-box{
-		width:100%;height: 1283rpx;background-image: url("@/static/images/login/login-bj-img.png");@include ezy-no-repeat-cover(top);
+		width:100%;height: 1283rpx;@include ezy-no-repeat-cover(top);
 		position: absolute;top:0;
 	}
 	.bjcx-head-box{width: 100%;text-align: center;margin-bottom: 100rpx;
@@ -453,7 +453,6 @@
 		}
 		.user-title{font-size: 30rpx;color: #333;margin-left: 20rpx;}
 		.user-jt-icon{width: 30rpx;height: 30rpx;@include ezy-no-repeat-cover;
-			background-image: url("@/static/images/common/nav-bar-jt-bottom.svg");
 			transform: rotate(270deg);margin-left: 4rpx;}
 	}
 	.info-btn{width: 360rpx;margin: 100rpx auto 24rpx;font-size: 30rpx;}
@@ -511,28 +510,6 @@
 	}
 }
 
-/*** 消息列表 ***/
-.phone-tongzhi-list{
-	.uni-list-item__container{padding: 0!important;}
-	.xiaoxi-list-card-box{
-		width: 100%;
-	}
-	.card-head-row{
-		width: 100%;display: flex;align-items: center;border-bottom: 1rpx solid #f4f6fa;
-		padding: 10rpx 20rpx;box-sizing: border-box;justify-content: space-between;
-		.head-name{font-size: 32rpx;color:#49be89;@include single-line-ellipsis();}
-		.head-createTime{font-size: 28rpx;color:#969495;margin-left: auto;flex-shrink: 0;}
-		icon{width: 24rpx;height: 24rpx;@include ezy-no-repeat-cover;flex-shrink: 0;
-			background-image: url("@/static/images/common/nav-bar-jt-bottom.svg");
-			transform: rotate(270deg);margin-left:4rpx;}
-	}
-	.card-content{
-		width: 100%;height: 84rpx;padding:0 20rpx;box-sizing: border-box;@include multi-line-ellipsis(2);
-		@include ezy-rich-text();font-size: 28rpx;color:#666;margin: 16rpx 0;line-height: 1.5;
-	}
-}
-
-
 /*** 筛选 ***/
 .phone-filter-page{
 	width: 100%;height: 100vh;background-color: #f8f9fd;
@@ -551,24 +528,6 @@
 }
 
 
-/*** 地图浮层 ***/
-.map-popup-box{
-	width: 100%;height: 100vh;display: flex;flex-direction: column;
-	.map-card-list{width: 100%;padding: 24rpx;box-sizing: border-box;flex: 1;overflow: auto;}
-	.map-card-box{border-bottom: 1rpx solid #ccc;padding-bottom: 20rpx;margin-bottom: 20rpx;display: flex;align-items: center;}
-	.map-card-box:last-child{border-bottom: 0;}
-	.dqwz-text{color:#3fd2a1;border: 1rpx solid #3fd2a1;padding: 1rpx 10rpx 3rpx;
-	box-sizing: border-box;border-radius: 4rpx;line-height: 1;font-size: 24rpx;margin-right: 10rpx;}
-	.map-card-title{font-size: 30rpx;color: #000;margin-bottom: 12rpx;}
-	.map-card-address{font-size: 24rpx;color: #666;}
-	.map-active-icon{
-		width: 40rpx;height: 40rpx;@include ezy-no-repeat-cover();margin-left: auto;
-		background-image: url("@/static/images/common/markIcon.png");
-	}
-	
-	.white-popup{background-color: #fff;}
-}
-
 /*** 已售课程***/
 .phone-yishou-page{
 	.ys-kc-saixuan-view{height: calc(100vh - 320rpx - var(--status-bar-height));}

+ 9 - 3
components/custom-navbar/custom-navbar.vue

@@ -4,7 +4,7 @@
 	  <view class="status-bar" :style="{ height: statusBarHeight + 'px' }"></view>
 	  <view class="icon-title-box">
 		  <view class="nav-bar-box" v-if="showBackBtn" @click="handleBack">
-			  <view class="nav-bar-icon"></view>
+			  <view class="nav-bar-icon"  :style="{ backgroundImage: 'url(' + imgsArr.navBarJtIcon + ')' }"></view>
 		  </view>
 		  <!-- 标题区域 -->
 		  <view class="nav-bar-title" :style="{fontSize: titleSize + 'rpx', color: titleColor}">
@@ -15,6 +15,7 @@
 </template>
 
 <script>
+import cacheManager from '@/utils/cacheManager.js';
 export default {
   props: {
     title: String,
@@ -24,7 +25,9 @@ export default {
   },
   data() {
     return {
-      statusBarHeight: 0
+      statusBarHeight: 0,
+	   // 初始化 imgsArr,设置默认空对象
+	  imgsArr: { navBarJtIcon: '' }
     };
   },
   methods: {
@@ -39,7 +42,10 @@ export default {
         this.statusBarHeight = res.statusBarHeight;
       }
     });
-  }
+  },
+  created() {
+  	this.imgsArr.navBarJtIcon = cacheManager.get('projectImg').nav_bar_jt;
+  },
 };
 </script>
 

+ 0 - 352
components/customMap/customMap.vue

@@ -1,352 +0,0 @@
-<template>
-	<view class="map-popup-box">
-		<view class="icon-title-navBar-box">
-			<view @click="goUpPage" class="nav-bar-icon"></view>
-			<text class="nav-bar-title">选择地址</text>
-		</view>
-		<uni-popup ref="filterPopup" type="top" :animation="false" :is-mask-click="false"
-			mask-background-color="rgba(0, 0, 0, 0.4)">
-			<view class="white-popup">
-				<view class="icon-title-navBar-box">
-					<view @click="closePop" class="nav-bar-icon"></view>
-					<text class="nav-bar-title">选择城市</text>
-				</view>
-				<t-index-address @select="select"></t-index-address>
-			</view>
-		</uni-popup>
-		<!-- 查询职业 -->
-		<view class="phone-search-box city-search-box">
-			<view @click="openPopup" class="city-select-btn">
-				{{currentCity}}
-			</view>
-			<view class="city-input-box">
-				<input class="search-input" placeholder="请输入地址" v-model="data.keyword" />
-				<view class="search-icon" @click="handleClick">
-					<uni-icons type="search" size="24" color="#fff"></uni-icons>
-				</view>
-			</view>
-		</view>
-		<map style="width: 100%; height: 300px;" :latitude="data.latitude" :longitude="data.longitude"
-			:markers="data.covers" :show-location="true"> </map>
-
-		<view v-if="result" class="map-card-list">
-			<!--  #ifdef H5   -->
-			<view v-for="(item,index) in result.data" key="index" @click="xuanzeAdress(item)" class="map-card-box">
-				<view>
-					<view class="map-card-title"><text v-if="index==0" class="dqwz-text">当前位置</text>{{item.title}}
-					</view>
-					<view class="map-card-address">{{item.address}}</view>
-				</view>
-				<icon class="map-active-icon" v-if="index==0"></icon>
-			</view>
-			<!--   #endif   -->
-			<!--  #ifdef APP   -->
-			<view v-for="(item,index) in result.data.data" key="index" @click="xuanzeAdress(item)" class="map-card-box">
-				<view>
-					<view class="map-card-title"><text v-if="index==0" class="dqwz-text">当前位置</text>{{item.title}}
-					</view>
-					<view class="map-card-address">{{item.address}}</view>
-				</view>
-				<icon class="map-active-icon" v-if="index==0"></icon>
-			</view>
-			<!--   #endif   -->
-		</view>
-	</view>
-</template>
-
-<script setup>
-	import {
-		reactive,
-		ref
-	} from "vue"
-	import myIcon from "@/static/images/common/markIcon.png"
-	import {
-		jsonp
-	} from "@/utils/common.js"
-
-	import {
-		onLoad,
-		onHide,
-		onShow
-	} from "@dcloudio/uni-app"
-	import {
-		useCustomMap
-	} from "@/components/customMap/useMap.js"
-	import config from "@/config.js"
-	const emits = defineEmits(['close', 'xuanzeAdress', 'currentWeizhi'])
-	const {
-		getPositionSearchByKeyword
-	} = useCustomMap();
-
-	const result = ref(null);
-	const filterPopup = ref(null);
-	let currentCity = ref('选择城市');
-
-	function select(data) {
-		console.log('data', data);
-		currentCity.value = data.name; // 更新当前城市
-		filterPopup.value.close()
-		getCityLocation(data.name);
-	}
-
-
-
-	function openPopup(data) {
-		console.log('data', data);
-		filterPopup.value.open("top")
-	}
-
-	function closePop(data) {
-		console.log('data', data);
-		filterPopup.value.close()
-	}
-
-
-	function getCityLocation(city) {
-		console.log('222222');
-		console.log('city', city);
-		const Key = config.mapKey
-		const url = `https://apis.map.qq.com/ws/geocoder/v1`;
-		const url2 = `https://apis.map.qq.com/ws/geocoder/v1/?address=${city}&key=${Key}`;
-		// #ifdef H5
-		jsonp(url, {
-			address: `${city}`,
-			key: Key,
-			output: 'jsonp'
-		}, 'ccc1').then(res => {
-			console.log('res1222222', res);
-			if (res.status === 0) {
-			const cityLocation = res.result.location;
-			console.log('cityLocation', cityLocation);
-			if (cityLocation) {
-				data.latitude = cityLocation.lat;
-				data.longitude = cityLocation.lng;
-				data.covers[0].latitude = cityLocation.lat;
-				data.covers[0].longitude = cityLocation.lng;
-				// 重新搜索附近的地点
-				getPositionSearchByKeyword(data.keyword || '公司',
-					`nearby(${cityLocation.lat},${cityLocation.lng},1000)`,
-					onSuccess, onError, {
-						page: 1,
-						size: 3,
-					});
-			}
-			} else {
-				console.error('失败:', res);
-		
-			}
-		}).catch(err => {
-			console.log('err', err);
-		}).finally(() => {
-		
-		})
-		
-		// #endif
-		// #ifdef APP
-		uni.request({
-			url: url2,
-			method: 'get',
-			timeout: 20000,
-		}).then(res => {
-			console.log('res', res);
-			if (res.data && res.data.result && res.data.result.location) {
-				const cityLocation = res.data.result.location;
-				console.log('cityLocation', cityLocation);
-				if (cityLocation) {
-					data.latitude = cityLocation.lat;
-					data.longitude = cityLocation.lng;
-					data.covers[0].latitude = cityLocation.lat;
-					data.covers[0].longitude = cityLocation.lng;
-					// 重新搜索附近的地点
-					getPositionSearchByKeyword(data.keyword || '公司',
-						`nearby(${cityLocation.lat},${cityLocation.lng},1000)`,
-						onSuccess, onError, {
-							page: 1,
-							size: 3,
-						});
-				}
-			}
-		}).catch(err => {
-			console.log('err')
-
-		}).finally(() => {
-
-		})
-		// #endif
-	}
-
-	function handleClick() {
-		if (data.keyword) {
-			getPositionSearchByKeyword(data.keyword, `nearby(${data.latitude},${data.longitude},1000)`, onSuccess,
-				onError, {
-					page: 1,
-					size: 3,
-				})
-		}
-	}
-
-	function onSuccess(res) {
-		console.log('数据', res);
-		result.value = res
-		// #ifdef H5
-		if (res && res.data && res.data.length > 0) {
-			// 获取第一个搜索结果的经纬度
-			const firstResult = res.data[0];
-			const newLatitude = firstResult.location.lat; // 纬度
-			const newLongitude = firstResult.location.lng; // 经度
-
-			// 更新地图的中心点
-			data.latitude = newLatitude;
-			data.longitude = newLongitude;
-
-			// 更新标记点
-			data.covers = [{
-				latitude: newLatitude,
-				longitude: newLongitude,
-				iconPath: myIcon, // 使用你的图标路径
-				width: 30,
-				height: 30
-			}];
-		}
-		// #endif
-		// #ifdef APP
-		if (res.data && res.data.data && res.data.data.length > 0) {
-			// 获取第一个搜索结果的经纬度
-			const firstResult = res.data.data[0];
-			const newLatitude = firstResult.location.lat; // 纬度
-			const newLongitude = firstResult.location.lng; // 经度
-
-			// 更新地图的中心点
-			data.latitude = newLatitude;
-			data.longitude = newLongitude;
-
-			// 更新标记点
-			data.covers = [{
-				latitude: newLatitude,
-				longitude: newLongitude,
-				iconPath: myIcon, // 使用你的图标路径
-				width: 30,
-				height: 30
-			}];
-		}
-		// #endif
-	}
-
-	function onError(err) {
-		console.log('错误', err)
-	}
-
-	function goUpPage(err) {
-		console.log('错误', err)
-		emits('close');
-
-	}
-
-	function xuanzeAdress(item) {
-		console.log('item', item);
-		emits('xuanzeAdress', item.address);
-		emits('currentWeizhi', item.location);
-
-	}
-
-	const data = reactive({
-		keyword: '', // 关键字
-		id: 0, // 使用 marker点击事件 需要填写id
-		title: 'map',
-		latitude: 0,
-		longitude: 0,
-		covers: [{
-			latitude: 0,
-			longitude: 0,
-			iconPath: myIcon,
-			width: 30,
-			height: 30
-		}]
-	})
-
-	function getCityName(latitude, longitude) {
-		const Key = config.mapKey
-		const url1 = `https://apis.map.qq.com/ws/geocoder/v1/?location=${latitude},${longitude}&key=${Key}`;
-		const url = `https://apis.map.qq.com/ws/geocoder/v1`;
-		//const url = `https://apis.map.qq.com/ws/geocoder/v1/`;
-		// #ifdef H5
-		jsonp(url, {
-			location: `${latitude},${longitude}`,
-			key: Key,
-			output: 'jsonp'
-		}, 'ccc').then(res => {
-			console.log('res11111', res);
-			if (res.status === 0) {
-				const city = res.result.address_component.city;
-				currentCity.value = city; // 更新当前城市
-				console.log('当前城市:', city);
-			} else {
-				console.error('逆地理编码失败:', res);
-
-			}
-		}).catch(err => {
-			console.log('err', err);
-		}).finally(() => {
-
-		})
-		// #endif
-		// #ifdef APP
-		uni.request({
-			url: url1,
-			success: (res) => {
-				if (res.data.status === 0) {
-					console.log('当前城市:', res);
-					const city = res.data.result.address_component.city;
-					currentCity.value = city; // 更新当前城市
-					console.log('当前城市:', city);
-				} else {
-					console.error('逆地理编码失败:', res.data.message);
-					uni.showToast({
-						title: '获取城市信息失败',
-						icon: 'none',
-					});
-				}
-			},
-			fail: (err) => {
-				console.error('请求失败:', err);
-				uni.showToast({
-					title: '请求失败',
-					icon: 'none',
-				});
-			}
-		});
-		// #endif
-	}
-	// 初始化
-	function initLocation() {
-		console.log('init')
-		uni.getLocation({
-			type: 'wgs84',
-			success: function(res) {
-				console.log('res', res)
-				data.longitude = res.longitude;
-				data.latitude = res.latitude;
-				data.covers[0].longitude = res.longitude;
-				data.covers[0].latitude = res.latitude;
-				console.log('当前位置的经度:' + res.longitude);
-				console.log('当前位置的纬度:' + res.latitude);
-				getCityName(res.latitude, res.longitude)
-				// 获取当前位置附近的数据
-				getPositionSearchByKeyword('公司', `nearby(${res.latitude},${res.longitude},1000)`, onSuccess,
-					onError, {
-						page: 1,
-						size: 3,
-					});
-			}
-		});
-	}
-
-	onLoad(() => {
-		console.log('初始化',config)
-		initLocation();
-	})
-</script>
-
-<style>
-
-</style>

+ 0 - 69
components/customMap/useMap.js

@@ -1,69 +0,0 @@
-// 文档地址 https://lbs.qq.com/service/webService/webServiceGuide/search/webServiceSearch
-// 注意当前请求仅打包后有效
-import request from '@/utils/request'
-import {
-	ref
-} from "vue"
-import {
-	jsonp
-} from "@/utils/common.js"
-import config from '@/config.js'
-// 关键词不全
-const httpUrl = "https://apis.map.qq.com/ws/place/v1/search"
-const Key = config.mapKey
-
-export function useCustomMap() {
-	// 关键字 范围 页码 数量 成功回调 失败回调
-	function getPositionSearchByKeyword(keyword, boundary, successFun, errorFun, options) {
-		let cpage = options.page || 1;
-		let csize = options.size || 20;
-		let cboundary = boundary; //'nearby(39.992870,116.310250,1000)'
-
-		uni.showLoading({
-			title: '加载中'
-		})
-		// #ifdef H5
-		jsonp(httpUrl, {
-			key: Key,
-			output: "jsonp",
-			keyword: keyword,
-			boundary: cboundary,
-			page_size: csize,
-			page_index: cpage,
-		}).then(res => {
-			successFun && successFun(res)
-		}).catch(err => {
-			errorFun && errorFun(err);
-		}).finally(() => {
-			uni.hideLoading();
-		})
-		// #endif
-		// #ifdef APP
-		uni.request({
-			url: httpUrl,
-			method: 'get',
-			data: {
-				key: Key,
-				output: "JSON",
-				keyword: keyword,
-				boundary: cboundary,
-				page_size: csize,
-				page_index: cpage,
-			},
-			timeout: 20000,
-		}).then(res => {
-			successFun && successFun(res)
-		}).catch(err => {
-			console.log('err')
-			errorFun && errorFun(err);
-		}).finally(() => {
-			uni.hideLoading();
-		})
-		// #endif
-	}
-
-	return {
-		getPositionSearchByKeyword
-	}
-
-}

+ 24 - 18
components/identification/identification.vue

@@ -4,20 +4,23 @@
 			mask-background-color="rgba(0, 0, 0, 0.4);">
 			<uni-popup-dialog mode="input" class="phone-ksxz-dialog" title="身份确认" :duration="2000" :before-close="true"
 				cancelText="修改" @close="handleClose" @confirm="handleConfirm">
-				<view @click="handleCloseOnly" class="ksxz-close-icon"></view>
-				<view class="ksxz-content-box">
-					<view class="ksxz-img-box">
-						<!-- #ifdef H5 -->
-							<img :src="data.icon" v-if="data.icon" alt="">
-							<icon class="phone-default-userImg" v-else></icon>
-						<!-- <image :src="data.icon" /> -->
-						<!-- #endif -->
+				<view class="phone-ksxz-body">
+					<view @click="handleCloseOnly" class="ksxz-close-icon"
+					:style="{ backgroundImage: 'url(' + data.iconsArr.closeIcon + ')' }"></view>
+					<view class="ksxz-content-box">
+						<view class="ksxz-img-box">
+							<!-- #ifdef H5 -->
+								<img :src="data.icon" v-if="data.icon" alt="">
+								<icon class="phone-default-userImg" v-else></icon>
+							<!-- <image :src="data.icon" /> -->
+							<!-- #endif -->
+						</view>
+						<view :class="{isEmpty: !data.realName}">姓名:{{data.realName}}</view>
+						<view :class="{isEmpty: !data.realName}">电话:{{data.userName}}</view>
+						<view>职业:{{data.zyName}}</view>
+						<view>等级:{{data.zyLevelName}}</view>
+						<view :class="{isEmpty: !data.realName}">证件号:{{data.idcard}}</view>
 					</view>
-					<view :class="{isEmpty: !data.realName}">姓名:{{data.realName}}</view>
-					<view :class="{isEmpty: !data.realName}">电话:{{data.userName}}</view>
-					<view>职业:{{data.zyName}}</view>
-					<view>等级:{{data.zyLevelName}}</view>
-					<view :class="{isEmpty: !data.realName}">证件号:{{data.idcard}}</view>
 				</view>
 			</uni-popup-dialog>
 		</uni-popup>
@@ -25,10 +28,8 @@
 </template>
 
 <script setup>
-	import {
-		ref,
-		reactive
-	} from "vue"
+	import {ref,reactive,onMounted} from "vue"
+	import cacheManager from '@/utils/cacheManager.js';
 	const popupRef = ref(null)
 	const data = reactive({
 		realName: '',
@@ -39,10 +40,15 @@
 		icon: '',
 		gender: '',
 		userId: '',
+		iconsArr:{
+			closeIcon: '',
+		}
 	})
 
 	const emits = defineEmits(['confirm', 'changeData'])
-
+	onMounted(() => {
+			data.iconsArr.closeIcon = cacheManager.get('projectImg').closeIcon;
+		});
 	function handleCloseOnly() {
 		popupRef.value.close()
 	}

+ 0 - 146
components/selectZyLevel/index.vue

@@ -1,146 +0,0 @@
-<template>
-	<contentDialogVue ref="commonPopup" title="选择职业">
-		<view class="phone-zydj-popup">
-			<view class="icon-title-navBar-box">
-				<view class="nav-bar-icon" @click="handleClose"></view>
-				<text class="nav-bar-title">职业等级</text>
-			</view>
-			<!-- 技能块展示 -->
-			<view class="phone-select-group">
-				<view v-for="item in data.list" :key="item.id" class="phone-select-item"
-					:class="{ selectActive: item.active }" @click="toggleSelect(item)">
-					{{ item.name }}
-				</view>
-			</view>
-			<view class="zydj-popup-btn-box">
-				<button type="default" class="phone-green-btn" @click="confirmBtn">保存</button>
-			</view>
-		</view>
-	</contentDialogVue>
-
-</template>
-
-<script setup>
-	import {
-		reactive,
-		ref
-	} from 'vue';
-	import {
-		getJiazhengZhiye,
-	} from "@/api/jiazheng.js"
-	import contentDialogVue from '@/components/dialog/contentDialog.vue';
-
-
-	const props = defineProps({
-		title: {
-			type: String,
-			default: ''
-		},
-		content: {
-			type: String,
-			require: true,
-			default: ''
-		},
-		dialogContentClass: {
-			type: String,
-			require: true,
-			default: 'content-center-class'
-		},
-		notBtn: {
-			type: String,
-			require: true,
-			default: '取消'
-		},
-		okBtn: {
-			type: String,
-			require: true,
-			default: '确认'
-		},
-		id: {
-			type: Number,
-		},
-		mode: {
-			type: String,
-			default: 'duoxuan' // danxuan / duoxuan
-		}
-	});
-
-	const commonPopup = ref(null);
-	const $emit = defineEmits(['confirm-btn'])
-
-	const data = reactive({
-		list: [],
-		// item: {
-		// 	zyId: null,
-		// 	zyName: null,
-		//  active: true
-		// }
-	})
-
-
-
-	// 打开弹窗
-	function handleShow(mdata) {
-		getZyList(mdata)
-
-	}
-	// 取消
-	function handleClose() {
-		commonPopup.value.handleClose();
-	}
-	// 确认
-	function confirmBtn() {
-		$emit('confirm-btn', data.list.filter(item => item.active).map(item => {
-      return {
-        name: item.name,
-        id: item.id,
-      }
-    }));
-		handleClose();
-	}
-
-	function getZyList(alreadySelect) {
-		getJiazhengZhiye({
-			id: props.id
-		}).then(res => {
-			data.list = res.data.map(item => {
-				if (alreadySelect) {
-					const da1 = alreadySelect.find(ite => ite.zyId == item.id);
-					if (da1) {
-						return {
-							id: item.id,
-							name: item.name,
-							active: true
-						}
-					}
-				}
-				return {
-					id: item.id,
-					name: item.name,
-					active: false
-				}
-			})
-			commonPopup.value.handleShow();
-		})
-	}
-
-	function toggleSelect(item) {
-		item.active = !item.active;
-		if (props.mode == 'danxuan') {
-      data.list.map(cite => {
-				if (cite.id != item.id) {
-					cite.active = false;
-				}
-			})
-		}
-	}
-
-	defineExpose({
-		handleShow,
-		handleClose
-	})
-</script>
-
-<style scoped>
-
-</style>

+ 0 - 13
pages.json

@@ -10,19 +10,6 @@
 			"style": {
 				"navigationStyle": "custom"
 			}
-		},
-		{
-			"path": "pages/demo/demo1",
-			"style": {
-				"navigationBarTitleText": "demo1",
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/demo/demo2",
-			"style": {
-				"navigationStyle": "custom"
-			}
 		}
 	],
 	"subPackages": [{

+ 4 - 9
pages/client/Chengji/lxScoreShijuan.vue

@@ -1,10 +1,7 @@
 <template>
 	<view class="phone-score-page">
 		<!-- 导航区域 -->
-		<view class="icon-title-bjcolor-navBar-box">
-			<view @click="handleBack" class="nav-bar-icon"></view>
-			<text class="nav-bar-title">{{data.lxName}}</text>
-		</view>
+		<customNavbarVue :title="data.lxName" :show-back-btn="true" @back="handleBack"></customNavbarVue>
 		<!-- 上方区域 -->
 		<topCard @openCard="handleOpenCard" :name="data.lxName" :zyLevelName="data.zyLevelName"
 			:userScore="data.userScore" :Score="data.ksScore"></topCard>
@@ -77,10 +74,8 @@
 		<!-- 答题卡 -->
 		<uni-popup ref="popupRef" background-color="#fff" :animation="false" :is-mask-click="false" :mask-click="false">
 			<view class="answer-card-popup">
-				<view class="icon-title-bjcolor-navBar-box">
-					<view @click="handlePopupBack" class="nav-bar-icon"> </view>
-					<text class="nav-bar-title">答题卡</text>
-				</view>
+				<customNavbarVue title="答题卡" :show-back-btn="true" @back="handlePopupBack"></customNavbarVue>
+				
 				<view class="card-content-box">
 					<view class="answer-card-content" v-for="(paragraph,paragraphIndex) in questionData"
 						:key="paragraphIndex">
@@ -107,7 +102,7 @@
 	import {
 		useQuestionTools
 	} from "@/components/questions/useQuestionTools.js";
-
+	import customNavbarVue from "@/components/custom-navbar/custom-navbar.vue";
 	import {
 		onLoad
 	} from "@dcloudio/uni-app";

+ 22 - 21
pages/client/Kaoshi/exam.vue

@@ -137,9 +137,11 @@
 		data.userKaozhengId = option.userKaozhengId;
 		data.from = option.from;
 		data.imgsArr.shitiNumIcon = cacheManager.get('projectImg').shiti_num_icon;
-		
-		initKaoshi();
-		
+
+    setTimeout(() => {
+      initKaoshi();
+    }, 800)
+
 		/* if (data.zhuapai && data.zhuapai != 0) {
 			// 考试前确认摄像头
 			nextTick(() => {
@@ -705,24 +707,23 @@
 			formatKaoshiData();
 			// 设置抓拍监听
 
-      nextTick(() => {
-        if (data.zhuapai && data.zhuapai > 0) {
-          zhuapaiRef.value.init({
-            zhuapai: zhuapai,
-            operId: operId
-          });
-        }
-        // 设置切屏
-        qiepingInit({
-          zhuapaiFlag: !!data.zhuapai,
-          toggleScreenFlag: toggleScreenFlag,
-          toggleScreenSecond: toggleScreenSecond,
-          ksId: data.ksId
-        }, {
-          zhuapai:qpZhuapai,
-          forceSubmit,
-          qiepingToast
-        })
+      if (data.zhuapai && data.zhuapai > 0) {
+        console.log('ccccc', zhuapaiRef.value)
+        zhuapaiRef.value.init({
+          zhuapai: zhuapai,
+          operId: operId
+        });
+      }
+      // 设置切屏
+      qiepingInit({
+        zhuapaiFlag: !!data.zhuapai,
+        toggleScreenFlag: toggleScreenFlag,
+        toggleScreenSecond: toggleScreenSecond,
+        ksId: data.ksId
+      }, {
+        zhuapai:qpZhuapai,
+        forceSubmit,
+        qiepingToast
       })
 
 			uni.setNavigationBarTitle({

+ 0 - 4
pages/client/Kecheng/study.vue

@@ -1,10 +1,6 @@
 <template>
 	<view class="kecheng-study-page">
 		<customNavbarVue title="课程" :show-back-btn="true" @back="goUpPage"></customNavbarVue>
-		<!-- <view class="icon-title-bjcolor-navBar-box">
-			<view @click="goUpPage" class="nav-bar-icon"></view>
-			<text class="nav-bar-title">{{name}}</text>
-		</view> -->
 		<!-- 播放器 -->
 		<!-- 	<videoPlayVue v-if="showVideo" ref="videoRef" class="phone-video-box" @play-end="onPlayEnd" @play-play="onPlay"
 			@play-pause="onPause" @play-timeupdate="onTimeupdate"></videoPlayVue> -->

+ 1 - 4
pages/client/Lianxi/exam.vue

@@ -59,10 +59,7 @@
 		<!-- 答题卡 -->
 		<uni-popup ref="popupRef" background-color="#fff" :animation="false" :is-mask-click="false" :mask-click="false">
 			<view class="answer-card-popup">
-				<view class="icon-title-bjcolor-navBar-box">
-					<view @click="handlePopupBack" class="nav-bar-icon"> </view>
-					<text class="nav-bar-title">答题卡</text>
-				</view>
+				<customNavbarVue title="答题卡" :show-back-btn="true" @back="handlePopupBack"></customNavbarVue>
 				<view class="card-content-box">
 					<view class="answer-card-content" v-for="(paragraph,paragraphIndex) in questionData"
 						:key="paragraphIndex">

+ 0 - 3
pages/client/ShouYe/shouye.vue

@@ -1,9 +1,6 @@
 <template>
 	<view class="client-shouye-page">
 		<customNavbarVue title="首页"></customNavbarVue>
-		<!-- <view class="icon-title-bjcolor-navBar-box">
-			<text class="nav-bar-title">{{data.realName}}</text>
-		</view> -->
 	
 		<template v-if="data.kaoshiList.length||data.lianxiList.length||data.kechengList.length">
 			<!-- 考试 -->

+ 5 - 10
pages/client/jiazheng/shareImage.vue

@@ -1,8 +1,6 @@
 <template>
 	<view class="phone-jianli-page">
-		<view class="icon-title-navBar-box">
-			<text class="nav-bar-title">家政人员信息</text>
-		</view>
+		<customNavbarVue title="家政人员信息"></customNavbarVue>
 		<view class="jianli-wrap-box">
 			<view class="jianli-head-box">
 				<view class="head-img-box">
@@ -74,12 +72,9 @@
 	</view>
 </template>
 <script>
-	import {
-		ref
-	} from "vue";
-	import {
-		commonShare
-	} from "@/api/jiazheng.js";
+	import {ref} from "vue";
+	import {commonShare} from "@/api/jiazheng.js";
+	import customNavbarVue from "@/components/custom-navbar/custom-navbar.vue";
 	export default {
 		data() {
 			return {
@@ -88,7 +83,7 @@
 			}
 		},
 		components: {
-
+			customNavbarVue
 		},
 		onLoad(options) {
 			this.pageInfo.uuid = options.uuid;

+ 1 - 1
pages/client/my/myInfo.vue

@@ -8,7 +8,7 @@
 			<uni-file-picker return-type="object" v-model="data.images" :del-icon="false" mode="grid" disable-preview :auto-upload="false"
 				@select="handleSelect" file-mediatype="image" class="phone-file-picker user-file-picker">
 			</uni-file-picker>
-			<icon class="user-jt-icon"></icon>
+			<icon class="user-jt-icon" :style="{ backgroundImage: 'url(' + data.jtIcon + ')' }"></icon>
 		</view>
 		<!-- 姓名 -->
 		<view class="form-label-input">

+ 0 - 47
pages/demo/demo1.vue

@@ -1,47 +0,0 @@
-<template>
-	<view class="demo1">
-		<!---------- 标题文字 ------------>
-		<!-- 箭头+标题文字 -->
-		<view class="icon-title-navBar-box">
-			<view @click="goUpPage" class="nav-bar-icon"></view>
-			<text class="nav-bar-title">箭头+标题文字</text>
-		</view>
-		
-		<!-- 箭头+标题文字 + 文字按钮-->
-		<view class="ezy-navBar-box">
-			<view class="nav-bar-icon"></view>
-			<text class="nav-bar-title">订单支付</text>
-			<view class="text-btn">取消订单</view>
-		</view>
-		<!--  仅一个箭头 -->
-		<!-- <view @click="goUpPage" class="ezy-nav-bar-icon"></view> -->
-		<view class="icon-title-navBar-box">
-			<text class="nav-bar-title">标题文字</text>
-		</view>
-		<!-- switch -->
-		<view>
-			<view class="uni-list-cell-db">照片</view>
-			<switch checked @change="switch1Change" />
-		</view>
-		<!---------- 搜索框 ------------>
-		<!-- 查询职业 -->
-		<view class="phone-search-box">
-			<input class="search-input" placeholder="请输入职业名称" v-model="data.zyName" />
-			<view class="search-icon" @click="handleSearch">
-				<uni-icons type="search" size="24" color="#fff"></uni-icons>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script setup>
-	import {ref,reactive} from "vue";
-	const data = reactive({
-		zyName: '', // 职业名称
-	})
-	function goUpPage(){}
-	function handleSearch(){}
-</script>
-
-<style>
-</style>

+ 0 - 21
pages/demo/demo2.vue

@@ -1,21 +0,0 @@
-<template>
-	<button @click="handleClis">激活</button>
-	<selectZyLevel ref="selectRef" @confirm-btn="onConfirm" :id="13"></selectZyLevel>
-</template>
-
-<script setup>
-import selectZyLevel from "@/components/selectZyLevel/index.vue"
-import {ref} from "vue"
-
-const selectRef = ref(null)
-function handleClis() {
-	selectRef.value.handleShow()
-}
-function onConfirm(list) {
-	console.log('list', list)
-}
-</script>
-
-<style>
-
-</style>

+ 0 - 1
static/images/common/close-icon.svg

@@ -1 +0,0 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1741152980307" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2627" xmlns:xlink="http://www.w3.org/1999/xlink" width="60" height="60"><path d="M576 512l277.333333 277.333333-64 64-277.333333-277.333333L234.666667 853.333333 170.666667 789.333333l277.333333-277.333333L170.666667 234.666667 234.666667 170.666667l277.333333 277.333333L789.333333 170.666667 853.333333 234.666667 576 512z" fill="#333333" p-id="2628" data-spm-anchor-id="a313x.search_index.0.i2.10e63a81LGTChs" class="selected"></path></svg>

BIN
static/images/common/defen-icon.png


BIN
static/images/common/markIcon.png


+ 0 - 1
static/images/common/nav-bar-jt-bottom-disabled.svg

@@ -1 +0,0 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1740467226332" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2034" width="60" height="60" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M512 704c8.288 0 15.776-3.232 21.456-8.4l0.064 0.08 352-320-0.08-0.08c6.448-5.856 10.56-14.208 10.56-23.6a32 32 0 0 0-32-32c-8.288 0-15.76 3.232-21.456 8.4l-0.08-0.08L512 628.752 181.536 328.32l-0.08 0.08A31.776 31.776 0 0 0 160 320a32 32 0 0 0-32 32c0 9.376 4.112 17.744 10.544 23.6l-0.08 0.08 352 320 0.08-0.08c5.68 5.168 13.168 8.4 21.456 8.4z" p-id="2035" data-spm-anchor-id="a313x.search_index.0.i1.23233a81kOTPLw" fill="#999" class="selected"></path></svg>

+ 0 - 1
static/images/common/nav-bar-jt-bottom-green.svg

@@ -1 +0,0 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1740467226332" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2034" width="60" height="60" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M512 704c8.288 0 15.776-3.232 21.456-8.4l0.064 0.08 352-320-0.08-0.08c6.448-5.856 10.56-14.208 10.56-23.6a32 32 0 0 0-32-32c-8.288 0-15.76 3.232-21.456 8.4l-0.08-0.08L512 628.752 181.536 328.32l-0.08 0.08A31.776 31.776 0 0 0 160 320a32 32 0 0 0-32 32c0 9.376 4.112 17.744 10.544 23.6l-0.08 0.08 352 320 0.08-0.08c5.68 5.168 13.168 8.4 21.456 8.4z" p-id="2035" data-spm-anchor-id="a313x.search_index.0.i1.23233a81kOTPLw" fill="#3fd2a1" class="selected"></path></svg>

+ 0 - 1
static/images/common/nav-bar-jt-bottom.svg

@@ -1 +0,0 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1740467226332" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2034" width="60" height="60" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M512 704c8.288 0 15.776-3.232 21.456-8.4l0.064 0.08 352-320-0.08-0.08c6.448-5.856 10.56-14.208 10.56-23.6a32 32 0 0 0-32-32c-8.288 0-15.76 3.232-21.456 8.4l-0.08-0.08L512 628.752 181.536 328.32l-0.08 0.08A31.776 31.776 0 0 0 160 320a32 32 0 0 0-32 32c0 9.376 4.112 17.744 10.544 23.6l-0.08 0.08 352 320 0.08-0.08c5.68 5.168 13.168 8.4 21.456 8.4z" p-id="2035" data-spm-anchor-id="a313x.search_index.0.i1.23233a81kOTPLw" fill="#676767" class="selected"></path></svg>

+ 0 - 1
static/images/common/nav-bar-jt.svg

@@ -1 +0,0 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1739178328843" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5033" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="48"><path d="M375.467 512l370.915-329.955c18.205-15.93 20.48-45.512 4.551-63.716-15.928-18.204-45.511-20.48-63.715-4.55l-409.6 364.088c-11.378 9.102-15.93 20.48-15.93 34.133s4.552 25.031 15.93 34.133l409.6 364.089c9.102 6.827 20.48 11.378 29.582 11.378 13.653 0 25.031-4.551 34.133-15.929 15.929-18.204 15.929-47.786-4.551-63.716L375.467 512z" p-id="5034" fill="#333333"></path></svg>

BIN
static/images/common/return-icon.png