JhHardwareWRS/pages/dashboard/dashboard.wxml
2026-06-24 15:19:14 +08:00

137 lines
7.2 KiB
Plaintext

<scroll-view
class="page safe-bottom"
scroll-y
type="list"
refresher-enabled
refresher-triggered="{{refreshing}}"
bindrefresherrefresh="onPullDownRefresh"
>
<view class="header">
<view class="dashboard-header-row">
<view class="dashboard-header-main">
<text class="title">报工看板</text>
<text class="subtitle">同人同日同项目、产品、工序、冲压方式的已审核报工自动合并</text>
</view>
<view class="void-filter-switch">
<text>过滤作废</text>
<switch checked="{{filterVoided}}" color="#1463ff" bindchange="onFilterVoidedChange" />
</view>
</view>
</view>
<view class="filter-bar date-filter-bar">
<view class="date-filter-cell">
<button class="date-step-btn" bindtap="decreaseStartDate">-</button>
<picker mode="date" value="{{startDate}}" bindchange="onStartChange">
<view class="picker">{{startDate || '开始日期'}}</view>
</picker>
</view>
<view class="date-filter-cell end">
<button class="date-step-btn" bindtap="increaseEndDate">+</button>
<picker mode="date" value="{{endDate}}" bindchange="onEndChange">
<view class="picker">{{endDate || '结束日期'}}</view>
</picker>
</view>
</view>
<button class="btn primary full export-btn" bindtap="exportFile">导出看板数据</button>
<view wx:if="{{!rows.length}}" class="list-empty">暂无已审核报工</view>
<view wx:for="{{rows}}" wx:key="id" class="card dashboard-card {{item.isSystemAutoSubmitted ? 'system-auto' : ''}} {{item.isVoided ? 'voided' : ''}}">
<text wx:if="{{item.isVoided}}" class="voided-watermark">作废</text>
<text wx:elif="{{item.correctionPairs.length}}" class="modified-watermark">更改</text>
<text wx:if="{{item.isSystemAutoSubmitted}}" class="timeout-watermark">超时-系统自动提交</text>
<text wx:if="{{item.isCleaning}}" class="cleaning-watermark {{item.isSystemAutoSubmitted || item.isVoided || item.correctionPairs.length ? 'lower-watermark' : ''}}">清洗</text>
<text wx:if="{{item.isMisc}}" class="misc-watermark {{item.isSystemAutoSubmitted || item.isVoided || item.correctionPairs.length ? 'lower-watermark' : ''}}">包含杂活</text>
<text wx:if="{{item.isMultiPerson}}" class="multi-person-watermark {{item.isSystemAutoSubmitted || item.isVoided || item.correctionPairs.length || item.isMisc || item.isCleaning ? 'lower-watermark' : ''}}">多人协作</text>
<text wx:if="{{item.isContinuousDie}}" class="continuous-die-watermark {{item.isSystemAutoSubmitted || item.isVoided || item.correctionPairs.length || item.isMisc || item.isCleaning || item.isMultiPerson ? 'lower-watermark' : ''}} {{item.isMultiPerson && (item.isSystemAutoSubmitted || item.isVoided || item.correctionPairs.length || item.isMisc || item.isCleaning) ? 'third-watermark' : ''}}">连续模</text>
<view class="row">
<view class="row-left">
<text class="value">{{item.employeeName}} · {{item.reportDate}}</text>
<text class="subtitle">考勤点 {{item.attendancePointName || '-'}}</text>
<text class="subtitle">{{item.employeePhone}} · {{item.projectNo}} / {{item.productName}}</text>
<text class="subtitle">{{item.processDisplayName || item.productName || '-'}}</text>
<text class="subtitle">{{item.isMisc ? '杂活事项' : '工序'}} {{item.processName || '-'}} · 冲压方式 {{item.stampingMethod || '-'}} · {{item.reportCount}} 条报工</text>
<text wx:if="{{!item.isCleaning && !item.isMisc}}" class="subtitle">材料库存批次号 {{item.rawMaterialBatchNo || '-'}}</text>
<text wx:if="{{item.shiftDistributionText}}" class="subtitle">{{item.shiftDistributionText}}</text>
<text wx:else class="subtitle">有效工时 {{item.effectiveMinutes}} 分钟</text>
<view wx:if="{{item.correctionPairs.length}}" class="correction-list">
<view wx:for="{{item.correctionPairs}}" wx:key="key" wx:for-item="pair" class="correction-pair">
<text>{{pair.label}} </text>
<text class="old-value">{{pair.oldValue}}</text>
<text> {{pair.newValue}}</text>
</view>
</view>
</view>
<text class="pill success">已合并</text>
</view>
<view class="divider"></view>
<view class="board-grid">
<view>
<text class="label">{{item.isMisc ? '处理杂活' : '成品数量'}}</text>
<text class="value {{item.workloadCompareClass}}">
{{item.isMisc ? '不计产量' : item.totalGood}}
<text wx:if="{{item.workloadReason}}" class="metric-reason">{{item.workloadReason}}</text>
</text>
</view>
<view wx:if="{{!item.isMisc}}">
<text class="label">不良数量</text>
<text class="value">{{item.totalDefect}}</text>
</view>
<view wx:if="{{!item.isMisc}}">
<text class="label">标准工作量</text>
<text class="value">{{item.expectedWorkload}}</text>
</view>
<view wx:if="{{!item.isMisc}}">
<text class="label">实际节拍</text>
<text class="value {{item.beatCompareClass}}">
{{item.actualBeat}} 秒
<text wx:if="{{item.beatReason}}" class="metric-reason">{{item.beatReason}}</text>
</text>
</view>
<view wx:if="{{!item.isMisc}}">
<text class="label">标准节拍</text>
<text class="value">{{item.standardBeat}} 秒</text>
</view>
<view wx:if="{{!item.isMisc}}">
<text class="label">节拍对比</text>
<text class="value {{item.beatCompareClass}}">{{item.paceText}}</text>
</view>
<view wx:if="{{!item.isMisc}}">
<text class="label">工作量对比</text>
<text class="value {{item.workloadCompareClass}}">{{item.workloadText}}</text>
</view>
<view wx:if="{{item.isMisc}}">
<text class="label">工时</text>
<text class="value">{{item.effectiveMinutes}} 分钟</text>
</view>
<view wx:if="{{!item.isCleaning && !item.isMisc}}">
<text class="label">材料库存批次号</text>
<text class="value">{{item.rawMaterialBatchNo || '-'}}</text>
</view>
<view wx:if="{{item.isContinuousDie}}">
<text class="label">换料次数</text>
<text class="value">{{item.changeoverCount || 0}}</text>
</view>
</view>
<view wx:if="{{item.reviewRemark}}" class="dashboard-remark">
<text class="label">备注</text>
<text class="value">{{item.reviewRemark}}</text>
</view>
<view class="salary-divider"></view>
<view class="salary-row">
<text class="label">参考工资</text>
<text class="salary-value">¥{{item.referenceWage || 0}}</text>
</view>
</view>
<view class="button-row pager-row" wx:if="{{rows.length}}">
<button class="btn secondary pager-nav" bindtap="prevPage" disabled="{{page <= 1}}">上一页</button>
<view class="page-jump-control">
<input class="page-jump-input" type="number" confirm-type="done" value="{{pageInput}}" bindinput="onPageInput" bindconfirm="jumpToPage" />
<text class="page-total-label">/ {{totalPages}}</text>
<text class="page-jump-action" bindtap="jumpToPage">跳</text>
</view>
<button class="btn secondary pager-nav" bindtap="nextPage" disabled="{{page >= totalPages}}">下一页</button>
</view>
</scroll-view>