页面样式统一
This commit is contained in:
@@ -7,12 +7,12 @@
|
|||||||
closeable
|
closeable
|
||||||
@update:show="handleVisibleChange"
|
@update:show="handleVisibleChange"
|
||||||
>
|
>
|
||||||
<div class="transaction-detail" v-if="transaction">
|
<div class="popup-container" v-if="transaction">
|
||||||
<div class="detail-header" style="margin-top: 10px;margin-left: 10px;">
|
<div class="popup-header-fixed">
|
||||||
<h3>交易详情</h3>
|
<h3>交易详情</h3>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="scroll-area">
|
<div class="popup-scroll-content">
|
||||||
<van-form @submit="onSubmit">
|
<van-form @submit="onSubmit">
|
||||||
<van-cell-group inset>
|
<van-cell-group inset>
|
||||||
<van-cell title="卡号" :value="transaction.card" />
|
<van-cell title="卡号" :value="transaction.card" />
|
||||||
@@ -335,28 +335,6 @@ const formatDate = (dateString) => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.transaction-detail {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.detail-header {
|
|
||||||
flex-shrink: 0;
|
|
||||||
border-bottom: 1px solid #ebedf0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.detail-header h3 {
|
|
||||||
margin: 10px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scroll-area {
|
|
||||||
flex: 1;
|
|
||||||
overflow-y: auto;
|
|
||||||
-webkit-overflow-scrolling: touch;
|
|
||||||
padding-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.classify-buttons {
|
.classify-buttons {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
|||||||
@@ -247,3 +247,59 @@
|
|||||||
color: #51cf66;
|
color: #51cf66;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.bottom-button {
|
||||||
|
position: fixed;
|
||||||
|
bottom: calc(16px + env(safe-area-inset-bottom, 0px));
|
||||||
|
left: 16px;
|
||||||
|
right: 16px;
|
||||||
|
z-index: 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ===== 统一弹窗样式 ===== */
|
||||||
|
/* 弹窗容器 - 使用 flex 布局,确保标题固定,内容可滚动 */
|
||||||
|
.popup-container {
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 固定的弹窗标题 - 居中显示,不随内容滚动 */
|
||||||
|
.popup-header-fixed {
|
||||||
|
flex-shrink: 0; /* 防止被压缩 */
|
||||||
|
padding: 16px;
|
||||||
|
border-bottom: 1px solid var(--van-border-color);
|
||||||
|
background: var(--van-background-2);
|
||||||
|
text-align: center; /* 标题居中 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-header-fixed h3 {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--van-text-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-header-fixed p {
|
||||||
|
margin: 4px 0 0 0;
|
||||||
|
font-size: 12px;
|
||||||
|
color: var(--van-text-color-2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 可滚动的弹窗内容区域 */
|
||||||
|
.popup-scroll-content {
|
||||||
|
flex: 1;
|
||||||
|
overflow-y: auto;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
overscroll-behavior: contain;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 深色模式适配 */
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
.popup-header-fixed {
|
||||||
|
background: #1f1f1f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-scroll-content {
|
||||||
|
background: #141414;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -19,8 +19,8 @@
|
|||||||
round
|
round
|
||||||
closeable
|
closeable
|
||||||
>
|
>
|
||||||
<div class="date-transactions">
|
<div class="popup-container">
|
||||||
<div class="popup-header">
|
<div class="popup-header-fixed">
|
||||||
<h3>{{ selectedDateText }}</h3>
|
<h3>{{ selectedDateText }}</h3>
|
||||||
<p v-if="dateTransactions.length">
|
<p v-if="dateTransactions.length">
|
||||||
共 {{ dateTransactions.length }} 笔交易,
|
共 {{ dateTransactions.length }} 笔交易,
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="bills-scroll-container">
|
<div class="popup-scroll-content">
|
||||||
<TransactionList
|
<TransactionList
|
||||||
:transactions="dateTransactions"
|
:transactions="dateTransactions"
|
||||||
:loading="listLoading"
|
:loading="listLoading"
|
||||||
@@ -259,29 +259,6 @@ fetchDailyStatistics(now.getFullYear(), now.getMonth() + 1);
|
|||||||
padding-bottom: 0 !important;
|
padding-bottom: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-transactions {
|
|
||||||
height: 100%;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-header {
|
|
||||||
padding: 16px;
|
|
||||||
border-bottom: 1px solid #ebedf0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-header h3 {
|
|
||||||
margin: 0 0 8px 0;
|
|
||||||
font-size: 18px;
|
|
||||||
font-weight: 600;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-header p {
|
|
||||||
margin: 0;
|
|
||||||
font-size: 14px;
|
|
||||||
color: #969799;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 设置页面容器背景色 */
|
/* 设置页面容器背景色 */
|
||||||
:deep(.van-calendar__header-title) {
|
:deep(.van-calendar__header-title) {
|
||||||
background: transparent !important;
|
background: transparent !important;
|
||||||
|
|||||||
@@ -54,12 +54,13 @@
|
|||||||
</van-cell-group>
|
</van-cell-group>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="action-bar">
|
<div class="bottom-button">
|
||||||
<!-- 新增分类按钮 -->
|
<!-- 新增分类按钮 -->
|
||||||
<van-button
|
<van-button
|
||||||
type="primary"
|
type="primary"
|
||||||
size="large"
|
size="large"
|
||||||
block
|
round
|
||||||
|
icon="plus"
|
||||||
@click="handleAddCategory"
|
@click="handleAddCategory"
|
||||||
>
|
>
|
||||||
新增分类
|
新增分类
|
||||||
@@ -326,27 +327,6 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 底部操作栏 */
|
|
||||||
.action-bar {
|
|
||||||
position: fixed;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
display: flex;
|
|
||||||
gap: 12px;
|
|
||||||
padding: 12px;
|
|
||||||
background-color: var(--van-background-2, #fff);
|
|
||||||
box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.08);
|
|
||||||
z-index: 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
.action-bar {
|
|
||||||
background-color: var(--van-background-2, #2c2c2c);
|
|
||||||
box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 设置页面容器背景色 */
|
/* 设置页面容器背景色 */
|
||||||
:deep(.van-nav-bar) {
|
:deep(.van-nav-bar) {
|
||||||
background: transparent !important;
|
background: transparent !important;
|
||||||
|
|||||||
@@ -64,13 +64,14 @@
|
|||||||
position="bottom"
|
position="bottom"
|
||||||
:style="{ height: '80%' }"
|
:style="{ height: '80%' }"
|
||||||
round
|
round
|
||||||
|
closeable
|
||||||
>
|
>
|
||||||
<div class="records-popup">
|
<div class="popup-container">
|
||||||
<div class="popup-header">
|
<div class="popup-header-fixed">
|
||||||
<h3>交易记录列表</h3>
|
<h3>交易记录列表</h3>
|
||||||
<van-icon name="cross" @click="showRecordsList = false" />
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="popup-scroll-content" style="background: var(--van-background, #f7f8fa);">
|
||||||
<!-- 批量操作按钮 -->
|
<!-- 批量操作按钮 -->
|
||||||
<div class="batch-actions">
|
<div class="batch-actions">
|
||||||
<van-button
|
<van-button
|
||||||
@@ -114,6 +115,7 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</van-popup>
|
</van-popup>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -335,34 +337,6 @@ const handleSubmit = async () => {
|
|||||||
|
|
||||||
.records-list {
|
.records-list {
|
||||||
padding-bottom: 20px;
|
padding-bottom: 20px;
|
||||||
overflow-y: auto;
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.records-popup {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
height: 100%;
|
|
||||||
background-color: var(--van-background, #f7f8fa);
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-header {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
padding: 16px;
|
|
||||||
background-color: var(--van-background-2, #fff);
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-header h3 {
|
|
||||||
margin: 0;
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: 500;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-header .van-icon {
|
|
||||||
font-size: 20px;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 设置页面容器背景色 */
|
/* 设置页面容器背景色 */
|
||||||
|
|||||||
@@ -64,10 +64,11 @@
|
|||||||
round
|
round
|
||||||
closeable
|
closeable
|
||||||
>
|
>
|
||||||
<div class="email-detail" v-if="currentEmail">
|
<div class="popup-container" v-if="currentEmail">
|
||||||
<div class="detail-header" style="margin-top: 10px; margin-left: 10px;">
|
<div class="popup-header-fixed">
|
||||||
<h3>{{ currentEmail.Subject || currentEmail.subject || '(无主题)' }}</h3>
|
<h3>{{ currentEmail.Subject || currentEmail.subject || '(无主题)' }}</h3>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="popup-scroll-content">
|
||||||
<van-cell-group inset>
|
<van-cell-group inset>
|
||||||
<van-cell title="发件人" :value="currentEmail.From || currentEmail.from || '未知'" />
|
<van-cell title="发件人" :value="currentEmail.From || currentEmail.from || '未知'" />
|
||||||
<van-cell title="接收时间" :value="formatDate(currentEmail.ReceivedDate || currentEmail.receivedDate)" />
|
<van-cell title="接收时间" :value="formatDate(currentEmail.ReceivedDate || currentEmail.receivedDate)" />
|
||||||
@@ -112,8 +113,7 @@
|
|||||||
重新分析
|
重新分析
|
||||||
</van-button>
|
</van-button>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</van-popup>
|
</van-popup>
|
||||||
|
|
||||||
@@ -125,11 +125,11 @@
|
|||||||
round
|
round
|
||||||
closeable
|
closeable
|
||||||
>
|
>
|
||||||
<div class="transaction-list-popup">
|
<div class="popup-container">
|
||||||
<div class="list-header">
|
<div class="popup-header-fixed">
|
||||||
<h3 style="margin: 16px;">关联账单列表</h3>
|
<h3>关联账单列表</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="bills-scroll-container">
|
<div class="popup-scroll-content">
|
||||||
<TransactionList
|
<TransactionList
|
||||||
:transactions="transactionList"
|
:transactions="transactionList"
|
||||||
:loading="false"
|
:loading="false"
|
||||||
@@ -425,17 +425,6 @@ defineExpose({
|
|||||||
padding-right: 10px;
|
padding-right: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.transaction-list-popup {
|
|
||||||
height: 100%;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-header{
|
|
||||||
padding: 16px;
|
|
||||||
border-bottom: 1px solid #ebedf0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.email-content {
|
.email-content {
|
||||||
margin-top: 16px;
|
margin-top: 16px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,9 @@
|
|||||||
<div class="message-title" :class="{ 'unread': !item.isRead }">
|
<div class="message-title" :class="{ 'unread': !item.isRead }">
|
||||||
{{ item.title }}
|
{{ item.title }}
|
||||||
</div>
|
</div>
|
||||||
|
<div class="message-content">
|
||||||
|
{{ item.content }}
|
||||||
|
</div>
|
||||||
<div class="message-info">
|
<div class="message-info">
|
||||||
{{ item.createTime }}
|
{{ item.createTime }}
|
||||||
</div>
|
</div>
|
||||||
@@ -46,12 +49,12 @@
|
|||||||
round
|
round
|
||||||
closeable
|
closeable
|
||||||
>
|
>
|
||||||
<div class="message-detail">
|
<div class="popup-container">
|
||||||
<div class="detail-header">
|
<div class="popup-header-fixed">
|
||||||
<h3>{{ currentMessage.title }}</h3>
|
<h3>{{ currentMessage.title }}</h3>
|
||||||
<span class="detail-time">{{ currentMessage.createTime }}</span>
|
<p class="detail-time">{{ currentMessage.createTime }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="detail-content">
|
<div class="popup-scroll-content detail-content">
|
||||||
{{ currentMessage.content }}
|
{{ currentMessage.content }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -162,6 +165,7 @@ const handleDelete = (item) => {
|
|||||||
showToast(res.message || '删除失败');
|
showToast(res.message || '删除失败');
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
console.error('删除消息失败', error);
|
||||||
showToast('删除失败');
|
showToast('删除失败');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -187,6 +191,7 @@ const handleMarkAllRead = () => {
|
|||||||
showToast(res.message || '操作失败');
|
showToast(res.message || '操作失败');
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
console.error('标记所有已读失败', error);
|
||||||
showToast('操作失败');
|
showToast('操作失败');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -238,6 +243,15 @@ onMounted(() => {
|
|||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.message-content{
|
||||||
|
font-size: 14px;
|
||||||
|
color: var(--van-text-color-2);
|
||||||
|
margin-bottom: 6px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
.message-title.unread {
|
.message-title.unread {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
@@ -251,34 +265,13 @@ onMounted(() => {
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.message-detail {
|
|
||||||
padding: 20px;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
height: 100%;
|
|
||||||
background-color: var(--van-background);
|
|
||||||
}
|
|
||||||
|
|
||||||
.detail-header {
|
|
||||||
margin-bottom: 20px;
|
|
||||||
border-bottom: 1px solid var(--van-border-color);
|
|
||||||
padding-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.detail-header h3 {
|
|
||||||
margin: 0 0 10px 0;
|
|
||||||
font-size: 18px;
|
|
||||||
color: var(--van-text-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.detail-time {
|
.detail-time {
|
||||||
color: var(--van-text-color-2);
|
color: var(--van-text-color-2);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.detail-content {
|
.detail-content {
|
||||||
flex: 1;
|
padding: 20px;
|
||||||
overflow-y: auto;
|
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
color: var(--van-text-color);
|
color: var(--van-text-color);
|
||||||
|
|||||||
@@ -72,7 +72,7 @@
|
|||||||
</van-pull-refresh>
|
</van-pull-refresh>
|
||||||
|
|
||||||
<!-- 底部新增按钮 -->
|
<!-- 底部新增按钮 -->
|
||||||
<div class="bottom-add-button">
|
<div class="bottom-button">
|
||||||
<van-button
|
<van-button
|
||||||
type="primary"
|
type="primary"
|
||||||
size="large"
|
size="large"
|
||||||
@@ -92,12 +92,74 @@
|
|||||||
round
|
round
|
||||||
closeable
|
closeable
|
||||||
>
|
>
|
||||||
<div class="periodic-form">
|
<div class="popup-container">
|
||||||
<div class="form-header">
|
<div class="popup-header-fixed">
|
||||||
<h3>{{ isEdit ? '编辑周期账单' : '新增周期账单' }}</h3>
|
<h3>{{ isEdit ? '编辑周期账单' : '新增周期账单' }}</h3>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="popup-scroll-content">
|
||||||
<van-form @submit="onSubmit">
|
<van-form @submit="onSubmit">
|
||||||
|
<van-cell-group inset title="周期设置">
|
||||||
|
<van-field
|
||||||
|
v-model="form.periodicTypeText"
|
||||||
|
is-link
|
||||||
|
readonly
|
||||||
|
name="periodicType"
|
||||||
|
label="周期"
|
||||||
|
placeholder="请选择周期类型"
|
||||||
|
@click="showPeriodicTypePicker = true"
|
||||||
|
:rules="[{ required: true, message: '请选择周期类型' }]"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- 每周配置 -->
|
||||||
|
<van-field
|
||||||
|
v-if="form.periodicType === 1"
|
||||||
|
v-model="form.weekdaysText"
|
||||||
|
is-link
|
||||||
|
readonly
|
||||||
|
name="weekdays"
|
||||||
|
label="星期"
|
||||||
|
placeholder="请选择星期几"
|
||||||
|
@click="showWeekdaysPicker = true"
|
||||||
|
:rules="[{ required: true, message: '请选择星期几' }]"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- 每月配置 -->
|
||||||
|
<van-field
|
||||||
|
v-if="form.periodicType === 2"
|
||||||
|
v-model="form.monthDaysText"
|
||||||
|
is-link
|
||||||
|
readonly
|
||||||
|
name="monthDays"
|
||||||
|
label="日期"
|
||||||
|
placeholder="请选择每月的日期"
|
||||||
|
@click="showMonthDaysPicker = true"
|
||||||
|
:rules="[{ required: true, message: '请选择日期' }]"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- 每季度配置 -->
|
||||||
|
<van-field
|
||||||
|
v-if="form.periodicType === 3"
|
||||||
|
v-model="form.quarterDay"
|
||||||
|
name="quarterDay"
|
||||||
|
label="季度第几天"
|
||||||
|
placeholder="请输入季度开始后第几天"
|
||||||
|
type="number"
|
||||||
|
:rules="[{ required: true, message: '请输入季度开始后第几天' }]"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- 每年配置 -->
|
||||||
|
<van-field
|
||||||
|
v-if="form.periodicType === 4"
|
||||||
|
v-model="form.yearDay"
|
||||||
|
name="yearDay"
|
||||||
|
label="年第几天"
|
||||||
|
placeholder="请输入年开始后第几天"
|
||||||
|
type="number"
|
||||||
|
:rules="[{ required: true, message: '请输入年开始后第几天' }]"
|
||||||
|
/>
|
||||||
|
</van-cell-group>
|
||||||
|
|
||||||
<van-cell-group inset title="基本信息">
|
<van-cell-group inset title="基本信息">
|
||||||
<van-field
|
<van-field
|
||||||
v-model="form.reason"
|
v-model="form.reason"
|
||||||
@@ -167,67 +229,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</van-cell-group>
|
</van-cell-group>
|
||||||
|
|
||||||
<van-cell-group inset title="周期设置">
|
|
||||||
<van-field
|
|
||||||
v-model="form.periodicTypeText"
|
|
||||||
is-link
|
|
||||||
readonly
|
|
||||||
name="periodicType"
|
|
||||||
label="周期"
|
|
||||||
placeholder="请选择周期类型"
|
|
||||||
@click="showPeriodicTypePicker = true"
|
|
||||||
:rules="[{ required: true, message: '请选择周期类型' }]"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!-- 每周配置 -->
|
|
||||||
<van-field
|
|
||||||
v-if="form.periodicType === 1"
|
|
||||||
v-model="form.weekdaysText"
|
|
||||||
is-link
|
|
||||||
readonly
|
|
||||||
name="weekdays"
|
|
||||||
label="星期"
|
|
||||||
placeholder="请选择星期几"
|
|
||||||
@click="showWeekdaysPicker = true"
|
|
||||||
:rules="[{ required: true, message: '请选择星期几' }]"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!-- 每月配置 -->
|
|
||||||
<van-field
|
|
||||||
v-if="form.periodicType === 2"
|
|
||||||
v-model="form.monthDaysText"
|
|
||||||
is-link
|
|
||||||
readonly
|
|
||||||
name="monthDays"
|
|
||||||
label="日期"
|
|
||||||
placeholder="请选择每月的日期"
|
|
||||||
@click="showMonthDaysPicker = true"
|
|
||||||
:rules="[{ required: true, message: '请选择日期' }]"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!-- 每季度配置 -->
|
|
||||||
<van-field
|
|
||||||
v-if="form.periodicType === 3"
|
|
||||||
v-model="form.quarterDay"
|
|
||||||
name="quarterDay"
|
|
||||||
label="季度第几天"
|
|
||||||
placeholder="请输入季度开始后第几天"
|
|
||||||
type="number"
|
|
||||||
:rules="[{ required: true, message: '请输入季度开始后第几天' }]"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!-- 每年配置 -->
|
|
||||||
<van-field
|
|
||||||
v-if="form.periodicType === 4"
|
|
||||||
v-model="form.yearDay"
|
|
||||||
name="yearDay"
|
|
||||||
label="年第几天"
|
|
||||||
placeholder="请输入年开始后第几天"
|
|
||||||
type="number"
|
|
||||||
:rules="[{ required: true, message: '请输入年开始后第几天' }]"
|
|
||||||
/>
|
|
||||||
</van-cell-group>
|
|
||||||
|
|
||||||
<div style="margin: 16px;">
|
<div style="margin: 16px;">
|
||||||
<van-button round block type="primary" native-type="submit" :loading="submitting">
|
<van-button round block type="primary" native-type="submit" :loading="submitting">
|
||||||
{{ isEdit ? '更新' : '确认添加' }}
|
{{ isEdit ? '更新' : '确认添加' }}
|
||||||
@@ -235,6 +236,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</van-form>
|
</van-form>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</van-popup>
|
</van-popup>
|
||||||
|
|
||||||
<!-- 交易类型选择器 -->
|
<!-- 交易类型选择器 -->
|
||||||
@@ -775,7 +777,7 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.periodic-list {
|
.periodic-list {
|
||||||
/* padding: 16px 0; */
|
padding: 16px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.periodic-item {
|
.periodic-item {
|
||||||
@@ -818,31 +820,4 @@ onMounted(() => {
|
|||||||
border-radius: 16px;
|
border-radius: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom-add-button {
|
|
||||||
position: fixed;
|
|
||||||
bottom: calc(16px + env(safe-area-inset-bottom, 0px));
|
|
||||||
left: 16px;
|
|
||||||
right: 16px;
|
|
||||||
z-index: 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
.periodic-form {
|
|
||||||
height: 100%;
|
|
||||||
overflow-y: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-header {
|
|
||||||
padding: 16px;
|
|
||||||
text-align: center;
|
|
||||||
border-bottom: 1px solid var(--van-border-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-header h3 {
|
|
||||||
margin: 0;
|
|
||||||
color: var(--van-text-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
:deep(.van-cell-group) {
|
|
||||||
margin-top: 16px;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -284,13 +284,13 @@
|
|||||||
round
|
round
|
||||||
closeable
|
closeable
|
||||||
>
|
>
|
||||||
<div class="category-bills">
|
<div class="popup-container">
|
||||||
<div class="popup-header">
|
<div class="popup-header-fixed">
|
||||||
<h3>{{ selectedCategoryTitle }}</h3>
|
<h3>{{ selectedCategoryTitle }}</h3>
|
||||||
<p v-if="categoryBillsTotal">共 {{ categoryBillsTotal }} 笔交易</p>
|
<p v-if="categoryBillsTotal">共 {{ categoryBillsTotal }} 笔交易</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="bills-scroll-container">
|
<div class="popup-scroll-content" style="background: #f7f8fa;">
|
||||||
<TransactionList
|
<TransactionList
|
||||||
:transactions="categoryBills"
|
:transactions="categoryBills"
|
||||||
:loading="billListLoading"
|
:loading="billListLoading"
|
||||||
@@ -1103,67 +1103,6 @@ onActivated(() => {
|
|||||||
color: var(--van-text-color);
|
color: var(--van-text-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 分类账单列表弹出层 */
|
|
||||||
.category-bills {
|
|
||||||
height: 100%;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
background: #f7f8fa;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
.category-bills {
|
|
||||||
background: #141414;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.category-bills .popup-header {
|
|
||||||
padding: 20px 16px;
|
|
||||||
background: #fff;
|
|
||||||
border-bottom: 1px solid #ebedf0;
|
|
||||||
flex-shrink: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
.category-bills .popup-header {
|
|
||||||
background: #1f1f1f;
|
|
||||||
border-bottom: 1px solid #2c2c2c;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.category-bills .popup-header h3 {
|
|
||||||
margin: 0 0 8px 0;
|
|
||||||
font-size: 18px;
|
|
||||||
font-weight: 600;
|
|
||||||
color: var(--van-text-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.category-bills .popup-header p {
|
|
||||||
margin: 0;
|
|
||||||
font-size: 14px;
|
|
||||||
color: var(--van-text-color-2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 修复深色模式下van组件的背景色 */
|
|
||||||
.category-bills :deep(.van-list) {
|
|
||||||
background: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.category-bills :deep(.van-cell-group) {
|
|
||||||
background: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
.category-bills :deep(.van-cell) {
|
|
||||||
background-color: #1f1f1f;
|
|
||||||
}
|
|
||||||
|
|
||||||
.category-bills :deep(.van-swipe-cell) {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 设置页面容器背景色 */
|
/* 设置页面容器背景色 */
|
||||||
:deep(.van-nav-bar) {
|
:deep(.van-nav-bar) {
|
||||||
background: transparent !important;
|
background: transparent !important;
|
||||||
|
|||||||
@@ -36,11 +36,12 @@
|
|||||||
round
|
round
|
||||||
closeable
|
closeable
|
||||||
>
|
>
|
||||||
<div class="transaction-detail">
|
<div class="popup-container">
|
||||||
<div class="detail-header" style="padding-top: 10px; padding-left: 10px;">
|
<div class="popup-header-fixed">
|
||||||
<h3>手动录账单</h3>
|
<h3>手动录账单</h3>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="popup-scroll-content">
|
||||||
<van-form @submit="onAddSubmit">
|
<van-form @submit="onAddSubmit">
|
||||||
<van-cell-group inset title="基本信息">
|
<van-cell-group inset title="基本信息">
|
||||||
<van-field
|
<van-field
|
||||||
@@ -103,6 +104,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</van-form>
|
</van-form>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</van-popup>
|
</van-popup>
|
||||||
|
|
||||||
<!-- 新增交易 - 日期时间选择器 -->
|
<!-- 新增交易 - 日期时间选择器 -->
|
||||||
|
|||||||
Reference in New Issue
Block a user