diff --git a/src/pages_function/pages/materialCheck/index.vue b/src/pages_function/pages/materialCheck/index.vue
index 4296adb..10ffdd2 100644
--- a/src/pages_function/pages/materialCheck/index.vue
+++ b/src/pages_function/pages/materialCheck/index.vue
@@ -3,23 +3,32 @@
-
-
-
-
-
- {{ currentStatusLabel }}
-
+
+
+
+
+
+
+
+
+
-
- 重置
+
+
+
+
+ {{ currentStatusLabel }}
+
+
+
+
+
+
+
@@ -152,14 +185,15 @@ import { DICT_TYPE, useDict } from '@/utils/dict'
const selectedStatus = ref('')
const searchKeyword = ref('')
const materialWarehouseId = ref('')
+const checkTimeFilter = ref([])
const statusOptions = computed(() => {
const dictOptions = (erp_audit_status.value || [])
.filter((item) => item?.label !== undefined && item?.value !== undefined)
.map((item) => ({ ...item, value: String(item.value) }))
- if (dictOptions.length) return [{ label: '全部', value: '' }, ...dictOptions]
+ if (dictOptions.length) return [{ label: '盘点状态', value: '' }, ...dictOptions]
return [
- { label: '全部', value: '' },
+ { label: '盘点状态', value: '' },
{ label: '待提交', value: '0' },
{ label: '审核中', value: '10' },
{ label: '已通过', value: '20' },
@@ -285,13 +319,15 @@ async function fetchList(reset) {
loadingMore.value = true
}
try {
+ const checkTimeRange = Array.isArray(checkTimeFilter.value) ? checkTimeFilter.value : []
const params = {
pageNo: pageNo.value,
pageSize: pageSize.value,
no: searchKeyword.value.trim() || undefined,
status: selectedStatus.value || undefined,
warehouseId: materialWarehouseId.value || undefined,
- categoryType: 2
+ categoryType: 2,
+ checkTime: checkTimeRange.length === 2 ? [checkTimeRange[0] + ' 00:00:00', checkTimeRange[1] + ' 23:59:59'] : undefined
}
const res = await getMaterialCheckPage(params)
const page = normalizePageData(res)
@@ -325,10 +361,27 @@ function handleKeywordInput() {
}, 300)
}
+const filterPopupRef = ref(null)
+
+function openFilterDrawer() {
+ filterPopupRef.value?.open()
+}
+
+function closeFilterDrawer() {
+ filterPopupRef.value?.close()
+}
+
+function confirmFilterDrawer() {
+ closeFilterDrawer()
+ fetchList(true)
+}
+
function resetFilters() {
clearSearchTimer()
searchKeyword.value = ''
selectedStatus.value = ''
+ checkTimeFilter.value = []
+ filterPopupRef.value?.close()
fetchList(true)
}
@@ -588,63 +641,236 @@ onUnload(() => {
}
.filter-bar {
+ padding: 18rpx 14rpx 20rpx;
+ background: #f3f4f6;
+}
+
+.filter-row {
display: flex;
align-items: center;
- gap: 12rpx;
- padding: 18rpx 24rpx;
- background: #fff;
+ gap: 18rpx;
}
-.keyword-box {
- flex: 1;
+.quick-row {
+ margin-top: 18rpx;
+}
+
+.quick-row > picker {
min-width: 0;
+ flex: 1;
+}
+
+.keyword-wrap,
+.status-filter,
+.icon-filter-btn {
height: 66rpx;
- padding: 0 28rpx;
- background: #f4f5f7;
- border: 1rpx solid #e5e7eb;
- border-radius: 12rpx;
+ border: 1rpx solid #d9dde5;
+ background: #ffffff;
+ box-sizing: border-box;
+}
+
+.keyword-wrap {
+ min-width: 0;
+ flex: 1;
display: flex;
align-items: center;
}
.keyword-input {
width: 100%;
- font-size: 24rpx;
+ height: 64rpx;
+ padding: 0 20rpx;
+ font-size: 26rpx;
color: #374151;
}
-.status-box {
- flex-shrink: 0;
+.status-filter {
+ min-width: 0;
+ flex: 1;
display: flex;
align-items: center;
justify-content: space-between;
- height: 66rpx;
- padding: 0 28rpx;
- min-width: 160rpx;
- background: #fff;
- border: 1rpx solid #e5e7eb;
- border-radius: 12rpx;
+ padding: 0 18rpx 0 26rpx;
}
-.status-box-text {
- font-size: 24rpx;
- color: #374151;
- min-width: 0;
+.icon-filter-btn {
+ width: 66rpx;
+ flex: 0 0 66rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border-color: transparent;
+ background: transparent;
+}
+
+.status-filter-text {
+ min-width: 0rpx;
+ flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
+ font-size: 26rpx;
+ color: #374151;
}
-.reset-filter-btn {
- height: 66rpx;
- line-height: 66rpx;
- padding: 0 28rpx;
+.status-filter-text.placeholder {
+ color: #a8adb7;
+}
+
+/* ====== 筛选抽屉 ====== */
+::deep(.material-check-filter-popup.right .uni-popup__content-transition) {
+ transform: none !important;
+}
+
+.filter-drawer {
+ width: 630rpx;
+ height: calc(100vh - var(--status-bar-height));
+ margin-top: var(--status-bar-height);
+ background: #f5f5f7;
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+ border-radius: 28rpx 0 0 28rpx;
+}
+
+.drawer-header {
+ height: 104rpx;
+ padding: 18rpx 34rpx 0;
+ background: #ffffff;
+ display: flex;
+ align-items: center;
+ justify-content: flex-start;
+ box-sizing: border-box;
+}
+
+.drawer-title {
+ color: #1f2937;
+ font-size: 34rpx;
+ line-height: 1.3;
+ font-weight: 700;
+}
+
+.drawer-body {
+ flex: 1;
+ min-height: 0;
+ padding-bottom: 40rpx;
+ box-sizing: border-box;
+}
+
+.drawer-section {
+ margin-bottom: 18rpx;
+ padding: 8rpx 28rpx;
+ border-radius: 24rpx;
+ background: #ffffff;
+ box-sizing: border-box;
+}
+
+.drawer-fields {
+ display: flex;
+ flex-direction: column;
+}
+
+.drawer-field {
+ min-width: 0;
+ min-height: 98rpx;
+ display: flex;
+ align-items: center;
+ gap: 20rpx;
+ border-bottom: 1rpx solid #eceff3;
+ box-sizing: border-box;
+}
+
+.drawer-field:last-child {
+ border-bottom: 0;
+}
+
+.drawer-label {
+ width: 160rpx;
+ flex: 0 0 160rpx;
font-size: 24rpx;
+ line-height: 1.3;
color: #4b5563;
- background: #fff;
- border: 1rpx solid #e5e7eb;
- border-radius: 12rpx;
- flex-shrink: 0;
+ font-weight: 500;
+}
+
+.drawer-date {
+ min-width: 0;
+ flex: 1;
+ width: 100%;
+ min-height: 74rpx;
+ border: 0;
+ border-radius: 8rpx;
+ background: #f7f8fb;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ padding: 0 12rpx;
+}
+
+.drawer-date :deep(.uni-date),
+.drawer-date :deep(.uni-date-editor),
+.drawer-date :deep(.uni-date-editor--x),
+.drawer-date :deep(.uni-date-x) {
+ width: 100%;
+}
+
+.drawer-date :deep(.uni-date-editor),
+.drawer-date :deep(.uni-date-editor--x),
+.drawer-date :deep(.uni-date-x) {
+ min-height: 74rpx;
+}
+
+.drawer-date :deep(.uni-date-editor--x),
+.drawer-date :deep(.uni-date-x) {
+ border: 0;
+ padding: 0;
+ background: transparent;
+}
+
+.drawer-date :deep(.uni-date-range) {
+ display: flex;
+ align-items: center;
+}
+
+.drawer-date :deep(.uni-date__x-input) {
+ text-align: center;
+ font-size: 26rpx;
+ color: #111827;
+}
+
+.drawer-actions {
+ height: 126rpx;
+ padding: 18rpx 28rpx 24rpx;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ gap: 0;
+ background: #ffffff;
+ box-shadow: 0 -8rpx 24rpx rgba(17, 24, 39, 0.06);
+}
+
+.drawer-action {
+ flex: 1;
+ height: 72rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 28rpx;
+ font-weight: 600;
+ border: 2rpx solid #174b78;
+ box-sizing: border-box;
+}
+
+.drawer-action.reset {
+ border-radius: 12rpx 0 0 12rpx;
+ background: #ffffff;
+ color: #174b78;
+}
+
+.drawer-action.confirm {
+ border-radius: 0 12rpx 12rpx 0;
+ background: #174b78;
+ color: #ffffff;
}
.list-scroll {
diff --git a/src/pages_function/pages/materialInbound/index.vue b/src/pages_function/pages/materialInbound/index.vue
index 7dfbee1..5717997 100644
--- a/src/pages_function/pages/materialInbound/index.vue
+++ b/src/pages_function/pages/materialInbound/index.vue
@@ -4,14 +4,6 @@
-
-
-
- {{ currentStatusLabel }}
-
-
-
-
+
+
+
+ {{ currentStatusLabel }}
+
+
+
+
@@ -40,37 +40,23 @@
更多筛选
-
-
- 物料信息
-
-
-
- 创建人
-
- {{ selectedCreatorLabel }}
-
-
-
-
- {{ item.label }}
- ✓
+
+
+ 创建人
+
+
+ {{ selectedCreatorLabel }}
+
-
+
-
+
入库时间
-
@@ -213,7 +199,6 @@ const filterPopupRef = ref(null)
const selectedCreator = ref(null)
const inTimeFilter = ref([])
const creatorOptions = ref([])
-const creatorPanelOpen = ref(false)
const statusOptions = computed(() => [
{ label: '待入库', value: '0' },
@@ -241,6 +226,12 @@ const selectedCreatorLabel = computed(() => {
const found = creatorOptions.value.find((u) => u.value === selectedCreator.value)
return found ? found.label : '创建人'
})
+const creatorLabels = computed(() => ['创建人', ...creatorOptions.value.map((o) => o.label)])
+const creatorIndex = computed(() => {
+ if (!selectedCreator.value) return 0
+ const idx = creatorOptions.value.findIndex((o) => o.value === selectedCreator.value)
+ return idx >= 0 ? idx + 1 : 0
+})
const list = ref([])
const loading = ref(false)
@@ -353,13 +344,14 @@ function confirmFilterDrawer() {
fetchList(true)
}
-function toggleCreatorPanel() {
- creatorPanelOpen.value = !creatorPanelOpen.value
-}
-
-function selectCreator(item) {
- selectedCreator.value = selectedCreator.value === item.value ? null : item.value
- creatorPanelOpen.value = false
+function onCreatorPickerChange(event) {
+ const index = Number(event?.detail?.value || 0)
+ if (index === 0) {
+ selectedCreator.value = null
+ } else {
+ const item = creatorOptions.value[index - 1]
+ selectedCreator.value = item ? item.value : null
+ }
}
async function loadCreatorOptions() {
@@ -395,6 +387,7 @@ function resetFilters() {
selectedStatus.value = ''
selectedCreator.value = null
inTimeFilter.value = []
+ filterPopupRef.value?.close()
fetchList(true)
}
@@ -574,7 +567,7 @@ onHide(() => {})
gap: 18rpx;
}
-.search-row {
+.quick-row {
margin-top: 18rpx;
}
@@ -715,169 +708,21 @@ onHide(() => {})
color: #ffffff;
}
-.drawer-section {
- margin-bottom: 18rpx;
- padding: 28rpx 28rpx 30rpx;
- border-radius: 24rpx;
- background: #ffffff;
- box-sizing: border-box;
-}
-
-.drawer-section-head {
- display: flex;
- align-items: center;
- justify-content: space-between;
- margin-bottom: 24rpx;
-}
-
-.drawer-section-title {
- font-size: 32rpx;
- line-height: 1.3;
- color: #1f2937;
- font-weight: 700;
-}
-
-.drawer-grid {
- display: grid;
- grid-template-columns: repeat(2, minmax(0, 1fr));
- gap: 22rpx 20rpx;
-}
-
-.drawer-field {
- min-width: 0;
-}
-
-.drawer-field-wide {
- grid-column: 1 / -1;
-}
-
-.drawer-label {
- display: block;
- margin-bottom: 12rpx;
- font-size: 24rpx;
- line-height: 1.3;
- color: #4b5563;
- font-weight: 500;
-}
-
-.drawer-picker {
- width: 100%;
- min-height: 74rpx;
- border: 0;
- border-radius: 8rpx;
- background: #f7f8fb;
- box-sizing: border-box;
- display: flex;
- align-items: center;
- justify-content: center;
- padding: 0 18rpx;
- gap: 8rpx;
-}
-
-.drawer-picker-text {
- min-width: 0;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- font-size: 26rpx;
- color: #111827;
- text-align: center;
-}
-
-.drawer-picker-text.placeholder {
- color: #9ca3af;
-}
-
-.drawer-option-panel {
- max-height: 360rpx;
- margin-top: 12rpx;
- border-radius: 12rpx;
- background: #f7f8fb;
- overflow: hidden;
-}
-
-.drawer-option-item {
- min-height: 72rpx;
- padding: 0 24rpx;
- display: flex;
- align-items: center;
- justify-content: space-between;
- border-bottom: 1rpx solid #eceff3;
- box-sizing: border-box;
-}
-
-.drawer-option-item:last-child {
- border-bottom: 0;
-}
-
-.drawer-option-item.active {
- background: rgba(23, 75, 120, 0.1);
-}
-
-.drawer-option-item.active .drawer-option-text {
- color: #174b78;
- font-weight: 600;
-}
-
-.drawer-option-text {
- min-width: 0;
- flex: 1;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- font-size: 26rpx;
- color: #1f2937;
-}
-
-.drawer-option-check {
- flex-shrink: 0;
- font-size: 28rpx;
- color: #174b78;
- margin-left: 16rpx;
-}
-
-.drawer-date {
- width: 100%;
- min-height: 74rpx;
- border: 0;
- border-radius: 8rpx;
- background: #f7f8fb;
- box-sizing: border-box;
- display: flex;
- align-items: center;
- padding: 0 12rpx;
-}
-
-.drawer-date :deep(.uni-date),
-.drawer-date :deep(.uni-date-editor),
-.drawer-date :deep(.uni-date-editor--x),
-.drawer-date :deep(.uni-date-x) {
- width: 100%;
-}
-
-.drawer-date :deep(.uni-date-editor),
-.drawer-date :deep(.uni-date-editor--x),
-.drawer-date :deep(.uni-date-x) {
- min-height: 74rpx;
-}
-
-.drawer-date :deep(.uni-date-editor--x),
-.drawer-date :deep(.uni-date-x) {
- border: 0;
- padding: 0;
- background: transparent;
-}
-
-.drawer-date :deep(.uni-date-range) {
- display: flex;
- align-items: center;
-}
-
-.drawer-date :deep(.uni-date__x-input) {
- text-align: center;
- font-size: 26rpx;
- color: #111827;
-}
+.drawer-section { margin-bottom: 18rpx; padding: 8rpx 28rpx; border-radius: 24rpx; background: #ffffff; box-sizing: border-box; }
+.drawer-fields { display: flex; flex-direction: column; }
+.drawer-field { min-width: 0; min-height: 98rpx; display: flex; align-items: center; gap: 20rpx; border-bottom: 1rpx solid #eceff3; box-sizing: border-box; }
+.drawer-field:last-child { border-bottom: 0; }
+.drawer-label { width: 160rpx; flex: 0 0 160rpx; font-size: 24rpx; line-height: 1.3; color: #4b5563; font-weight: 500; }
+.drawer-picker-host { min-width: 0; flex: 1; display: block; }
+.drawer-picker { min-width: 0; flex: 1; width: 100%; min-height: 74rpx; border: 0; border-radius: 8rpx; background: #f7f8fb; box-sizing: border-box; display: flex; align-items: center; justify-content: flex-end; padding: 0 18rpx; gap: 8rpx; }
+.drawer-picker-text { min-width: 0; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 26rpx; color: #111827; text-align: right; }
+.drawer-picker-text.placeholder { color: #9ca3af; }
+.drawer-date { min-width: 0; flex: 1; width: 100%; min-height: 74rpx; border: 0; border-radius: 8rpx; background: #f7f8fb; box-sizing: border-box; display: flex; align-items: center; padding: 0 12rpx; }
+.drawer-date :deep(.uni-date), .drawer-date :deep(.uni-date-editor), .drawer-date :deep(.uni-date-editor--x), .drawer-date :deep(.uni-date-x) { width: 100%; }
+.drawer-date :deep(.uni-date-editor), .drawer-date :deep(.uni-date-editor--x), .drawer-date :deep(.uni-date-x) { min-height: 74rpx; }
+.drawer-date :deep(.uni-date-editor--x), .drawer-date :deep(.uni-date-x) { border: 0; padding: 0; background: transparent; }
+.drawer-date :deep(.uni-date-range) { display: flex; align-items: center; }
+.drawer-date :deep(.uni-date__x-input) { text-align: center; font-size: 26rpx; color: #111827; }
/* ====== 列表 ====== */
.list-scroll {
diff --git a/src/pages_function/pages/materialMove/index.vue b/src/pages_function/pages/materialMove/index.vue
index 7487b9e..d607d0d 100644
--- a/src/pages_function/pages/materialMove/index.vue
+++ b/src/pages_function/pages/materialMove/index.vue
@@ -3,14 +3,6 @@
-
-
-
- {{ currentStatusLabel }}
-
-
-
-
+
+
+
+ {{ currentStatusLabel }}
+
+
+
+