From 8c5602578a57a751c77a3157db336f144975db6f Mon Sep 17 00:00:00 2001
From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU>
Date: 星期三, 15 十月 2025 11:08:51 +0800
Subject: [PATCH] 添加选人搜索框
---
components/WorkOrderPrint.vue | 98 +++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 87 insertions(+), 11 deletions(-)
diff --git a/components/WorkOrderPrint.vue b/components/WorkOrderPrint.vue
index 7583179..1ee9177 100644
--- a/components/WorkOrderPrint.vue
+++ b/components/WorkOrderPrint.vue
@@ -88,17 +88,35 @@
</view>
</view>
+ <!-- 閫変汉寮圭獥 -->
<view v-if="isShowUserSelect" class="overlay">
<view class="popup user-select-popup">
+ <!-- 鎼滅储鏍� -->
+ <view class="user-search-bar">
+ <input v-model.trim="userSearch"
+ type="text"
+ class="user-search-input"
+ placeholder="杈撳叆宸ュ彿鎴栧鍚嶆悳绱�"
+ @keydown.enter.prevent />
+ <button v-if="userSearch" class="user-search-clear" @click="userSearch=''">娓呯┖</button>
+ <view class="user-search-info">
+ 鍖归厤锛歿{ filteredUsers.length }} / {{ users.length }}
+ </view>
+ </view>
<view class="user-list-scroll">
- <view class="user-list-grid">
- <button v-for="(u, index) in users"
- :key="index"
- :class="['user-list-btn', {'selected': u===staffNo}]"
- @click="selectUser(u)">
- <span class="user-code">{{ u.split(':')[0] }}</span>
- <span class="user-name">{{ u.split(':')[1] }}</span>
- </button>
+ <template v-if="filteredUsers.length">
+ <view class="user-list-grid">
+ <button v-for="(u, index) in filteredUsers"
+ :key="index"
+ :class="['user-list-btn', {'selected': u===staffNo}]"
+ @click="selectUser(u)">
+ <span class="user-code">{{ u.split(':')[0] }}</span>
+ <span class="user-name">{{ u.split(':')[1] }}</span>
+ </button>
+ </view>
+ </template>
+ <view v-else class="no-user-result">
+ 鏈壘鍒板尮閰嶄汉鍛�
</view>
</view>
<view class="user-popup-footer">
@@ -112,6 +130,7 @@
<button class="cancel-btn" @click="cancel">鍙栨秷</button>
</view>
+ <!-- 淇濈暀鏃у脊绐� -->
<view v-if="isShow" class="overlay">
<view class="popup">
<view class="bottom-section1">
@@ -171,7 +190,9 @@
staffNo: '', printStr: '', printMac: '', bluetoothSocket: {}, device: '', uuid: '',
printNum: 1, reportingList: [], printLoading: false, customAmount: '',
isGeneratingBarcode: false, lastGenerateTime: 0, generateRequestId: null,
- nowTimeTimer: null, nowTime: ''
+ nowTimeTimer: null, nowTime: '',
+ // 鏂板锛氭悳绱㈠叧閿瓧
+ userSearch: ''
}
},
computed: {
@@ -183,6 +204,12 @@
if (!this.staffNo) return '';
const segs = this.staffNo.split(':');
return segs.length > 1 ? `${segs[0]} ${segs[1]}` : this.staffNo;
+ },
+ // 鏂板锛氳繃婊ゅ悗鐨勭敤鎴峰垪琛�
+ filteredUsers() {
+ if (!this.userSearch) return this.users;
+ const kw = this.userSearch.trim().toLowerCase();
+ return this.users.filter(u => u.toLowerCase().includes(kw));
}
},
created() {
@@ -200,7 +227,7 @@
const segs = u.split(':');
return segs.length > 1 ? `${segs[0]} ${segs[1]}` : u;
},
- selectUser(u) { this.staffNo = u; this.isShowUserSelect = false; },
+ selectUser(u) { this.staffNo = u; this.isShowUserSelect = false; this.userSearch = ''; },
updateNowTime() {
const d = new Date(), p = n => n.toString().padStart(2, '0');
this.nowTime = `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())} ${p(d.getHours())}:${p(d.getMinutes())}`;
@@ -622,11 +649,53 @@
display: flex;
flex-direction: column;
}
+ /* 鎼滅储鏉℃牱寮� */
+ .user-search-bar {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ padding: 18px 32px 0 32px;
+ background: #fff;
+ flex-wrap: wrap;
+ }
+
+ .user-search-input {
+ flex: 1 1 260px;
+ padding: 10px 14px;
+ font-size: 16px;
+ border: 1px solid #bbb;
+ border-radius: 8px;
+ outline: none;
+ }
+
+ .user-search-input:focus {
+ border-color: #007aff;
+ box-shadow: 0 0 0 2px rgba(0,122,255,.15);
+ }
+
+ .user-search-clear {
+ padding: 10px 18px;
+ background: #ff9f43;
+ color: #fff;
+ border: none;
+ border-radius: 8px;
+ font-size: 14px;
+ cursor: pointer;
+ }
+
+ .user-search-clear:hover {
+ background: #ff8920;
+ }
+
+ .user-search-info {
+ font-size: 14px;
+ color: #555;
+ }
.user-list-scroll {
flex: 1 1 auto;
overflow-y: auto;
- padding: 34px 32px 0 32px;
+ padding: 24px 32px 0 32px;
}
.user-list-grid {
@@ -671,6 +740,13 @@
background: #008ed0;
}
+ .no-user-result {
+ padding: 40px 0;
+ text-align: center;
+ font-size: 18px;
+ color: #666;
+ }
+
.user-popup-footer {
flex-shrink: 0;
padding: 22px 32px 32px 32px;
--
Gitblit v1.9.3