YingXingAI/pages/login/perfect/perfect.vue

1345 lines
37 KiB
Vue
Raw Normal View History

2025-06-30 14:43:02 +08:00
<template>
<view class="flex-col page">
<u-navbar
:border-bottom="false"
title="个人资料"
:custom-back="back"
></u-navbar>
<view v-if="step == 0" class="flex-col group_2">
<!-- <h3 class="text_3">个人资料设置</h3> -->
<view class="flex-col items-center group_1">
<u-avatar
:mode="shape"
:src="headerImg"
@click="chooseAvatar"
size="260"
/>
<text class="text_4">请上传头像</text>
</view>
<view class="flex-col group_5 input-box">
<u-input
type="text"
:maxlength="8"
v-model="form.userName"
placeholder="请输入用户名称"
class="text-wrapper view"
/>
</view>
<view class="flex-col input-box" style="margin-top: 16px">
<u-input
type="text"
:maxlength="8"
v-model="form.name"
placeholder="请输入真实的姓名"
class="text-wrapper view"
/>
</view>
<view class="flex-col group_3">
<text class="text_7" style="margin-bottom: 26px">性别</text>
<u-radio-group
v-model="form.sex"
placement="row"
name="sexGroup"
width="50%"
>
<u-radio
v-for="(item, index) in sexOptions"
:key="index"
:name="item.value"
>
{{ item.label }}
</u-radio>
</u-radio-group>
<!-- <view
class="flex-col items-center group_6"
@click="form.sex = '男'"
:class="{ on: form.sex === '男' }"
>
<image src="/static/common/img/male.png" class="image_4" />
<text class="text_8"></text>
</view>
<view
class="flex-col items-center group_4"
@click="form.sex = '女'"
:class="{ on: form.sex === '女' }"
>
<image src="/static/common/img/female.png" class="image_4" />
<text class="text_9"></text>
</view> -->
</view>
<u-button
shape="circle"
class="button text-wrapper_1"
type="primary"
@click="next"
>下一步</u-button
>
</view>
<u-navbar
:custom-back="back"
v-if="step == 1"
:border-bottom="false"
:background="background"
>
</u-navbar>
<view v-if="step == 1" class="flex-col group_3 userList">
<h3 class="text_3">填写学校信息</h3>
<view class="flex-col group_4">
<view class="justify-between list-item group_5">
<text class="text_8">学历</text>
<view class="item-right">
<view class="input-cover" @click="educationalShow = true"></view>
<u-input
v-model="form.educationStr"
placeholder="请选择学历"
inputAlign="right"
disabled
/>
<u-action-sheet
:list="educationalList"
v-model="educationalShow"
@click="educationalSelect"
>
</u-action-sheet>
<image
src="/static/common/img/row_right.png"
class="right-img"
></image>
</view>
</view>
<view class="justify-between list-item">
<text class="text_8">学校</text>
<view class="item-right">
<view class="input-cover" @click="shoolShow = true"></view>
<u-input
v-model="shoolName"
placeholder="请选择学校"
inputAlign="right"
disabled
/>
<image
src="/static/common/img/row_right.png"
class="right-img"
></image>
<u-select
v-model="shoolShow"
:default-value="defaultTime"
mode="single-column"
title="学校选择"
:list="shoolList"
@confirm="shoolSelect"
>
</u-select>
</view>
</view>
<view class="justify-between list-item">
<text class="text_8">学院</text>
<view class="item-right">
<view class="input-cover" @click="collegeShow = true"></view>
<u-input
v-model="form.college"
placeholder="请选择学院"
inputAlign="right"
disabled
/>
<u-select
v-model="collegeShow"
mode="single-column"
:list="CollegeList"
@confirm="selectCpllege"
></u-select>
<image
src="/static/common/img/row_right.png"
class="right-img"
></image>
</view>
</view>
<view class="justify-between list-item">
<text class="text_8">专业</text>
<view class="item-right">
<view class="input-cover" @click="majorShow = true"></view>
<u-input
v-model="form.major"
placeholder="请选择专业"
inputAlign="right"
disabled
/>
<u-select
v-model="majorShow"
mode="single-column"
:list="MajorList"
@confirm="selectMajor"
></u-select>
<image
src="/static/common/img/row_right.png"
class="right-img"
></image>
</view>
</view>
<view class="justify-between list-item">
<text class="text_8">时间</text>
<view class="item-right">
<view class="input-cover" @click="timeShow = true"></view>
<u-input
v-model="showTime"
placeholder="请选择时间"
inputAlign="right"
disabled
/>
<u-select
v-model="timeShow"
:default-value="defaultTime"
mode="mutil-column"
title="在校时间"
:list="timeList"
@confirm="confirm"
>
</u-select>
<image
src="/static/common/img/row_right.png"
class="right-img"
></image>
</view>
</view>
</view>
<template v-if="isGraduate">
<h3 class="text_3">就业信息</h3>
<view class="flex-col group_4">
<view class="justify-between list-item">
<text class="text_8">行业领域</text>
<view class="item-right">
<view
class="input-cover"
@click="workAreaPopupShow = true"
></view>
<u-input
v-model="selectedWorkArea"
placeholder="请选择行业"
inputAlign="right"
disabled
/>
<u-select
v-model="workAreaPopupShow"
mode="single-column"
title="行业领域"
:list="WorkAreaList"
@confirm="workAreaSelect"
>
</u-select>
<image
src="/static/common/img/row_right.png"
class="right-img"
></image>
</view>
</view>
</view>
</template>
<u-button
shape="circle"
class="button text-wrapper_1"
type="primary"
@click="complete"
>完成</u-button
>
</view>
<view v-if="step == 2" class="flex-col preference-page">
<u-navbar title="推荐偏好" :border-bottom="false" :custom-back="back" />
<view class="selected-count">
已选择{{ selectedPreferences.length }}/10
<text class="desc"
>您选择的标签将影响系统推荐给你的信息类型进入系统后可以在我的-个人信息中修改</text
>
</view>
<view class="selected-tags">
<view
v-for="item in selectedPreferences"
:key="item.lableName"
class="tag selected"
>
{{ item.lableName }}
<image
class="close-btn"
src="/static/common/img/handDelete.png"
@click.stop="removePreference(item)"
></image>
</view>
</view>
<view class="line"></view>
<view class="all-tags">
<view class="title">行业领域</view>
<view class="tags-list">
<view
v-for="(item, index) in industryList"
:key="item.lableId"
class="industry-tag"
:class="{ selected: selectedIndustryId === item.lableId }"
@click="handleIndustrySelect(index)"
>{{ item.lableName }}</view
>
</view>
<view class="title">行业方向</view>
<view class="tags-list industry-tag-list">
<view
v-for="item in industryDirectionList"
:key="item.lableName"
class="industry-tag"
:class="{ selected: selectedPreferences.includes(item) }"
@click="togglePreference(item)"
>{{ item.lableName }}</view
>
</view>
</view>
<view class="line-shadow"></view>
<view class="btn-box">
<u-button shape="circle" class="button" type="primary" @click="nextStep"
>下一步</u-button
>
</view>
</view>
<view v-if="step == 3" class="flex-col preference-page">
<u-navbar title="推荐偏好" :border-bottom="false" :custom-back="back" />
<view class="selected-count">
已选择{{ selectedInterests.length }}/10
<text class="desc"
>您选择的标签将影响系统推荐给你的信息类型进入系统后可以在我的-个人信息中修改</text
>
</view>
<view class="selected-tags">
<view
v-for="item in selectedInterests"
:key="item.lableId"
class="tag selected"
>
{{ item.lableName }}
<image
class="close-btn"
src="/static/common/img/handDelete.png"
@click.stop="removeInterest(item)"
></image>
</view>
</view>
<view class="line"></view>
<view class="all-tags">
<view class="title">兴趣爱好</view>
<view class="tags-list">
<view
v-for="item in interestList"
:key="item.lableId"
class="tag"
:class="{ selected: selectedInterests.includes(item) }"
@click="toggleInterest(item)"
>{{ item.lableName }}</view
>
</view>
</view>
<view class="line-shadow"></view>
<view class="btn-box">
<u-button
shape="circle"
class="button"
type="primary"
@click="finishPreference"
>完成</u-button
>
</view>
</view>
<u-top-tips :z-index="999" ref="uTips" :navbar-height="0"></u-top-tips>
<u-toast ref="uToast" />
</view>
</template>
<script>
import headerImg from "@/static/common/img/headerImg.png";
export default {
data() {
return {
step: 0,
headerImg: headerImg,
shoolName: "",
showTime: "",
form: {
userId: "", //用户id
name: "", //名字
userName: "", //用户名
sex: "男", //性别
path: "", //头像
educationStr: "", //学历
schoolId: "", //学校
college: "", //学院
major: "", //专业
startYear: "", //开始时间
endYear: "", //结束时间,
collegeId: "", //学院id
majorId: "", //专业id
list: [],
},
studentId: '', //在校生id
sexOptions: [
{ label: "男生", value: "男" },
{ label: "女生", value: "女" },
],
background: {
backgroundColor: "#f6f8fa",
},
value: "",
defaultTime: "",
show: false,
educationalShow: false,
educationalList: [
//学历选择列表
{
text: "大专",
},
{
text: "本科",
},
{
text: "硕士研究生",
},
{
text: "博士研究生",
},
],
shoolShow: false,
shoolList: [], //学校选择
CollegeList: [], //学院选择
MajorList: [], //专业选择
timeShow: false,
timeList: [], //时间选择
collegeShow: false,
majorShow: false,
isGraduate: false,
workAreaPopupShow: false, //就业领域选择
selectedWorkArea: "",
selectedWorkAreaId: "",
WorkAreaList: [],
selectedPreferences: [],
industryList: [], // 行业领域列表
selectedIndustry: [], // 行业领域选择
industryDirectionList: [], // 行业方向列表
selectedIndustryDirection: [], // 行业方向选择
labelList: [], // 原始标签数据
interestList: [],
selectedInterests: [],
shape: "square",
selectedIndustryName: '', // 当前选中的行业领域名称
selectedIndustryId: null, // 当前选中的行业领域ID初始化为null以避免匹配任何id
};
},
onLoad(e) {
// this.GetLableList();
// this.GetInterestLable()
this.getWorkFile();
// 监听从裁剪页发布的事件,获得裁剪结果
uni.$on("uAvatarCropper", (path) => {
this.headerImg = path;
let file = this.common.base64toFile(path, new Date().getTime());
if (file.type.indexOf("image") < 0) {
// this.$tips("请选择图片", "error");
this.$refs.uToast.show({
title: "请选择图片",
type: "error",
});
return false;
}
uni.uploadFile({
url: this.$u.http.config.baseUrl + "/app/User/File",
file: file,
fileType: "image",
header: {
Authorization: "Bearer " + this.vuex_token,
},
complete: (res) => {
this.form.path = JSON.parse(res.data).data;
},
});
});
if (this.vuex_user.id) {
this.form.userId = this.vuex_user.id;
} else {
this.$u.route({
url: "/pages/login/login/login",
});
}
if (this.vuex_userInfo.realName) {
this.form.name = this.vuex_userInfo.realName;
}
this.getShool();
var arr1 = [],
arr2 = [];
var isyear = new Date().getFullYear();
for (var i = 1990; i <= isyear + 10; i++) {
if (i <= isyear) {
arr1.push({
value: i,
label: i,
});
}
arr2.push({
value: i,
label: i,
});
}
this.timeList.push(arr1);
this.timeList.push(arr2);
this.defaultTime = [arr1.length - 1, arr2.length - 7];
this.echoFn();
},
methods: {
nextStep() {
this.step = 3;
this.GetInterestLable();
console.log("下一步");
},
async GetInterestLable() {
const res = await this.$u.apiList.GetInterestLable();
console.log("获取标签", res);
this.interestList = res;
},
toggleInterest(item) {
// 先判断是否已达到最大选择数量
if (this.selectedInterests.length >= 10) {
this.$refs.uToast.show({
title: "最多选择10个",
type: "error",
});
return;
}
// 从 interestList 中查找待移除的标签
const interestIndex = this.interestList.findIndex(
(i) => i.lableId === item.lableId
);
if (interestIndex > -1) {
// 移除标签
this.interestList.splice(interestIndex, 1);
// 添加到已选择列表
this.selectedInterests.push(item);
}
},
removeInterest(item) {
// 从已选择列表中移除
const selectedIndex = this.selectedInterests.findIndex(
(i) => i.lableId === item.lableId
);
if (selectedIndex > -1) {
this.selectedInterests.splice(selectedIndex, 1);
// 添加回 interestList
this.interestList.push(item);
}
},
togglePreference(item) {
// 先判断是否已达到最大选择数量
if (this.selectedPreferences.length >= 10) {
this.$refs.uToast.show({
title: "最多选择10个",
type: "error",
});
return;
}
// 从 industryDirectionList 中查找待移除的标签
const directionIndex = this.industryDirectionList.findIndex(
(i) => i.lableId === item.lableId
);
if (directionIndex > -1) {
// 移除标签
this.industryDirectionList.splice(directionIndex, 1);
// 添加到已选择列表
this.selectedPreferences.push(item);
}
},
removePreference(item) {
// 从已选择列表中移除
const selectedIndex = this.selectedPreferences.findIndex(
(i) => i.lableId === item.lableId
);
if (selectedIndex > -1) {
this.selectedPreferences.splice(selectedIndex, 1);
// 获取当前选中的行业领域根据lableId
const currentIndustry = this.labelList.find(
(i) => i.lableId === this.selectedIndustryId // ***修改使用lableId查找***
);
if (currentIndustry && currentIndustry.list) {
// 如果删除的标签属于当前行业领域,则添加回列表
const originalItem = currentIndustry.list.find(
(i) => i.lableId === item.lableId
);
if (originalItem) {
this.industryDirectionList.push(originalItem);
}
}
}
},
// 回填个人信息 如果已经存在教师身份,学生身份未认证时
async echoFn() {
const res = await this.$u.apiList.SelectUserTypeApi();
console.log(res, "res---");
const jzgFlag = res.jzgFlag;
const studentFlag = res.studentFlag;
if (studentFlag === false && jzgFlag === true) {
this.form.name = this.vuex_user.name;
this.form.userName = this.vuex_user.userName
this.form.sex = this.vuex_user.sex;
this.headerImg = this.$u.http.config.baseUrl + this.vuex_user.head;
this.shape = 'circle'
this.form.path = this.vuex_user.head;
}
},
//完成信息填写
async complete() {
var data = this.form;
if (data.educationStr == "") {
// return this.$tips("请选择学历", "error");
return this.$refs.uToast.show({
title: "请选择学历",
type: "error",
});
}
if (data.schoolId == "") {
// return this.$tips("请选择学校", "error");
return this.$refs.uToast.show({
title: "请选择学校",
type: "error",
});
}
if (data.college == "") {
// return this.$tips("请填写学院", "error");
return this.$refs.uToast.show({
title: "请填写学院",
type: "error",
});
}
if (data.major == "") {
// return this.$tips("请填写专业", "error");
return this.$refs.uToast.show({
title: "请填写专业",
type: "error",
});
}
if (data.startYear == "" && data.endYear == "") {
// return this.$tips("请选择在校时间", "error");
return this.$refs.uToast.show({
title: "请选择在校时间",
type: "error",
});
}
if (new Date(data.startYear) - new Date(data.endYear) > 0) {
// return this.$tips("请选择正确的在校时间", "error");
return this.$refs.uToast.show({
title: "请选择正确的在校时间",
type: "error",
});
}
if (this.isGraduate) {
console.log("跳转标签设置");
if (this.selectedWorkAreaId == "") {
this.$refs.uToast.show({
title: "请选择行业领域",
type: "error",
});
return;
}
this.step = 2;
console.log("form---", this.form);
this.GetLableList();
return;
} else {
this.step = 3;
this.GetInterestLable()
}
// data.userType = 0;
// // 按照之前逻辑 真实姓名传参给 userName
// data.userName = this.form.name;
// // 新增用户名
// data.name = this.form.userName;
// data.list = this.selectedWorkAreaId
// ? [{ lableId: this.selectedWorkAreaId }]
// : [];
// data.workFieldId = this.WorkAreaList[0].value;
// console.log(data, "data--");
// const res = await this.$u.api.saveUserInfo(data);
// const req = {
// userId: this.vuex_user.id,
// educationId: res,
// };
// const result = await this.$u.apiList.SelectEducation(req);
// console.log(result, "result--");
// this.$u.vuex("vuex_token", result.token);
// this.$u.vuex("vuex_glyType", result.glyType);
// this.$u.vuex("vuex_user", result.user);
// this.$u.api.getUser().then(() => {
// this.vuex_user.isFill = true;
// uni.switchTab({
// url: "../../main/index/index",
// });
// });
},
// 获取学校
getShool() {
this.$u.api.GetAllSchool().then((res) => {
for (let i = 0; i < res.length; i++) {
this.shoolList.push({
label: res[i].schoolName + "",
value: res[i].id + "",
});
}
});
setTimeout(() => {
if (this.vuex_userInfo.schoolName) {
this.shoolName = this.vuex_userInfo.schoolName.name;
this.form.schoolId = this.vuex_userInfo.schoolName.id;
this.getColleg(this.form.schoolId);
// console.log(this.vuex_userInfo.schoolName.id);
// console.log('this.form',this.form);
}
}, 300);
},
//获取学院
getColleg(id) {
const data = {
schoolid: id,
};
this.$u.apiList.GetCollegeList(data).then((res) => {
this.CollegeList = [];
for (let i = 0; i < res.length; i++) {
this.CollegeList.push({
label: res[i].name + "",
value: res[i].id + "",
});
}
});
},
//获取学院专业
getMajor(id) {
const data = {
schoolid: this.form.schoolId,
collegeid: id,
};
this.$u.apiList.GetMajorList(data).then((res) => {
this.MajorList = [];
for (let i = 0; i < res.length; i++) {
this.MajorList.push({
label: res[i].name + "",
value: res[i].id + "",
});
}
});
},
// 学历选择
educationalSelect(index) {
this.form.educationStr = this.educationalList[index].text;
},
// 时间选择
confirm(e) {
this.showTime = e[0].value + " - " + e[1].value;
this.form.startYear = e[0].value + "";
this.form.endYear = e[1].value + "";
// 判断是否为毕业生
const currentYear = new Date().getFullYear();
if (parseInt(e[1].value) < currentYear) {
this.isGraduate = true;
} else {
this.isGraduate = false;
}
},
// 学校选择
shoolSelect(e) {
this.form.college = "";
this.form.collegeId = "";
this.form.major = "";
this.form.majorId = "";
this.shoolName = e[0].label;
this.form.schoolId = e[0].value;
this.getColleg(this.form.schoolId);
},
//学院选择
selectCpllege(e) {
this.form.major = "";
this.form.majorId = "";
this.form.college = e[0].label;
this.form.collegeId = e[0].value;
this.getMajor(this.form.collegeId);
},
//选择专业
selectMajor(e) {
this.form.major = e[0].label;
this.form.majorId = e[0].value;
},
// 头像裁剪
chooseAvatar() {
// 此为uView的跳转方法详见"文档-JS"部分也可以用uni的uni.navigateTo
this.shape = "circle";
this.$u.route({
// 关于此路径,请见下方"注意事项"
url: "/uview-ui/components/u-avatar-cropper/u-avatar-cropper",
// 内部已设置以下默认参数值,可不传这些参数
params: {
// 输出图片宽度高等于宽单位px
destWidth: 200,
// 裁剪框宽度高等于宽单位px
rectWidth: 200,
// 输出的图片类型,如果'png'类型发现裁剪的图片太大,改成"jpg"即可
fileType: "jpg",
shape: "circle", // 新增:设置为圆形裁剪
},
});
},
back() {
if (this.step > 0) {
if (this.step === 3 && !this.isGraduate) {
// 如果不是毕业生,从 step 3 直接返回到 step 1
this.step = 1;
} else {
this.step--;
}
} else {
uni.navigateBack(); // 当 step 为 0 时,返回上一页
}
},
next() {
const data = this.form;
if (!data.path) {
// return this.$tips("请上传头像", "error");
return this.$refs.uToast.show({
title: "请上传头像",
type: "error",
});
}
if (!data.name) {
// return this.$tips("请填写真实姓名", "error");
return this.$refs.uToast.show({
title: "请填写真实姓名",
type: "error",
});
}
if (!data.userName) {
// return this.$tips("请填写真实姓名", "error");
return this.$refs.uToast.show({
title: "请填写用户名",
type: "error",
});
}
var reg = new RegExp("^[\u4e00-\u9fa5]{0,}$", "g");
if (!reg.test(data.name)) {
// this.$tips("请输入正确的真实姓名", "error");
this.$refs.uToast.show({
title: "请输入正确的真实姓名",
type: "error",
});
return;
}
if (!data.sex) {
// return this.$tips("请选择性别", "error");
return this.$refs.uToast.show({
title: "请选择性别",
type: "error",
});
}
this.step = 1;
console.log(this.form, "this.form--");
},
getWorkFile() {
this.$u.apiList.GetWorkFile().then((res) => {
this.studentId = res.find(item => item.workFieldName === '在校生').id;
this.WorkAreaList = res.map((item) => {
return {
label: item.workFieldName,
value: item.id,
};
}).filter(item => item.label !== '在校生' && item.label !== '教师' && item.label !== '未知');
});
console.log('WorkAreaList----',this.WorkAreaList)
},
workAreaSelect(e) {
console.log("选择行业领域", e);
this.selectedWorkArea = e[0].label;
this.selectedWorkAreaId = e[0].value;
let param = { WorkFileId: e[0].value };
this.$u.apiList.GetLableList(param).then((res) => {
this.labelList = res;
console.log("res----", res);
});
},
GetLableList() {
let param = { WorkFileId: this.selectedWorkAreaId };
this.$u.apiList.GetLableList(param).then((res) => {
this.labelList = res;
// industryList 存储完整的对象数组
this.industryList = res;
// 默认选中第一个行业领域并显示其方向
if (res.length > 0) {
this.selectedIndustryId = res[0].lableId; // ***修改使用lableId***
this.selectedIndustryName = res[0].lableName; // 存储名称
if (res[0].list) {
this.industryDirectionList = res[0].list;
} else {
this.industryDirectionList = [];
}
} else {
this.selectedIndustryId = null; // 如果没有数据清空选中状态为null
this.selectedIndustryName = ''; // 清空名称
this.industryDirectionList = []; // 清空行业方向列表
}
});
},
// 处理行业领域选择
handleIndustrySelect(index) {
const clickedIndustryItem = this.industryList[index]; // 获取完整对象
// 更新选中的行业领域ID和名称
this.selectedIndustryId = clickedIndustryItem.lableId; // ***修改使用lableId***
this.selectedIndustryName = clickedIndustryItem.lableName;
// 获取已选择的标签ID列表
const selectedIds = this.selectedPreferences.map((item) => item.lableId);
if (clickedIndustryItem && clickedIndustryItem.list) {
// 过滤掉已选择的标签
this.industryDirectionList = clickedIndustryItem.list.filter(
(item) => !selectedIds.includes(item.lableId)
);
} else {
this.industryDirectionList = [];
}
},
// 完成偏好设置
async finishPreference() {
if (
this.selectedPreferences.length === 0 &&
this.selectedInterests.length === 0
) {
this.$refs.uToast.show({
title: "请至少选择一个标签",
type: "error",
});
return;
}
try {
// 构建标签列表,只包含当前选中的标签
const preferenceList = this.selectedPreferences.map((item) => ({
lableId: item.lableId,
}));
const interestList = this.selectedInterests.map((item) => ({
lableId: item.lableId,
}));
this.form.list = [...preferenceList, ...interestList];
this.form.userType = this.isGraduate ? 2 : 0;
this.form.workFieldId = this.isGraduate ? this.selectedWorkAreaId : this.studentId; //在校生id
// 调用保存接口
const res = await this.$u.api.saveUserInfo(this.form);
const req = {
userId: this.vuex_user.id,
educationId: res,
};
const result = await this.$u.apiList.SelectEducation(req);
this.$u.vuex("vuex_token", result.token);
this.$u.vuex("vuex_glyType", result.glyType);
this.$u.vuex("vuex_user", result.user);
this.$u.api.getUser().then(() => {
this.vuex_user.isFill = true;
uni.switchTab({
url: "../../main/index/index",
});
});
// 保存成功后跳转到首页
} catch (error) {
this.$refs.uToast.show({
title: "保存失败,请重试",
type: "error",
});
}
},
},
};
</script>
<style scoped lang="scss">
.page {
background-color: rgb(255, 255, 255);
overflow-y: auto;
width: 100%;
overflow-x: hidden;
height: 100%;
.group_2 {
padding: 0.49rem 0.29rem 1.15rem;
overflow-y: auto;
.text_3 {
align-self: center;
color: rgb(51, 51, 51);
font-size: 0.18rem;
font-family: PingFang;
line-height: 0.17rem;
}
.group_1 {
margin-top: 0.15rem;
.text_4 {
margin-top: 0.15rem;
color: rgb(153, 153, 153);
font-size: 0.14rem;
font-family: PingFang;
line-height: 0.13rem;
}
}
.group_5 {
margin-top: 0.4rem;
.text_5 {
align-self: flex-start;
color: rgb(51, 51, 51);
font-size: 0.15rem;
font-family: PingFang;
line-height: 0.14rem;
}
.view {
// border-bottom: solid 0.005rem rgb(153, 153, 153);
}
.text-wrapper {
// margin-top: 0.16rem;
}
}
.input-box {
padding: 20rpx 40rpx;
border-radius: 100rpx;
background: #f6f8f9;
}
.group_3 {
margin-top: 32rpx;
// height: 1.35rem;
position: relative;
.image_4 {
filter: drop-shadow(0px 0.015rem 0.03rem rgba(102, 102, 102, 0.23));
width: 0.68rem;
height: 0.68rem;
}
.text_7 {
color: rgb(51, 51, 51);
font-size: 32rpx;
font-family: PingFang;
line-height: 32rpx;
font-weight: bold;
// position: absolute;
// left: 0;
// top: 0;
}
.group_4.on,
.group_6.on {
image {
border: 2px solid #5ac0ff;
border-radius: 50%;
overflow: hidden;
}
}
.group_6 {
position: absolute;
left: 0.4rem;
top: 0.4rem;
.text_8 {
margin-top: 0.15rem;
color: rgb(51, 51, 51);
font-size: 0.14rem;
font-family: PingFang;
line-height: 0.13rem;
}
}
.group_4 {
position: absolute;
right: 0.4rem;
top: 0.4rem;
.text_9 {
margin-top: 0.15rem;
color: rgb(51, 51, 51);
font-size: 0.14rem;
font-family: PingFang;
line-height: 0.13rem;
}
}
}
.text-wrapper_1 {
padding: 0.15rem 0 0.14rem;
/* background-image: linear-gradient(90deg,
rgb(135, 230, 254) 0%,
rgb(91, 192, 254) 52%,
rgb(46, 155, 255) 100%);
box-shadow: 0px 0.03rem 0.09rem rgba(38, 122, 199, 0.34); */
background: #3cb5fb;
border-radius: 0.23rem;
}
.button {
margin: 66rpx 0 0;
}
}
}
.userList {
// padding-left: 0.16rem;
// padding-top: 0.3rem;
background: #f6f8fa;
height: 100vh;
.text-wrapper_1 {
padding: 0.15rem 0 0.14rem;
/* background-image: linear-gradient(90deg,
#87e6fe 0%,
#5bc0fe 52%,
#2e9bff 100%);
box-shadow: 0px 0.03rem 0.09rem rgba(38, 122, 199, 0.34); */
background: #3cb5fb;
border-radius: 0.23rem;
}
.button {
margin: 0.6rem 0.15rem 0;
}
.text_3 {
// align-self: center;
margin-top: 40rpx;
margin-left: 50rpx;
color: rgb(51, 51, 51);
font-size: 0.18rem;
font-family: PingFang;
line-height: 0.17rem;
}
.group_4 {
margin: 40rpx auto;
background: #fff;
width: calc(100% - 80rpx);
padding: 20rpx;
border-radius: 32rpx;
.list-item {
padding: 0.05rem 0.1rem 0.05rem;
border-bottom: 2rpx solid #f6f8f9;
&:last-child {
border-bottom: none;
}
.text_8 {
color: #000;
font-size: 32rpx;
font-family: PingFang;
line-height: 0.35rem;
// margin-right: 0.15rem;
}
.item-right {
display: flex;
align-items: center;
width: calc(100% - 150rpx);
position: relative;
}
.input-cover {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 1;
}
.right-img {
width: 12rpx;
height: 24rpx;
margin-left: 10rpx;
margin-top: 5rpx;
}
.text_26 {
color: #000;
font-size: 0.17rem;
font-family: PingFang;
line-height: 32rpx;
}
}
.group_5 {
margin-top: 0;
}
::v-deep .u-input__input {
font-size: 32rpx;
}
}
}
::v-deep .u-navbar-placeholder {
background: #f6f8fa;
// display: none;
height: 40rpx !important;
}
.preference-page {
background: #fff;
height: calc(100vh - 300rpx);
display: flex;
flex-direction: column;
.selected-count {
padding: 24rpx;
font-weight: bold;
font-size: 32rpx;
line-height: 48rpx;
color: rgba(0, 0, 0, 0.9);
.desc {
display: block;
font-weight: 400;
font-size: 24rpx;
color: rgba(0, 0, 0, 0.6);
line-height: 40rpx;
margin-top: 8rpx;
}
}
.selected-tags {
padding: 0 24rpx;
display: flex;
flex-wrap: wrap;
gap: 24rpx 24rpx;
.tag {
display: flex;
align-items: center;
background: #3cb5fb;
color: #fff;
border-radius: 64rpx;
padding: 20rpx;
font-size: 28rpx;
position: relative;
// max-width: 200rpx;
margin-right: 0;
margin-bottom: 0;
box-sizing: border-box;
justify-content: flex-start;
gap: 6rpx;
}
.close-btn {
font-size: 28rpx;
margin-right: 8rpx;
cursor: pointer;
color: #fff;
font-weight: bold;
line-height: 1;
display: inline-block;
width: 32rpx;
height: 32rpx;
text-align: center;
border-radius: 50%;
background: rgba(255, 255, 255, 0.18);
}
}
.line {
width: 100%;
height: 4rpx;
background: #f6f8f9;
margin-top: 24rpx;
margin-bottom: 44rpx;
}
.line-shadow {
width: 100%;
height: 2rpx;
background: #ffffff;
box-shadow: 0rpx -6rpx 12rpx 0rpx rgba(0, 0, 0, 0.05);
margin-top: 56rpx;
}
.all-tags {
padding: 0 24rpx;
.title {
font-weight: bold;
font-size: 32rpx;
color: rgba(0, 0, 0, 0.9);
margin-bottom: 18rpx;
}
.tags-list {
display: flex;
flex-wrap: wrap;
gap: 24rpx 24rpx;
margin-bottom: 32rpx;
align-content: flex-start;
.tag {
background: #f6f8f9;
color: #333;
border-radius: 200rpx;
padding: 20rpx 32rpx;
font-size: 28rpx;
&.selected {
background: #3cb5fb;
color: #fff;
}
}
.industry-tag {
background: #f0f4f8;
color: #333;
border-radius: 200rpx;
padding: 20rpx 32rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 28rpx;
text-align: center;
line-height: 28rpx;
box-sizing: border-box;
height: 64rpx;
&.selected {
background: #3cb5fb;
color: #fff;
}
}
}
.industry-tag-list {
height:776rpx;
overflow-y: auto;
}
}
.btn-box {
position: fixed;
bottom: 62rpx;
left: 0;
right: 0;
padding: 0 24rpx;
}
.button {
margin: 48rpx 0 0 0;
width: 100%;
}
}
</style>