<template>
|
<view class="content">
|
<PageHeader :title="operationType"
|
@back="goBack" />
|
<view class="common-module collaboration-module">
|
<view class="module-header">
|
<view class="module-title-container">
|
<text class="module-title">{{ operationType }}</text>
|
</view>
|
</view>
|
<view class="module-content">
|
<up-grid :border="false"
|
col="4">
|
<up-grid-item v-for="(item, index) in commonItems"
|
:key="index"
|
@click="handleCommonItemClick(item)">
|
<view class="icon-container"
|
:style="{ background: item.bgColor }">
|
<up-icon :name="item.icon"
|
:size="58"
|
color="#ffffff"></up-icon>
|
</view>
|
<text class="item-label">{{item.label}}</text>
|
</up-grid-item>
|
</up-grid>
|
</view>
|
</view>
|
</view>
|
</template>
|
|
<script setup>
|
import { onMounted, reactive, ref } from "vue";
|
import useUserStore from "@/store/modules/user";
|
import { onLoad } from "@dcloudio/uni-app";
|
import PageHeader from "@/components/PageHeader.vue";
|
|
const userStore = useUserStore();
|
const kaoqin = reactive([
|
{
|
icon: "/static/images/icon/gongchuguanli@2x.png",
|
label: "公出管理",
|
},
|
{
|
icon: "/static/images/icon/qingjiaguanli@2x.png",
|
label: "请假管理",
|
},
|
{
|
icon: "/static/images/icon/chuchaiguanli@2x.png",
|
label: "出差管理",
|
},
|
]);
|
const caiwu = reactive([
|
{
|
icon: "/static/images/icon/baoxiaoguanli.png",
|
label: "报销管理",
|
},
|
{
|
icon: "/static/images/icon/caigouguanli.png",
|
label: "采购管理",
|
},
|
{
|
icon: "/static/images/icon/baojiaguanli.png",
|
label: "报价管理",
|
},
|
{
|
icon: "/static/images/icon/chukuguanli@2x.png",
|
label: "出库管理",
|
},
|
]);
|
|
const huiyi = reactive([
|
{
|
icon: "/static/images/icon/huiyishezhi@2x.png",
|
label: "会议设置",
|
},
|
{
|
icon: "/static/images/icon/huiyiliebiao@2x.png",
|
label: "会议列表",
|
},
|
{
|
icon: "/static/images/icon/huiyishenqing@2x.png",
|
label: "会议申请",
|
},
|
{
|
icon: "/static/images/icon/huiyishenpi@2x.png",
|
label: "会议审批",
|
},
|
{
|
icon: "/static/images/icon/huiyifabu@2x.png",
|
label: "会议发布",
|
},
|
{
|
icon: "/static/images/icon/huiyizongjie@2x.png",
|
label: "会议总结",
|
},
|
{
|
icon: "/static/images/icon/huiyikanban@2x.png",
|
label: "会议看板",
|
},
|
]);
|
const commonItems = ref([]);
|
// 处理常用功能点击
|
const handleCommonItemClick = item => {
|
// 根据不同的功能项进行跳转
|
switch (item.label) {
|
case "销售台账":
|
uni.navigateTo({
|
url: "/pages/sales/salesAccount/index",
|
});
|
break;
|
case "开票登记":
|
uni.navigateTo({
|
url: "/pages/sales/invoicingRegistration/index",
|
});
|
break;
|
case "开票台账":
|
uni.navigateTo({
|
url: "/pages/sales/invoiceLedger/index",
|
});
|
break;
|
case "回款登记":
|
uni.navigateTo({
|
url: "/pages/sales/receiptPayment/index",
|
});
|
break;
|
case "回款流水":
|
uni.navigateTo({
|
url: "/pages/sales/receiptPaymentHistory/index",
|
});
|
break;
|
case "客户往来":
|
uni.navigateTo({
|
url: "/pages/sales/receiptPaymentLedger/index",
|
});
|
break;
|
case "采购台账":
|
uni.navigateTo({
|
url: "/pages/procurementManagement/procurementLedger/index",
|
});
|
break;
|
case "来票登记":
|
uni.navigateTo({
|
url: "/pages/procurementManagement/invoiceEntry/index",
|
});
|
break;
|
case "来票台账":
|
uni.navigateTo({
|
url: "/pages/procurementManagement/procurementInvoiceLedger/index",
|
});
|
break;
|
case "付款登记":
|
uni.navigateTo({
|
url: "/pages/procurementManagement/paymentEntry/index",
|
});
|
break;
|
case "付款流水":
|
uni.navigateTo({
|
url: "/pages/procurementManagement/receiptPaymentHistory/index",
|
});
|
break;
|
case "供应商往来":
|
uni.navigateTo({
|
url: "/pages/procurementManagement/paymentLedger/index",
|
});
|
break;
|
case "公出管理":
|
uni.navigateTo({
|
url: "/pages/cooperativeOffice/collaborativeApproval/index1",
|
});
|
break;
|
case "请假管理":
|
uni.navigateTo({
|
url: "/pages/cooperativeOffice/collaborativeApproval/index2",
|
});
|
break;
|
case "出差管理":
|
uni.navigateTo({
|
url: "/pages/cooperativeOffice/collaborativeApproval/index3",
|
});
|
break;
|
case "报销管理":
|
uni.navigateTo({
|
url: "/pages/cooperativeOffice/collaborativeApproval/index4",
|
});
|
break;
|
case "采购管理":
|
uni.navigateTo({
|
url: "/pages/cooperativeOffice/collaborativeApproval/index5",
|
});
|
break;
|
case "报价管理":
|
uni.navigateTo({
|
url: "/pages/cooperativeOffice/collaborativeApproval/index6",
|
});
|
break;
|
case "出库管理":
|
uni.navigateTo({
|
url: "/pages/cooperativeOffice/collaborativeApproval/index7",
|
});
|
break;
|
case "会议设置":
|
uni.navigateTo({
|
url: "/pages/managementMeetings/meetingSettings/index",
|
});
|
break;
|
case "会议列表":
|
uni.navigateTo({
|
url: "/pages/managementMeetings/meetingList/index",
|
});
|
break;
|
case "会议申请":
|
uni.navigateTo({
|
url: "/pages/managementMeetings/meetApplication/index",
|
});
|
break;
|
case "会议审批":
|
uni.navigateTo({
|
url: "/pages/managementMeetings/meetExamine/index",
|
});
|
break;
|
case "会议发布":
|
uni.navigateTo({
|
url: "/pages/managementMeetings/meetPublish/index",
|
});
|
break;
|
case "会议总结":
|
uni.navigateTo({
|
url: "/pages/managementMeetings/meetSummary/index",
|
});
|
break;
|
case "会议看板":
|
uni.navigateTo({
|
url: "/pages/managementMeetings/meetingBoard/index",
|
});
|
break;
|
case "通知公告":
|
uni.navigateTo({
|
url: "/pages/cooperativeOffice/noticeManagement/index",
|
});
|
break;
|
case "知识库":
|
uni.navigateTo({
|
url: "/pages/managementMeetings/knowledgeBase/index",
|
});
|
break;
|
case "用印管理":
|
uni.navigateTo({
|
url: "/pages/managementMeetings/sealManagement/index",
|
});
|
break;
|
case "规章制度":
|
uni.navigateTo({
|
url: "/pages/managementMeetings/rulesRegulationsManagement/index",
|
});
|
break;
|
|
case "协同审批":
|
uni.navigateTo({
|
url: "/pages/cooperativeOffice/collaborativeApproval/index",
|
});
|
break;
|
case "客户拜访":
|
uni.navigateTo({
|
url: "/pages/cooperativeOffice/clientVisit/index",
|
});
|
break;
|
case "生产订单":
|
uni.navigateTo({
|
url: "/pages/productionManagement/productionOrder/index",
|
});
|
break;
|
case "生产派工":
|
uni.navigateTo({
|
url: "/pages/productionManagement/productionDispatching/index",
|
});
|
break;
|
case "工序排产":
|
uni.navigateTo({
|
url: "/pages/productionManagement/processScheduling/index",
|
});
|
break;
|
case "生产核算":
|
uni.navigateTo({
|
url: "/pages/productionManagement/productionAccounting/index",
|
});
|
break;
|
case "设备台账":
|
uni.navigateTo({
|
url: "/pages/equipmentManagement/ledger/index",
|
});
|
break;
|
case "设备报修":
|
uni.navigateTo({
|
url: "/pages/equipmentManagement/repair/index",
|
});
|
break;
|
case "设备保养":
|
uni.navigateTo({
|
url: "/pages/equipmentManagement/upkeep/index",
|
});
|
break;
|
case "巡检上传":
|
uni.navigateTo({
|
url: "/pages/inspectionUpload/index",
|
});
|
break;
|
case "分析追溯":
|
uni.navigateTo({
|
url: "/pages/equipmentManagement/faultAnalysis/index",
|
});
|
break;
|
case "智能派单":
|
uni.navigateTo({
|
url: "/pages/equipmentManagement/smartDispatch/index",
|
});
|
break;
|
case "作业指导":
|
uni.navigateTo({
|
url: "/pages/equipmentManagement/sop/index",
|
});
|
break;
|
case "结果验证":
|
uni.navigateTo({
|
url: "/pages/equipmentManagement/verification/index",
|
});
|
break;
|
default:
|
uni.showToast({
|
title: `点击了${item.label}`,
|
icon: "none",
|
});
|
}
|
};
|
// 返回上一页
|
const goBack = () => {
|
uni.navigateBack();
|
};
|
|
onMounted(() => {
|
// 设置用户信息
|
userStore.getInfo();
|
});
|
const operationType = ref("");
|
onLoad(options => {
|
if (options.label) {
|
operationType.value = options.label;
|
if (operationType.value === "考勤管理") {
|
commonItems.value = kaoqin;
|
} else if (operationType.value === "会议管理") {
|
commonItems.value = huiyi;
|
} else if (operationType.value === "财务管理") {
|
commonItems.value = caiwu;
|
}
|
}
|
console.log(operationType.value);
|
console.log(commonItems.value);
|
});
|
</script>
|
|
|
<style scoped lang="scss">
|
.content {
|
background: linear-gradient(135deg, #f8f9fa 0%, #e3f2fd 100%);
|
min-height: 100vh;
|
padding: 1.25rem;
|
/* 为所有设备设置基础padding-top */
|
padding-top: 40px;
|
position: relative;
|
|
/* iOS设备使用env()函数处理安全区域 */
|
padding-top: env(safe-area-inset-top);
|
|
/* 为安卓设备设置更大的顶部内边距 */
|
/* #ifdef APP-PLUS && !MP && !H5 */
|
padding-top: 45px;
|
/* #endif */
|
|
/* H5和小程序平台的通用样式 */
|
/* #ifdef H5 || MP */
|
padding-top: 30px;
|
/* #endif */
|
|
&::before {
|
content: "";
|
position: fixed;
|
top: 0;
|
left: 0;
|
right: 0;
|
bottom: 0;
|
background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><pattern id="dots" width="20" height="20" patternUnits="userSpaceOnUse"><circle cx="10" cy="10" r="1" fill="rgba(41, 121, 255, 0.03)"/></pattern></defs><rect width="100" height="100" fill="url(%23dots)"/></svg>');
|
pointer-events: none;
|
z-index: -1;
|
}
|
|
&::after {
|
content: "";
|
position: fixed;
|
top: 0;
|
left: 0;
|
right: 0;
|
bottom: 0;
|
background: radial-gradient(
|
circle at 20% 80%,
|
rgba(41, 121, 255, 0.02) 0%,
|
transparent 50%
|
),
|
radial-gradient(
|
circle at 80% 20%,
|
rgba(156, 39, 176, 0.02) 0%,
|
transparent 50%
|
);
|
pointer-events: none;
|
z-index: -1;
|
}
|
}
|
|
.header-section {
|
margin-bottom: 1rem;
|
animation: fadeInDown 0.6s ease-out;
|
/* 为安卓设备额外调整头部位置 */
|
/* #ifdef APP-PLUS && !MP && !H5 */
|
margin-top: 10px;
|
/* #endif */
|
}
|
|
.currentFactory {
|
margin-top: 0.5rem;
|
margin-left: 0.25rem;
|
font-weight: 500;
|
display: flex;
|
}
|
|
.factoryName {
|
width: auto;
|
}
|
|
:deep(.u-text) {
|
align-items: center;
|
}
|
|
.hero-section {
|
margin-bottom: 1rem;
|
animation: fadeInUp 0.6s ease-out 0.1s both;
|
}
|
|
.bg-img {
|
width: 100%;
|
height: 8.75rem;
|
background-image: url("../static/images/banner/backview.png");
|
background-size: cover;
|
border-radius: 0.75rem;
|
position: relative;
|
overflow: hidden;
|
box-shadow: 0 0.25rem 1.25rem rgba(41, 121, 255, 0.15);
|
|
&::before {
|
content: "";
|
position: absolute;
|
top: -50%;
|
left: -50%;
|
width: 200%;
|
height: 200%;
|
background: conic-gradient(
|
from 0deg,
|
transparent,
|
rgba(255, 255, 255, 0.1),
|
transparent,
|
rgba(255, 255, 255, 0.05),
|
transparent
|
);
|
animation: rotate 20s linear infinite;
|
}
|
|
&::after {
|
content: "";
|
position: absolute;
|
top: 0;
|
right: 0;
|
width: 7.5rem;
|
height: 7.5rem;
|
background: radial-gradient(
|
circle,
|
rgba(255, 255, 255, 0.15) 0%,
|
transparent 70%
|
);
|
border-radius: 50%;
|
transform: translate(2.5rem, -2.5rem);
|
}
|
}
|
|
.hero-content {
|
position: relative;
|
z-index: 1;
|
padding: 1.25rem 1.25rem 1.6rem 1.25rem;
|
height: 100%;
|
display: flex;
|
flex-direction: column;
|
align-items: flex-start;
|
justify-content: flex-start;
|
}
|
|
.hero-title {
|
color: #ffffff;
|
font-size: 1.625rem;
|
font-weight: 700;
|
letter-spacing: 0.03125rem;
|
text-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.5);
|
}
|
.hero-subtitle {
|
font-size: 0.8125rem;
|
margin-top: 0.375rem;
|
}
|
.hero-wave {
|
height: 2.75rem;
|
}
|
|
.hero-subtitle {
|
color: rgba(255, 255, 255, 0.9);
|
font-size: 0.8125rem;
|
margin-top: 0.375rem;
|
font-weight: 400;
|
text-shadow: 0 0.0625rem 0.125rem rgba(0, 0, 0, 0.5);
|
}
|
|
.hero-wave {
|
position: absolute;
|
left: 0;
|
right: 0;
|
bottom: 0;
|
height: 2.75rem;
|
background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 320' preserveAspectRatio='none'><path fill='%23ffffff' fill-opacity='0.2' d='M0,224L48,218.7C96,213,192,203,288,197.3C384,192,480,192,576,176C672,160,768,128,864,122.7C960,117,1056,139,1152,144C1248,149,1344,139,1392,133.3L1440,128L1440,320L1392,320C1344,320,1248,320,1152,320C1056,320,960,320,864,320C768,320,672,320,576,320C480,320,384,320,288,320C192,320,96,320,48,320L0,320Z'></path></svg>")
|
no-repeat bottom center/cover;
|
pointer-events: none;
|
}
|
|
.notice-section {
|
margin-bottom: 1rem;
|
animation: fadeInUp 0.6s ease-out 0.2s both;
|
}
|
|
.notice {
|
width: 100%;
|
background: linear-gradient(135deg, #eaf2ff 0%, #bbdefb 100%);
|
border: 0.0625rem solid #e3f2fd;
|
border-radius: 0.75rem;
|
padding: 1rem;
|
box-shadow: 0 0.25rem 1.25rem rgba(41, 121, 255, 0.08);
|
position: relative;
|
overflow: hidden;
|
|
&::before {
|
content: "";
|
position: absolute;
|
top: -50%;
|
left: -50%;
|
width: 200%;
|
height: 200%;
|
background: linear-gradient(
|
45deg,
|
transparent,
|
rgba(255, 255, 255, 0.6),
|
transparent
|
);
|
animation: shine 4s infinite;
|
}
|
|
&::after {
|
content: "";
|
position: absolute;
|
top: 0;
|
right: 0;
|
width: 5rem;
|
height: 5rem;
|
background: radial-gradient(
|
circle,
|
rgba(255, 255, 255, 0.2) 0%,
|
transparent 70%
|
);
|
border-radius: 50%;
|
transform: translate(1.875rem, -1.875rem);
|
}
|
|
&:hover {
|
transform: translateY(-0.125rem);
|
box-shadow: 0 0.5rem 1.875rem rgba(0, 0, 0, 0.1);
|
}
|
}
|
|
@keyframes shine {
|
0% {
|
transform: translateX(-100%) translateY(-100%) rotate(45deg);
|
}
|
100% {
|
transform: translateX(100%) translateY(100%) rotate(45deg);
|
}
|
}
|
|
@keyframes fadeInDown {
|
from {
|
opacity: 0;
|
transform: translateY(-1.25rem);
|
}
|
to {
|
opacity: 1;
|
transform: translateY(0);
|
}
|
}
|
|
@keyframes fadeInUp {
|
from {
|
opacity: 0;
|
transform: translateY(1.25rem);
|
}
|
to {
|
opacity: 1;
|
transform: translateY(0);
|
}
|
}
|
|
@keyframes fadeInScale {
|
0% {
|
opacity: 0;
|
transform: translateY(0.5rem) scale(0.96);
|
}
|
100% {
|
opacity: 1;
|
transform: translateY(0) scale(1);
|
}
|
}
|
|
.notice-content {
|
display: flex;
|
align-items: center;
|
height: 100%;
|
position: relative;
|
z-index: 1;
|
}
|
|
.notice-left {
|
margin-right: 1rem;
|
}
|
|
.notice-status {
|
font-weight: 600;
|
font-size: 1rem;
|
color: #1976d2;
|
}
|
|
.notice-separator {
|
width: 0.0625rem;
|
height: 1.5rem;
|
background: #e0e0e0;
|
margin-right: 1rem;
|
}
|
|
.notice-right {
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
flex: 1;
|
}
|
|
.notice-label {
|
color: #333;
|
font-size: 0.875rem;
|
font-weight: 500;
|
margin-right: 0.75rem;
|
}
|
|
.notice-text {
|
font-weight: 400;
|
font-size: 0.875rem;
|
color: #666666;
|
}
|
|
.notice-number {
|
font-weight: 600;
|
font-size: 1rem;
|
color: #1976d2;
|
margin-left: 0.25rem;
|
}
|
|
.notice-unit {
|
font-weight: 600;
|
font-size: 1rem;
|
color: #1976d2;
|
margin-left: 0.25rem;
|
}
|
|
/* 功能模块样式 */
|
.common-module {
|
margin-bottom: 1.5rem;
|
background: linear-gradient(135deg, #ffffff 0%, #fafbfc 100%);
|
border-radius: 1rem;
|
padding: 1rem;
|
box-shadow: 0 0.25rem 1.25rem rgba(0, 0, 0, 0.06);
|
border: none;
|
position: relative;
|
overflow: hidden;
|
transition: all 0.3s ease;
|
|
&::after {
|
content: "";
|
position: absolute;
|
top: 0;
|
right: 0;
|
width: 3.75rem;
|
height: 3.75rem;
|
background: radial-gradient(
|
circle,
|
rgba(0, 0, 0, 0.02) 0%,
|
transparent 70%
|
);
|
border-radius: 50%;
|
transform: translate(1.875rem, -1.875rem);
|
}
|
}
|
|
.marketing-module {
|
--module-color: #2979ff;
|
}
|
|
.purchase-module {
|
--module-color: #1976d2;
|
}
|
|
.collaboration-module {
|
--module-color: #4caf50;
|
}
|
|
.production-module {
|
--module-color: #ff9800;
|
}
|
|
.equipment-module {
|
--module-color: #9c27b0;
|
}
|
|
.module-header {
|
margin-bottom: 1.5rem;
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
}
|
|
.module-title-container {
|
display: flex;
|
align-items: center;
|
}
|
|
.module-title {
|
color: #333333;
|
font-size: 1.125rem;
|
font-weight: 600;
|
position: relative;
|
}
|
|
.module-subtitle {
|
color: #666666;
|
font-size: 0.75rem;
|
font-weight: 400;
|
margin-left: 0.5rem;
|
}
|
|
.module-content {
|
width: 100%;
|
display: grid;
|
gap: 1rem;
|
}
|
|
.icon-container {
|
width: 3.25rem;
|
height: 3.25rem;
|
border-radius: 0.75rem;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
margin-bottom: 0.375rem;
|
box-shadow: 0 0.1875rem 0.75rem rgba(0, 0, 0, 0.12);
|
transition: all 0.2s ease;
|
position: relative;
|
overflow: hidden;
|
animation: fadeInScale 0.5s ease both;
|
|
&::before {
|
content: "";
|
position: absolute;
|
top: 0;
|
left: 0;
|
right: 0;
|
bottom: 0;
|
background: linear-gradient(
|
135deg,
|
rgba(255, 255, 255, 0.1) 0%,
|
transparent 50%,
|
rgba(255, 255, 255, 0.05) 100%
|
);
|
opacity: 0;
|
transition: opacity 0.3s ease;
|
}
|
|
&::after {
|
content: "";
|
position: absolute;
|
top: 0;
|
left: 0;
|
right: 0;
|
bottom: 0;
|
border-radius: 0.75rem;
|
background: linear-gradient(
|
45deg,
|
transparent,
|
rgba(255, 255, 255, 0.2),
|
transparent
|
);
|
opacity: 0;
|
transition: opacity 0.3s ease;
|
}
|
|
&:hover {
|
transform: translateY(-0.1875rem) scale(1.02);
|
box-shadow: 0 0.5rem 1.5625rem rgba(0, 0, 0, 0.18);
|
|
&::before,
|
&::after {
|
opacity: 1;
|
}
|
}
|
|
&:active {
|
transform: scale(0.97);
|
box-shadow: 0 0.125rem 0.5rem rgba(0, 0, 0, 0.18);
|
}
|
}
|
|
.item-label {
|
font-size: 0.8125rem;
|
color: #555555;
|
text-align: center;
|
display: block;
|
line-height: 1.4;
|
font-weight: 500;
|
margin-top: 0.25rem;
|
margin-bottom: 0.625rem;
|
}
|
|
.grid-text {
|
font-size: 0.875rem;
|
color: #909399;
|
padding: 0.625rem 0 1.25rem 0;
|
/* #ifndef APP-PLUS */
|
box-sizing: border-box;
|
/* #endif */
|
}
|
|
/* 暗色模式适配 */
|
@media (prefers-color-scheme: dark) {
|
.content {
|
background: linear-gradient(135deg, #121317 0%, #161a20 100%);
|
}
|
.content::before {
|
background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><pattern id="dots" width="20" height="20" patternUnits="userSpaceOnUse"><circle cx="10" cy="10" r="1" fill="rgba(255, 255, 255, 0.05)"/></pattern></defs><rect width="100" height="100" fill="url(%23dots)"/></svg>');
|
}
|
.common-module {
|
background: linear-gradient(135deg, #1e1f24 0%, #23252b 100%);
|
box-shadow: 0 0.375rem 1.5rem rgba(0, 0, 0, 0.35);
|
}
|
.module-title {
|
color: #e9edf3;
|
}
|
.module-subtitle,
|
.item-label,
|
.notice-text,
|
.notice-unit,
|
.notice-label {
|
color: #c7cbd3;
|
}
|
.notice {
|
background: linear-gradient(135deg, #1b2330 0%, #1a2432 100%);
|
border-color: rgba(255, 255, 255, 0.06);
|
box-shadow: 0 0.375rem 1.25rem rgba(0, 0, 0, 0.4);
|
}
|
.notice-status,
|
.notice-number {
|
color: #8ab4ff;
|
}
|
.bg-img {
|
background: linear-gradient(135deg, #1f4fb9 0%, #0e3a8a 100%);
|
}
|
}
|
|
@keyframes rotate {
|
from {
|
transform: rotate(0deg);
|
}
|
to {
|
transform: rotate(360deg);
|
}
|
}
|
|
@keyframes fadeInDown {
|
from {
|
opacity: 0;
|
transform: translateY(-1.25rem);
|
}
|
to {
|
opacity: 1;
|
transform: translateY(0);
|
}
|
}
|
|
@keyframes fadeInUp {
|
from {
|
opacity: 0;
|
transform: translateY(1.25rem);
|
}
|
to {
|
opacity: 1;
|
transform: translateY(0);
|
}
|
}
|
|
@keyframes fadeInScale {
|
0% {
|
opacity: 0;
|
transform: translateY(0.5rem) scale(0.96);
|
}
|
100% {
|
opacity: 1;
|
transform: translateY(0) scale(1);
|
}
|
}
|
|
.notice-left {
|
margin-right: 1rem;
|
}
|
.notice-status {
|
font-size: 1rem;
|
}
|
.notice-separator {
|
width: 0.0625rem;
|
height: 1.5rem;
|
margin-right: 1rem;
|
}
|
.notice-label {
|
font-size: 0.875rem;
|
margin-right: 0.75rem;
|
}
|
.notice-text {
|
font-size: 0.875rem;
|
}
|
.notice-number {
|
font-size: 1rem;
|
margin-left: 0.25rem;
|
}
|
.notice-unit {
|
font-size: 0.875rem;
|
margin-left: 0.125rem;
|
}
|
|
.common-module {
|
margin-bottom: 1.5rem;
|
background: linear-gradient(135deg, #ffffff 0%, #fafbfc 100%);
|
border-radius: 1rem;
|
padding: 1rem;
|
box-shadow: 0 0.25rem 1.25rem rgba(0, 0, 0, 0.06);
|
border: none;
|
position: relative;
|
overflow: hidden;
|
transition: all 0.3s ease;
|
|
&::after {
|
content: "";
|
position: absolute;
|
top: 0;
|
right: 0;
|
width: 3.75rem;
|
height: 3.75rem;
|
background: radial-gradient(
|
circle,
|
rgba(0, 0, 0, 0.02) 0%,
|
transparent 70%
|
);
|
border-radius: 50%;
|
transform: translate(1.875rem, -1.875rem);
|
}
|
}
|
|
.marketing-module {
|
--module-color: #2979ff;
|
}
|
|
.purchase-module {
|
--module-color: #1976d2;
|
}
|
|
.collaboration-module {
|
--module-color: #4caf50;
|
}
|
|
.production-module {
|
--module-color: #ff9800;
|
}
|
|
.equipment-module {
|
--module-color: #9c27b0;
|
}
|
|
.module-header {
|
margin-bottom: 1.5rem;
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
}
|
|
.module-title-container {
|
display: flex;
|
align-items: center;
|
}
|
|
.module-title {
|
color: #333333;
|
font-size: 1.125rem;
|
font-weight: 600;
|
position: relative;
|
}
|
|
.module-subtitle {
|
color: #666666;
|
font-size: 0.75rem;
|
font-weight: 400;
|
margin-left: 0.5rem;
|
}
|
|
.module-content {
|
width: 100%;
|
display: grid;
|
gap: 1rem;
|
}
|
|
.icon-container {
|
width: 3.25rem;
|
height: 3.25rem;
|
border-radius: 0.75rem;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
margin-bottom: 0.375rem;
|
box-shadow: 0 0.1875rem 0.75rem rgba(0, 0, 0, 0.12);
|
transition: all 0.2s ease;
|
position: relative;
|
overflow: hidden;
|
animation: fadeInScale 0.5s ease both;
|
|
&:hover {
|
transform: translateY(-0.1875rem) scale(1.02);
|
box-shadow: 0 0.5rem 1.5625rem rgba(0, 0, 0, 0.18);
|
}
|
|
&:active {
|
transform: scale(0.97);
|
box-shadow: 0 0.125rem 0.5rem rgba(0, 0, 0, 0.18);
|
}
|
}
|
|
.item-label {
|
font-size: 0.8125rem;
|
margin-top: 0.25rem;
|
margin-bottom: 0.625rem;
|
}
|
.grid-text {
|
font-size: 0.875rem;
|
}
|
|
@media (prefers-color-scheme: dark) {
|
.common-module {
|
box-shadow: 0 0.375rem 1.5rem rgba(0, 0, 0, 0.35);
|
}
|
.notice {
|
box-shadow: 0 0.375rem 1.25rem rgba(0, 0, 0, 0.4);
|
}
|
}
|
</style>
|