|
|
@@ -1,82 +1,103 @@
|
|
|
<template>
|
|
|
<div class="user-panel">
|
|
|
- <!-- 顶部极淡粉色渐变背景 -->
|
|
|
- <div class="top-bg"></div>
|
|
|
-
|
|
|
- <!-- 用户信息区 -->
|
|
|
- <div class="u-auth flex">
|
|
|
- <div class="avatar">
|
|
|
- <img :src="logo2" />
|
|
|
- </div>
|
|
|
- <div class="u-info">
|
|
|
- <p class="name">{{ userInfo.nickName }}</p>
|
|
|
- <p class="links">{{ userInfo.customerName }}</p>
|
|
|
- <!-- <p @click="onPath('/breg')" class="links">切换企业账号<span class="divider">|</span>注册</p> -->
|
|
|
+ <!-- 上半部分:背景颜色为 #FFF6F0,宽度为 248px,四个角全部倒 12px 圆角 -->
|
|
|
+ <div class="upper-part">
|
|
|
+ <!-- 头部用户信息区 -->
|
|
|
+ <div class="u-auth">
|
|
|
+ <!-- 上行:头像与姓名账号水平垂直居中对齐 -->
|
|
|
+ <div class="u-top-row flex">
|
|
|
+ <div class="avatar-box">
|
|
|
+ <div class="avatar">
|
|
|
+ <img :src="logo2" class="yellow-border" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="u-info">
|
|
|
+ <div class="u-name-row flex">
|
|
|
+ <span class="name">{{ userInfo.user?.nickName }}</span>
|
|
|
+ <span class="member-tag">企业会员</span>
|
|
|
+ </div>
|
|
|
+ <p class="account-num">{{ userInfo.user?.phonenumber }}</p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 下行:公司单独一行,文字用 12px 且加粗,左侧与上面的头像最左侧对齐 -->
|
|
|
+ <p class="company-name">公司:{{ userInfo.companyName }}</p>
|
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
- <!-- 会员卡片 -->
|
|
|
- <div class="member-card">
|
|
|
- <div class="c-tag">企业会员</div>
|
|
|
- <div class="c-main flex-between">
|
|
|
- <div class="c-left">
|
|
|
- <div class="c-h">授信余额</div>
|
|
|
- <p class="credit-num">{{ salesInfo.creditAmount || '0.00' }}元</p>
|
|
|
+ <!-- 会员额度卡片:炫酷皇家金蓝渐变背景,金色数值,文字用 12px -->
|
|
|
+ <div class="member-card">
|
|
|
+ <div class="c-line flex-between">
|
|
|
+ <span class="c-lbl">可用余额</span>
|
|
|
+ <span class="c-val gold-text">¥{{ (parseInt(customerSalesInfoVo?.remainingQuota) || 0).toFixed(2) }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="c-line flex-between" style="margin-top: 5px">
|
|
|
+ <span class="c-lbl">授信额度</span>
|
|
|
+ <span class="c-val gold-text">¥{{ (parseInt(customerSalesInfoVo?.creditAmount) || 0).toFixed(2) }}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
- <!-- 订单状态统计 -->
|
|
|
- <div class="order-stats">
|
|
|
- <div class="stat-item">
|
|
|
- <div class="num">{{ countData.pendingapprovalCount || 0 }}</div>
|
|
|
- <div class="label">待审批</div>
|
|
|
- </div>
|
|
|
- <div class="stat-item">
|
|
|
- <div class="num">{{ countData.pendingPaymentCount || 0 }}</div>
|
|
|
- <div class="label">待付款</div>
|
|
|
- </div>
|
|
|
- <div class="stat-item">
|
|
|
- <div class="num">{{ countData.pendingShipmentCount || 0 }}</div>
|
|
|
- <div class="label">待发货</div>
|
|
|
- </div>
|
|
|
- <div class="stat-item">
|
|
|
- <div class="num">{{ countData.pendingReceiptCount || 0 }}</div>
|
|
|
- <div class="label">待收货</div>
|
|
|
+ <!-- 订单状态统计:增加醒目的暖沙金边框,文字与数字用 12px,带悬停效果 -->
|
|
|
+ <div class="order-stats">
|
|
|
+ <div class="stat-item">
|
|
|
+ <div class="num">{{ countData.pendingapprovalCount || 0 }}</div>
|
|
|
+ <div class="label">待审核</div>
|
|
|
+ </div>
|
|
|
+ <div class="stat-item">
|
|
|
+ <div class="num">{{ countData.pendingPaymentCount || 0 }}</div>
|
|
|
+ <div class="label">待付款</div>
|
|
|
+ </div>
|
|
|
+ <div class="stat-item">
|
|
|
+ <div class="num">{{ countData.pendingShipmentCount || 0 }}</div>
|
|
|
+ <div class="label">待发货</div>
|
|
|
+ </div>
|
|
|
+ <div class="stat-item">
|
|
|
+ <div class="num">{{ countData.pendingReceiptCount || 0 }}</div>
|
|
|
+ <div class="label">待收货</div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
- <!-- 企业工作台 -->
|
|
|
- <div class="tools-sec relative">
|
|
|
- <div class="t-h flex-between" @click="onPath(dataInfo.jumpLink)">
|
|
|
- <span>{{ dataInfo.moduleName }}</span>
|
|
|
- <i class="icon-more">></i>
|
|
|
- </div>
|
|
|
-
|
|
|
- <!-- 滑动翻页组件 -->
|
|
|
- <div class="t-slider-wrap">
|
|
|
- <div class="t-track" :style="{ transform: `translateX(-${currentPage * 100}%)` }">
|
|
|
- <div class="t-page" v-for="(item1, index1) in dataList" :key="index1">
|
|
|
- <div class="t-grid">
|
|
|
- <div class="t-i" v-for="(item2, index2) in item1" :key="index2" @click="onPath(item2.jumpLink)">
|
|
|
- <div v-if="item2.tagText" class="badge">{{ item2.tagText }}</div>
|
|
|
- <el-image class="t-icon" :src="item2.iconUrl" />
|
|
|
- <span>{{ item2.name }}</span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <!-- 下半部分:背景颜色为 #F7F8FC,宽度为 248px,四个角全部倒 12px 圆角 -->
|
|
|
+ <div class="lower-part">
|
|
|
+ <!-- 企业工作台:标题为 16px,单行菜单,文字用 12px,带悬停效果 -->
|
|
|
+ <div class="tools-sec">
|
|
|
+ <div class="t-h flex-between">
|
|
|
+ <span>企业工作台</span>
|
|
|
+ <span @click="onPath(dataInfo.jumpLink)" class="icon-more-btn">
|
|
|
+ <svg
|
|
|
+ width="12"
|
|
|
+ height="12"
|
|
|
+ viewBox="0 0 24 24"
|
|
|
+ fill="none"
|
|
|
+ stroke="currentColor"
|
|
|
+ stroke-width="2.5"
|
|
|
+ stroke-linecap="round"
|
|
|
+ stroke-linejoin="round"
|
|
|
+ >
|
|
|
+ <polyline points="9 18 15 12 9 6"></polyline>
|
|
|
+ </svg>
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ <div class="t-grid-single-row">
|
|
|
+ <div class="t-i" v-for="(item, index) in dataList" :key="index" @click="onPath(item.jumpLink)">
|
|
|
+ <img :src="item.iconUrl" class="t-icon" />
|
|
|
+ <span>{{ item.name }}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ </div>
|
|
|
|
|
|
- <!-- 滑动按钮 -->
|
|
|
- <div class="flip-btn prev-btn" v-show="currentPage > 0" @click="currentPage--">
|
|
|
- <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="#999" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
|
|
|
- <polyline points="15 18 9 12 15 6"></polyline>
|
|
|
- </svg>
|
|
|
+ <!-- 企业公告:标题为 16px,卡片高度增加,图片增大,描述用 12px,带悬停效果 -->
|
|
|
+ <div class="classroom-sec">
|
|
|
+ <div class="c-h flex-between">
|
|
|
+ <span class="class-title">企业公告</span>
|
|
|
</div>
|
|
|
- <div class="flip-btn next-btn" v-show="currentPage < 1 && dataList.length > 1" @click="currentPage++">
|
|
|
- <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="#999" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
|
|
|
- <polyline points="9 18 15 12 9 6"></polyline>
|
|
|
- </svg>
|
|
|
+ <div class="class-card flex-between">
|
|
|
+ <div class="class-left-info">
|
|
|
+ <span class="week-tag">2026年 第21周</span>
|
|
|
+ <p class="class-desc">防汛防汛特辑 | 工厂园区篇</p>
|
|
|
+ </div>
|
|
|
+ <div class="class-img-box">
|
|
|
+ <!-- <img src="/images/logo.png" class="class-img" /> -->
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -84,7 +105,7 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
-import { currentQuickEntryModule } from '@/api/home/index-enterprise';
|
|
|
+import { currentQuickEntryModule, getNewNotice } from '@/api/home/index-enterprise';
|
|
|
import { getEnterpriseInfo } from '@/api/pc/enterprise';
|
|
|
import { getInfo } from '@/api/login';
|
|
|
import { onPath } from '@/utils/siteConfig';
|
|
|
@@ -96,9 +117,17 @@ const userInfo = ref<any>({});
|
|
|
const countData = ref<any>({});
|
|
|
const salesInfo = ref<any>({});
|
|
|
|
|
|
+const customerSalesInfoVo = ref<any>({});
|
|
|
getEnterpriseInfo().then((res) => {
|
|
|
if (res.code == 200) {
|
|
|
- salesInfo.value = res.data.customerSalesInfoVo || {};
|
|
|
+ if (res.data && res.data.customerSalesInfoVo) {
|
|
|
+ customerSalesInfoVo.value = res.data.customerSalesInfoVo;
|
|
|
+ }
|
|
|
+ }
|
|
|
+});
|
|
|
+
|
|
|
+getNewNotice({}).then((res) => {
|
|
|
+ if (res.code == 200) {
|
|
|
}
|
|
|
});
|
|
|
|
|
|
@@ -106,7 +135,8 @@ currentQuickEntryModule({}).then((res) => {
|
|
|
if (res.code == 200) {
|
|
|
dataInfo.value = res.data;
|
|
|
if (res.data && res.data.items.length > 0) {
|
|
|
- dataList.value = chunkArray(res.data.items, 8);
|
|
|
+ dataList.value = res.data.items;
|
|
|
+ // dataList.value = chunkArray(res.data.items, 8);
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
@@ -121,8 +151,7 @@ const chunkArray = (arr, size) => {
|
|
|
|
|
|
getInfo().then((res) => {
|
|
|
if (res.code == 200) {
|
|
|
- userInfo.value = res.data.user;
|
|
|
- userInfo.value.customerName = res.data.customerName;
|
|
|
+ userInfo.value = res.data;
|
|
|
}
|
|
|
});
|
|
|
|
|
|
@@ -136,242 +165,386 @@ const currentPage = ref(0);
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
|
+/* 整个右侧面板:透明背景,去掉内边距以使上半部与下半部占满 248px */
|
|
|
.user-panel {
|
|
|
- background: #fff;
|
|
|
+ background: transparent;
|
|
|
+ width: 100%;
|
|
|
height: 100%;
|
|
|
- border-radius: 12px;
|
|
|
- position: relative;
|
|
|
- overflow: hidden;
|
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
|
+ box-sizing: border-box;
|
|
|
+ padding: 0;
|
|
|
+ gap: 10px;
|
|
|
}
|
|
|
|
|
|
-/* 顶部极淡粉色渐变背景 */
|
|
|
-.top-bg {
|
|
|
- position: absolute;
|
|
|
- top: 0;
|
|
|
- left: 0;
|
|
|
- right: 0;
|
|
|
- height: 120px;
|
|
|
- background: linear-gradient(to bottom, #fff5ee, #ffffff);
|
|
|
- z-index: 0;
|
|
|
+.flex {
|
|
|
+ display: flex;
|
|
|
}
|
|
|
|
|
|
-/* 内容提升层级 */
|
|
|
-.u-auth,
|
|
|
-.member-card,
|
|
|
-.card-benefits,
|
|
|
-.small-ad,
|
|
|
-.tools-sec {
|
|
|
- position: relative;
|
|
|
- z-index: 1;
|
|
|
+.flex-between {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+}
|
|
|
+
|
|
|
+/* ==================== 上半部分 ==================== */
|
|
|
+.upper-part {
|
|
|
+ background-color: #fff6f0; /* 上半部分背景色为 #FFF6F0 */
|
|
|
+ border-radius: 12px; /* 四个角全部倒 12px 圆角 */
|
|
|
+ padding: 12px 16px 10px 16px; /* 适当紧凑的内边距释放高度 */
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ gap: 6px; /* 适当紧凑的间距以释放高度 */
|
|
|
+ width: 100%;
|
|
|
+ box-sizing: border-box;
|
|
|
}
|
|
|
|
|
|
+/* 头部用户信息区:背景为透明 */
|
|
|
.u-auth {
|
|
|
- padding: 16px 16px 0;
|
|
|
- align-items: center;
|
|
|
- margin-bottom: 12px;
|
|
|
+ background: transparent;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ gap: 4px;
|
|
|
+ width: 100%;
|
|
|
+}
|
|
|
+
|
|
|
+/* 上行:头像与姓名账号水平垂直居中对齐 */
|
|
|
+.u-top-row {
|
|
|
+ display: flex;
|
|
|
+ align-items: center; /* 垂直居中对齐 */
|
|
|
+ gap: 10px;
|
|
|
+ width: 100%;
|
|
|
+}
|
|
|
+
|
|
|
+.avatar-box {
|
|
|
+ flex-shrink: 0;
|
|
|
}
|
|
|
|
|
|
-.avatar img {
|
|
|
- width: 48px;
|
|
|
- height: 48px;
|
|
|
+.avatar img.yellow-border {
|
|
|
+ width: 44px;
|
|
|
+ height: 44px;
|
|
|
border-radius: 50%;
|
|
|
- border: 2px solid #fff;
|
|
|
- box-shadow: 0 2px 6px rgba(255, 182, 193, 0.3);
|
|
|
- margin-right: 12px;
|
|
|
+ border: 2px solid #ffc107; /* 亮黄色细边框 */
|
|
|
+ box-sizing: border-box;
|
|
|
+ display: block;
|
|
|
+}
|
|
|
+
|
|
|
+/* 账号文字容器:背景透明 */
|
|
|
+.u-info {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ gap: 2px;
|
|
|
+ flex: 1;
|
|
|
+ min-width: 0;
|
|
|
+ text-align: left;
|
|
|
+ background: transparent;
|
|
|
+ padding: 0;
|
|
|
+}
|
|
|
+
|
|
|
+.u-name-row {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ gap: 6px;
|
|
|
}
|
|
|
|
|
|
.name {
|
|
|
font-weight: bold;
|
|
|
- font-size: 14px;
|
|
|
- color: #000;
|
|
|
+ font-size: 16px; /* 账号名称字体为 16px */
|
|
|
+ color: #111;
|
|
|
+ white-space: nowrap;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
}
|
|
|
|
|
|
-.links {
|
|
|
- font-size: 11px;
|
|
|
- color: #666;
|
|
|
- margin-top: 4px;
|
|
|
- cursor: pointer;
|
|
|
+.member-tag {
|
|
|
+ background: linear-gradient(135deg, #ffb300 0%, #ff8f00 100%);
|
|
|
+ color: #fff;
|
|
|
+ font-size: 9px;
|
|
|
+ font-weight: bold;
|
|
|
+ padding: 1px 4px;
|
|
|
+ border-radius: 3px;
|
|
|
+ white-space: nowrap;
|
|
|
+ transform: scale(0.95);
|
|
|
}
|
|
|
|
|
|
-.divider {
|
|
|
- margin: 0 6px;
|
|
|
- color: #e0e0e0;
|
|
|
+.account-num {
|
|
|
+ font-size: 14px; /* 手机号字体为 14px */
|
|
|
+ color: #555;
|
|
|
+ margin: 0;
|
|
|
}
|
|
|
|
|
|
+/* 下行:公司单独一行,文字用 12px 且加粗,超出长度截断显示 "...",左侧与上面的头像最左侧对齐 */
|
|
|
+.company-name {
|
|
|
+ font-size: 12px; /* 12px */
|
|
|
+ font-weight: bold; /* 加粗 */
|
|
|
+ color: #666;
|
|
|
+ margin: 0;
|
|
|
+ white-space: nowrap;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis; /* 超出显示 "..." */
|
|
|
+ display: block;
|
|
|
+ text-align: left;
|
|
|
+}
|
|
|
+
|
|
|
+/* 会员额度卡片:炫酷皇家金蓝渐变背景,文字用 12px */
|
|
|
.member-card {
|
|
|
- margin: 0 16px;
|
|
|
- background: linear-gradient(to right, #fdf0de, #fce3c5);
|
|
|
+ background: linear-gradient(135deg, #0a1c3a 0%, #15356e 100%); /* 炫酷皇家金蓝渐变 */
|
|
|
+ border: 1px solid rgba(255, 215, 0, 0.25); /* 淡淡的金沙框 */
|
|
|
border-radius: 8px;
|
|
|
- position: relative;
|
|
|
- padding: 22px 12px 12px; /* 增加顶部边距,避开标签 */
|
|
|
+ padding: 10px 12px;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ gap: 4px;
|
|
|
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
|
|
}
|
|
|
|
|
|
-.c-tag {
|
|
|
- position: absolute;
|
|
|
- top: 0;
|
|
|
- left: 0;
|
|
|
- background: #11366f;
|
|
|
- color: #f8d9a8;
|
|
|
- font-size: 10px;
|
|
|
- padding: 2px 8px;
|
|
|
- border-radius: 8px 0 8px 0;
|
|
|
- font-weight: bold;
|
|
|
+.c-line {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
}
|
|
|
|
|
|
-.c-h {
|
|
|
- font-weight: 800;
|
|
|
- font-size: 13px;
|
|
|
- color: #11366f; /* 使用标签背景色 */
|
|
|
- letter-spacing: 0.3px;
|
|
|
+.c-lbl {
|
|
|
+ font-size: 12px; /* 12px */
|
|
|
+ color: rgba(255, 255, 255, 0.8); /* 半透明优雅白标签 */
|
|
|
}
|
|
|
|
|
|
-.c-left p.credit-num {
|
|
|
- font-size: 20px;
|
|
|
- font-weight: 900;
|
|
|
- color: #e1251b; /* 使用红色 */
|
|
|
- margin-top: 4px;
|
|
|
- letter-spacing: 0.5px;
|
|
|
+/* 金色数值 */
|
|
|
+.gold-text {
|
|
|
+ font-size: 12px;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #ffd700 !important; /* 尊贵亮金色 */
|
|
|
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
|
|
|
}
|
|
|
|
|
|
+/* 订单统计:增加醒目的暖沙金边框,文字与数字均为 12px,加入悬停特效 */
|
|
|
.order-stats {
|
|
|
- margin: 12px 16px 18px;
|
|
|
- background: linear-gradient(135deg, rgba(255, 255, 255, 0.9) 0%, rgba(254, 242, 242, 0.8) 100%);
|
|
|
- border: 1px solid rgba(225, 37, 27, 0.1);
|
|
|
- border-radius: 10px;
|
|
|
+ background: #ffffff;
|
|
|
+ border-radius: 8px;
|
|
|
+ border: 1px solid #d9a05b; /* 醒目的暖沙金边框 */
|
|
|
display: flex;
|
|
|
justify-content: space-around;
|
|
|
- padding: 14px 0;
|
|
|
- box-shadow: 0 4px 15px rgba(225, 37, 27, 0.04);
|
|
|
+ padding: 8px 0;
|
|
|
}
|
|
|
|
|
|
.stat-item {
|
|
|
text-align: center;
|
|
|
flex: 1;
|
|
|
position: relative;
|
|
|
+ transition: all 0.2s ease-in-out;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+
|
|
|
+.stat-item:hover {
|
|
|
+ transform: translateY(-2px); /* 向上轻微悬浮效果 */
|
|
|
+}
|
|
|
+
|
|
|
+.stat-item:hover .label {
|
|
|
+ color: #e1251b; /* 标签文字变红 */
|
|
|
+}
|
|
|
+
|
|
|
+.stat-item:hover .num {
|
|
|
+ transform: scale(1.05); /* 数字微缩放 */
|
|
|
}
|
|
|
|
|
|
.stat-item:not(:last-child)::after {
|
|
|
content: '';
|
|
|
position: absolute;
|
|
|
right: 0;
|
|
|
- top: 20%;
|
|
|
- height: 60%;
|
|
|
+ top: 25%;
|
|
|
+ height: 50%;
|
|
|
width: 1px;
|
|
|
- background: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.05), transparent);
|
|
|
+ background: rgba(217, 160, 91, 0.4); /* 醒目的沙金色分割线 */
|
|
|
}
|
|
|
|
|
|
.stat-item .num {
|
|
|
- font-size: 16px;
|
|
|
- font-weight: 800;
|
|
|
+ font-size: 12px; /* 12px */
|
|
|
+ font-weight: bold;
|
|
|
color: #e1251b;
|
|
|
- font-family: Arial, sans-serif;
|
|
|
+ transition: transform 0.2s;
|
|
|
+ display: block;
|
|
|
}
|
|
|
|
|
|
.stat-item .label {
|
|
|
- font-size: 11px;
|
|
|
- color: #666;
|
|
|
- margin-top: 5px;
|
|
|
+ font-size: 12px; /* 12px */
|
|
|
+ color: #555;
|
|
|
+ margin-top: 2px;
|
|
|
+ transition: color 0.2s;
|
|
|
}
|
|
|
|
|
|
-.tools-sec {
|
|
|
- padding: 0 16px;
|
|
|
+/* ==================== 下半部分 ==================== */
|
|
|
+.lower-part {
|
|
|
+ background-color: #f7f8fc; /* 下半部分背景色为 #F7F8FC */
|
|
|
+ border-radius: 12px; /* 四个角全部倒 12px 圆角 */
|
|
|
+ padding: 12px 16px 16px 16px; /* 底部内间距调整为 16px,与左右对称 */
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ gap: 8px; /* 适当紧凑的间距以释放高度 */
|
|
|
flex: 1;
|
|
|
+ width: 100%;
|
|
|
+ box-sizing: border-box;
|
|
|
+}
|
|
|
+
|
|
|
+/* 企业工作台 */
|
|
|
+.tools-sec {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ gap: 6px;
|
|
|
}
|
|
|
|
|
|
.t-h {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ margin-bottom: 2px;
|
|
|
+}
|
|
|
+
|
|
|
+.t-h span {
|
|
|
font-weight: bold;
|
|
|
- font-size: 14px;
|
|
|
- color: #000;
|
|
|
- margin-bottom: 15px;
|
|
|
+ font-size: 16px; /* 企业工作台标题为 16px */
|
|
|
+ color: #111;
|
|
|
}
|
|
|
|
|
|
-.icon-more {
|
|
|
- font-size: 12px;
|
|
|
+/* 更多图标:增加悬停效果 */
|
|
|
+.icon-more-btn {
|
|
|
+ display: inline-flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
color: #999;
|
|
|
- font-style: normal;
|
|
|
+ transition: all 0.2s ease-in-out;
|
|
|
cursor: pointer;
|
|
|
}
|
|
|
|
|
|
-.t-slider-wrap {
|
|
|
- position: relative;
|
|
|
- /* overflow: hidden; */
|
|
|
- width: 100%;
|
|
|
-}
|
|
|
-
|
|
|
-.t-track {
|
|
|
- display: flex;
|
|
|
- transition: transform 0.3s ease-in-out;
|
|
|
+.icon-more-btn:hover {
|
|
|
+ color: #e1251b;
|
|
|
+ transform: translateX(3px);
|
|
|
}
|
|
|
|
|
|
-.t-page {
|
|
|
+.t-grid-single-row {
|
|
|
+ display: grid;
|
|
|
+ grid-template-columns: repeat(4, 1fr);
|
|
|
width: 100%;
|
|
|
- flex-shrink: 0;
|
|
|
}
|
|
|
|
|
|
-.flip-btn {
|
|
|
- position: absolute;
|
|
|
- top: 50%;
|
|
|
- transform: translateY(-50%);
|
|
|
- width: 20px;
|
|
|
- height: 20px;
|
|
|
- background: #fff;
|
|
|
- border-radius: 50%;
|
|
|
+.t-i {
|
|
|
display: flex;
|
|
|
+ flex-direction: column;
|
|
|
align-items: center;
|
|
|
- justify-content: center;
|
|
|
cursor: pointer;
|
|
|
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
|
|
|
- z-index: 10;
|
|
|
- transition: background 0.2s;
|
|
|
+ transition: all 0.2s ease-in-out;
|
|
|
}
|
|
|
-.flip-btn:hover {
|
|
|
- background: #f4f4f4;
|
|
|
+
|
|
|
+.t-i:hover {
|
|
|
+ transform: translateY(-2px); /* 悬停微动 */
|
|
|
}
|
|
|
-.prev-btn {
|
|
|
- left: 4px;
|
|
|
+
|
|
|
+.t-i:hover span {
|
|
|
+ color: #e1251b; /* 文字变红 */
|
|
|
}
|
|
|
-.next-btn {
|
|
|
- right: 4px;
|
|
|
+
|
|
|
+.t-i span {
|
|
|
+ font-size: 12px; /* 工具文字修改为 12px */
|
|
|
+ color: #444;
|
|
|
+ margin-top: 4px;
|
|
|
+ transition: color 0.2s;
|
|
|
}
|
|
|
|
|
|
-.t-grid {
|
|
|
- display: grid;
|
|
|
- grid-template-columns: repeat(4, 1fr);
|
|
|
- grid-template-rows: repeat(2, 1fr);
|
|
|
- gap: 16px 0;
|
|
|
+.t-icon {
|
|
|
+ width: 22px;
|
|
|
+ height: 22px;
|
|
|
+ opacity: 0.9;
|
|
|
}
|
|
|
|
|
|
-.t-i {
|
|
|
- text-align: center;
|
|
|
- font-size: 11px;
|
|
|
- color: #333;
|
|
|
- position: relative;
|
|
|
+/* 企业公告 */
|
|
|
+.classroom-sec {
|
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
|
+ gap: 6px;
|
|
|
+ margin-top: 5px;
|
|
|
+}
|
|
|
+
|
|
|
+.classroom-sec .c-h {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
align-items: center;
|
|
|
+}
|
|
|
+
|
|
|
+.class-title {
|
|
|
+ font-weight: bold;
|
|
|
+ font-size: 16px; /* 企业公告标题为 16px */
|
|
|
+ color: #111;
|
|
|
+}
|
|
|
+
|
|
|
+/* 企业公告卡片:适当调高高度,引入悬停效果 */
|
|
|
+.class-card {
|
|
|
+ background: #ffffff;
|
|
|
+ border-radius: 8px;
|
|
|
+ padding: 10px 12px; /* 适当增加内边距撑高卡片 */
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ gap: 8px;
|
|
|
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.02);
|
|
|
+ transition: all 0.25s ease-in-out;
|
|
|
cursor: pointer;
|
|
|
+ min-height: 62px; /* 显式设置最低高度以撑高卡片 */
|
|
|
+ box-sizing: border-box;
|
|
|
}
|
|
|
|
|
|
-.t-icon {
|
|
|
- width: 24px;
|
|
|
- height: 24px;
|
|
|
- margin-bottom: 6px;
|
|
|
- opacity: 0.8;
|
|
|
+.class-card:hover {
|
|
|
+ transform: translateY(-2px); /* 悬浮特效 */
|
|
|
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08); /* 投影加深 */
|
|
|
+}
|
|
|
+.class-card:hover .class-desc {
|
|
|
+ color: #e1251b; /* 悬停时公告标题文字变红 */
|
|
|
}
|
|
|
|
|
|
-.badge {
|
|
|
- position: absolute;
|
|
|
- top: -8px;
|
|
|
- right: -2px;
|
|
|
- background: #ff5a5f;
|
|
|
- color: #fff;
|
|
|
+.class-left-info {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ gap: 4px;
|
|
|
+ min-width: 0;
|
|
|
+ flex: 1;
|
|
|
+ text-align: left;
|
|
|
+}
|
|
|
+
|
|
|
+.week-tag {
|
|
|
+ background: #ffeceb;
|
|
|
+ color: #e1251b;
|
|
|
font-size: 9px;
|
|
|
+ font-weight: bold;
|
|
|
padding: 1px 4px;
|
|
|
- border-radius: 8px 8px 8px 0;
|
|
|
- z-index: 10;
|
|
|
- border: 1px solid #fff;
|
|
|
- transform: scale(0.9);
|
|
|
+ border-radius: 4px;
|
|
|
+ width: fit-content;
|
|
|
+ white-space: nowrap;
|
|
|
+}
|
|
|
+
|
|
|
+/* 公告标题:文字大小用 12px,超出部分以 "..." 隐藏 */
|
|
|
+.class-desc {
|
|
|
+ font-size: 12px; /* 文字调整为 12px */
|
|
|
+ color: #333;
|
|
|
+ font-weight: bold;
|
|
|
+ margin: 0;
|
|
|
+ white-space: nowrap;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis; /* 超过显示 "..." */
|
|
|
+ transition: color 0.2s ease;
|
|
|
+}
|
|
|
+
|
|
|
+/* 图片适当放大 */
|
|
|
+.class-img-box {
|
|
|
+ width: 42px; /* 从 32px 调大至 42px */
|
|
|
+ height: 42px; /* 从 32px 调大至 42px */
|
|
|
+ border-radius: 4px;
|
|
|
+ overflow: hidden;
|
|
|
+ flex-shrink: 0;
|
|
|
+ background: #f7f7f7;
|
|
|
+ border: 1px solid #eee;
|
|
|
+}
|
|
|
+
|
|
|
+.class-img {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ object-fit: cover;
|
|
|
}
|
|
|
</style>
|