flat: 修改字体和添加图标

This commit is contained in:
史典卓
2025-07-09 15:15:37 +08:00
parent 36798d3054
commit 645c2552f6
45 changed files with 518 additions and 164 deletions

BIN
.DS_Store vendored

Binary file not shown.

25
App.vue
View File

@@ -75,6 +75,29 @@ uni-modal,
@font-face {
font-family: DingTalk JinBuTi;
src: url('@/static/font/DingTalk JinBuTi_min.ttf');
src: url('/static/font/DingTalk JinBuTi_min.woff2') format('woff2');
font-display: swap;
}
@font-face {
font-family: PingFangSC-Regular;
src: url('/static/font/PingFangSC-Regular.woff2') format('woff2');
font-display: swap;
}
@font-face {
font-family: PingFangSC-Medium;
src: url('/static/font/PingFangSC-Medium.woff2') format('woff2');
font-display: swap;
}
@font-face {
font-family: DIN-Medium;
src: url('/static/font/DIN-Medium.woff2') format('woff2');
font-display: swap;
}
body {
font-family: 'PingFangSC-Regular', 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
}
</style>

View File

@@ -110,9 +110,11 @@ const handleScrollToLower = () => {
align-items: center;
padding: 7rpx 3rpx;
.header-title {
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
color: #000000;
font-weight: bold;
.subtitle-text {
font-family: 'PingFangSC-Regular', 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
font-weight: 400;
font-size: 28rpx;
color: #333333;

View File

@@ -276,11 +276,13 @@ ol {
align-items: center;
justify-content: space-between
.title-text
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
max-width: calc(100% - 160rpx);
overflow: hidden
text-overflow: ellipsis
font-size: 30rpx
.card-salary
font-family: DIN-Medium;
font-size: 28rpx;
color: #FF6E1C;

View File

@@ -9,8 +9,12 @@
<dict-tree-Label class="mar_ri10" dictType="industry" :value="job.industry"></dict-tree-Label>
<dict-Label dictType="scale" :value="job.scale"></dict-Label>
</view>
<view>
<text class="color_256BFA fs_14">在招职位·{{ job.totalRecruitment || '-' }}</text>
<view class="ris">
<text class="fs_14">
在招职位·
<text class="color_256BFA">{{ job.totalRecruitment || '-' }}</text>
</text>
</view>
</view>
<view class="card-tags">
@@ -76,6 +80,7 @@ function nextDetail(company) {
justify-content: space-between
align-items: flex-start
.company{
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
font-weight: 500;
font-size: 32rpx;
color: #333333;
@@ -97,6 +102,7 @@ function nextDetail(company) {
display: flex
flex-wrap: wrap
.tag{
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
width: fit-content;
height: 30rpx;
background: #F4F4F4;
@@ -121,4 +127,7 @@ function nextDetail(company) {
color: #6C7282;
}
}
.ris{
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
}
</style>

View File

@@ -99,11 +99,13 @@ function nextDetail(job) {
justify-content: space-between
align-items: flex-start
.company{
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
font-weight: 500;
font-size: 32rpx;
color: #333333;
}
.salary{
font-family: DIN-Medium;
font-weight: 500;
font-size: 28rpx;
color: #4C6EFB;
@@ -120,6 +122,7 @@ function nextDetail(job) {
display: flex
flex-wrap: wrap
.tag{
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
width: fit-content;
height: 30rpx;
background: #F4F4F4;

View File

@@ -88,6 +88,7 @@ function seeDetail(item) {
font-weight: 600;
font-size: 32rpx;
color: #333333;
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
}
.card-text{
margin-top: 16rpx

View File

@@ -251,6 +251,7 @@ image {
font-weight: 500;
font-size: 32rpx;
color: #333333;
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
}
.row2{
font-weight: 400;

View File

@@ -54,7 +54,7 @@
<text>{{ userInfo.salaryMin / 1000 }}k-{{ userInfo.salaryMax / 1000 }}k</text>
</view>
<view class="mys-text">
<text>期望工</text>
<text>期望工</text>
<text>青岛市-</text>
<dict-Label dictType="area" :value="Number(userInfo.area)"></dict-Label>
</view>
@@ -91,6 +91,7 @@ image{
padding: 52rpx 48rpx
.tops-left{
.name{
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
font-weight: 600;
font-size: 44rpx;
color: #333333;
@@ -140,6 +141,7 @@ image{
.mys-info{
padding: 28rpx
.mys-h4{
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
font-weight: 600;
font-size: 32rpx;
color: #000000;

View File

@@ -113,10 +113,7 @@
v-for="(item, index) in matchingDegree"
:key="index"
class="progress-item"
:class="{
active: index < currentStep - 1,
half: index < currentStep && currentStep < index + 1, // 半条
}"
:class="getClass(index)"
/>
</view>
</view>
@@ -263,6 +260,21 @@ function jobCollection() {
});
}
}
function getClass(index) {
const current = currentStep.value;
const floorIndex = Math.floor(current);
if (index < floorIndex) {
return 'active';
} else if (index === floorIndex) {
const decimal = current % 1;
const percent = Math.round(decimal * 100);
return `half${percent}`;
} else {
return '';
}
}
</script>
<style lang="stylus" scoped>
@@ -313,17 +325,19 @@ image {
}
/* 当前进度进行中的格子 */
.progress-item.half::before {
content: '';
position: absolute;
left: 0;
top: 0;
bottom: 0;
width: 100%; /* 根据 currentStep 小数动态控制 */
// background: linear-gradient(to right, #256bfa, #8c68ff);
background: linear-gradient(to right, #256bfa 50%, #eaeaea 50%);
border-radius: 24rpx;
}
for i in 0..100
.progress-item.half{i}::before
content ''
position absolute
left 0
top 0
bottom 0
width 100%
background linear-gradient(to right, #256bfa (i)%, #eaeaea (i)%)
border-radius 24rpx
.card-footer{
.footer-title{
font-weight: 600;

View File

@@ -125,6 +125,7 @@ onUnmounted(() => {
}
.time-block {
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
text-align: center;
font-weight: 500;
font-size: 28rpx;

View File

@@ -141,6 +141,7 @@ function getList(type = 'add', loading = true) {
color: #666D7F;
}
.active{
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
font-weight: 500;
font-size: 32rpx;
color: #000000;
@@ -167,6 +168,7 @@ function getList(type = 'add', loading = true) {
}
}
.card-Title{
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
font-weight: 500;
font-size: 32rpx;
line-height: 70rpx

View File

@@ -373,6 +373,7 @@ function getNextDates({ startDate = '', count = 6 }) {
flex-wrap: nowrap
overflow: hidden
.weel-days{
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
display: flex
justify-content: center
flex-direction: column
@@ -426,6 +427,7 @@ function getNextDates({ startDate = '', count = 6 }) {
box-shadow: 0rpx 0rpx 8rpx 0rpx rgba(0,0,0,0.04);
border-radius: 20rpx 20rpx 20rpx 20rpx;
.card-title{
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
font-weight: 500;
font-size: 32rpx;
color: #333333;
@@ -450,6 +452,7 @@ function getNextDates({ startDate = '', count = 6 }) {
font-weight: 500;
font-size: 48rpx;
color: #333333;
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
}
.left-dateDay{
font-weight: 400;

View File

@@ -90,6 +90,7 @@ const paging = ref(null);
// 实时过滤
const filteredList = computed(() => {
// console.log(tabeList.value);
if (!searchText.value) return tabeList.value;
const list = tabeList.value.filter((item) => !item.isTitle && item.title.includes(searchText.value));
const [result, lastData] = $api.insertSortData(list);

View File

@@ -95,14 +95,29 @@
<dict-Label dictType="experience" :value="job.experience"></dict-Label>
</view>
</view>
<view class="falls-card-company">{{ job.companyName }}</view>
<view class="falls-card-company">
青岛
<dict-Label dictType="area" :value="job.jobLocationAreaCode"></dict-Label>
</view>
<view class="falls-card-pepleNumber">
<view>{{ job.postingDate || '发布日期' }}</view>
<view>{{ vacanciesTo(job.vacancies) }}</view>
<view>
<image class="point2" src="/static/icon/pintDate.png"></image>
<view class="fl_1">
{{ job.postingDate || '发布日期' }}
</view>
</view>
<view>
<image class="point3" src="/static/icon/pointpeople.png"></image>
<view class="fl_1">
{{ vacanciesTo(job.vacancies) }}
</view>
</view>
</view>
<view class="falls-card-company2">
<image class="point3" src="/static/icon/point3.png"></image>
<view class="fl_1">
{{ job.companyName }}
</view>
</view>
<!-- <view class="falls-card-matchingrate">
<view class=""><matchingDegree :job="job"></matchingDegree></view>
@@ -133,13 +148,14 @@
<!-- 筛选 -->
<select-filter ref="selectFilterModel"></select-filter>
<view class="maskFristEntry" v-if="maskFristEntry">
<!-- <view class="maskFristEntry" v-if="maskFristEntry">
<view class="entry-content">
<text>左滑查看视频</text>
<image class="indicateArrow" src="/static/gif/indicateArrow.gif"></image>
<text class="text1">左滑查看视频</text>
<text class="text2">左滑查看视频</text>
<view class="goExperience">去体验</view>
<view class="maskFristEntry-Close" @click="closeFristEntry">1</view>
</view>
<view class="maskFristEntry-Close" @click="closeFristEntry"></view>
</view>
</view> -->
</view>
</template>
@@ -191,23 +207,6 @@ const rangeOptions = ref([
{ value: 2, text: '最新发布' },
]);
const isLoaded = ref(false);
// const jobList = ref([
// { name: '销售顾问', highlight: true },
// { name: '销售管理', highlight: true },
// { name: '销售工程师', highlight: true },
// { name: '算法工程师', highlight: false },
// { name: '生产经理', highlight: false },
// { name: '市场策划', highlight: false },
// { name: '商务服务', highlight: false },
// { name: '客服', highlight: false },
// { name: '创意总监', highlight: false },
// ]);
onLoad(() => {
// 判断浏览器是否有 fristEntry 第一次进入
let fristEntry = uni.getStorageSync('fristEntry') || true; // 默认未读
maskFristEntry.value = fristEntry;
});
const { columnCount, columnSpace } = useColumnCount(() => {
pageState.pageSize = 10 * (columnCount.value - 1);
@@ -218,15 +217,6 @@ const { columnCount, columnSpace } = useColumnCount(() => {
});
});
function closeFristEntry() {
uni.setStorageSync('fristEntry', false);
maskFristEntry.value = false;
}
// onLoad(() => {
// getJobRecommend('refresh');
// });
async function loadData() {
try {
if (isLoaded.value) return;
@@ -461,50 +451,84 @@ defineExpose({ loadData });
</script>
<style lang="stylus" scoped>
.maskFristEntry
position: fixed;
right: 20rpx;
bottom: calc(50% - 200rpx);
// background: rgba(0,0,0,0.3)
.entry-content
display: flex;
align-items: center
text
font-size: 36rpx
background: linear-gradient(273.34deg, #356CFA 3.58%, #A47FFD 85.84%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text; /* 有些浏览器兼容用 */
text-fill-color: transparent;
.indicateArrow
height: 76rpx
width: 68rpx
.maskFristEntry-Close
position: absolute;
left: calc(50% - 10rpx);
top: 86rpx
width: 42rpx
height: 42rpx
background: linear-gradient(273.34deg, #356CFA 3.58%, #A47FFD 85.84%);
border-radius: 50%;
.maskFristEntry-Close::before
position: absolute;
left: calc( 50% - 2rpx)
top: calc( 50% - 10rpx)
transform: rotate(45deg);
content: ''
background: #FFFFFF
width: 4rpx
height: 20rpx
.maskFristEntry-Close::after
position: absolute;
left: calc( 50% - 2rpx)
top: calc( 50% - 10rpx)
transform: rotate(-45deg);
content: ''
background: #FFFFFF
width: 4rpx
height: 20rpx
// .maskFristEntry
// position: fixed;
// // right: 20rpx;
// // bottom: calc(50% - 200rpx);
// height: 100vh
// width: 100vw
// background: rgba(0,0,0,0.3)
// .entry-content
// display: flex;
// align-items: center
// position: absolute
// left: 50%
// top: 40%
// transform: translate(-50%, -50%)
// flex-direction: column
// background: url('@/static/imgs/fristEntry.png') 0 0 no-repeat;
// background-size: 100% 100%;
// width: 480rpx
// height: 584rpx
// // padding-left: 80rpx
// .text1
// margin-top: 370rpx
// font-size: 36rpx
// background: linear-gradient(273.34deg, #356CFA 3.58%, #A47FFD 85.84%);
// -webkit-background-clip: text;
// -webkit-text-fill-color: transparent;
// background-clip: text; /* 有些浏览器兼容用 */
// text-fill-color: transparent;
// padding-left: 28rpx
// .text2
// padding-left: 28rpx
// margin-top: 8rpx
// font-size: 20rpx;
// color: #666666;
// text-align: center;
// .indicateArrow
// height: 76rpx
// width: 68rpx
// .indicatefristEntry
// width: 244rpx
// height: 244rpx
// .goExperience
// margin-left: 28rpx
// margin-top: 28rpx
// width: 160rpx;
// height: 60rpx;
// background: linear-gradient( 180deg, #9974FD 0%, #286BFA 100%);
// border-radius: 12rpx 12rpx 12rpx 12rpx;
// font-size: 28rpx;
// color: #FFFFFF;
// text-align: center;
// line-height: 60rpx
// .maskFristEntry-Close
// position: absolute;
// left: calc(50% - 10rpx);
// bottom: -130rpx
// width: 42rpx
// height: 42rpx
// background: linear-gradient(273.34deg, #356CFA 3.58%, #A47FFD 85.84%);
// border-radius: 50%;
// .maskFristEntry-Close::before
// position: absolute;
// left: calc( 50% - 2rpx)
// top: calc( 50% - 10rpx)
// transform: rotate(45deg);
// content: ''
// background: #FFFFFF
// width: 4rpx
// height: 20rpx
// .maskFristEntry-Close::after
// position: absolute;
// left: calc( 50% - 2rpx)
// top: calc( 50% - 10rpx)
// transform: rotate(-45deg);
// content: ''
// background: #FFFFFF
// width: 4rpx
// height: 20rpx
.app-container
@@ -545,6 +569,7 @@ defineExpose({ loadData });
color: #B5B5B5;
width: 100%
.chart
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
width: 170rpx;
background: radial-gradient( 0% 56% at 87% 61%, rgba(255,255,255,0.82) 0%, rgba(255,255,255,0.47) 100%);
box-shadow: 0rpx 8rpx 40rpx 0rpx rgba(210,210,210,0.14);
@@ -568,6 +593,7 @@ defineExpose({ loadData });
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #FFFFFF;
.card-title
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
font-weight: 600;
font-size: 32rpx;
color: #000000;
@@ -589,6 +615,7 @@ defineExpose({ loadData });
.nav-filter
padding: 16rpx 28rpx 0 28rpx
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
.filter-top
display: flex
justify-content: space-between;
@@ -615,6 +642,7 @@ defineExpose({ loadData });
font-size: 36rpx;
color: #000000;
.jobs-add
font-family: 'PingFangSC-Regular', 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
display: flex
align-items: center;
justify-content: center;
@@ -628,6 +656,7 @@ defineExpose({ loadData });
padding: 24rpx 0
.btm-left
display: flex
font-family: 'PingFangSC-Regular', 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
.filterbtm
font-weight: 400;
font-size: 32rpx;
@@ -639,6 +668,7 @@ defineExpose({ loadData });
font-size: 32rpx;
color: #256BFA;
.btm-right
font-family: 'PingFangSC-Regular', 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
font-weight: 400;
font-size: 32rpx;
color: #6C7282;
@@ -662,13 +692,14 @@ defineExpose({ loadData });
.falls-card
padding: 30rpx;
.falls-card-title
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
color: #606060;
line-height: 49rpx;
text-align: left;
word-break:break-all
font-weight: 500;
font-size: 32rpx;
color: #333333;
margin-top: 10rpx
.falls-card-pay
// height: 50rpx;
word-break:break-all
@@ -678,6 +709,7 @@ defineExpose({ loadData });
align-items: end;
position: relative
.pay-text
font-family: DIN-Medium;
color: #4C6EFB;
padding-right: 10rpx
font-weight: 500;
@@ -703,23 +735,34 @@ defineExpose({ loadData });
font-size: 24rpx;
color: #6C7282;
text-align: center;
margin-top: 14rpx;
margin-top: 20rpx;
white-space: nowrap
.falls-card-company,.falls-card-pepleNumber
margin-top: 20rpx;
font-size: 24rpx;
color: #606060;
color: #999999;
line-height: 25rpx;
text-align: left;
.falls-card-pepleNumber
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 38rpx;
margin-top: 20rpx;
font-weight: 400;
font-size: 28rpx;
color: #6C7282;
font-size: 24rpx;
color: #999999;
view
display:flex
align-items: center
.point2
margin: 4rpx 6rpx 0 2rpx
height: 22rpx
width: 22rpx
.point3
margin: 4rpx 4rpx 0 0
height: 28rpx
width: 28rpx
.falls-card-matchingrate
margin-top: 10rpx;
display: flex;
@@ -728,6 +771,16 @@ defineExpose({ loadData });
font-size: 21rpx;
color: #4778EC;
text-align: left;
.falls-card-company2
margin-top: 8rpx;
font-size: 24rpx;
color: #999999;
text-align: left;
display: flex
.point3
margin: 4rpx 4rpx 0 0
height: 26rpx
width: 26rpx
// 推荐卡片
.recommend-card::before
position: absolute
@@ -739,20 +792,38 @@ defineExpose({ loadData });
height: 8rpx;
background: linear-gradient( to left, #9E74FD 0%, #256BFA 100%);
box-shadow: 0rpx 8rpx 40rpx 0rpx rgba(0,54,170,0.15);
.recommend-card::after
content ''
position absolute
z-index 0
left 50%
top 40%
transform: translate(-50%, -50%)
width 250rpx
height 250rpx
background url('@/static/icon/backAI.png') no-repeat center center
opacity 0.6
background-size contain
pointer-events none
filter: blur(3rpx)
.recommend-card
padding: 24rpx
padding 36rpx 24rpx
background: linear-gradient( 360deg, #DFE9FF 0%, #FFFFFF 52%, #FFFFFF 100%);
border-radius: 20rpx 20rpx 20rpx 20rpx;
position relative
box-shadow 0rpx 4rpx 8rpx 0rpx rgba(72, 89, 123, 0.3)
.card-content
position: relative;
z-index: 2;
.recommend-card-title
font-weight: 500;
font-size: 32rpx;
font-size: 28rpx;
color: #333333;
.recommend-card-tip
font-weight: 400;
font-size: 28rpx;
color: #6C7282;
margin-top: 20rpx
margin-top: 28rpx
.recommend-card-line
width: calc(100%);
height: 0rpx;
@@ -760,26 +831,26 @@ defineExpose({ loadData });
border: 2rpx dashed rgba(0,0,0,0.14);
margin-top: 50rpx
position: relative
.recommend-card-line::before
position: absolute
content: ''
left: 0
top: 0
transform: translate(-50% - 90rpx, -50%)
width: 28rpx;
height: 28rpx;
background: #F4F4F4;
border-radius: 50%;
.recommend-card-line::after
position: absolute
content: ''
right: 0
top: 0
transform: translate(50% + 90rpx, -50%)
width: 28rpx;
height: 28rpx;
background: #F4F4F4;
border-radius: 50%;
// .recommend-card-line::before
// position: absolute
// content: ''
// left: 0
// top: 0
// transform: translate(-50% - 90rpx, -50%)
// width: 28rpx;
// height: 28rpx;
// background: #F4F4F4;
// border-radius: 50%;
// .recommend-card-line::after
// position: absolute
// content: ''
// right: 0
// top: 0
// transform: translate(50% + 90rpx, -50%)
// width: 28rpx;
// height: 28rpx;
// background: #F4F4F4;
// border-radius: 50%;
.recommend-card-controll
display: flex
align-items: center
@@ -788,16 +859,16 @@ defineExpose({ loadData });
padding: 0 6rpx;
.controll-yes
width: 124rpx;
height: 70rpx;
height: 60rpx;
background: rgba(37,107,250,0.1);
border-radius: 12rpx 12rpx 12rpx 12rpx;
text-align: center;
line-height:70rpx
line-height: 60rpx
color: #256BFA
.controll-no
width: 124rpx;
height: 66rpx;
line-height: 66rpx
height: 56rpx;
line-height: 56rpx
border-radius: 12rpx 12rpx 12rpx 12rpx;
border: 2rpx solid #DEDEDE;
font-weight: 400;

View File

@@ -55,6 +55,7 @@
</view>
<view class="title">{{ job.jobTitle }}</view>
<view class="desc">
<image class="point3" src="/static/icon/point3.png"></image>
<!-- <uni-icons type="location" size="14"></uni-icons> -->
<view class="descText">{{ job.companyName }}</view>
</view>
@@ -76,6 +77,7 @@ const { $api, navTo } = inject('globalFunction');
import { storeToRefs } from 'pinia';
import useUserStore from '@/stores/useUserStore';
import img from '@/static/icon/filter.png';
import useLocationStore from '@/stores/useLocationStore';
import { useColumnCount } from '@/hook/useColumnCount';
import { useRecommedIndexedDBStore, jobRecommender } from '@/stores/useRecommedIndexedDBStore.js';
const recommedIndexDb = useRecommedIndexedDBStore();
@@ -291,7 +293,7 @@ defineExpose({ loadData });
}
}
.job-info{
padding: 10rpx 24rpx 24rpx 24rpx
padding: 10rpx 10rpx 24rpx 24rpx
}
.salary
color: #4C6EFB;
@@ -299,12 +301,14 @@ defineExpose({ loadData });
display: flex
align-items: flex-start
justify-content: space-between
font-family: DIN-Medium;
.flame
margin-top: 4rpx
margin-right: 4rpx
width: 24rpx
height: 31rpx
.title
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
font-weight: 500;
font-size: 32rpx;
color: #333333;
@@ -316,7 +320,14 @@ defineExpose({ loadData });
color: #6C7282;
margin-top: 6rpx;
display: flex
align-items: flex-start
.descText{
flex: 1
white-space: pre-wrap
}
.point3{
margin: 4rpx 4rpx 0 0
height: 26rpx
width: 26rpx
}
</style>

View File

@@ -27,7 +27,18 @@
</swiper-item>
</swiper>
</view>
<Tabbar v-show="showTabbar" :currentpage="0"></Tabbar>
<!-- maskFristEntry -->
<view class="maskFristEntry" v-if="maskFristEntry">
<view class="entry-content">
<text class="text1">左滑查看视频</text>
<text class="text2">快去体验吧</text>
<view class="goExperience" @click="goExperience">去体验</view>
<view class="maskFristEntry-Close" @click="closeFristEntry">1</view>
</view>
</view>
</view>
</view>
</template>
@@ -45,11 +56,20 @@ import { storeToRefs } from 'pinia';
import { useReadMsg } from '@/stores/useReadMsg';
const { unreadCount } = storeToRefs(useReadMsg());
const showTabbar = ref(true);
const maskFristEntry = ref(false);
onLoad(() => {
// 判断浏览器是否有 fristEntry 第一次进入
// let fristEntry = uni.getStorageSync('fristEntry') === false ? false : true; // 默认未读
// maskFristEntry.value = fristEntry ;
maskFristEntry.value = true;
});
onShow(() => {
// 获取消息列表
useReadMsg().fetchMessages();
});
const state = reactive({
current: 0,
all: [{}],
@@ -69,7 +89,7 @@ function changeShowTabbar(val) {
showTabbar.value = val;
}
// 查看消息类型
//1 查看消息类型
function changeSwiperType(e) {
const index = e.detail.current;
state.current = index;
@@ -87,11 +107,20 @@ function handleTabChange(index) {
}
}
// 查看消息类型
function changeSwiperMsgType(e) {
const currented = e.detail.current;
state.current = currented;
}
// mask
function closeFristEntry() {
uni.setStorageSync('fristEntry', false);
maskFristEntry.value = false;
}
function goExperience() {
closeFristEntry();
state.current = 1;
}
</script>
<style lang="stylus" scoped>
@@ -170,4 +199,86 @@ function changeSwiperMsgType(e) {
width: 100%
display: flex;
flex-direction: column;
// mask:
.maskFristEntry
position: fixed;
// right: 20rpx;
// bottom: calc(50% - 200rpx);
height: 100vh
width: 100vw
background: rgba(0,0,0,0.3)
.entry-content
display: flex;
align-items: center
position: absolute
left: 50%
top: 35%
transform: translate(-50%, -50%)
flex-direction: column
background: url('@/static/imgs/fristEntry.png') 0 0 no-repeat;
background-size: 100% 100%;
width: 480rpx
height: 584rpx
// padding-left: 80rpx
.text1
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
margin-top: 370rpx
font-size: 36rpx
background: linear-gradient(273.34deg, #356CFA 3.58%, #A47FFD 85.84%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text; /* 有些浏览器兼容用 */
text-fill-color: transparent;
padding-left: 28rpx
.text2
padding-left: 28rpx
margin-top: 8rpx
font-size: 20rpx;
color: #666666;
text-align: center;
.indicateArrow
height: 76rpx
width: 68rpx
.indicatefristEntry
width: 244rpx
height: 244rpx
.goExperience
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
margin-left: 28rpx
margin-top: 28rpx
width: 160rpx;
height: 60rpx;
background: linear-gradient( 180deg, #9974FD 0%, #286BFA 100%);
border-radius: 12rpx 12rpx 12rpx 12rpx;
font-size: 28rpx;
color: #FFFFFF;
text-align: center;
line-height: 60rpx
.maskFristEntry-Close
position: absolute;
left: calc(50% - 10rpx);
bottom: -130rpx
width: 42rpx
height: 42rpx
background: linear-gradient(273.34deg, #356CFA 3.58%, #A47FFD 85.84%);
border-radius: 50%;
.maskFristEntry-Close::before
position: absolute;
left: calc( 50% - 2rpx)
top: calc( 50% - 10rpx)
transform: rotate(45deg);
content: ''
background: #FFFFFF
width: 4rpx
height: 20rpx
.maskFristEntry-Close::after
position: absolute;
left: calc( 50% - 2rpx)
top: calc( 50% - 10rpx)
transform: rotate(-45deg);
content: ''
background: #FFFFFF
width: 4rpx
height: 20rpx
</style>

View File

@@ -3,7 +3,7 @@
<tabcontrolVue :current="tabCurrent">
<template v-slot:tab0>
<view class="login-content">
<image class="logo" src="../../static/logo.png"></image>
<image class="logo" src="@/static/logo.png"></image>
<view class="logo-title">就业</view>
</view>
<view class="btns">
@@ -245,6 +245,18 @@ function getTreeselect() {
// 登录
function loginTest() {
// uni.share({
// provider: 'weixin',
// scene: 'WXSceneSession',
// type: 2,
// imageUrl: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/uni@2x.png',
// success: function (res) {
// console.log('success:' + JSON.stringify(res));
// },
// fail: function (err) {
// console.log('fail:' + JSON.stringify(err));
// },
// });
const params = {
username: 'test',
password: 'test',
@@ -453,4 +465,4 @@ function complete() {
color: #FFFFFF;
text-align: center;
line-height: 90rpx
</style>
</style>

View File

@@ -157,6 +157,7 @@ function getUserstatistics() {
padding: 36rpx 36rpx 64rpx 36rpx
border-radius: 20rpx 20rpx 0rpx 0rpx;
position: relative
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
.top-title{
font-weight: 500;
font-size: 32rpx;
@@ -218,6 +219,7 @@ function getUserstatistics() {
margin: 32rpx 16rpx 32rpx 10rpx
}
.left-text{
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
font-weight: 500;
font-size: 28rpx;
color: #333333;
@@ -252,8 +254,9 @@ function getUserstatistics() {
justify-content: center
align-items: center
.mini-num{
font-family: DIN-Medium;
font-weight: 500;
font-size: 44rpx;
font-size: 46rpx;
color: #333333;
}
.mini-text{
@@ -283,6 +286,7 @@ function getUserstatistics() {
flex-direction: column;
align-items: flex-start;
.userinfo-ls-name
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
font-weight: 600;
font-size: 40rpx;
color: #333333;

View File

@@ -118,6 +118,7 @@ function changeSwiperMsgType(e) {
font-weight: bold;
}
.header-btnLf {
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
display: flex;
justify-content: flex-start;
align-items: center;

View File

@@ -133,6 +133,8 @@ defineExpose({ loadData });
display: flex;
justify-content: space-between;
width: 100%
text
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
.card-time
font-weight: 400;
font-size: 28rpx;

View File

@@ -119,6 +119,8 @@ defineExpose({ loadData });
display: flex;
justify-content: space-between;
width: 100%
text
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
.card-time
font-weight: 400;
font-size: 28rpx;

View File

@@ -294,6 +294,7 @@ defineExpose({ loadData, handleFilterConfirm });
background: #F6F6F6;
border-radius: 12rpx 12rpx 12rpx 12rpx;
.active
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
color: #256BFA;
background: #E9F0FF;
border-radius: 12rpx 12rpx 12rpx 12rpx;
@@ -330,6 +331,7 @@ defineExpose({ loadData, handleFilterConfirm });
margin-right: 32rpx;
white-space: nowrap
.active
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
font-weight: 500;
font-size: 36rpx;
color: #000000;

View File

@@ -398,6 +398,7 @@ defineExpose({ loadData, handleFilterConfirm });
margin-right: 32rpx;
white-space: nowrap
.active
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
font-weight: 500;
font-size: 36rpx;
color: #000000;

View File

@@ -33,7 +33,14 @@
donted: index === state.dont,
}"
></view>
<view class="item-text">{{ item.stationName }}</view>
<view
class="item-text"
:class="{
textActive: index === state.dont,
}"
>
{{ item.stationName }}
</view>
</view>
</view>
</view>
@@ -185,7 +192,6 @@ function openFilter() {
pageState.search[key] = value.join(',');
}
showFilter.value = false;
console.log(pageState.search);
getJobList('refresh');
},
cancel: () => {
@@ -408,44 +414,43 @@ defineExpose({ loadData, handleFilterConfirm });
border-radius: 50%;
position: relative;
margin-bottom: 20rpx;
.donted::after
.item-dont::before
position: absolute;
content: '';
color: #FFFFFF;
font-size: 20rpx;
text-align: center;
left: 0;
top: -5rpx;
left: 50%;
top: 50%;
transform: translate(-50%, -50%)
width: 27rpx;
height: 27rpx;
line-height: 28rpx;
background: blue !important;
background: #F7B000;
border-radius: 50%;
.dontstart::after
.item-dont::after
position: absolute;
content: '始';
color: #FFFFFF;
// content: '始';
content: '';
font-size: 20rpx;
text-align: center;
left: 0;
top: -5rpx;
width: 27rpx;
height: 27rpx;
line-height: 28rpx;
background: #666666;
left: 50%;
top: 50%;
transform: translate(-50%, -50%)
width: 14rpx;
height: 14rpx;
background: #ffffff;
border-radius: 50%;
// .dontend::after
// .donted::after
// position: absolute;
// content: '';
// color: #FFFFFF;
// content: '';
// font-size: 20rpx;
// text-align: center;
// left: 0;
// top: -5rpx;
// width: 27rpx;
// height: 27rpx;
// line-height: 28rpx;
// background: #666666;
// left: 50%;
// top: 50%;
// transform: translate(-50%, -50%)
// width: 14rpx;
// height: 14rpx;
// background: #F7B000 !important;
// border-radius: 50%;
.item-text
position: absolute
@@ -458,6 +463,8 @@ defineExpose({ loadData, handleFilterConfirm });
text-align: center;
white-space: nowrap
transform: translate(-50% + 8rpx, 0)
.textActive
color: #F7B000
.three-item:nth-child(2n)
.item-text
margin-top: -90rpx;
@@ -468,7 +475,7 @@ defineExpose({ loadData, handleFilterConfirm });
top: -17rpx;
width: 100%;
height: 17rpx;
background: #FFCB47;
background: #F7B000;
border-radius: 17rpx 17rpx 17rpx 17rpx;
z-index: 1;
.nearby-list
@@ -503,6 +510,7 @@ defineExpose({ loadData, handleFilterConfirm });
margin-right: 32rpx;
white-space: nowrap
.active
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
font-weight: 500;
font-size: 36rpx;
color: #000000;

View File

@@ -276,6 +276,7 @@ defineExpose({ loadData, handleFilterConfirm });
background: #F6F6F6;
border-radius: 12rpx 12rpx 12rpx 12rpx;
.active
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
color: #256BFA;
background: #E9F0FF;
border-radius: 12rpx 12rpx 12rpx 12rpx;
@@ -311,6 +312,7 @@ defineExpose({ loadData, handleFilterConfirm });
margin-right: 32rpx;
white-space: nowrap
.active
font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif;
font-weight: 500;
font-size: 36rpx;
color: #000000;

BIN
static/.DS_Store vendored

Binary file not shown.

BIN
static/font/.DS_Store vendored

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
static/gif/.DS_Store vendored

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

BIN
static/icon/pintDate.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
static/icon/point3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
static/icon/pointpeople.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 248 KiB

BIN
static/imgs/fristEntry.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

@@ -47,8 +47,8 @@ const useLocationStore = defineStore("location", () => {
longitude: 120.382665,
latitude: 36.066938
}
longitudeVal.value = res.longitude
latitudeVal.value = res.latitude
longitudeVal.value = resd.longitude
latitudeVal.value = resd.latitude
msg('用户位置获取失败,使用模拟定位')
resole(resd)
},

BIN
unpackage/.DS_Store vendored

Binary file not shown.

Binary file not shown.

Binary file not shown.

63
utils/wechatShare.js Normal file
View File

@@ -0,0 +1,63 @@
import wx from 'weixin-js-sdk'
import config from "@/config.js"
export function setupWechatShare({
title,
desc,
link,
imgUrl
}) {
// 通过后端接口获取签名(必须)
fetch(`${config.baseUrl}/wechat-signature?url=${encodeURIComponent(location.href.split('#')[0])}`)
.then(res => res.json())
.then(({
appId,
timestamp,
nonceStr,
signature
}) => {
wx.config({
debug: false,
appId,
timestamp,
nonceStr,
signature,
jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData']
})
wx.ready(() => {
// 分享给好友
wx.updateAppMessageShareData({
title,
desc,
link,
imgUrl,
success: () => {
console.log('分享配置成功')
}
})
// 分享到朋友圈
wx.updateTimelineShareData({
title,
link,
imgUrl,
success: () => {
console.log('朋友圈分享配置成功')
}
})
})
})
}
// 使用
// import { setupWechatShare } from '@/utils/wechatShare.js'
// onMounted(() => {
// setupWechatShare({
// title: '职位推荐:高级前端工程师',
// desc: '某知名互联网公司年薪40W点击查看详情',
// link: location.href,
// imgUrl: 'https://yourcdn.com/job-thumbnail.png'
// })
// })