Просмотр исходного кода

个人版报告页面和样式按照最新需求修改(canvas暂未生成最新版)

htc 12 часов назад
Родитель
Сommit
7361fdd88f
5 измененных файлов с 750 добавлено и 1142 удалено
  1. 541 0
      components/CusPhone/index.vue
  2. 2 2
      http/baseApi.js
  3. 1 1
      manifest.json
  4. 72 50
      pagesHome/pdf.vue
  5. 134 1089
      static/pdf.scss

+ 541 - 0
components/CusPhone/index.vue

@@ -0,0 +1,541 @@
+<template>
+	<view class="phone-input-container">
+		<!-- 手机号输入区域 -->
+		<view class="phone-input-wrap">
+			<!-- 区号选择 -->
+			<view class="code-selector" @tap="showCodePicker = true">
+				<text class="code-text">{{ selectedCode }}</text>
+				<u-icon name="arrow-down-fill" size="20" color="#636B77"></u-icon>
+			</view>
+		</view>
+
+		<!-- 区号选择弹窗 -->
+		<u-popup :show="showCodePicker" mode="bottom" :round="20">
+			<view class="code-picker-wrap">
+				<view class="title">
+					<text>请选择区号</text>
+					<image :src="imgBase+'remind_close.png'" @tap="showCodePicker = false"></image>
+				</view>
+				<!-- 搜索框 -->
+				<view class="search-wrap">
+					<input class="search-input" type="text" placeholder="搜索国家/地区/区号" v-model="searchKeyword" @input="filterCodeList" />
+				</view>
+
+				<!-- 区号列表 -->
+				<scroll-view class="code-list-scroll" scroll-y :style="{ height: '600rpx' }">
+					<view class="code-item" v-for="(item, index) in filteredCodeList" :key="index" @tap="selectCode(item)">
+						<text class="country-name">{{ item.name }}</text>
+						<text class="code-num">{{ item.code }}</text>
+					</view>
+					<!-- 无搜索结果提示 -->
+					<view v-if="filteredCodeList.length === 0" class="empty-tip">未找到相关国家/地区</view>
+				</scroll-view>
+			</view>
+		</u-popup>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'PhoneInput',
+	props: {
+		// 初始区号,默认+86
+		initCode: {
+			type: String,
+			default: '+86'
+		},
+		// 是否必填
+		required: {
+			type: Boolean,
+			default: true
+		}
+	},
+	data() {
+		return {
+			// 显示区号选择弹窗
+			showCodePicker: false,
+			// 当前选中的区号
+			selectedCode: '',
+			// 手机号
+			phoneNumber: '',
+			// 搜索关键词
+			searchKeyword: '',
+			// 完整的全球国家/地区区号列表(200+)
+			codeList: [
+				{ name: '中国', code: '+86' },
+				{ name: '中国香港', code: '+852' },
+				{ name: '中国澳门', code: '+853' },
+				{ name: '中国台湾', code: '+886' },
+				{ name: '阿富汗', code: '+93' },
+				{ name: '阿尔巴尼亚', code: '+355' },
+				{ name: '阿尔及利亚', code: '+213' },
+				{ name: '美属萨摩亚', code: '+1684' },
+				{ name: '安道尔', code: '+376' },
+				{ name: '安哥拉', code: '+244' },
+				{ name: '安圭拉', code: '+1264' },
+				{ name: '安提瓜和巴布达', code: '+1268' },
+				{ name: '阿根廷', code: '+54' },
+				{ name: '亚美尼亚', code: '+374' },
+				{ name: '阿鲁巴', code: '+297' },
+				{ name: '澳大利亚', code: '+61' },
+				{ name: '奥地利', code: '+43' },
+				{ name: '阿塞拜疆', code: '+994' },
+				{ name: '巴哈马', code: '+1242' },
+				{ name: '巴林', code: '+973' },
+				{ name: '孟加拉国', code: '+880' },
+				{ name: '巴巴多斯', code: '+1246' },
+				{ name: '白俄罗斯', code: '+375' },
+				{ name: '比利时', code: '+32' },
+				{ name: '伯利兹', code: '+501' },
+				{ name: '贝宁', code: '+229' },
+				{ name: '百慕大', code: '+1441' },
+				{ name: '不丹', code: '+975' },
+				{ name: '玻利维亚', code: '+591' },
+				{ name: '波黑', code: '+387' },
+				{ name: '博茨瓦纳', code: '+267' },
+				{ name: '巴西', code: '+55' },
+				{ name: '英属印度洋领地', code: '+246' },
+				{ name: '文莱', code: '+673' },
+				{ name: '波斯尼亚和黑塞哥维那', code: '+387' },
+				{ name: '保加利亚', code: '+359' },
+				{ name: '布基纳法索', code: '+226' },
+				{ name: '布隆迪', code: '+257' },
+				{ name: '佛得角', code: '+238' },
+				{ name: '柬埔寨', code: '+855' },
+				{ name: '喀麦隆', code: '+237' },
+				{ name: '加拿大', code: '+1' },
+				{ name: '佛得角', code: '+238' },
+				{ name: '开曼群岛', code: '+1345' },
+				{ name: '中非', code: '+236' },
+				{ name: '乍得', code: '+235' },
+				{ name: '智利', code: '+56' },
+				{ name: '哥伦比亚', code: '+57' },
+				{ name: '科摩罗', code: '+269' },
+				{ name: '刚果(布)', code: '+242' },
+				{ name: '刚果(金)', code: '+243' },
+				{ name: '库克群岛', code: '+682' },
+				{ name: '哥斯达黎加', code: '+506' },
+				{ name: '科特迪瓦', code: '+225' },
+				{ name: '克罗地亚', code: '+385' },
+				{ name: '古巴', code: '+53' },
+				{ name: '塞浦路斯', code: '+357' },
+				{ name: '捷克', code: '+420' },
+				{ name: '丹麦', code: '+45' },
+				{ name: '吉布提', code: '+253' },
+				{ name: '多米尼克', code: '+1767' },
+				{ name: '多米尼加', code: '+1809' },
+				{ name: '东帝汶', code: '+670' },
+				{ name: '厄瓜多尔', code: '+593' },
+				{ name: '埃及', code: '+20' },
+				{ name: '萨尔瓦多', code: '+503' },
+				{ name: '赤道几内亚', code: '+240' },
+				{ name: '厄立特里亚', code: '+291' },
+				{ name: '爱沙尼亚', code: '+372' },
+				{ name: '埃塞俄比亚', code: '+251' },
+				{ name: '福克兰群岛', code: '+500' },
+				{ name: '法罗群岛', code: '+298' },
+				{ name: '斐济', code: '+679' },
+				{ name: '芬兰', code: '+358' },
+				{ name: '法国', code: '+33' },
+				{ name: '法属圭亚那', code: '+594' },
+				{ name: '法属波利尼西亚', code: '+689' },
+				{ name: '加蓬', code: '+241' },
+				{ name: '冈比亚', code: '+220' },
+				{ name: '格鲁吉亚', code: '+995' },
+				{ name: '德国', code: '+49' },
+				{ name: '加纳', code: '+233' },
+				{ name: '直布罗陀', code: '+350' },
+				{ name: '希腊', code: '+30' },
+				{ name: '格陵兰', code: '+299' },
+				{ name: '格林纳达', code: '+1473' },
+				{ name: '瓜德罗普', code: '+590' },
+				{ name: '关岛', code: '+1671' },
+				{ name: '危地马拉', code: '+502' },
+				{ name: '几内亚', code: '+224' },
+				{ name: '几内亚比绍', code: '+245' },
+				{ name: '圭亚那', code: '+592' },
+				{ name: '海地', code: '+509' },
+				{ name: '洪都拉斯', code: '+504' },
+				{ name: '匈牙利', code: '+36' },
+				{ name: '冰岛', code: '+354' },
+				{ name: '印度', code: '+91' },
+				{ name: '印度尼西亚', code: '+62' },
+				{ name: '伊朗', code: '+98' },
+				{ name: '伊拉克', code: '+964' },
+				{ name: '爱尔兰', code: '+353' },
+				{ name: '以色列', code: '+972' },
+				{ name: '意大利', code: '+39' },
+				{ name: '牙买加', code: '+1876' },
+				{ name: '日本', code: '+81' },
+				{ name: '约旦', code: '+962' },
+				{ name: '哈萨克斯坦', code: '+7' },
+				{ name: '肯尼亚', code: '+254' },
+				{ name: '基里巴斯', code: '+686' },
+				{ name: '朝鲜', code: '+850' },
+				{ name: '韩国', code: '+82' },
+				{ name: '科威特', code: '+965' },
+				{ name: '吉尔吉斯斯坦', code: '+996' },
+				{ name: '老挝', code: '+856' },
+				{ name: '拉脱维亚', code: '+371' },
+				{ name: '黎巴嫩', code: '+961' },
+				{ name: '莱索托', code: '+266' },
+				{ name: '利比里亚', code: '+231' },
+				{ name: '利比亚', code: '+218' },
+				{ name: '列支敦士登', code: '+423' },
+				{ name: '立陶宛', code: '+370' },
+				{ name: '卢森堡', code: '+352' },
+				{ name: '马达加斯加', code: '+261' },
+				{ name: '马拉维', code: '+265' },
+				{ name: '马来西亚', code: '+60' },
+				{ name: '马尔代夫', code: '+960' },
+				{ name: '马里', code: '+223' },
+				{ name: '马耳他', code: '+356' },
+				{ name: '马绍尔群岛', code: '+692' },
+				{ name: '马提尼克', code: '+596' },
+				{ name: '毛里塔尼亚', code: '+222' },
+				{ name: '毛里求斯', code: '+230' },
+				{ name: '马约特', code: '+262' },
+				{ name: '墨西哥', code: '+52' },
+				{ name: '密克罗尼西亚', code: '+691' },
+				{ name: '摩尔多瓦', code: '+373' },
+				{ name: '摩纳哥', code: '+377' },
+				{ name: '蒙古', code: '+976' },
+				{ name: '黑山', code: '+382' },
+				{ name: '蒙特塞拉特', code: '+1664' },
+				{ name: '摩洛哥', code: '+212' },
+				{ name: '莫桑比克', code: '+258' },
+				{ name: '缅甸', code: '+95' },
+				{ name: '纳米比亚', code: '+264' },
+				{ name: '瑙鲁', code: '+674' },
+				{ name: '尼泊尔', code: '+977' },
+				{ name: '荷兰', code: '+31' },
+				{ name: '荷属安的列斯', code: '+599' },
+				{ name: '新喀里多尼亚', code: '+687' },
+				{ name: '新西兰', code: '+64' },
+				{ name: '尼加拉瓜', code: '+505' },
+				{ name: '尼日尔', code: '+227' },
+				{ name: '尼日利亚', code: '+234' },
+				{ name: '纽埃', code: '+683' },
+				{ name: '诺福克岛', code: '+672' },
+				{ name: '北马里亚纳群岛', code: '+1670' },
+				{ name: '挪威', code: '+47' },
+				{ name: '阿曼', code: '+968' },
+				{ name: '巴基斯坦', code: '+92' },
+				{ name: '帕劳', code: '+680' },
+				{ name: '巴勒斯坦', code: '+970' },
+				{ name: '巴拿马', code: '+507' },
+				{ name: '巴布亚新几内亚', code: '+675' },
+				{ name: '巴拉圭', code: '+595' },
+				{ name: '秘鲁', code: '+51' },
+				{ name: '菲律宾', code: '+63' },
+				{ name: '波兰', code: '+48' },
+				{ name: '葡萄牙', code: '+351' },
+				{ name: '波多黎各', code: '+1787' },
+				{ name: '卡塔尔', code: '+974' },
+				{ name: '罗马尼亚', code: '+40' },
+				{ name: '俄罗斯', code: '+7' },
+				{ name: '卢旺达', code: '+250' },
+				{ name: '留尼汪', code: '+262' },
+				{ name: '圣赫勒拿', code: '+290' },
+				{ name: '圣基茨和尼维斯', code: '+1869' },
+				{ name: '圣卢西亚', code: '+1758' },
+				{ name: '圣皮埃尔和密克隆', code: '+508' },
+				{ name: '圣文森特和格林纳丁斯', code: '+1784' },
+				{ name: '萨摩亚', code: '+685' },
+				{ name: '圣马力诺', code: '+378' },
+				{ name: '圣多美和普林西比', code: '+239' },
+				{ name: '沙特阿拉伯', code: '+966' },
+				{ name: '塞内加尔', code: '+221' },
+				{ name: '塞尔维亚', code: '+381' },
+				{ name: '塞舌尔', code: '+248' },
+				{ name: '塞拉利昂', code: '+232' },
+				{ name: '新加坡', code: '+65' },
+				{ name: '斯洛伐克', code: '+421' },
+				{ name: '斯洛文尼亚', code: '+386' },
+				{ name: '所罗门群岛', code: '+677' },
+				{ name: '索马里', code: '+252' },
+				{ name: '南非', code: '+27' },
+				{ name: '南苏丹', code: '+211' },
+				{ name: '西班牙', code: '+34' },
+				{ name: '斯里兰卡', code: '+94' },
+				{ name: '苏丹', code: '+249' },
+				{ name: '苏里南', code: '+597' },
+				{ name: '斯威士兰', code: '+268' },
+				{ name: '瑞典', code: '+46' },
+				{ name: '瑞士', code: '+41' },
+				{ name: '叙利亚', code: '+963' },
+				{ name: '塔吉克斯坦', code: '+992' },
+				{ name: '坦桑尼亚', code: '+255' },
+				{ name: '泰国', code: '+66' },
+				{ name: '多哥', code: '+228' },
+				{ name: '汤加', code: '+676' },
+				{ name: '特立尼达和多巴哥', code: '+1868' },
+				{ name: '突尼斯', code: '+216' },
+				{ name: '土耳其', code: '+90' },
+				{ name: '土库曼斯坦', code: '+993' },
+				{ name: '特克斯和凯科斯群岛', code: '+1649' },
+				{ name: '图瓦卢', code: '+688' },
+				{ name: '乌干达', code: '+256' },
+				{ name: '乌克兰', code: '+380' },
+				{ name: '阿联酋', code: '+971' },
+				{ name: '英国', code: '+44' },
+				{ name: '美国', code: '+1' },
+				{ name: '乌拉圭', code: '+598' },
+				{ name: '乌兹别克斯坦', code: '+998' },
+				{ name: '瓦努阿图', code: '+678' },
+				{ name: '梵蒂冈', code: '+379' },
+				{ name: '委内瑞拉', code: '+58' },
+				{ name: '越南', code: '+84' },
+				{ name: '英属维尔京群岛', code: '+1284' },
+				{ name: '美属维尔京群岛', code: '+1340' },
+				{ name: '瓦利斯和富图纳', code: '+681' },
+				{ name: '西撒哈拉', code: '+212' },
+				{ name: '也门', code: '+967' },
+				{ name: '赞比亚', code: '+260' },
+				{ name: '津巴布韦', code: '+263' }
+			],
+			// 筛选后的区号列表
+			filteredCodeList: []
+		};
+	},
+	computed: {
+		// 根据区号获取手机号最大长度(扩展更多常用国家)
+		getPhoneMaxlength() {
+			switch (this.selectedCode) {
+				case '+86':
+					return 11; // 中国大陆
+				case '+852':
+				case '+853':
+					return 8; // 港澳
+				case '+886':
+					return 10; // 台湾
+				case '+1':
+					return 10; // 美国/加拿大
+				case '+44':
+					return 11; // 英国
+				case '+81':
+					return 11; // 日本
+				case '+82':
+					return 11; // 韩国
+				case '+65':
+					return 8; // 新加坡
+				case '+60':
+					return 10; // 马来西亚
+				case '+91':
+					return 10; // 印度
+				case '+61':
+					return 9; // 澳大利亚
+				case '+33':
+					return 10; // 法国
+				case '+49':
+					return 11; // 德国
+				case '+34':
+					return 9; // 西班牙
+				case '+39':
+					return 10; // 意大利
+				default:
+					return 20; // 其他国家默认
+			}
+		}
+	},
+	watch: {
+		// 监听初始区号变化
+		initCode: {
+			immediate: true,
+			handler(val) {
+				this.selectedCode = val;
+				this.filteredCodeList = [...this.codeList];
+			}
+		}
+	},
+	methods: {
+		// 优化筛选逻辑:支持拼音/汉字/区号模糊匹配
+		filterCodeList() {
+			if (!this.searchKeyword) {
+				this.filteredCodeList = [...this.codeList];
+				return;
+			}
+			const keyword = this.searchKeyword.trim().toLowerCase();
+			// 模糊搜索名称(中文)或区号
+			this.filteredCodeList = this.codeList.filter((item) => {
+				return item.name.toLowerCase().includes(keyword) || item.code.toLowerCase().includes(keyword);
+			});
+		},
+		// 选择区号
+		selectCode(item) {
+			this.selectedCode = item.code;
+			this.showCodePicker = false;
+			this.$emit('code-change', item.code);
+			this.validatePhone();
+		},
+		// 手机号输入处理
+		handlePhoneInput() {
+			this.$emit('phone-change', {
+				code: this.selectedCode,
+				phone: this.phoneNumber
+			});
+			this.validatePhone();
+		},
+		// 手机号格式校验(扩展常用国家)
+		validatePhone() {
+			let isValid = true;
+			let message = '';
+
+			// 空值校验
+			if (this.required && !this.phoneNumber) {
+				isValid = false;
+				message = '请输入手机号';
+			} else if (this.phoneNumber) {
+				// 扩展更多国家的校验规则
+				const phone = this.phoneNumber;
+				switch (this.selectedCode) {
+					case '+86': // 中国大陆
+						isValid = /^1[3-9]\d{9}$/.test(phone);
+						message = isValid ? '' : '请输入正确的中国大陆手机号';
+						break;
+					case '+852':
+					case '+853': // 港澳
+						isValid = /^\d{8}$/.test(phone);
+						message = isValid ? '' : `请输入正确的${this.selectedCode === '+852' ? '香港' : '澳门'}手机号`;
+						break;
+					case '+886': // 台湾
+						isValid = /^\d{10}$/.test(phone);
+						message = isValid ? '' : '请输入正确的台湾手机号';
+						break;
+					case '+1': // 美国/加拿大
+						isValid = /^\d{10}$/.test(phone);
+						message = isValid ? '' : '请输入正确的美国/加拿大手机号';
+						break;
+					case '+65': // 新加坡
+						isValid = /^\d{8}$/.test(phone);
+						message = isValid ? '' : '请输入正确的新加坡手机号';
+						break;
+					// 其他国家仅校验非空,可根据需求扩展
+					default:
+						isValid = phone.length > 0;
+						message = isValid ? '' : '请输入正确的手机号';
+				}
+			}
+
+			this.$emit('validate', {
+				isValid,
+				message,
+				fullPhone: `${this.selectedCode}${this.phoneNumber}`
+			});
+
+			return isValid;
+		},
+		// 对外暴露的获取完整手机号方法
+		getFullPhone() {
+			const isValid = this.validatePhone();
+			return {
+				isValid,
+				fullPhone: isValid ? `${this.selectedCode}${this.phoneNumber}` : ''
+			};
+		}
+	}
+};
+</script>
+
+<style scoped lang="scss">
+.phone-input-container {
+	width: 100%;
+}
+
+.phone-input-wrap {
+	display: flex;
+}
+
+.code-selector {
+	display: flex;
+	align-items: center;
+	margin-right: 20rpx;
+	min-width: 80rpx;
+}
+
+.code-text {
+	font-size: 30rpx;
+	color: #002846;
+	margin-right: 8rpx;
+	margin-left: 50rpx;
+	line-height: 48rpx;
+}
+
+.phone-input {
+	flex: 1;
+	font-size: 32rpx;
+	color: #333;
+	height: 60rpx;
+}
+
+.code-picker-wrap {
+	background: #fff;
+	padding: 30rpx 20rpx 40rpx;
+	border-radius: 20rpx 20rpx 0 0;
+
+	.title {
+		position: relative;
+		text-align: center;
+
+		text {
+			font-size: 36rpx;
+			font-family: PingFang-SC-Bold, PingFang-SC;
+			font-weight: bold;
+			color: #333333;
+		}
+
+		image {
+			width: 46rpx;
+			height: 46rpx;
+			position: absolute;
+			right: 10rpx;
+			top: 50%;
+			margin-top: -23rpx;
+		}
+	}
+}
+
+.search-wrap {
+	padding: 20rpx;
+	border-bottom: 1px solid #f5f5f5;
+}
+
+.search-input {
+	width: 100%;
+	height: 72rpx;
+	padding: 0 20rpx;
+	border: 1px solid #e5e5e5;
+	border-radius: 8rpx;
+	box-sizing: border-box;
+	font-size: 30rpx;
+	margin-top: 20rpx;
+}
+
+.code-list-scroll {
+	width: 100%;
+}
+
+.code-item {
+	display: flex;
+	justify-content: space-between;
+	align-items: center;
+	padding: 24rpx 20rpx;
+	border-bottom: 1px solid #f5f5f5;
+	font-size: 30rpx;
+}
+
+.country-name {
+	color: #333;
+}
+
+.code-num {
+	color: #666;
+}
+
+.empty-tip {
+	text-align: center;
+	padding: 40rpx 0;
+	font-size: 28rpx;
+	color: #999;
+}
+</style>

+ 2 - 2
http/baseApi.js

@@ -1,5 +1,5 @@
-// const BaseApi = 'https://transcend.ringzle.com/chuangheng-app/app' //线上
-const BaseApi = 'https://wxapp.transcend-intl.cn/chuangheng-app/app' //生产
+const BaseApi = 'https://transcend.ringzle.com/chuangheng-app/app' //线上
+// const BaseApi = 'https://wxapp.transcend-intl.cn/chuangheng-app/app' //生产
 // const BaseApi = 'http://192.168.2.19:9023/chuangheng-app/app' //李勇
 // const BaseApi = 'http://192.168.2.16:9023/chuangheng-app/app' //严总
 

+ 1 - 1
manifest.json

@@ -102,7 +102,7 @@
     "quickapp" : {},
     /* 小程序特有相关 */
     "mp-weixin" : {
-        "appid" : "wxb0ecfcf0c3e50402",
+        "appid" : "wxe6afb089695f90e7",
         "setting" : {
             "urlCheck" : false,
             "es6" : false,

+ 72 - 50
pagesHome/pdf.vue

@@ -19,15 +19,21 @@
 			</view>
 			<!-- 介绍 -->
 			<view class="cd_box" style="border: none;">
-				<view class="v2-top adfacjb" :style="{'background-image':'url(https://gitee.com/hw_0302/chuang-heng-wechat-images/raw/master/versionTwo/intro_title_bg.png)'}">
-					<view class="vt-left" style="color: #FFFFFF;">介绍<span>PERILL模型简介</span></view>
+				<view class="v2-top adfacjb" :style="{'background-image':'url(https://gitee.com/hw_0302/chuang-heng-wechat-images/raw/master/versionTwo/intro_title_bg.png)','padding':'0 8px 0 22px'}">
+					<view class="vt-left" style="color: #FFFFFF;">PERILL模型介绍</view>
 					<view class="vt-right">团队发展动态评估报告(个人版)</view>
 				</view>
 				<view class="v2-box">
-					<img class="vb-img1" :src="'https://gitee.com/hw_0302/chuang-heng-wechat-images/raw/master/versionTwo/'+'intro'+'_box_img1.png'">
-					<view class="v2-p">PERILL团队发展动态评估源于团队教练辅导领域的先驱、管理思维与团队绩效领域的权威、全球顶尖团队教练David Clutterbuck教授及其团队通过深入研究,提炼出影响团队绩效的140多个基于实证的因素,整合而成的团队评估和提升工具-PERILL模型。</view>
-					<view class="v2-p" style="margin-top: 8px;">创衡国际基于10多年来在全球与200多家具有前瞻性的国际公司以及国内具有行业代表性公司的合作经验,结合CCMI的PERILL评估工具,在中国推出的团队发展动态评估系统,旨在帮助团队更全面、更有效地从六个维度评估团队的发展现状,为支持团队成为高价值创造团队提供全景式的客观评估。</view>
-					<view class="v2-p" style="margin-top: 8px;">PERILL团队发展动态评估(个人版)的主体内容由<span>{{ reportData.teamInfo.questionCount||0 }}</span>个关于团队的描述组成。</view>
+					<img class="vb-img1" :src="'https://gitee.com/hw_0302/chuang-heng-wechat-images/raw/master/versionTwo/intro_box_img1.png'">
+					<view class="v2-p">
+						PERILL团队发展动态评估源于团队教练辅导领域的先驱、管理思维与团队绩效领域的权威、全球顶尖团队教练David Clutterbuck教授及其团队通过深入研究,提炼出影响团队绩效的140多个基于实证的因素,整合而成的团队评估和提升工具-PERILL模型。
+					</view>
+					<view class="v2-p" style="margin-top: 8px;">
+						创衡国际基于10多年来在全球与200多家具有前瞻性的国际公司以及国内具有行业代表性公司的合作经验,结合CCMI的PERILL评估工具,在中国推出的团队发展动态评估系统,旨在帮助团队更全面、更有效地从六个维度评估团队的发展现状,为支持团队成为高价值创造团队提供全景式的客观评估。
+					</view>
+					<view class="v2-p" style="margin-top: 8px;">
+						PERILL团队发展动态评估(个人版)的主体内容由<span>{{ reportData.teamInfo.questionCount||0 }}</span>个关于团队的描述组成。
+					</view>
 				</view>
 				<view class="v2-six">
 					<view class="vsix-title">PERILL六大纬度</view>
@@ -53,9 +59,9 @@
 					<view class="vt-right">团队发展动态评估报告(个人版)</view>
 				</view>
 				<view class="v2-box">
-					<img class="vb-img1" :src="'https://gitee.com/hw_0302/chuang-heng-wechat-images/raw/master/versionTwo/'+'intro'+'_box_img1.png'">
+					<img class="vb-img1" :src="'https://gitee.com/hw_0302/chuang-heng-wechat-images/raw/master/versionTwo/intro_box_img1.png'">
 					<view class="v2-p2">报告的核心是PERILL评估分析下从评估发起者个人维度来看其所在整体团队当前状态下的表现。这包括团队在PERILL模型每个关键要素上的综合得分,通过结合得分和置信指数,我们能够展示出高功能和低功能领域。</view>
-					<view class="v2-p2" style="margin-top: 16px;">下面的条形图上的位置标记显示了团队在各个维度上的影响力评分。</view>
+					<view class="v2-p2" style="margin-top: 6px;">下面的条形图上的位置标记显示了团队在各个维度上的影响力评分。</view>
 					<view style="width:100%;height:200px;" class="pdfEchart">
 						<l-echart ref="ztzdfxRef" :canvas2d="true" @finished="initZtzdfxChart"></l-echart>
 					</view>
@@ -63,31 +69,44 @@
 					<view class="v2b-tip-memo">
 						a.“认同度分”,指标逻辑为评估发起者个人对当前主题所对应各问卷题目认同度评分的均值,用来表征其对这一主题问卷所陈述内容与团队情况的相符合程度的平均认知,最高分:5分,最低分:0分;<br>
 						b.“重要分”,指标逻辑为根据评估发起者个人对当前主题所对应各问卷题目重要性评分的均值,用来表征其对这一主题问卷所陈述内容对于团队重要性的平均认知,最高分:5分,最低分:0分;<br>
-						c.“影响力分”,指标逻辑为评估发起者个人对当前主题所对应各问卷题目的认同度评分与重要性评分乘积的均值,用来表征其对这一主题问卷所陈述内容对于团队的影响力水平,最高分:25分,最低分:0分;					
+						c.“影响力分”,指标逻辑为评估发起者个人对当前主题所对应各问卷题目的认同度评分与重要性评分乘积的均值,用来表征其对这一主题问卷所陈述内容对于团队的影响力水平,最高分:25分,最低分:0分;					 
 					</view>
 					<view class="v2b-title">评估结果</view>
 					<view class="v2b-p" v-html="(reportData.totalDiagnosticOutput||'').replaceAll('\n\n','<br>')"></view>
-					<view class="v2b-title">评估建议</view>
+				</view>
+			</view>
+			<!-- 总体评估分析 评估建议-->
+			<view class="cd_box adffc" style="border: none;">
+				<view class="v2-top adfacjb" :style="{'background-image':'url(https://gitee.com/hw_0302/chuang-heng-wechat-images/raw/master/versionTwo/'+'intro'+'_top_title_bg2.png)'}">
+					<view class="vt-left">总体评估分析</view>
+					<view class="vt-right">团队发展动态评估报告(个人版)</view>
+				</view>
+				<view class="v2-box">
+					<img class="vb-img1" :src="'https://gitee.com/hw_0302/chuang-heng-wechat-images/raw/master/versionTwo/intro_box_img1.png'">
+					<view class="v2b-title" style="margin-top: 0;">评估建议</view>
 					<view class="v2b-p" v-html="(reportData.totalDiagnosisSuggest||'').replaceAll('\n\n','<br>')"></view>
 				</view>
 			</view>
-			 <!-- 多维度 -->
+			<!-- 多维度 -->
 			<canvas type="2d" canvas-id="score-canvas" id="score-canvas" class="offscreen-canvas"></canvas>
 			<template v-if="reportData&&reportData.dimensionAnalysis&&reportData.dimensionAnalysis.length">
 				<view class="cd_box adffc" style="border: none;" v-for="(n,i) in [[0,2],[2,4],[4,6]]" :key="i">
-					<view class="v2-top" :style="{'background-image':'url(https://gitee.com/hw_0302/chuang-heng-wechat-images/raw/master/versionTwo/person_title_bg.png)'}"></view>
+					<view class="v2-top adfacjb" :style="{'background-image':'url(https://gitee.com/hw_0302/chuang-heng-wechat-images/raw/master/versionTwo/intro_title_bg.png)','padding':'0 8px 0 22px'}">
+						<view class="vt-left" style="color: #FFFFFF;">PERILL六大纬度</view>
+						<view class="vt-right">团队发展动态评估报告(个人版)</view>
+					</view>
 					<view v-for="(item,index) in reportData.dimensionAnalysis.slice(n[0],n[1])" :key="index">
 						<view class="v2-title2">{{ item.title||'' }}</view>
 						<view class="v2-box" :style="{'border':'none','padding':0}">
 							<view class="v2-p2">{{ item.desc }}</view>
-							<view class="vb-table adf" :style="{'border':'1px solid #E6EAED','margin-top':'12px'}">
+							<view class="vb-table adf" :style="{'border':'1px solid '+item.bordercolor,'margin-top':'12px'}">
 								<view class="vbt2-left">
 									<view class="vbt2l-th adf" :style="{'background':item.thbgcolor,'color':item.thtextcolor}">
 										<view class="vbt2l-th-title adfac">主题</view>
 										<view class="vbt2l-th-score adfacjc">影响力分</view>
 									</view>
-									<view class="vbt2l-pre" v-for="(ss,si) in item.scoreSpreads" :key="si">
-										<view class="vbt2l-pre-l">
+									<view class="vbt2l-pre" v-for="(ss,si) in item.scoreSpreads" :key="si" :style="{'border-bottom':'1px solid '+item.bordercolor}">
+										<view class="vbt2l-pre-l adffc">
 											<view class="vbt2l-pre-l-title" :style="{'color':item.titlecolor}">{{ ss.theme||'' }}</view>
 											<view class="vbt2l-pre-l-tip">{{ ss.question||'' }}</view>
 										</view>
@@ -100,22 +119,22 @@
 										<view class="vbt2r-pre adfacjc">重要性分</view>
 									</view>
 									<view class="vbt2r-tb adf">
-										<view class="vbt2r-tb-lines adf">
-											<view class="vbt2r-tb-lines-pre" v-for="item in 12" :key="item"></view>
-										</view>
 										<view class="vbt2r-tb-l adffc">
-											<view class="vbt2r-tb-l-pre red adfac" v-for="(ss,si) in item.scoreSpreads" :key="si">
-												<view class="vbt2r-tb-l-pre-zzt red" :style="{'width':(ss.memeber.avgAgreement/6*100)+'%'}"></view>
+											<view class="vbt2r-tb-l-pre red adfac" v-for="(ss,si) in item.scoreSpreads" :key="si" :style="{'border-bottom':'1px solid '+item.bordercolor}">
+												<view class="vbt2r-tb-l-pre-bg"></view>
+												<view class="vbt2r-tb-l-pre-zzt red" :style="{'width':(ss.memeber.avgAgreement/6*100)+'%'}">
+													<view class="vbt2r-tb-l-pre-zzt-numl">{{ ss.memeber.avgAgreement||0 }}</view>
+												</view>
 											</view>
 										</view>
 										<view class="vbt2r-tb-l">
-											<view class="vbt2r-tb-l-pre green adfac" v-for="(ss,si) in item.scoreSpreads" :key="si">
-												<view class="vbt2r-tb-l-pre-zzt green" :style="{'width':(ss.memeber.avgVital/6*100)+'%'}"></view>
+											<view class="vbt2r-tb-l-pre green adfac" v-for="(ss,si) in item.scoreSpreads" :key="si" :style="{'border-bottom':'1px solid '+item.bordercolor}">
+												<view class="vbt2r-tb-l-pre-bg r"></view>
+												<view class="vbt2r-tb-l-pre-zzt green" :style="{'width':(ss.memeber.avgVital/6*100)+'%'}">
+													<view class="vbt2r-tb-l-pre-zzt-numr">{{ ss.memeber.avgVital||0 }}</view>
+												</view>
 											</view>
 										</view>
-										<view class="vbt2r-num adf">
-											<view class="vbt2r-num-pre" v-for="(num,ni) in [5,4,3,2,1,0,1,2,3,4,5]" :key="ni">{{ num }}</view>
-										</view>
 									</view>
 								</view>
 							</view>
@@ -125,7 +144,10 @@
 			</template>
 			<!-- 封底页 -->
 			<view class="cd_box fdy" style="border: none;">
-				<view class="v2-top adfacjb" :style="{'background-image':'url(https://gitee.com/hw_0302/chuang-heng-wechat-images/raw/master/versionTwo/fdy_title_bg.png)'}"></view>
+				<view class="v2-top adfacjb" :style="{'background-image':'url(https://gitee.com/hw_0302/chuang-heng-wechat-images/raw/master/versionTwo/fdy_title_bg.png)'}">
+					<view class="vt-left" style="color: #FFFFFF;">结言</view>
+					<view class="vt-right">团队发展动态评估报告(个人版)</view>
+				</view>
 				<view class="fdy-title">致关注团队发展的您:从评估到行动,开启团队进化跃迁之旅。</view>
 				<view class="fdy-p">当您阅读至此,首先恭喜您完成了一次专业的团队评估!这不仅是您对所在团队的一次深度观察,也为团队发展开启了一个充满可能性的新起点。</view>
 				<view class="fdy-p">作为团队教练,我们希望与您分享这次评估的深层价值,并为您描绘从个人视角走向团队共识的可能路径。</view>
@@ -231,30 +253,30 @@
 			this.$api.get(`/core/report/previewReport/${this.reportId}`).then(({data:res})=>{
 				if(res.code!==0) return this.$showToast(res.msg)
 				this.reportData = res.data;
-				const tempDimensionAnalysis = [
-					{
-						title:'P-宗旨与动机',thbgcolor:'#761E6A',thtextcolor:'#FFFFFF',titlecolor:'#761E6A',dimensionCode:"purpose",
-						desc:`「宗旨与动机」维度,我们旨在探究团队是否有清晰的存在理由和明确的方向,能够激发团队成员的动力并吸引他们的想象力,以及个人与集体的身份认同是否围绕共同的目标,并在实现目标的优先次序上达成一致。`
-					},
-					{
-						title:'E-外部流程、系统与结构',thbgcolor:'#009191',thtextcolor:'#FFFFFF',titlecolor:'#009191',dimensionCode:"external",
-						desc:`「外部流程、系统与结构」维度,我们旨在探究团队如何与各种利益相关者互动,他们与团队的利益相关方各自如何寻求了解对方,以及现有系统和流程的有效性,以帮助管理不同利益相关者的期望和需求。`
-					},
-					{
-						title:'R-人际关系',thbgcolor:'#FFD750',thtextcolor:'#002846',titlecolor:'#002846',dimensionCode:"relationship",
-						desc:`「人际关系」维度,我们旨在探究团队成员相互沟通交流的状态,团队成员的信任程度、尊重和关心的程度、心理安全度,以及团队成员之间的关系如何促进(或破坏)协作。`
-					},
-					{
-						title:'I-内部流程、系统与结构',thbgcolor:'#4EB2B2',thtextcolor:'#FFFFFF',titlecolor:'#33A7A7',dimensionCode:"internal",
-						desc:`「内部流程、系统与结构」维度,我们旨在探究团队在管理工作任务和流程中如何平衡责任与自主权进行协作。主要关注团队应对变化时的敏捷程度、日常沟通方式以及内部决策过程的有效性。`
-					},
-					{
-						title:'L-学习',thbgcolor:'#AFCDF5',thtextcolor:'#002846',titlecolor:'#002846',dimensionCode:"learning",
-						desc:`「学习」维度,我们旨在探究团队如何提高其绩效(完成当下的任务)、能力(提高技能和资源以处理明天的任务)和容量(⻓期的愿景,用更少的资源做更多的事情)以应对当前和未来的任务。同时还关注团队如何管理这些能力和提高效率。`
-					},
-					{
-						title:'L-领导力',thbgcolor:'#002846',thtextcolor:'#FFFFFF',titlecolor:'#002846',dimensionCode:"leadership",
-						desc:`「领导力」维度,我们旨在探究团队领导者的素质和行为(包括但不限于正式与非正式的引导、赋能与责任承担方式)如何对团队功能和其他因素产生影响,以及这是积极的还是消极的。`
+				const tempDimensionAnalysis = [
+					{
+						title:'P-宗旨与动机',thbgcolor:'#761E6A',thtextcolor:'#FFFFFF',titlecolor:'#761E6A',dimensionCode:"purpose",bordercolor:'#E4D2E1',
+						desc:`「宗旨与动机」维度,我们旨在探究团队是否有清晰的存在理由和明确的方向,能够激发团队成员的动力并吸引他们的想象力,以及个人与集体的身份认同是否围绕共同的目标,并在实现目标的优先次序上达成一致。`
+					},
+					{
+						title:'E-外部流程、系统与结构',thbgcolor:'#009191',thtextcolor:'#FFFFFF',titlecolor:'#009191',dimensionCode:"external",bordercolor:'#B3DEDE',
+						desc:`「外部流程、系统与结构」维度,我们旨在探究团队如何与各种利益相关者互动,他们与团队的利益相关方各自如何寻求了解对方,以及现有系统和流程的有效性,以帮助管理不同利益相关者的期望和需求。`
+					},
+					{
+						title:'R-人际关系',thbgcolor:'#FFD750',thtextcolor:'#002846',titlecolor:'#002846',dimensionCode:"relationship",bordercolor:'#FFEBA8',
+						desc:`「人际关系」维度,我们旨在探究团队成员相互沟通交流的状态,团队成员的信任程度、尊重和关心的程度、心理安全度,以及团队成员之间的关系如何促进(或破坏)协作。`
+					},
+					{
+						title:'I-内部流程、系统与结构',thbgcolor:'#4EB2B2',thtextcolor:'#FFFFFF',titlecolor:'#33A7A7',dimensionCode:"internal",bordercolor:'#B3DEDE',
+						desc:`「内部流程、系统与结构」维度,我们旨在探究团队在管理工作任务和流程中如何平衡责任与自主权进行协作。主要关注团队应对变化时的敏捷程度、日常沟通方式以及内部决策过程的有效性。`
+					},
+					{
+						title:'L-学习',thbgcolor:'#AFCDF5',thtextcolor:'#002846',titlecolor:'#002846',dimensionCode:"learning",bordercolor:'#C7DCF8',
+						desc:`「学习」维度,我们旨在探究团队如何提高其绩效(完成当下的任务)、能力(提高技能和资源以处理明天的任务)和容量(⻓期的愿景,用更少的资源做更多的事情)以应对当前和未来的任务。同时还关注团队如何管理这些能力和提高效率。`
+					},
+					{
+						title:'L-领导力',thbgcolor:'#002846',thtextcolor:'#FFFFFF',titlecolor:'#002846',dimensionCode:"leadership",bordercolor:'#E6EAED',
+						desc:`「领导力」维度,我们旨在探究团队领导者的素质和行为(包括但不限于正式与非正式的引导、赋能与责任承担方式)如何对团队功能和其他因素产生影响,以及这是积极的还是消极的。`
 					}
 				]
 				if(this.reportData&&this.reportData.dimensionAnalysis){

Разница между файлами не показана из-за своего большого размера
+ 134 - 1089
static/pdf.scss