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

181 lines
8.7 KiB
Plaintext

<scroll-view
class="page safe-bottom"
scroll-y
type="list"
scroll-top="{{scrollTop}}"
scroll-with-animation
refresher-enabled
refresher-triggered="{{refreshing}}"
bindrefresherrefresh="onPullDownRefresh"
>
<view class="header">
<text class="title">产品清单</text>
<text class="subtitle">项目号、产品名称、工序共同维护产品信息</text>
</view>
<view wx:if="{{!readonly}}" class="card">
<view class="button-row">
<button class="btn secondary full" bindtap="chooseFile">导入产品清单</button>
<button class="btn primary full" bindtap="exportFile">导出产品清单</button>
</view>
<button class="btn primary full add-btn" bindtap="openCreate">新增产品</button>
<text wx:if="{{importFileName}}" class="subtitle">已选择:{{importFileName}}</text>
</view>
<input class="input search" placeholder="搜索考勤点、产品、物料、供应商、工序、冲压方式" value="{{keyword}}" bindinput="onKeywordInput" />
<view wx:if="{{!rows.length}}" class="list-empty">暂无产品</view>
<view wx:for="{{rows}}" wx:key="uniqueKey" wx:for-index="index" class="card">
<view class="row">
<view class="row-left">
<text class="value">{{item.productName}}</text>
<text class="subtitle">考勤点 {{item.attendancePointName || '-'}}</text>
<text class="subtitle">{{item.projectNo}} · {{item.materialCode}}</text>
<text class="subtitle">物料名称 {{item.materialName || '-'}}</text>
</view>
<text class="pill primary">{{item.processDisplay || item.process || '工序'}}</text>
<text wx:if="{{item.isCleaning}}" class="cleaning-stamp">清洗</text>
<text wx:if="{{item.isMisc}}" class="misc-stamp">杂活</text>
<text wx:if="{{item.isMultiPerson}}" class="multi-person-stamp {{item.isCleaning || item.isMisc ? 'lower-product-stamp' : ''}}">多人协作</text>
<text wx:if="{{item.isContinuousDie}}" class="continuous-die-stamp {{item.isMultiPerson ? 'lower-product-stamp' : ''}}">连续模</text>
</view>
<view class="divider"></view>
<view wx:if="{{!item.isCleaning && !item.isMisc}}" class="row">
<text class="muted">标准节拍 {{item.standardBeat}} 秒</text>
<text class="muted">工序单价 {{item.processUnitPriceYuan || 0}} 元/件</text>
</view>
<view wx:if="{{!readonly}}" class="button-row">
<button class="btn secondary full" data-index="{{index}}" bindtap="edit">编辑</button>
<button class="btn danger full" data-index="{{index}}" bindtap="remove">删除</button>
</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>
<view wx:if="{{formVisible}}" class="modal-mask product-modal-mask" catchtap="closeForm">
<view class="modal-panel product-modal-panel" catchtap="noop">
<view class="modal-head">
<text class="modal-title">{{formTitle}}</text>
<button class="btn mini secondary modal-close" bindtap="clearForm">清空</button>
</view>
<view class="form-grid product-form-grid">
<view class="form-item full-span">
<text class="label">考勤点</text>
<picker
wx:if="{{attendancePoints.length}}"
range="{{attendancePointLabels}}"
value="{{attendancePointIndex}}"
bindchange="onAttendancePointChange"
>
<view class="picker">{{form.attendancePointName || '请选择考勤点'}}</view>
</picker>
<view wx:else class="readonly">暂无可选考勤点</view>
</view>
<view class="form-item">
<text class="label">项目号</text>
<input class="input" value="{{form.projectNo}}" data-field="projectNo" bindinput="onInput" />
</view>
<view class="form-item">
<text class="label">型材号</text>
<input class="input" value="{{form.profileNo}}" data-field="profileNo" bindinput="onInput" />
</view>
<view class="form-item full-span">
<text class="label">产品名称</text>
<input class="input" value="{{form.productName}}" data-field="productName" bindinput="onInput" />
</view>
<view class="form-item">
<text class="label">物料编码</text>
<input class="input" value="{{form.materialCode}}" data-field="materialCode" bindinput="onInput" />
</view>
<view class="form-item full-span">
<text class="label">物料名称</text>
<input class="input" value="{{form.materialName}}" data-field="materialName" bindinput="onInput" />
</view>
<view class="form-item">
<text class="label">供应商(非必填)</text>
<input class="input" value="{{form.supplier}}" data-field="supplier" bindinput="onInput" />
</view>
<view class="form-item">
<text class="label">工序</text>
<view class="process-input-wrap">
<input
class="input process-input"
type="text"
value="{{form.process}}"
placeholder="请输入数字"
data-field="process"
bindinput="onInput"
/>
<text wx:if="{{form.process !== '杂活'}}" class="process-suffix">序</text>
</view>
</view>
<view class="form-item stamping-field">
<text class="label">冲压方式</text>
<input
class="input"
value="{{form.stampingMethod}}"
placeholder="可输入,或选择清洗/连续模"
data-field="stampingMethod"
bindfocus="onStampingFocus"
bindblur="hideStampingSuggestion"
bindinput="onInput"
/>
<view wx:if="{{stampingSuggestionVisible}}" class="stamping-suggestion-panel">
<view
wx:for="{{stampingMethodSuggestions}}"
wx:key="*this"
class="stamping-suggestion-option"
data-value="{{item}}"
catchtap="chooseStampingSuggestion"
>{{item}}</view>
</view>
</view>
<view class="form-item">
<text class="label">操作人数</text>
<input class="input number-input" type="number" value="{{form.operatorCount}}" data-field="operatorCount" bindinput="onInput" />
</view>
<view class="form-item">
<text class="label">工序单价(元/件)</text>
<input class="input number-input" type="digit" value="{{form.processUnitPriceYuan}}" data-field="processUnitPriceYuan" bindinput="onInput" />
</view>
<view wx:if="{{form.stampingMethod !== '清洗' && form.stampingMethod !== '处理杂活'}}" class="form-item full-span">
<text class="label">标准节拍</text>
<input class="input number-input" type="digit" value="{{form.standardBeat}}" data-field="standardBeat" bindinput="onInput" />
</view>
<view wx:else class="form-item full-span">
<text class="label">{{form.stampingMethod === '处理杂活' ? '处理杂活' : '清洗方式'}}</text>
<view class="readonly">标准节拍不需要填写</view>
</view>
<view class="form-item">
<text class="label">产品净重(kg)(非必填)</text>
<input class="input number-input" type="digit" value="{{form.productNetWeightKg}}" data-field="productNetWeightKg" bindinput="onInput" />
</view>
<view class="form-item">
<text class="label">产品毛重(kg)(非必填)</text>
<input class="input number-input" type="digit" value="{{form.productGrossWeightKg}}" data-field="productGrossWeightKg" bindinput="onInput" />
</view>
<view class="form-item">
<text class="label">允许报废率(非必填)</text>
<input class="input number-input" type="digit" value="{{form.allowedScrapRate}}" data-field="allowedScrapRate" bindinput="onInput" />
</view>
<view class="form-item">
<text class="label">废料单价(元/kg)(非必填)</text>
<input class="input number-input" type="digit" value="{{form.wastePriceYuanPerKg}}" data-field="wastePriceYuanPerKg" bindinput="onInput" />
</view>
</view>
<view class="button-row product-modal-actions">
<button class="btn secondary full" bindtap="closeForm">关闭</button>
<button class="btn primary full" bindtap="save">保存产品</button>
</view>
</view>
</view>