优化小程序报销模块
This commit is contained in:
1 parent
1e9666cefd
commit
48f3bd997c
21 files changed
+5738
-1750
No files matched your search
@@ -37,15 +37,19 @@
|
||||
</view>
|
||||
|
||||
<block v-else>
|
||||
<!-- OA 工作台仪表盘(Web 版内容搬到首页顶部) -->
|
||||
<!-- 首页卡片流:flex 纵向 + 统一 gap,避免跨组件 margin 不折叠导致间距不均 -->
|
||||
<view class="home-stack">
|
||||
<!-- OA 工作台仪表盘上半:公告 + 数据统计(常用功能插在下面) -->
|
||||
<SubOaDashboard
|
||||
v-if="isOa && dash"
|
||||
part="top"
|
||||
:data="dash"
|
||||
@view-notices="goNotices"
|
||||
@view-schedules="goSchedules"
|
||||
/>
|
||||
|
||||
<!-- 概览 -->
|
||||
<!-- 概览 / 日程待办 / 最新公告:非 OA 子系统,或 OA 仪表盘加载失败时兜底展示 -->
|
||||
<block v-if="!(isOa && dash)">
|
||||
<view class="kpi-card">
|
||||
<view class="kpi-item">
|
||||
<text class="kpi-value">{{ leafMenus.length }}</text>
|
||||
@@ -120,44 +124,58 @@
|
||||
<text class="list-time">{{ item.publish_time || item.publisher_name || '' }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
|
||||
<!-- 常用功能:与仪表盘卡片统一的样式,点「全部」切到功能页签 -->
|
||||
<view class="quick-card">
|
||||
<view class="quick-head">
|
||||
<view class="quick-head-left">
|
||||
<view class="head-icon">
|
||||
<FaIcon name="star" color="#f59e0b" :size="12" />
|
||||
</view>
|
||||
<text class="quick-title">常用功能</text>
|
||||
</view>
|
||||
<view class="block-more" @tap="goFunctions">
|
||||
<text class="block-more-text">全部</text>
|
||||
<FaIcon name="chevron-right" color="#94a3b8" :size="11" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="grid">
|
||||
<view
|
||||
v-for="(item, index) in quickMenus"
|
||||
:key="item.id"
|
||||
class="cell"
|
||||
@tap="openMenu(item, item.title)"
|
||||
>
|
||||
<view class="fn-card" :class="{ locked: item.locked }">
|
||||
<view class="tint-icon fn-icon" :class="item.locked ? 'tint-off' : 'tint-' + (index % 8)">
|
||||
<FaIcon :name="item.icon || fallbackIcon" color="#ffffff" :size="18" />
|
||||
</view>
|
||||
<text class="fn-name">{{ item.title }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 末位固定「+」:点击选择要加入常用功能的功能 -->
|
||||
<view class="cell">
|
||||
<view class="fn-card fn-add" @tap="openPicker">
|
||||
<view class="add-icon">
|
||||
<FaIcon name="plus" color="#8a94ad" :size="18" />
|
||||
</view>
|
||||
<text class="fn-name">添加</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 常用功能:仪表盘式快捷入口,点「全部」切到功能页签 -->
|
||||
<view class="block">
|
||||
<view class="block-head">
|
||||
<text class="block-title">常用功能</text>
|
||||
<view class="block-more" @tap="goFunctions">
|
||||
<text class="block-more-text">全部</text>
|
||||
<FaIcon name="chevron-right" color="#8a94ad" :size="11" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="quick-card">
|
||||
<view class="grid">
|
||||
<view
|
||||
v-for="(item, index) in quickMenus"
|
||||
:key="item.id"
|
||||
class="cell"
|
||||
@tap="openMenu(item, item.title)"
|
||||
>
|
||||
<view class="fn-card" :class="{ locked: item.locked }">
|
||||
<view class="tint-icon fn-icon" :class="item.locked ? 'tint-off' : 'tint-' + (index % 8)">
|
||||
<FaIcon :name="item.icon || fallbackIcon" color="#ffffff" :size="18" />
|
||||
</view>
|
||||
<text class="fn-name">{{ item.title }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 末位固定「+」:点击选择要加入常用功能的功能 -->
|
||||
<view class="cell">
|
||||
<view class="fn-card fn-add" @tap="openPicker">
|
||||
<view class="add-icon">
|
||||
<FaIcon name="plus" color="#8a94ad" :size="18" />
|
||||
</view>
|
||||
<text class="fn-name">添加</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- OA 工作台仪表盘下半:报销趋势 + 状态分布 -->
|
||||
<SubOaDashboard
|
||||
v-if="isOa && dash"
|
||||
part="bottom"
|
||||
:data="dash"
|
||||
@view-notices="goNotices"
|
||||
@view-schedules="goSchedules"
|
||||
/>
|
||||
</view>
|
||||
</block>
|
||||
</block>
|
||||
@@ -489,8 +507,11 @@ onShow(() => {
|
||||
padding: 28rpx $page-padding-x 0;
|
||||
}
|
||||
|
||||
.block + .block {
|
||||
margin-top: 32rpx;
|
||||
/* 首页卡片流:统一纵向间距(跨组件 margin 不折叠,故用 flex gap) */
|
||||
.home-stack {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 24rpx;
|
||||
}
|
||||
|
||||
.block-head {
|
||||
@@ -517,7 +538,6 @@ onShow(() => {
|
||||
@include card;
|
||||
display: flex;
|
||||
padding: 30rpx 0;
|
||||
margin-bottom: 32rpx;
|
||||
}
|
||||
|
||||
.kpi-item {
|
||||
@@ -634,9 +654,39 @@ onShow(() => {
|
||||
/* ============ 常用功能宫格:一行 4 个 ============
|
||||
cell 占 25% 宽并自带右侧间隙,容器用负 margin 抵消末列间隙,
|
||||
避免使用 calc 除法——小程序端 wxss 对复杂 calc 支持不稳。 */
|
||||
/* 与 SubOaDashboard 的 dash-card 保持同一视觉语言 */
|
||||
.quick-card {
|
||||
@include card;
|
||||
padding: 24rpx 20rpx 8rpx;
|
||||
padding: 26rpx 24rpx 10rpx;
|
||||
}
|
||||
|
||||
.quick-head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 22rpx;
|
||||
}
|
||||
|
||||
.quick-head-left {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12rpx;
|
||||
}
|
||||
|
||||
.head-icon {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
border-radius: 12rpx;
|
||||
background: #fff7e6;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.quick-title {
|
||||
font-size: 28rpx;
|
||||
font-weight: 600;
|
||||
color: $color-text;
|
||||
}
|
||||
|
||||
.grid {
|
||||
@@ -656,7 +706,7 @@ onShow(() => {
|
||||
height: 100%;
|
||||
padding: 18rpx 6rpx 16rpx;
|
||||
border-radius: $radius-md;
|
||||
background: $color-bg-page;
|
||||
background: transparent;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
|
||||
Reference in new issue
Block a user