|
|
|
|
@ -7,28 +7,32 @@
|
|
|
|
|
<view class="search-row">
|
|
|
|
|
<view class="search-input-wrap">
|
|
|
|
|
<text class="iconfont icon-search search-icon"></text>
|
|
|
|
|
<input v-model="query.no" class="search-input" :placeholder="t('moldReturn.searchNo')" @confirm="handleSearch" />
|
|
|
|
|
<input v-model="query.no" class="search-input" :placeholder="t('moldReturn.searchNo')"
|
|
|
|
|
@confirm="handleSearch" />
|
|
|
|
|
</view>
|
|
|
|
|
<view class="search-btn" @click="handleSearch">{{ t('functionCommon.search') }}</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="filter-row">
|
|
|
|
|
<picker mode="selector" :range="warehouseOptions" range-key="name" :value="warehouseIndex" @change="onWarehouseFilterChange">
|
|
|
|
|
<picker mode="selector" :range="warehouseOptions" range-key="name" :value="warehouseIndex"
|
|
|
|
|
@change="onWarehouseFilterChange">
|
|
|
|
|
<view class="filter-item">{{ warehouseFilterLabel }}</view>
|
|
|
|
|
</picker>
|
|
|
|
|
<picker mode="selector" :range="statusOptions" range-key="label" :value="statusIndex" @change="onStatusFilterChange">
|
|
|
|
|
<picker mode="selector" :range="statusOptions" range-key="label" :value="statusIndex"
|
|
|
|
|
@change="onStatusFilterChange">
|
|
|
|
|
<view class="filter-item">{{ statusFilterLabel }}</view>
|
|
|
|
|
</picker>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<!-- 列表区 -->
|
|
|
|
|
<scroll-view scroll-y class="list-scroll" :scroll-top="scrollTop" @scroll="onScroll" @scrolltolower="loadMore" :lower-threshold="80">
|
|
|
|
|
<scroll-view scroll-y class="list-scroll" :scroll-top="scrollTop" @scroll="onScroll" @scrolltolower="loadMore"
|
|
|
|
|
:lower-threshold="80">
|
|
|
|
|
<view class="list-wrap">
|
|
|
|
|
<view v-for="item in list" :key="item.id" class="card" @click="openDetail(item)">
|
|
|
|
|
<view class="card-head">
|
|
|
|
|
<view>
|
|
|
|
|
<view class="card-title">{{ textValue(item.no) }}</view>
|
|
|
|
|
<view class="card-sub">{{ t('moldReturn.moldName') }}: {{ textValue(item.productNames) }}</view>
|
|
|
|
|
<view v-for="item in list" :key="item.id" class="type-card" @click="openDetail(item)">
|
|
|
|
|
<view class="card-header">
|
|
|
|
|
<view class="header-left">
|
|
|
|
|
<text class="type-name">{{ textValue(item.no) }}</text>
|
|
|
|
|
<text class="type-code">{{ t('moldReturn.moldName') }}: {{ textValue(item.productNames) }}</text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="status-chip" :class="statusClass(item.status)">{{ statusLabel(item.status) }}</view>
|
|
|
|
|
</view>
|
|
|
|
|
@ -48,13 +52,13 @@
|
|
|
|
|
</view>
|
|
|
|
|
<view class="card-actions">
|
|
|
|
|
<view v-if="String(item.status) === '10'" class="action-btn edit-btn" @click.stop="openEdit(item)">
|
|
|
|
|
<uni-icons type="compose" size="18" color="#096dd9"></uni-icons>
|
|
|
|
|
<uni-icons type="compose" size="18" color="#ffffff"></uni-icons>
|
|
|
|
|
</view>
|
|
|
|
|
<view v-if="String(item.status) === '10'" class="action-btn approve-btn" @click.stop="approve(item)">
|
|
|
|
|
<uni-icons type="checkmarkempty" size="18" color="#389e0d"></uni-icons>
|
|
|
|
|
<uni-icons type="checkmarkempty" size="18" color="#ffffff"></uni-icons>
|
|
|
|
|
</view>
|
|
|
|
|
<view v-if="String(item.status) === '10'" class="action-btn delete-btn" @click.stop="removeItem(item)">
|
|
|
|
|
<uni-icons type="trash" size="18" color="#cf1322"></uni-icons>
|
|
|
|
|
<uni-icons type="trash" size="18" color="#ffffff"></uni-icons>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
@ -78,7 +82,8 @@
|
|
|
|
|
<uni-popup ref="formPopupRef" type="bottom">
|
|
|
|
|
<view class="form-popup">
|
|
|
|
|
<view class="popup-header">
|
|
|
|
|
<text class="popup-title">{{ formMode === 'create' ? t('moldReturn.createTitle') : t('moldReturn.editTitle') }}</text>
|
|
|
|
|
<text class="popup-title">{{ formMode === 'create' ? t('moldReturn.createTitle') : t('moldReturn.editTitle')
|
|
|
|
|
}}</text>
|
|
|
|
|
<text class="popup-close" @click="closeForm">×</text>
|
|
|
|
|
</view>
|
|
|
|
|
<scroll-view scroll-y class="popup-scroll">
|
|
|
|
|
@ -88,7 +93,8 @@
|
|
|
|
|
</view>
|
|
|
|
|
<view class="form-item">
|
|
|
|
|
<text class="form-label">{{ t('moldReturn.inNo') }}</text>
|
|
|
|
|
<input class="form-input disabled" :value="textValue(formData.no)" :placeholder="t('moldReturn.noAuto')" disabled />
|
|
|
|
|
<input class="form-input disabled" :value="textValue(formData.no)" :placeholder="t('moldReturn.noAuto')"
|
|
|
|
|
disabled />
|
|
|
|
|
</view>
|
|
|
|
|
<view class="form-item">
|
|
|
|
|
<text class="form-label"><text class="required">*</text>{{ t('moldReturn.inTimeSingle') }}</text>
|
|
|
|
|
@ -98,17 +104,20 @@
|
|
|
|
|
</view>
|
|
|
|
|
<view class="form-item">
|
|
|
|
|
<text class="form-label"><text class="required">*</text>{{ t('moldReturn.warehouse') }}</text>
|
|
|
|
|
<picker mode="selector" :range="warehouseOptions" range-key="name" :value="formWarehouseIndex" @change="onFormWarehouseChange">
|
|
|
|
|
<picker mode="selector" :range="warehouseOptions" range-key="name" :value="formWarehouseIndex"
|
|
|
|
|
@change="onFormWarehouseChange">
|
|
|
|
|
<view class="picker-view">{{ formWarehouseLabel || t('moldReturn.warehousePlaceholder') }}</view>
|
|
|
|
|
</picker>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="form-item">
|
|
|
|
|
<text class="form-label">{{ t('moldReturn.attachment') }}</text>
|
|
|
|
|
<input v-model="formData.fileUrl" class="form-input" type="text" :placeholder="t('moldReturn.fileUrlPlaceholder')" />
|
|
|
|
|
<input v-model="formData.fileUrl" class="form-input" type="text"
|
|
|
|
|
:placeholder="t('moldReturn.fileUrlPlaceholder')" />
|
|
|
|
|
</view>
|
|
|
|
|
<view class="form-item">
|
|
|
|
|
<text class="form-label">{{ t('moldReturn.remark') }}</text>
|
|
|
|
|
<textarea v-model="formData.remark" class="form-textarea" :placeholder="t('moldReturn.remarkPlaceholder')" maxlength="200" />
|
|
|
|
|
<textarea v-model="formData.remark" class="form-textarea" :placeholder="t('moldReturn.remarkPlaceholder')"
|
|
|
|
|
maxlength="200" />
|
|
|
|
|
</view>
|
|
|
|
|
<view class="sub-title-row">
|
|
|
|
|
<text class="sub-title"><text class="required">*</text>{{ t('moldReturn.itemListTitle') }}</text>
|
|
|
|
|
@ -150,10 +159,12 @@
|
|
|
|
|
</view>
|
|
|
|
|
<view class="picker-search">
|
|
|
|
|
<view class="picker-search-row">
|
|
|
|
|
<input v-model="moldQuery.code" class="picker-search-input" :placeholder="t('moldReturn.searchCode')" @confirm="handleMoldSearch" />
|
|
|
|
|
<input v-model="moldQuery.code" class="picker-search-input" :placeholder="t('moldReturn.searchCode')"
|
|
|
|
|
@confirm="handleMoldSearch" />
|
|
|
|
|
</view>
|
|
|
|
|
<view class="picker-search-row">
|
|
|
|
|
<input v-model="moldQuery.name" class="picker-search-input" :placeholder="t('moldReturn.searchName')" @confirm="handleMoldSearch" />
|
|
|
|
|
<input v-model="moldQuery.name" class="picker-search-input" :placeholder="t('moldReturn.searchName')"
|
|
|
|
|
@confirm="handleMoldSearch" />
|
|
|
|
|
</view>
|
|
|
|
|
<view class="picker-search-actions">
|
|
|
|
|
<view class="picker-action-btn" @click="handleMoldSearch">{{ t('functionCommon.search') }}</view>
|
|
|
|
|
@ -166,7 +177,8 @@
|
|
|
|
|
<view class="picker-item-name">{{ textValue(m.name) }}</view>
|
|
|
|
|
<view class="picker-item-code">{{ textValue(m.code) }}</view>
|
|
|
|
|
<view class="picker-item-meta">
|
|
|
|
|
{{ t('moldReturn.moldStatus') }}: {{ moldStatusLabel(m.status) }} · {{ t('moldReturn.moldUseTime') }}: {{ textValue(m.useTime) }}
|
|
|
|
|
{{ t('moldReturn.moldStatus') }}: {{ moldStatusLabel(m.status) }} · {{ t('moldReturn.moldUseTime') }}:
|
|
|
|
|
{{ textValue(m.useTime) }}
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<text class="picker-check">{{ formItemIds.has(Number(m.id)) ? '✓' : '' }}</text>
|
|
|
|
|
@ -550,78 +562,477 @@ onShow(async () => {
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
.page-container { min-height: 100vh; background: #f0f2f5; }
|
|
|
|
|
.search-card { margin: 18rpx 24rpx; padding: 20rpx; border-radius: 16rpx; background: #fff; }
|
|
|
|
|
.search-row { display: flex; gap: 16rpx; }
|
|
|
|
|
.search-input-wrap { flex: 1; display: flex; align-items: center; background: #f5f7fa; border-radius: 40rpx; padding: 0 20rpx; }
|
|
|
|
|
.search-icon { color: #909399; }
|
|
|
|
|
.search-input { flex: 1; height: 72rpx; margin-left: 12rpx; }
|
|
|
|
|
.search-btn { min-width: 120rpx; height: 72rpx; border-radius: 36rpx; background: #1a3a5c; color: #fff; display: flex; align-items: center; justify-content: center; font-size: 26rpx; }
|
|
|
|
|
.filter-row { margin-top: 16rpx; display: flex; gap: 14rpx; }
|
|
|
|
|
.filter-item { min-width: 220rpx; padding: 12rpx 18rpx; border-radius: 10rpx; background: #f5f7fa; color: #303133; font-size: 24rpx; }
|
|
|
|
|
.list-scroll { height: calc(100vh - 360rpx); }
|
|
|
|
|
.list-wrap { padding: 0 24rpx 130rpx; }
|
|
|
|
|
.card { background: #fff; border-radius: 16rpx; padding: 20rpx; margin-bottom: 16rpx; }
|
|
|
|
|
.card-head { display: flex; justify-content: space-between; gap: 10rpx; }
|
|
|
|
|
.card-title { font-size: 30rpx; font-weight: 700; color: #1a3a5c; }
|
|
|
|
|
.card-sub { margin-top: 8rpx; color: #606266; font-size: 24rpx; }
|
|
|
|
|
.status-chip { padding: 6rpx 16rpx; border-radius: 20rpx; font-size: 22rpx; }
|
|
|
|
|
.status-draft { background: rgba(250, 173, 20, 0.12); color: #ad6800; }
|
|
|
|
|
.status-approved { background: rgba(82, 196, 26, 0.12); color: #389e0d; }
|
|
|
|
|
.status-other { background: rgba(24, 144, 255, 0.12); color: #096dd9; }
|
|
|
|
|
.card-body { margin-top: 14rpx; }
|
|
|
|
|
.row { display: flex; justify-content: space-between; margin-bottom: 10rpx; }
|
|
|
|
|
.label { color: #909399; font-size: 24rpx; }
|
|
|
|
|
.value { color: #303133; font-size: 24rpx; max-width: 66%; text-align: right; }
|
|
|
|
|
.card-actions { margin-top: 8rpx; display: flex; justify-content: flex-end; gap: 10rpx; }
|
|
|
|
|
.action-btn { width: 56rpx; height: 56rpx; border-radius: 10rpx; display: flex; align-items: center; justify-content: center; }
|
|
|
|
|
.edit-btn { background: rgba(24, 144, 255, 0.12); }
|
|
|
|
|
.approve-btn { background: rgba(82, 196, 26, 0.14); }
|
|
|
|
|
.delete-btn { background: rgba(245, 34, 45, 0.12); }
|
|
|
|
|
.hint { text-align: center; color: #909399; padding: 24rpx 0; }
|
|
|
|
|
.fab-btn { position: fixed; right: 34rpx; bottom: 120rpx; width: 96rpx; height: 96rpx; border-radius: 50%; background: linear-gradient(135deg, #1a3a5c 0%, #2d5a87 100%); display: flex; align-items: center; justify-content: center; box-shadow: 0 10rpx 30rpx rgba(26, 58, 92, 0.3); z-index: 20; }
|
|
|
|
|
.go-top-btn { position: fixed; right: 34rpx; bottom: 240rpx; width: 80rpx; height: 80rpx; border-radius: 50%; background: #fff; box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.12); display: flex; align-items: center; justify-content: center; }
|
|
|
|
|
.form-popup { background: #fff; border-radius: 22rpx 22rpx 0 0; max-height: 88vh; }
|
|
|
|
|
.popup-header { height: 96rpx; display: flex; align-items: center; justify-content: center; position: relative; border-bottom: 1rpx solid #f0f0f0; }
|
|
|
|
|
.popup-title { font-size: 30rpx; font-weight: 700; }
|
|
|
|
|
.popup-close { position: absolute; right: 28rpx; top: 20rpx; font-size: 44rpx; color: #909399; }
|
|
|
|
|
.popup-scroll { max-height: calc(88vh - 180rpx); padding: 20rpx 26rpx; }
|
|
|
|
|
.form-item { margin-bottom: 18rpx; }
|
|
|
|
|
.form-label { font-size: 24rpx; color: #606266; margin-bottom: 8rpx; display: block; }
|
|
|
|
|
.required { color: #f56c6c; margin-right: 6rpx; }
|
|
|
|
|
.form-input,.picker-view { min-height: 72rpx; border-radius: 12rpx; background: #f5f7fa; padding: 0 18rpx; display: flex; align-items: center; }
|
|
|
|
|
.disabled { color: #909399; }
|
|
|
|
|
.form-textarea { width: 100%; min-height: 120rpx; border-radius: 12rpx; background: #f5f7fa; padding: 14rpx 18rpx; }
|
|
|
|
|
.sub-title-row { margin-top: 20rpx; display: flex; justify-content: space-between; align-items: center; }
|
|
|
|
|
.sub-title { font-size: 26rpx; font-weight: 600; }
|
|
|
|
|
.sub-action { color: #1a3a5c; font-size: 24rpx; }
|
|
|
|
|
.item-empty { padding: 20rpx; color: #909399; text-align: center; }
|
|
|
|
|
.item-card { margin-top: 14rpx; border-radius: 12rpx; background: #f8fafc; padding: 16rpx; }
|
|
|
|
|
.item-head { display: flex; justify-content: space-between; }
|
|
|
|
|
.item-name { color: #1a3a5c; font-size: 26rpx; font-weight: 600; }
|
|
|
|
|
.item-remove { color: #f56c6c; font-size: 34rpx; }
|
|
|
|
|
.item-row { margin-top: 10rpx; }
|
|
|
|
|
.item-label { color: #909399; font-size: 22rpx; }
|
|
|
|
|
.item-input { margin-top: 6rpx; min-height: 64rpx; border-radius: 10rpx; background: #fff; padding: 0 14rpx; }
|
|
|
|
|
.popup-footer { height: 88rpx; display: flex; }
|
|
|
|
|
.footer-btn { flex: 1; display: flex; align-items: center; justify-content: center; font-size: 28rpx; }
|
|
|
|
|
.cancel { background: #f5f7fa; color: #606266; }
|
|
|
|
|
.confirm { background: #1a3a5c; color: #fff; }
|
|
|
|
|
.picker-popup { background: #fff; border-radius: 22rpx 22rpx 0 0; height: 72vh; }
|
|
|
|
|
.picker-header { height: 90rpx; display: flex; justify-content: center; align-items: center; position: relative; }
|
|
|
|
|
.picker-title { font-size: 28rpx; font-weight: 700; }
|
|
|
|
|
.picker-close { position: absolute; right: 24rpx; top: 18rpx; font-size: 42rpx; }
|
|
|
|
|
.picker-search { padding: 0 24rpx 12rpx; }
|
|
|
|
|
.picker-search-row { margin-bottom: 10rpx; }
|
|
|
|
|
.picker-search-input { height: 68rpx; border-radius: 10rpx; background: #f5f7fa; padding: 0 14rpx; }
|
|
|
|
|
.picker-search-actions { margin-top: 6rpx; display: flex; gap: 12rpx; }
|
|
|
|
|
.picker-action-btn { min-width: 110rpx; height: 56rpx; border-radius: 10rpx; background: #1a3a5c; color: #fff; display: flex; align-items: center; justify-content: center; font-size: 22rpx; }
|
|
|
|
|
.picker-action-btn.reset { background: #eef1f4; color: #606266; }
|
|
|
|
|
.picker-scroll { height: calc(72vh - 150rpx); }
|
|
|
|
|
.picker-item { margin: 0 24rpx 12rpx; padding: 16rpx; border-radius: 12rpx; background: #f8fafc; display: flex; justify-content: space-between; align-items: center; }
|
|
|
|
|
.picker-item-name { color: #303133; font-size: 26rpx; }
|
|
|
|
|
.picker-item-code { color: #909399; font-size: 22rpx; margin-top: 6rpx; }
|
|
|
|
|
.picker-item-meta { color: #909399; font-size: 20rpx; margin-top: 4rpx; }
|
|
|
|
|
.picker-check { color: #1a3a5c; font-size: 34rpx; }
|
|
|
|
|
.picker-hint { text-align: center; color: #909399; padding: 16rpx 0 22rpx; }
|
|
|
|
|
.page-container {
|
|
|
|
|
min-height: 100vh;
|
|
|
|
|
background: #f0f2f5;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.search-card {
|
|
|
|
|
margin: 18rpx 24rpx;
|
|
|
|
|
padding: 20rpx;
|
|
|
|
|
border-radius: 16rpx;
|
|
|
|
|
background: #fff;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.search-row {
|
|
|
|
|
display: flex;
|
|
|
|
|
gap: 16rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.search-input-wrap {
|
|
|
|
|
flex: 1;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
background: #f5f7fa;
|
|
|
|
|
border-radius: 40rpx;
|
|
|
|
|
padding: 0 20rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.search-icon {
|
|
|
|
|
color: #909399;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.search-input {
|
|
|
|
|
flex: 1;
|
|
|
|
|
height: 72rpx;
|
|
|
|
|
margin-left: 12rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.search-btn {
|
|
|
|
|
min-width: 120rpx;
|
|
|
|
|
height: 72rpx;
|
|
|
|
|
border-radius: 36rpx;
|
|
|
|
|
background: #1a3a5c;
|
|
|
|
|
color: #fff;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
font-size: 26rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.filter-row {
|
|
|
|
|
margin-top: 16rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
gap: 14rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.filter-item {
|
|
|
|
|
min-width: 220rpx;
|
|
|
|
|
padding: 12rpx 18rpx;
|
|
|
|
|
border-radius: 10rpx;
|
|
|
|
|
background: #f5f7fa;
|
|
|
|
|
color: #303133;
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.list-scroll {
|
|
|
|
|
height: calc(100vh - 360rpx);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.list-wrap {
|
|
|
|
|
padding: 0 24rpx 130rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.type-card {
|
|
|
|
|
background: #ffffff;
|
|
|
|
|
border-radius: 18rpx;
|
|
|
|
|
padding: 24rpx;
|
|
|
|
|
margin-bottom: 18rpx;
|
|
|
|
|
box-shadow: 0 4rpx 18rpx rgba(0, 0, 0, 0.05);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.card-header {
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
align-items: center;
|
|
|
|
|
padding-bottom: 18rpx;
|
|
|
|
|
border-bottom: 1rpx solid #edf0f3;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.header-left {
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
gap: 8rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.type-name {
|
|
|
|
|
font-size: 32rpx;
|
|
|
|
|
font-weight: 700;
|
|
|
|
|
color: #1f2d3d;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.type-code {
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
color: #8a9099;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.status-chip {
|
|
|
|
|
padding: 6rpx 16rpx;
|
|
|
|
|
border-radius: 20rpx;
|
|
|
|
|
font-size: 22rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.status-draft {
|
|
|
|
|
background: rgba(250, 173, 20, 0.12);
|
|
|
|
|
color: #ad6800;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.status-approved {
|
|
|
|
|
background: rgba(82, 196, 26, 0.12);
|
|
|
|
|
color: #389e0d;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.status-other {
|
|
|
|
|
background: rgba(24, 144, 255, 0.12);
|
|
|
|
|
color: #096dd9;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.card-body {
|
|
|
|
|
padding-top: 16rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.row {
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
align-items: center;
|
|
|
|
|
margin-top: 12rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.label {
|
|
|
|
|
font-size: 26rpx;
|
|
|
|
|
color: #8a9099;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.value {
|
|
|
|
|
font-size: 27rpx;
|
|
|
|
|
color: #30363d;
|
|
|
|
|
max-width: 62%;
|
|
|
|
|
text-align: right;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.card-actions {
|
|
|
|
|
margin-top: 24rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: flex-end;
|
|
|
|
|
gap: 14rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.action-btn {
|
|
|
|
|
width: 60rpx;
|
|
|
|
|
height: 60rpx;
|
|
|
|
|
border-radius: 12rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.edit-btn {
|
|
|
|
|
background: #1a3a5c;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.approve-btn {
|
|
|
|
|
background: #18a058;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.delete-btn {
|
|
|
|
|
background: #e34d59;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.hint {
|
|
|
|
|
text-align: center;
|
|
|
|
|
color: #909399;
|
|
|
|
|
padding: 24rpx 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.fab-btn {
|
|
|
|
|
position: fixed;
|
|
|
|
|
right: 34rpx;
|
|
|
|
|
bottom: 120rpx;
|
|
|
|
|
width: 96rpx;
|
|
|
|
|
height: 96rpx;
|
|
|
|
|
border-radius: 50%;
|
|
|
|
|
background: linear-gradient(135deg, #1a3a5c 0%, #2d5a87 100%);
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
box-shadow: 0 10rpx 30rpx rgba(26, 58, 92, 0.3);
|
|
|
|
|
z-index: 20;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.go-top-btn {
|
|
|
|
|
position: fixed;
|
|
|
|
|
right: 34rpx;
|
|
|
|
|
bottom: 240rpx;
|
|
|
|
|
width: 80rpx;
|
|
|
|
|
height: 80rpx;
|
|
|
|
|
border-radius: 50%;
|
|
|
|
|
background: #fff;
|
|
|
|
|
box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.12);
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.form-popup {
|
|
|
|
|
background: #fff;
|
|
|
|
|
border-radius: 22rpx 22rpx 0 0;
|
|
|
|
|
max-height: 88vh;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.popup-header {
|
|
|
|
|
height: 96rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
position: relative;
|
|
|
|
|
border-bottom: 1rpx solid #f0f0f0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.popup-title {
|
|
|
|
|
font-size: 30rpx;
|
|
|
|
|
font-weight: 700;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.popup-close {
|
|
|
|
|
position: absolute;
|
|
|
|
|
right: 28rpx;
|
|
|
|
|
top: 20rpx;
|
|
|
|
|
font-size: 44rpx;
|
|
|
|
|
color: #909399;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.popup-scroll {
|
|
|
|
|
max-height: calc(88vh - 180rpx);
|
|
|
|
|
padding: 20rpx 26rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.form-item {
|
|
|
|
|
margin-bottom: 18rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.form-label {
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
color: #606266;
|
|
|
|
|
margin-bottom: 8rpx;
|
|
|
|
|
display: block;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.required {
|
|
|
|
|
color: #f56c6c;
|
|
|
|
|
margin-right: 6rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.form-input,
|
|
|
|
|
.picker-view {
|
|
|
|
|
min-height: 72rpx;
|
|
|
|
|
border-radius: 12rpx;
|
|
|
|
|
background: #f5f7fa;
|
|
|
|
|
padding: 0 18rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.disabled {
|
|
|
|
|
color: #909399;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.form-textarea {
|
|
|
|
|
width: 100%;
|
|
|
|
|
min-height: 120rpx;
|
|
|
|
|
border-radius: 12rpx;
|
|
|
|
|
background: #f5f7fa;
|
|
|
|
|
padding: 14rpx 18rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.sub-title-row {
|
|
|
|
|
margin-top: 20rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
align-items: center;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.sub-title {
|
|
|
|
|
font-size: 26rpx;
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.sub-action {
|
|
|
|
|
color: #1a3a5c;
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.item-empty {
|
|
|
|
|
padding: 20rpx;
|
|
|
|
|
color: #909399;
|
|
|
|
|
text-align: center;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.item-card {
|
|
|
|
|
margin-top: 14rpx;
|
|
|
|
|
border-radius: 12rpx;
|
|
|
|
|
background: #f8fafc;
|
|
|
|
|
padding: 16rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.item-head {
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.item-name {
|
|
|
|
|
color: #1a3a5c;
|
|
|
|
|
font-size: 26rpx;
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.item-remove {
|
|
|
|
|
color: #f56c6c;
|
|
|
|
|
font-size: 34rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.item-row {
|
|
|
|
|
margin-top: 10rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.item-label {
|
|
|
|
|
color: #909399;
|
|
|
|
|
font-size: 22rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.item-input {
|
|
|
|
|
margin-top: 6rpx;
|
|
|
|
|
min-height: 64rpx;
|
|
|
|
|
border-radius: 10rpx;
|
|
|
|
|
background: #fff;
|
|
|
|
|
padding: 0 14rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.popup-footer {
|
|
|
|
|
height: 88rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.footer-btn {
|
|
|
|
|
flex: 1;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.cancel {
|
|
|
|
|
background: #f5f7fa;
|
|
|
|
|
color: #606266;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.confirm {
|
|
|
|
|
background: #1a3a5c;
|
|
|
|
|
color: #fff;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.picker-popup {
|
|
|
|
|
background: #fff;
|
|
|
|
|
border-radius: 22rpx 22rpx 0 0;
|
|
|
|
|
height: 72vh;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.picker-header {
|
|
|
|
|
height: 90rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
align-items: center;
|
|
|
|
|
position: relative;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.picker-title {
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
font-weight: 700;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.picker-close {
|
|
|
|
|
position: absolute;
|
|
|
|
|
right: 24rpx;
|
|
|
|
|
top: 18rpx;
|
|
|
|
|
font-size: 42rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.picker-search {
|
|
|
|
|
padding: 0 24rpx 12rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.picker-search-row {
|
|
|
|
|
margin-bottom: 10rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.picker-search-input {
|
|
|
|
|
height: 68rpx;
|
|
|
|
|
border-radius: 10rpx;
|
|
|
|
|
background: #f5f7fa;
|
|
|
|
|
padding: 0 14rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.picker-search-actions {
|
|
|
|
|
margin-top: 6rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
gap: 12rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.picker-action-btn {
|
|
|
|
|
min-width: 110rpx;
|
|
|
|
|
height: 56rpx;
|
|
|
|
|
border-radius: 10rpx;
|
|
|
|
|
background: #1a3a5c;
|
|
|
|
|
color: #fff;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
font-size: 22rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.picker-action-btn.reset {
|
|
|
|
|
background: #eef1f4;
|
|
|
|
|
color: #606266;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.picker-scroll {
|
|
|
|
|
height: calc(72vh - 150rpx);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.picker-item {
|
|
|
|
|
margin: 0 24rpx 12rpx;
|
|
|
|
|
padding: 16rpx;
|
|
|
|
|
border-radius: 12rpx;
|
|
|
|
|
background: #f8fafc;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
align-items: center;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.picker-item-name {
|
|
|
|
|
color: #303133;
|
|
|
|
|
font-size: 26rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.picker-item-code {
|
|
|
|
|
color: #909399;
|
|
|
|
|
font-size: 22rpx;
|
|
|
|
|
margin-top: 6rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.picker-item-meta {
|
|
|
|
|
color: #909399;
|
|
|
|
|
font-size: 20rpx;
|
|
|
|
|
margin-top: 4rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.picker-check {
|
|
|
|
|
color: #1a3a5c;
|
|
|
|
|
font-size: 34rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.picker-hint {
|
|
|
|
|
text-align: center;
|
|
|
|
|
color: #909399;
|
|
|
|
|
padding: 16rpx 0 22rpx;
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|
|