提交代码

This commit is contained in:
zlwu committed 2025-08-22 14:15:02 +08:00
1 parent e54cb0bca0
commit f9b5e278ea
16 files changed
+333 -314

No files matched your search

+32 -7
View File
@@ -34,9 +34,10 @@ export default Vue.extend({
@import 'uview-ui/index.scss'; @import 'uview-ui/index.scss';
/* 引入自定义图标系统 - 暂时禁用,使用uview-ui内置图标 */ /* 引入自定义图标系统 - 暂时禁用,使用uview-ui内置图标 */
/* @import 'common/icons/iconfont.css'; */ @import '@/static/fonts/iconfont.css';
/* 修复uni-app和uview-ui兼容性问题 */ /* 修复uni-app和uview-ui兼容性问题 */
page { page {
height: 100%; height: 100%;
} }
@@ -118,10 +119,10 @@ page {
border-color: #d32f2f !important; border-color: #d32f2f !important;
} }
.u-button--info { // .u-button--info {
background-color: #1976d2 !important; // background-color: #007dfb !important;
border-color: #1976d2 !important; // border-color: #007dfb !important;
} // }
/* 标签主题色覆盖 */ /* 标签主题色覆盖 */
.u-tag--primary { .u-tag--primary {
@@ -145,8 +146,8 @@ page {
} }
.u-tag--info { .u-tag--info {
background-color: #1976d2 !important; background-color: #007dfb !important;
border-color: #1976d2 !important; border-color: #007dfb !important;
} }
/* ========== 全局温暖商务风格样式 ========== */ /* ========== 全局温暖商务风格样式 ========== */
@@ -326,4 +327,28 @@ page {
.bg-warm-green { .bg-warm-green {
background-color: #689f38; background-color: #689f38;
} }
.u-toolbar__wrapper__confirm {
color: #0051d9 !important;
}
.u-button--plain.u-button--primary {
color: #ffffff !important;
}
.u-button--plain.u-button--error {
color: #ffffff !important;
}
.u-button--plain.u-button--info {
color: #3e3b3b !important;
}
.u-button--plain.u-button--warning {
color: #ffffff !important;
}
.u-button--plain.u-button--success {
color: #ffffff !important;
}
</style> </style>
@@ -26,7 +26,8 @@
<view v-if="approvalButtonShow || (id && status !== 'draft')" class="button-group"> <view v-if="approvalButtonShow || (id && status !== 'draft')" class="button-group">
<u-button <u-button
v-if="approvalButtonShow" v-if="approvalButtonShow"
type="primary" type="warning"
shape="round"
plain plain
:loading="buttonLoading" :loading="buttonLoading"
@click="handleApproval" @click="handleApproval"
@@ -36,8 +37,9 @@
</u-button> </u-button>
<u-button <u-button
v-if="id && status !== 'draft'" v-if="id && status !== 'draft'"
type="primary" type="info"
plain plain
shape="round"
@click="handleApprovalRecord" @click="handleApprovalRecord"
class="action-button" class="action-button"
> >
@@ -195,7 +195,8 @@
</u-button> </u-button>
<u-button <u-button
v-if="task.flowStatus === 'waiting' && buttonObj.back" v-if="task.flowStatus === 'waiting' && buttonObj.back"
type="error" type="warning"
shape="round"
plain plain
:loading="buttonDisabled" :loading="buttonDisabled"
@click="handleBackProcessOpen" @click="handleBackProcessOpen"
+1
View File
@@ -1067,6 +1067,7 @@ export default {
align-items: center; align-items: center;
justify-content: center; justify-content: center;
transition: all 0.3s ease; transition: all 0.3s ease;
color: #ffffff !important;
&:active { &:active {
background: rgba(255, 255, 255, 0.25); background: rgba(255, 255, 255, 0.25);
@@ -47,7 +47,7 @@
class="location-icon-btn" class="location-icon-btn"
@click="openLeaveLocationInMap" @click="openLeaveLocationInMap"
> >
<u-icon name="map-fill" size="28" color="#2979ff" /> <u-icon name="map-fill" size="23" color="#2979ff" />
</view> </view>
</view> </view>
</view> </view>
@@ -91,6 +91,7 @@
<u-button <u-button
size="mini" size="mini"
type="primary" type="primary"
shape="round"
plain plain
@tap="handleImageDownload(image)" @tap="handleImageDownload(image)"
@click.stop.prevent="handleImageDownloadClick(image, $event)" @click.stop.prevent="handleImageDownloadClick(image, $event)"
@@ -138,6 +139,7 @@
<u-button <u-button
size="mini" size="mini"
type="primary" type="primary"
shape="round"
plain plain
@tap="handleDownloadFile(file)" @tap="handleDownloadFile(file)"
@click.stop.prevent="handleDownloadFileClick(file, $event)" @click.stop.prevent="handleDownloadFileClick(file, $event)"
@@ -190,7 +192,13 @@
<u-form-item label="销假地点" prop="cancelLocation" required> <u-form-item label="销假地点" prop="cancelLocation" required>
<view class="location-row"> <view class="location-row">
<u-button type="primary" size="mini" plain @click="handleGetLocation"> <u-button
shape="round"
type="info"
size="mini"
plain
@click="handleGetLocation"
>
<u-icon name="map-fill" size="20" color="#2979ff" /> <u-icon name="map-fill" size="20" color="#2979ff" />
<text style="margin-left: 8rpx"> <text style="margin-left: 8rpx">
{{ isWechatBrowser ? '微信定位' : '定位' }} {{ isWechatBrowser ? '微信定位' : '定位' }}
@@ -207,7 +215,7 @@
</view> </view>
<view class="location-action-container"> <view class="location-action-container">
<view class="location-icon-btn" @click="openLocationInMap"> <view class="location-icon-btn" @click="openLocationInMap">
<u-icon name="map-fill" size="28" color="#2979ff" /> <u-icon name="map-fill" size="23" color="#2979ff" />
</view> </view>
</view> </view>
</view> </view>
@@ -278,6 +286,7 @@
v-if="image.status === 'success'" v-if="image.status === 'success'"
size="mini" size="mini"
type="primary" type="primary"
shape="round"
plain plain
@tap="handleImageDownload(image)" @tap="handleImageDownload(image)"
@click.stop.prevent=" @click.stop.prevent="
@@ -290,6 +299,7 @@
v-if="image.status === 'error'" v-if="image.status === 'error'"
size="mini" size="mini"
type="warning" type="warning"
shape="round"
plain plain
@click.stop.prevent="retryUploadFile(image, $event)" @click.stop.prevent="retryUploadFile(image, $event)"
> >
@@ -298,6 +308,7 @@
<u-button <u-button
size="mini" size="mini"
type="error" type="error"
shape="round"
plain plain
@tap="handleImageDelete(image, index, $event)" @tap="handleImageDelete(image, index, $event)"
@click.stop.prevent=" @click.stop.prevent="
@@ -374,6 +385,7 @@
<u-button <u-button
v-if="file.status === 'success'" v-if="file.status === 'success'"
size="mini" size="mini"
shape="round"
type="primary" type="primary"
plain plain
@tap="handleDownloadFile(file)" @tap="handleDownloadFile(file)"
@@ -384,6 +396,7 @@
<u-button <u-button
v-if="file.status === 'error'" v-if="file.status === 'error'"
size="mini" size="mini"
shape="round"
type="warning" type="warning"
plain plain
@click.stop.prevent="retryUploadFile(file, $event)" @click.stop.prevent="retryUploadFile(file, $event)"
@@ -392,10 +405,13 @@
</u-button> </u-button>
<u-button <u-button
size="mini" size="mini"
shape="round"
type="error" type="error"
plain plain
@tap="handleRemoveFile(file, index)" @tap="handleRemoveFile(file, index)"
@click.stop.prevent="handleRemoveFileClick(file, index, $event)" @click.stop.prevent="
handleRemoveFileClick(file, index, $event)
"
> >
删除 删除
</u-button> </u-button>
@@ -410,7 +426,8 @@
<!-- 统一附件上传按钮 --> <!-- 统一附件上传按钮 -->
<view class="doc-upload-section"> <view class="doc-upload-section">
<u-button <u-button
type="primary" type="info"
shape="round"
icon="plus" icon="plus"
plain plain
@click="handleDocUpload" @click="handleDocUpload"
@@ -1346,14 +1363,14 @@ export default {
// 文档删除按钮点击处理(安全的事件处理) // 文档删除按钮点击处理(安全的事件处理)
handleRemoveFileClick(file, index, event) { handleRemoveFileClick(file, index, event) {
console.log('销假文档删除按钮被点击:', file, index); console.log('销假文档删除按钮被点击:', file, index);
// 强制阻止事件冒泡和默认行为 // 强制阻止事件冒泡和默认行为
if (event) { if (event) {
event.stopPropagation(); event.stopPropagation();
event.preventDefault(); event.preventDefault();
event.stopImmediatePropagation(); event.stopImmediatePropagation();
} }
// 调用实际的删除方法 // 调用实际的删除方法
this.handleRemoveFile(file, index); this.handleRemoveFile(file, index);
}, },
@@ -1840,7 +1857,7 @@ export default {
height: 48rpx; height: 48rpx;
border-radius: 50%; border-radius: 50%;
background: #f5faff; background: #f5faff;
border: 1px solid #e6f1ff; /* border: 1px solid #e6f1ff; */
cursor: pointer; cursor: pointer;
transition: all 0.2s ease; transition: all 0.2s ease;
} }
+70 -62
View File
@@ -58,10 +58,22 @@
</view> </view>
</view> </view>
<view class="search-actions"> <view class="search-actions">
<u-button type="primary" size="small" class="search-btn" @click="handleQuery"> <u-button
type="primary"
shape="round"
size="small"
class="search-btn"
@click="handleQuery"
>
搜索 搜索
</u-button> </u-button>
<u-button type="info" size="small" @click="resetQuery" style="margin-left: 10px"> <u-button
type="info"
shape="round"
size="small"
@click="resetQuery"
style="margin-left: 10px"
>
重置 重置
</u-button> </u-button>
</view> </view>
@@ -215,38 +227,74 @@
<!-- 操作按钮 --> <!-- 操作按钮 -->
<view class="card-actions"> <view class="card-actions">
<!-- 修改/查看按钮:根据审批状态动态显示 --> <!-- 修改/查看按钮:根据审批状态动态显示 -->
<view <u-button
v-if="isEditableStatus(item.approvalStatus)" v-if="isEditableStatus(item.approvalStatus)"
class="action-btn info-btn" type="primary"
shape="round"
size="small"
plain
@click="handleUpdate(item)" @click="handleUpdate(item)"
> >
<u-icon name="edit-pen" size="16" color="#3c9cff"></u-icon> <u-icon
<text class="btn-text">修改</text> name="edit-pen"
</view> size="14"
<view v-else class="action-btn warning-btn" @click="handleUpdate(item)"> color="#ffffff"
<u-icon name="eye" size="16" color="#ff9900"></u-icon> style="margin-right: 4px"
<text class="btn-text">查看</text> ></u-icon>
</view> 修改
</u-button>
<u-button
v-else
type="info"
shape="round"
size="small"
plain
@click="handleUpdate(item)"
>
<u-icon
name="eye"
size="14"
color="#323233"
style="margin-right: 4px"
></u-icon>
查看
</u-button>
<!-- 删除按钮:仅草稿状态可见 --> <!-- 删除按钮:仅草稿状态可见 -->
<view <u-button
v-if="item.approvalStatus === 'draft'" v-if="item.approvalStatus === 'draft'"
class="action-btn danger-btn" type="error"
size="small"
shape="round"
plain
@click="handleDelete(item)" @click="handleDelete(item)"
> >
<u-icon name="trash" size="16" color="#f56c6c"></u-icon> <u-icon
<text class="btn-text">删除</text> name="trash"
</view> size="14"
color="#ffffff"
style="margin-right: 4px"
></u-icon>
删除
</u-button>
<!-- 销假按钮:仅已完成状态且需要销假时可见 --> <!-- 销假按钮:仅已完成状态且需要销假时可见 -->
<view <u-button
v-if="item.approvalStatus === 'finish' && item.needCancel === '1'" v-if="item.approvalStatus === 'finish' && item.needCancel === '1'"
class="action-btn success-btn" type="success"
shape="round"
size="small"
plain
@click="handleCancelLeave(item)" @click="handleCancelLeave(item)"
> >
<u-icon name="checkmark-circle" size="16" color="#5ac725"></u-icon> <u-icon
<text class="btn-text">销假</text> name="checkmark-circle"
</view> size="14"
color="#ffffff"
style="margin-right: 4px"
></u-icon>
销假
</u-button>
</view> </view>
</view> </view>
</view> </view>
@@ -975,46 +1023,6 @@ export default {
padding: 20rpx; padding: 20rpx;
border-top: 1px solid #f0f0f0; border-top: 1px solid #f0f0f0;
gap: 16rpx; gap: 16rpx;
// background-color: #fafafa;
}
.action-btn {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 16rpx 20rpx;
border-radius: 12rpx;
min-width: 120rpx;
transition: all 0.3s ease;
background-color: transparent;
&:active {
transform: scale(0.95);
opacity: 0.8;
}
}
.btn-text {
font-size: 24rpx;
margin-top: 8rpx;
font-weight: 500;
}
.info-btn .btn-text {
color: #3c9cff;
}
.danger-btn .btn-text {
color: #f56c6c;
}
.success-btn .btn-text {
color: #5ac725;
}
.warning-btn .btn-text {
color: #ff9900;
} }
// 分页容器 // 分页容器
@@ -1024,7 +1032,7 @@ export default {
// 搜索按钮样式 // 搜索按钮样式
::v-deep .search-btn { ::v-deep .search-btn {
background: linear-gradient(135deg, #007aff, #0051d9) !important; // background: linear-gradient(135deg, #007aff, #0051d9) !important;
border: none !important; border: none !important;
box-shadow: 0 4px 16px rgba(0, 122, 255, 0.3) !important; box-shadow: 0 4px 16px rgba(0, 122, 255, 0.3) !important;
transition: all 0.3s ease !important; transition: all 0.3s ease !important;
@@ -178,7 +178,13 @@
<u-form-item label="请假地点"> <u-form-item label="请假地点">
<view class="location-row"> <view class="location-row">
<!-- 微信定位按钮单独一行 --> <!-- 微信定位按钮单独一行 -->
<u-button type="primary" size="mini" plain @click="handleGetLocation"> <u-button
type="info"
shape="round"
size="mini"
plain
@click="handleGetLocation"
>
<u-icon name="map-fill" size="20" color="#2979ff" /> <u-icon name="map-fill" size="20" color="#2979ff" />
<text style="margin-left: 8rpx"> <text style="margin-left: 8rpx">
{{ isWechatBrowser ? '微信定位' : '定位' }} {{ isWechatBrowser ? '微信定位' : '定位' }}
@@ -195,7 +201,13 @@
</text> </text>
</view> </view>
<view class="location-action-container"> <view class="location-action-container">
<u-button size="mini" type="primary" plain @click="openLocationInMap"> <u-button
shape="round"
size="mini"
type="info"
plain
@click="openLocationInMap"
>
<!-- <u-icon name="eye" size="16" color="#0051d9" /> --> <!-- <u-icon name="eye" size="16" color="#0051d9" /> -->
<text>查看位置</text> <text>查看位置</text>
</u-button> </u-button>
@@ -262,6 +274,7 @@
v-if="image.status === 'success'" v-if="image.status === 'success'"
size="mini" size="mini"
type="primary" type="primary"
shape="round"
plain plain
@tap="handleImageDownload(image)" @tap="handleImageDownload(image)"
@click.stop.prevent=" @click.stop.prevent="
@@ -274,6 +287,7 @@
v-if="image.status === 'error'" v-if="image.status === 'error'"
size="mini" size="mini"
type="warning" type="warning"
shape="round"
plain plain
@click.stop.prevent="retryUploadFile(image, $event)" @click.stop.prevent="retryUploadFile(image, $event)"
> >
@@ -283,6 +297,7 @@
size="mini" size="mini"
type="error" type="error"
plain plain
shape="round"
@tap="handleImageDelete(image, index)" @tap="handleImageDelete(image, index)"
@click.stop.prevent=" @click.stop.prevent="
handleImageDeleteClick(image, index, $event) handleImageDeleteClick(image, index, $event)
@@ -368,6 +383,7 @@
v-if="file.status === 'success'" v-if="file.status === 'success'"
size="mini" size="mini"
type="primary" type="primary"
shape="round"
plain plain
@tap="handleDownloadFile(file)" @tap="handleDownloadFile(file)"
@click.stop.prevent="handleDownloadFileClick(file, $event)" @click.stop.prevent="handleDownloadFileClick(file, $event)"
@@ -379,6 +395,7 @@
size="mini" size="mini"
type="warning" type="warning"
plain plain
shape="round"
@click.stop.prevent="retryUploadFile(file, $event)" @click.stop.prevent="retryUploadFile(file, $event)"
> >
重试 重试
@@ -386,6 +403,7 @@
<u-button <u-button
size="mini" size="mini"
type="error" type="error"
shape="round"
plain plain
@tap="handleRemoveFile(file, index)" @tap="handleRemoveFile(file, index)"
@click.stop.prevent=" @click.stop.prevent="
@@ -406,8 +424,9 @@
<!-- 统一附件上传按钮 --> <!-- 统一附件上传按钮 -->
<view class="doc-upload-section"> <view class="doc-upload-section">
<u-button <u-button
type="primary" type="info"
icon="plus" icon="plus"
shape="round"
plain plain
@click="handleDocUpload" @click="handleDocUpload"
style="margin-top: 20rpx; width: 100%" style="margin-top: 20rpx; width: 100%"
@@ -495,11 +514,12 @@
</view> </view>
</view> </view>
<view class="popup-actions"> <view class="popup-actions">
<u-button @click="handleFlowSelectionClose">取消</u-button> <u-button shape="round" @click="handleFlowSelectionClose">取消</u-button>
<u-button <u-button
type="primary" type="primary"
@click="handleFlowSelectionConfirm" @click="handleFlowSelectionConfirm"
:disabled="!selectedFlowCode" :disabled="!selectedFlowCode"
shape="round"
> >
确认 确认
</u-button> </u-button>
+35 -61
View File
@@ -75,23 +75,39 @@
<!-- 操作按钮 --> <!-- 操作按钮 -->
<view class="card-actions"> <view class="card-actions">
<view <u-button
v-if="isBatchValid(item)" v-if="isBatchValid(item)"
class="action-btn success-btn" type="primary"
shape="round"
size="small"
@click="handleInfoComplete(item)" @click="handleInfoComplete(item)"
> >
<u-icon name="edit-pen" size="16" color="#5ac725"></u-icon> <u-icon
<text class="btn-text">信息完善</text> name="edit-pen"
</view> size="14"
color="#fff"
<view class="action-btn warning-btn" @click="handleViewHistory(item)"> style="margin-right: 8rpx"
<u-icon name="clock" size="16" color="#ff9900"></u-icon> ></u-icon>
<text class="btn-text">提交历史</text> 信息完善
</view> </u-button>
<view class="action-btn info-btn" @click="handleView(item)"> <u-button type="info" shape="round" size="small" @click="handleViewHistory(item)">
<u-icon name="eye" size="16" color="#3c9cff"></u-icon> <u-icon
<text class="btn-text">查看详细</text> name="clock"
</view> size="14"
color="#323233"
style="margin-right: 8rpx"
></u-icon>
提交历史
</u-button>
<u-button type="info" shape="round" size="small" @click="handleView(item)">
<u-icon
name="eye"
size="14"
color="#323233"
style="margin-right: 8rpx"
></u-icon>
查看详细
</u-button>
</view> </view>
</view> </view>
</view> </view>
@@ -471,57 +487,15 @@ export default {
.card-actions { .card-actions {
display: flex; display: flex;
justify-content: space-around; justify-content: space-around;
align-items: center;
padding: 20rpx; padding: 20rpx;
border-top: 1px solid #f0f0f0; border-top: 1px solid #f0f0f0;
gap: 16rpx; gap: 12rpx;
} }
.action-btn { // u-button组件样式调整
display: flex; ::v-deep .u-button {
flex-direction: column; font-size: 24rpx !important;
align-items: center;
justify-content: center;
padding: 16rpx 20rpx;
border-radius: 12rpx;
background-color: #f8f9fa;
min-width: 120rpx;
transition: all 0.3s ease;
&:active {
transform: scale(0.95);
opacity: 0.8;
}
}
.btn-text {
font-size: 24rpx;
margin-top: 8rpx;
color: #303133;
font-weight: 500;
}
.info-btn {
background-color: rgba(60, 156, 255, 0);
.btn-text {
color: #3c9cff;
}
}
.success-btn {
background-color: rgba(90, 199, 37, 0);
.btn-text {
color: #5ac725;
}
}
.warning-btn {
background-color: rgba(255, 153, 0, 0);
.btn-text {
color: #ff9900;
}
} }
// 弹窗样式 // 弹窗样式
@@ -1243,6 +1243,8 @@
<!-- 底部操作按钮 --> <!-- 底部操作按钮 -->
<view class="action-buttons"> <view class="action-buttons">
<u-button <u-button
type="primary"
shape="round"
:loading="saveLoading" :loading="saveLoading"
@click="handleSave" @click="handleSave"
size="default" size="default"
@@ -3365,12 +3367,12 @@ export default {
// 保存按钮渐变色样式 // 保存按钮渐变色样式
.save-button { .save-button {
background: linear-gradient( // background: linear-gradient(
135deg, // 135deg,
rgb(0, 81, 217) 0%, // rgb(0, 81, 217) 0%,
rgb(51, 122, 235) 50%, // rgb(51, 122, 235) 50%,
rgb(102, 163, 255) 100% // rgb(102, 163, 255) 100%
) !important; // ) !important;
border: none !important; border: none !important;
color: #fff !important; color: #fff !important;
font-weight: 600 !important; font-weight: 600 !important;
+24 -35
View File
@@ -28,10 +28,22 @@
</view> </view>
<view class="search-actions"> <view class="search-actions">
<u-button type="primary" size="small" class="search-btn" @click="handleQuery"> <u-button
shape="round"
type="primary"
size="small"
class="search-btn"
@click="handleQuery"
>
搜索 搜索
</u-button> </u-button>
<u-button type="info" size="small" class="reset-btn" @click="resetQuery"> <u-button
shape="round"
type="info"
size="small"
class="reset-btn"
@click="resetQuery"
>
重置 重置
</u-button> </u-button>
</view> </view>
@@ -153,10 +165,15 @@
<!-- 操作按钮 --> <!-- 操作按钮 -->
<view class="card-actions"> <view class="card-actions">
<view class="action-btn view-btn" @click="handleView(item)"> <u-button
<u-icon name="eye" size="16" color="#3c9cff"></u-icon> type="primary"
<text class="btn-text">查看详细</text> shape="round"
</view> size="small"
icon="eye"
@click="handleView(item)"
>
查看详细
</u-button>
</view> </view>
</view> </view>
</view> </view>
@@ -656,34 +673,6 @@ export default {
border-top: 1px solid #f0f0f0; border-top: 1px solid #f0f0f0;
} }
.action-btn {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 16rpx 20rpx;
border-radius: 12rpx;
background-color: #f8f9fa;
min-width: 120rpx;
transition: all 0.3s ease;
&:active {
transform: scale(0.95);
opacity: 0.8;
}
}
.view-btn {
background-color: rgba(60, 156, 255, 0);
}
.btn-text {
font-size: 24rpx;
margin-top: 8rpx;
color: #3c9cff;
font-weight: 500;
}
.load-more { .load-more {
padding: 20rpx 0; padding: 20rpx 0;
} }
@@ -701,7 +690,7 @@ export default {
// 搜索按钮样式 // 搜索按钮样式
::v-deep .search-btn { ::v-deep .search-btn {
background: linear-gradient(135deg, #007aff, #0051d9) !important; // background: linear-gradient(135deg, #007aff, #0051d9) !important;
border: none !important; border: none !important;
box-shadow: 0 4px 16px rgba(0, 122, 255, 0.3) !important; box-shadow: 0 4px 16px rgba(0, 122, 255, 0.3) !important;
transition: all 0.3s ease !important; transition: all 0.3s ease !important;
+3 -3
View File
@@ -22,7 +22,7 @@
<!-- 基本信息 --> <!-- 基本信息 -->
<view class="section"> <view class="section">
<view class="section-title"> <view class="section-title">
<u-icon name="account" size="20" color="#3c9cff"></u-icon> <u-icon name="account" size="20" color="#0051d9"></u-icon>
<text class="title-text">学生信息</text> <text class="title-text">学生信息</text>
</view> </view>
<view class="info-grid"> <view class="info-grid">
@@ -52,7 +52,7 @@
<!-- 宿舍信息 --> <!-- 宿舍信息 -->
<view class="section"> <view class="section">
<view class="section-title"> <view class="section-title">
<u-icon name="home" size="20" color="#3c9cff"></u-icon> <u-icon name="home" size="20" color="#0051d9"></u-icon>
<text class="title-text">宿舍信息</text> <text class="title-text">宿舍信息</text>
</view> </view>
<view class="info-grid"> <view class="info-grid">
@@ -78,7 +78,7 @@
<!-- 违纪信息 --> <!-- 违纪信息 -->
<view class="section"> <view class="section">
<view class="section-title"> <view class="section-title">
<u-icon name="warning" size="20" color="#ff6b6b"></u-icon> <u-icon name="warning" size="20" color="#d32f2f"></u-icon>
<text class="title-text">违纪信息</text> <text class="title-text">违纪信息</text>
</view> </view>
<view class="violation-info"> <view class="violation-info">
+24 -7
View File
@@ -22,10 +22,22 @@
</view> </view>
</view> </view>
<view class="search-actions"> <view class="search-actions">
<u-button type="primary" size="small" class="search-btn" @click="handleQuery"> <u-button
type="primary"
shape="round"
size="small"
class="search-btn"
@click="handleQuery"
>
搜索 搜索
</u-button> </u-button>
<u-button type="info" size="small" @click="resetQuery" style="margin-left: 10px"> <u-button
type="info"
shape="round"
size="small"
@click="resetQuery"
style="margin-left: 10px"
>
重置 重置
</u-button> </u-button>
</view> </view>
@@ -151,10 +163,15 @@
<!-- 操作按钮 --> <!-- 操作按钮 -->
<view class="card-actions"> <view class="card-actions">
<!-- 查看按钮 --> <!-- 查看按钮 -->
<view class="action-btn primary-btn" @click="handleView(item)"> <u-button
<u-icon name="eye" size="16" color="#19be6b"></u-icon> type="info"
<text class="btn-text">查看</text> shape="round"
</view> size="small"
icon="eye"
@click="handleView(item)"
>
查看
</u-button>
<!-- 修改按钮 --> <!-- 修改按钮 -->
<!-- <view class="action-btn info-btn" @click="handleUpdate(item)"> <!-- <view class="action-btn info-btn" @click="handleUpdate(item)">
@@ -805,7 +822,7 @@ export default {
// 搜索按钮样式 // 搜索按钮样式
::v-deep .search-btn { ::v-deep .search-btn {
background: linear-gradient(135deg, #007aff, #0051d9) !important; // background: linear-gradient(135deg, #007aff, #0051d9) !important;
border: none !important; border: none !important;
box-shadow: 0 4px 16px rgba(0, 122, 255, 0.3) !important; box-shadow: 0 4px 16px rgba(0, 122, 255, 0.3) !important;
transition: all 0.3s ease !important; transition: all 0.3s ease !important;
+3 -3
View File
@@ -66,7 +66,7 @@
class="view-data-btn" class="view-data-btn"
@click="handleViewIndicatorData(item)" @click="handleViewIndicatorData(item)"
> >
<u-icon name="eye" size="16" color="#3c9cff"></u-icon> <u-icon name="eye" size="16" color="#0051d9"></u-icon>
<text class="view-data-text">查看数据</text> <text class="view-data-text">查看数据</text>
</view> </view>
</view> </view>
@@ -1373,13 +1373,13 @@ $radius-lg: 16rpx;
align-items: center; align-items: center;
gap: 4rpx; gap: 4rpx;
padding: 4rpx 8rpx; padding: 4rpx 8rpx;
background-color: #f0f8ff; // background-color: #f0f8ff;
border-radius: $radius-sm; border-radius: $radius-sm;
} }
.view-data-text { .view-data-text {
font-size: 22rpx; font-size: 22rpx;
color: $primary-color; color: $u-primary;
} }
.indicator-content { .indicator-content {
+31 -48
View File
@@ -76,22 +76,34 @@
<!-- 卡片操作按钮 --> <!-- 卡片操作按钮 -->
<view class="card-actions"> <view class="card-actions">
<view class="action-btn info-btn" @click="handleViewSchedule(item)"> <u-button
<u-icon name="eye" size="20" color="#3c9cff"></u-icon> type="info"
<text class="btn-text">查看计划</text> size="small"
</view> icon="eye"
<view shape="round"
@click="handleViewSchedule(item)"
>
查看计划
</u-button>
<u-button
v-if="canSubmitApplication(item)" v-if="canSubmitApplication(item)"
class="action-btn success-btn" type="primary"
size="small"
icon="edit-pen"
shape="round"
@click="handleSubmitApplication(item)" @click="handleSubmitApplication(item)"
> >
<u-icon name="edit-pen" size="20" color="#5ac725"></u-icon> 提交申请
<text class="btn-text">提交申请</text> </u-button>
</view> <u-button
<view class="action-btn warning-btn" @click="handleViewApplication(item)"> type="warning"
<u-icon name="file-text" size="20" color="#ff9900"></u-icon> size="small"
<text class="btn-text">查看申请</text> icon="file-text"
</view> shape="round"
@click="handleViewApplication(item)"
>
查看申请
</u-button>
</view> </view>
</view> </view>
</view> </view>
@@ -192,7 +204,12 @@
</view> </view>
<view class="popup-footer"> <view class="popup-footer">
<u-button type="primary" size="medium" @click="closeScheduleDetail"> <u-button
type="primary"
size="medium"
shape="round"
@click="closeScheduleDetail"
>
确定 确定
</u-button> </u-button>
</view> </view>
@@ -619,40 +636,6 @@ export default {
gap: 16rpx; gap: 16rpx;
} }
.action-btn {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 16rpx 20rpx;
border-radius: 12rpx;
min-width: 120rpx;
transition: all 0.3s ease;
&:active {
transform: scale(0.95);
opacity: 0.8;
}
}
.btn-text {
font-size: 24rpx;
margin-top: 8rpx;
font-weight: 500;
}
.info-btn .btn-text {
color: #3c9cff;
}
.success-btn .btn-text {
color: #5ac725;
}
.warning-btn .btn-text {
color: #ff9900;
}
.load-more { .load-more {
padding: 20rpx 0; padding: 20rpx 0;
} }
@@ -185,6 +185,7 @@
v-if="image.status === 'success'" v-if="image.status === 'success'"
size="mini" size="mini"
type="primary" type="primary"
shape="round"
plain plain
@tap="handleImageDownload(image)" @tap="handleImageDownload(image)"
@click.stop.prevent=" @click.stop.prevent="
@@ -197,6 +198,7 @@
v-if="image.status === 'error'" v-if="image.status === 'error'"
size="mini" size="mini"
type="warning" type="warning"
shape="round"
plain plain
@click.stop.prevent="retryUploadFile(image, $event)" @click.stop.prevent="retryUploadFile(image, $event)"
> >
@@ -206,6 +208,7 @@
v-if="canApply" v-if="canApply"
size="mini" size="mini"
type="error" type="error"
shape="round"
plain plain
@tap="handleImageDelete(image, index)" @tap="handleImageDelete(image, index)"
@click.stop.prevent=" @click.stop.prevent="
@@ -317,6 +320,7 @@
v-if="file.status === 'success'" v-if="file.status === 'success'"
size="mini" size="mini"
type="primary" type="primary"
shape="round"
plain plain
@tap="handleDownloadFile(file)" @tap="handleDownloadFile(file)"
@click.stop.prevent=" @click.stop.prevent="
@@ -329,6 +333,7 @@
v-if="file.status === 'error'" v-if="file.status === 'error'"
size="mini" size="mini"
type="warning" type="warning"
shape="round"
plain plain
@click.stop.prevent="retryUploadFile(file, $event)" @click.stop.prevent="retryUploadFile(file, $event)"
> >
@@ -338,9 +343,12 @@
v-if="canApply" v-if="canApply"
size="mini" size="mini"
type="error" type="error"
shape="round"
plain plain
@tap="handleRemoveFile(file, index)" @tap="handleRemoveFile(file, index)"
@click.stop.prevent="handleRemoveFileClick(file, index, $event)" @click.stop.prevent="
handleRemoveFileClick(file, index, $event)
"
> >
删除 删除
</u-button> </u-button>
@@ -357,7 +365,8 @@
<!-- 统一附件上传按钮 --> <!-- 统一附件上传按钮 -->
<view v-if="canApply" class="doc-upload-section"> <view v-if="canApply" class="doc-upload-section">
<u-button <u-button
type="primary" type="info"
shape="round"
icon="plus" icon="plus"
plain plain
@click="handleDocUpload" @click="handleDocUpload"
@@ -390,6 +399,7 @@
<u-button <u-button
type="primary" type="primary"
@click="submitForm" @click="submitForm"
shape="round"
:loading="buttonLoading" :loading="buttonLoading"
:disabled="!canApply" :disabled="!canApply"
custom-style="flex: 1; margin-right: 16rpx;" custom-style="flex: 1; margin-right: 16rpx;"
@@ -402,6 +412,7 @@
@click="handleDeleteApplication" @click="handleDeleteApplication"
:loading="deleteLoading" :loading="deleteLoading"
plain plain
shape="round"
custom-style="flex: 1;" custom-style="flex: 1;"
> >
删除申请 删除申请
+34 -65
View File
@@ -76,24 +76,40 @@
<!-- 操作按钮 --> <!-- 操作按钮 -->
<view class="card-actions"> <view class="card-actions">
<view class="action-btn info-btn" @click="handleView(item)"> <u-button
<u-icon name="eye" size="16" color="#3c9cff"></u-icon> type="info"
<text class="btn-text">查看</text> size="small"
</view> icon="eye"
shape="round"
<view icon-color="#323233"
v-if="item.status === '1'" @click="handleView(item)"
class="action-btn warning-btn" plain
@click="handleRevokeApply(item)"
> >
<u-icon name="edit-pen" size="16" color="#ff9900"></u-icon> 查看
<text class="btn-text">撤销申请</text> </u-button>
</view> <u-button
v-if="item.status === '1'"
<view class="action-btn success-btn" @click="handleViewRevoke(item)"> type="warning"
<u-icon name="file-text" size="16" color="#5ac725"></u-icon> size="small"
<text class="btn-text">查看撤销申请</text> shape="round"
</view> icon="edit-pen"
icon-color="#ffffff"
@click="handleRevokeApply(item)"
plain
>
撤销申请
</u-button>
<u-button
type="success"
size="small"
shape="round"
icon="file-text"
icon-color="#ffffff"
@click="handleViewRevoke(item)"
plain
>
查看撤销申请
</u-button>
</view> </view>
</view> </view>
</view> </view>
@@ -412,59 +428,12 @@ export default {
.card-actions { .card-actions {
display: flex; display: flex;
justify-content: space-around; justify-content: space-around;
align-items: center;
padding: 20rpx; padding: 20rpx;
border-top: 1px solid #f0f0f0; border-top: 1px solid #f0f0f0;
gap: 16rpx; gap: 16rpx;
} }
.action-btn {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 16rpx 20rpx;
border-radius: 12rpx;
// background-color: #f8f9fa;
min-width: 120rpx;
transition: all 0.3s ease;
&:active {
transform: scale(0.95);
opacity: 0.8;
}
}
.btn-text {
font-size: 24rpx;
margin-top: 8rpx;
color: #303133;
font-weight: 500;
}
.info-btn {
// background-color: rgba(60, 156, 255, 0.1);
.btn-text {
color: #3c9cff;
}
}
.success-btn {
// background-color: rgba(90, 199, 37, 0.1);
.btn-text {
color: #5ac725;
}
}
.warning-btn {
// background-color: rgba(255, 153, 0, 0.1);
.btn-text {
color: #ff9900;
}
}
.load-more { .load-more {
padding: 40rpx 20rpx; padding: 40rpx 20rpx;
} }