htc 4 일 전
부모
커밋
56a9c586d7

+ 1 - 1
components/CusTeamInfo/index.vue

@@ -153,7 +153,7 @@
 					font-family: PingFangSC, PingFang SC;
 					font-weight: 400;
 					font-size: 28rpx;
-					color: #667E90;
+					color: #536387;
 					line-height: 42rpx;
 					margin-top: 36rpx;
 				}

+ 1 - 1
components/CusTeamInfoFill/index.vue

@@ -59,7 +59,7 @@
 		<view class="box">
 			<view class="box-title">团队简介</view>
 			<view class="box-textarea">
-				<u-textarea border="none" height="320rpx" maxlength="-1" :placeholderStyle="{'color':'#6B7280','font-size':'28rpx','line-height':'40rpx'}" 
+				<u-textarea border="none" height="320rpx" maxlength="-1" style="color: #536387;" :placeholderStyle="{'color':'#536387','font-size':'28rpx','line-height':'40rpx'}" 
 				v-model="teamInfo.brief" placeholder="示例:这是一个为公司ERP系统升级而组建的36人团队,成员由公司副总经理、各部门总监以及各部门核心骨干组成。团队成员工作地点分布在香港、上海、苏州、深圳和东莞等地。团队成员年龄在35-50岁之间,男女比例比较均衡,大部份成员在该公司同事超过十年。"></u-textarea>
 			</view>
 		</view>

+ 2 - 1
components/QuestionItem/index3.vue

@@ -19,7 +19,8 @@
 								activeColor="#33A7A7"
 								size="36rpx"
 								iconSize="32rpx"
-								labelSize="32rpx"
+								labelColor="#002846"
+								labelSize="28rpx"
 							></u-radio>
 						</view>
 					</u-radio-group>

+ 36 - 7
pages/my.vue

@@ -37,11 +37,19 @@
 				<view class="preill-right" @click="handleTurn('/pagesPublish/rechargeCenter')">立即购买</view>
 			</view>
 			<view class="menu">
-				<view class="menu-item adfacjb" v-for="(item,index) in menuList" :key="index" @click="handleTurn(item.path)">
-					<view class="menu-item-left adfac">
-						<image :src="item.img"></image>
-						<text>{{item.title}}</text>
-					</view>
+				<view class="menu-item adfacjb" v-for="(item,index) in menuList" :key="index" @click="handleTurn(item.path,item.title)">
+					<div class="menu-item-left">
+						<template v-if="item.title === '邀请好友'">
+							<button class="share-btn" open-type="share">
+								<image :src="item.img"></image>
+								<text>{{ item.title }}</text>
+							</button>
+						</template>
+						<template v-else>
+							<image :src="item.img"></image>
+							<text>{{ item.title }}</text>
+						</template>
+					</div>
 					<image class="menu-item-right" :src="imgBase+'my_arrow_right.png'"></image>
 				</view>
 			</view>
@@ -101,7 +109,14 @@
 				this.getMyInfo(this.userInfo.id)
 			} 
 		},
-		methods:{
+		methods:{
+			onShareAppMessage(res) {
+				const sharerId = JSON.parse(uni.getStorageSync('userInfo'))?.id;
+				return {
+				  title: '创衡汇教练AI智能体',
+				  path: `/pages/home?shareUserId=${sharerId}&shareType=Forward`,
+				};
+			},
 			getMyInfo(userId){
 				this.$api.get(`/wx/myCount/${userId}`,this.params).then(({data:res})=>{
 					if(res.code!==0) return this.$showToast(res.msg)
@@ -114,8 +129,9 @@
 					url:'/pages/login'
 				})
 			},
-			handleTurn(url){
+			handleTurn(url,title){
 				if(!this.isLogin()) return
+				if(title=='邀请好友') return
 				if(!url) return
 				uni.navigateTo({ url })
 			},
@@ -124,6 +140,19 @@
 </script>
 
 <style scoped lang="scss">
+	.share-btn {
+		background-color: transparent;
+		border: none;
+		padding: 0;
+		margin: 0;
+		line-height: 1;
+		display: flex;
+		align-items: center;
+		&::after {
+			border: none;
+		}
+	}
+
 	.tabPage{
 		.topbg{
 			width: 100%;

+ 15 - 11
pagesHome/components/createList.vue

@@ -7,7 +7,7 @@
 						<image class="expand" :src="imgBase + 'questionnaire_icon_down.png'"></image>
 						<view class="title">{{ item.title || '' }}</view>
 						<view class="name">团队名称:{{ item.teamName || '' }}</view>
-						<view class="progress adfacjb">
+						<view class="progress adfacjb" @click.stop="showTeamUser(item)">
 							<view class="progress-left adfac">
 								<view class="progress-left-text">作答进度:</view>
 								<view class="progress-left-box">
@@ -237,21 +237,25 @@ export default {
 				})
 			}
 			else if(item.text==='团队人员'){
-				await this.getUserCategoryData()
-				this.$api.get(`/core/member/listByQueTeamId/${this.dto.teamQuestionnaireId}`).then(({data:res})=>{
-					if(res.code!==0) return this.$showToast(res.msg)
-					this.teamUserList = res.data;
-					this.originTeamUserList = res.data;
-					this.teamUserList.forEach(l=>{
-						l.categoryName = this.categoryData.find(c=>c.id==l.category)?.name;
-					})
-					this.teamUserShow = true
-				})
+				this.showTeamUser(this.dto);
 			}
 			else if(item.text==='生成报告'){
 				if(this.dto.status==0) return this.$showToast('问卷未完成,全部团队人员作答后才能生成报告')
 				this.createReportConfirm(this.dto.teamQuestionnaireId)
 			}
+		},
+		async showTeamUser(item){
+			this.dto = item;
+			await this.getUserCategoryData()
+			this.$api.get(`/core/member/listByQueTeamId/${this.dto.teamQuestionnaireId}`).then(({data:res})=>{
+				if(res.code!==0) return this.$showToast(res.msg)
+				this.teamUserList = res.data;
+				this.originTeamUserList = res.data;
+				this.teamUserList.forEach(l=>{
+					l.categoryName = this.categoryData.find(c=>c.id==l.category)?.name;
+				})
+				this.teamUserShow = true
+			})
 		},
 		handleConfirm(data){
 			data.coachId = JSON.parse(uni.getStorageSync('userInfo')).id;

+ 23 - 13
pagesHome/components/receiveList.vue

@@ -7,7 +7,7 @@
 						<view class="status adf" :class="{'dwc':item.status===0,'ywc':item.status===1}">
 							<image :src="imgBase+'questionnaire_icon_dwc.png'" v-if="item.status===0"></image>
 							<image :src="imgBase+'questionnaire_icon_ywc.png'" v-else-if="item.status===1"></image>
-							<text>{{item.status===0?'待完成':item.status===1?'已完成':''}}</text>
+							<text>{{item.status===0?'待完成':item.status===1?'':''}}</text>
 						</view>
 						<image class="expand" :src="imgBase+'questionnaire_icon_down.png'"></image>
 						<view class="title">{{item.title||''}}</view>
@@ -15,7 +15,7 @@
 						<view class="bottom adfacjb">
 							<view class="bottom-left">截止时间:{{item.endTime}}</view>
 							<view class="bottom-right" v-if="item.status===0" @click.stop="showNotice(item)">立即作答</view>
-							<view class="bottom-right" v-else-if="item.status===1">查看报告</view>
+							<view class="bottom-right" v-else-if="item.status===1" @click.stop="reviewReport(item)">查看报告</view>
 						</view>
 					</view>
 				</up-list-item>
@@ -102,17 +102,22 @@
 				teamLevelData:[],
 				teamUserList:[],
 				teamInfo:null,
-				noticeContent:`Transcend International PERILL Assessment is designed to provide insight into the key factors that underpin high value-creating team. It consists of six elements, focusing on Purpose & Motivation, External Systems and Processes, Relationships, Internal Systems and Processes, Learning Processes, Leadership Qualities and Behaviours.
-创衡国际PERILL团队发展动态评估旨在深入了解支撑高价值团队的关键因素。这些关键因素涵盖六个维度:宗旨和动机、外部流程/系统和结构、人际关系、外部流程/系统和结构、学习、领导力。
-<br/>
-All information will be kept confidential.
-您所填写的所有信息将被保密的。
-<br/>
-The following statements in the assessment describe the ideal state of a team. Please score the actual performance of the team being tested on each statement from two perspectives:
-以下问卷中的各条陈述是对团队理想状态的描述,请您对受测团队当下在每项描述上所呈现的实际表现从两个角度进行打分:
-<br/>
-1. Agreement: There are 5 levels ranging from 1 to 5. Score of 5 if you completely agree that the team has reached the statement. Score of 1 if you completely disagree.
-1、同意度:1-5分共5个等级,假如您完全同意该团队当下达到了所描述的状态为5分,假如您完全不同意该团队当下达到了所描述的状态为1分
+				noticeContent:`Transcend International PERILL Assessment is designed to provide insight into the key factors that underpin high value-creating team. It consists of six elements, focusing on Purpose & Motivation, External Systems and Processes, Relationships, Internal Systems and Processes, Learning Processes, Leadership Qualities and Behaviours.<br>
+创衡国际PERILL团队发展动态评估旨在深入了解支撑高价值团队的关键因素。这些关键因素涵盖六个维度:宗旨和动机、外部流程/系统和结构、人际关系、外部流程/系统和结构、学习、领导力。
+<br><br>
+All information will be kept confidential.<br>
+您所填写的所有信息将被保密的。<br>
+ <br>
+The following 36 statements describe the ideal state of a team. Please score the actual performance of the team being tested on each statement from two perspectives:<br>
+以下36个陈述是对团队理想状态的描述,请您对受测团队当下在每项描述上所呈现的实际表现从两个角度进行打分:<br>
+<br>
+1. Agreement: There are 5 levels ranging from 1 to 5. Score of 5 if you completely agree that the team has reached the statement. Score of 1 if you completely disagree.<br>
+1、同意度:1-5分共5个等级,假如您完全同意该团队当下达到了所描述的状态为5分,假如您完全不同意该团队当下达到了所描述的状态为1分<br>
+2. Importance: There are 5 levels ranging from 1 to 5. Score of 5 if you believe that the statement is extremely significant for the team at this moment. Score of 1 if you believe it is very insignificant.<br>
+2、重要性:1-5分共5个等级,假如您认为所描述的状态对该团队当下非常重要为5分,假如您认为所描述的状态对该团队当下非常不重要为1分<br>
+ <br>
+Completing these questions should take approximately 10-15 minutes. If you have any questions, please feel free to contact Transcend by Wecom.
+完成这个问卷调查大约需要8-10分钟。如有任何疑问,欢迎添加大衡同学企业微信联系。
 `
 			}
 		},
@@ -158,6 +163,11 @@ The following statements in the assessment describe the ideal state of a team. P
 					uni.navigateTo({ url })
 				}
 			},
+			reviewReport(item){
+				let url = '/pagesHome/pdf';
+				if(item.type==2) url = '/pagesHome/pdfZyb'
+				uni.navigateTo({ url })
+			},
 			handleKnow(){
 				uni.navigateTo({
 					url:'/pagesPublish/questionnaireFill?teamQuestionnaireId='+this.dto.teamQuestionnaireId+'&teamId='+this.dto.teamId+'&type='+this.dto.type+'&turnType=questionnaire'

+ 69 - 29
pagesMy/recommendHistory.vue

@@ -1,58 +1,98 @@
 <template>
-	<view class="default_page" :style="{'min-height':h+'px', 'padding-top':mt+'px'}">
+	<view class="default_page adffc" :style="{'height':h+'px', 'padding-top':mt+'px'}">
 		<cus-header title='推荐记录'></cus-header>
 		<view class="top adfac" @click="show=true">
 			<text>{{typeText}}</text>
 			<image :src="imgBase+'icon_down.png'"></image>
 		</view>
-		<view class="list">
-			<view class="list-item adfacjb" v-for="(item,index) in list" :key="index">
-				<view class="list-item-left adfac">
-					<image :src="imgCfg[item.type]"></image>
-					<view class="name adffc">
-						<p>{{item.name}}</p>
-						<text>来源:{{typeCfg[item.type]}}</text>
+		<view class="list" v-if="list.length">
+			<up-list @scrolltolower="scrolltolower" style="height: 100%">
+				<up-list-item class="list-item" v-for="(item, index) in list" :key="index">
+					<view class="adfacjb">
+						<view class="list-item-left adfac">
+							<image :src="imgCfg[item.channelType]||defaultImg"></image>
+							<view class="name adffc">
+								<p>{{item.realName}}</p>
+								<text>来源:{{item.channelTypeText||''}}</text>
+							</view>
+						</view>
+						<view class="list-item-right">{{item.createDate||''}}</view>
 					</view>
-				</view>
-				<view class="list-item-right">{{item.datetime}}</view>
-			</view>
+				</up-list-item>
+			</up-list>
+		</view>
+		<view style="height: 100%;" v-else>
+			<page-empty text="暂无推荐记录"></page-empty>
 		</view>
 		<u-picker :itemHeight="88" :immediateChange="true" :show="show" :columns="typeData" title="渠道类型"
-			@cancel="show=false" @confirm="confirm"></u-picker>
+			@cancel="show=false" @confirm="confirm" keyName="name"></u-picker>
 	</view>
 </template>
 
 <script>
+	import PageEmpty from '@/components/pageEmpty/index.vue'
 	export default {
+		components:{ PageEmpty },
 		data(){
 			return {
 				show:false,
 				typeText:'全部渠道',
-				typeData:[['全部渠道','问卷任务','推荐转发','创衡运营邀请渠道1','创衡运营邀请渠道2']],
+				typeData:[],
+				defaultImg:this.$imgBase+'recommend_zf.png',
 				imgCfg:{
-					1:this.$imgBase+'recommend_wj.png',
-					2:this.$imgBase+'recommend_zf.png',
-					3:this.$imgBase+'recommend_yy1.png',
-					4:this.$imgBase+'recommend_yy2.png'
+					'Questionnaire':this.$imgBase+'recommend_wj.png',
+					'Forward':this.$imgBase+'recommend_zf.png',
+					'scan':this.$imgBase+'recommend_yy1.png',
+					'common':this.$imgBase+'recommend_yy2.png'
 				},
-				typeCfg:{
-					1:'问卷任务',
-					2:'推荐转发',
-					3:'创衡运营邀请渠道1',
-					4:'创衡运营邀请渠道2'
+				queryParams:{
+					page:1,
+					limit:10,
+					channelType:'',
+					referrerId:''
 				},
-				list:[
-					{name:'李依然',type:1,datetime:'2025-10-10 06:00'},
-					{name:'张三',type:2,datetime:'2025-10-10 06:00'},
-					{name:'李四',type:3,datetime:'2025-10-10 06:00'},
-					{name:'龙傲天',type:4,datetime:'2025-10-10 06:00'},
-				]
+				isOver:false,
+				list:[]
 			}
 		},
+		onLoad() {
+			this.queryParams.referrerId = uni.getStorageSync('userInfo')&&JSON.parse(uni.getStorageSync('userInfo')).id||'';
+			this.getChannelData();
+			this.getList();
+		},
 		methods:{
+			getChannelData(){
+				this.$api.get('/getListByType/channel_type').then(({data:res})=>{
+					if(res.code!==0) return this.$showToast(res.msg)
+					this.typeData = [res.data.map(d=>({name:d.dictLabel,id:d.dictValue}))];
+				})
+			},
+			scrolltolower(){
+				if(this.isOver) return
+				this.getList();
+			},
+			initList(){
+				this.queryParams.page = 1;
+				this.isOver = false;
+				this.list = [];
+			},
+			getList(){
+				this.$api.get('/core/register/record/page',this.queryParams).then(({data:res})=>{
+					if(res.code!==0) return this.$showToast(res.msg)
+					this.list = [...this.list,...res.data.list];
+					this.list.forEach(l=>{
+						l.channelTypeText = this.typeData.find(t=>t.id===l.channelType).name||'';
+					})
+					this.queryParams.page++;
+					if(res.data.list.length===0) this.isOver = true;
+				})
+			},
 			confirm(e){
-				this.typeText = e.value[0];
+				this.typeText = e.value[0].name;
+				this.queryParams.channelType = e.value[0].id;
 				this.show = false;
+				this.initList();
+				this.getList();
 			}
 		}
 	}

+ 1 - 1
pagesPublish/publishResult.vue

@@ -61,7 +61,7 @@
 		    const sharerId = JSON.parse(uni.getStorageSync('userInfo'))?.id;
 		    return {
 		      title: this.title,
-		      path: `/pages/home?shareTQId=${this.teamQuestionnaireId}&shareUserId=${sharerId}`,
+		      path: `/pages/home?shareTQId=${this.teamQuestionnaireId}&shareUserId=${sharerId}&shareType=Questionnaire`,
 		    };
 		},
 		onLoad(options){

+ 3 - 2
pagesPublish/questionnaireFill.vue

@@ -134,6 +134,7 @@
 					.get('/core/team/member/answer/listByUser/' + this.teamQuestionnaireId)
 					.then((res) => {
 						if (res.data.code !== 0) return this.$showToast(res.data.msg);
+						if(res.data.data.length===0) return this.$showToast('暂无问卷');
 						const answerMap = new Map();
 						if (questionnaire && this.teamQuestionnaireId == questionnaire.key) {
 							questionnaire.list.forEach((q) => answerMap.set(q.id, q.answer));
@@ -168,7 +169,7 @@
 					})
 					.catch(() => {
 						this.isLoading = false;
-						this.$showToast('网络异常,请稍后重试');
+						this.$showToast('获取异常,请稍后重试');
 					})
 					.finally(() => {
 						this.isLoading = false;
@@ -384,7 +385,7 @@
 				font-family: PingFangSC, PingFang SC;
 				font-weight: 400;
 				font-size: 24rpx;
-				color: #BA9B31;
+				color: #536387;
 				line-height: 30rpx;
 			}
 			image{