| | |
| | | @click="onClickItem({currentIndex: 0})">未完成({{ uncheckedCount }}) |
| | | </button> |
| | | <button :class="['tab-button', current === 1 ? 'active' : '']" |
| | | @click="onClickItem({currentIndex: 1})">{{ checkedCount }} |
| | | @click="onClickItem({currentIndex: 1})">已提交({{ checkedCount }}) |
| | | </button> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <!-- 添加搜索筛选区域 --> |
| | | <view class="filter-controls" style="margin-bottom: 5px;"> |
| | | <view class="dropdown-filter"> |
| | | <picker @change="onOptionsChange" :value="optionsIndex" :range="options"> |
| | | <view class="picker">{{options[optionsIndex]}}</view> |
| | | </picker> |
| | | </view> |
| | | <!-- 搜索框和按钮 --> |
| | | <view class="search-container"> |
| | | <input v-model="searchValue" class="search-input" placeholder="请输入检验单号或物料编码" |
| | | @confirm="handleSearch"/> |
| | | <input class="search-input" v-model="searchValue" :placeholder="'请输入'+options[optionsIndex]" |
| | | @confirm="handleSearch" /> |
| | | <button class="search-button" @click="handleSearch">搜索</button> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- 未提交页面显示时间日期文本,已提交页面显示状态筛选 --> |
| | | <view class="filter-controls" style="margin-bottom: 5px;"> |
| | | <!-- 未提交页面:显示时间日期文本 --> |
| | | <view v-if="current === 0" class="dropdown-filter"> |
| | | <view class="picker">时间日期</view> |
| | | </view> |
| | | <!-- 已提交页面:显示状态下拉框 --> |
| | | <view v-if="current === 1" class="dropdown-filter"> |
| | | <picker @change="onStateChange" :value="stateIndex" :range="state"> |
| | | <view class="picker">{{state[stateIndex]}}</view> |
| | | </picker> |
| | | </view> |
| | | <view class="dropdown-filter"> |
| | | <picker mode="date" :value="startDate" :end="endDate" @change="bindStartDate"> |
| | | <view class="picker">{{startDate}}</view> |
| | | </picker> |
| | | </view> |
| | | <view class="dropdown-filter"> |
| | | <picker mode="date" :value="endDate" :start="startDate" @change="bindEndDate"> |
| | | <view class="picker">{{endDate}}</view> |
| | | </picker> |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | <view :class="{ |
| | | 'status-pending': !item.result && current === 0, |
| | | 'status-assigned': current === 0 && item.statusUser && !item.result, |
| | | 'status-pass': item.result === '合格', |
| | | 'status-fail': item.result === '不合格', |
| | | 'status-pass': item.result === '合格'&& current === 1, |
| | | 'status-fail': item.result === '不合格'&& current === 1, |
| | | 'status-submitted': !item.result && current === 1 |
| | | }" |
| | | class="status"> |
| | | {{ current === 0 ? (item.result ? item.result : '未提交') : (item.result ? item.result : '已提交') }} |
| | | {{ current === 0 ? ('' ? item.result : '未提交') : (item.result ? item.result : '已提交') }} |
| | | </view> |
| | | </view> |
| | | |
| | |
| | | tipShow: false, |
| | | searchValue: '', |
| | | uncheckedCount: 0, |
| | | checkedCount: '已完成', |
| | | checkedCount: 0, |
| | | IQCJL: 0, // IQC 检验员标识 |
| | | userId:"" |
| | | userId:"", |
| | | optionsIndex: 0, // 新增:下拉选项索引 |
| | | options: ['项目', '线体', '工单号', '物料号', '物料名'], // 新增:搜索选项 |
| | | // 添加状态筛选和日期选择器相关变量 |
| | | stateIndex: 0, |
| | | state: ['所有状态', '合格', '不合格'], |
| | | startDate: new Date().toISOString().slice(0, 10), |
| | | endDate: new Date().toISOString().slice(0, 10) |
| | | }; |
| | | }, |
| | | |
| | |
| | | }, |
| | | |
| | | methods: { |
| | | // 新增:搜索选项改变事件 |
| | | onOptionsChange(e) { |
| | | this.optionsIndex = e.detail.value; |
| | | }, |
| | | |
| | | // 新增:状态筛选改变事件 |
| | | onStateChange(e) { |
| | | this.pageIndex = 1; |
| | | this.stateIndex = e.detail.value; |
| | | this.data = []; |
| | | console.log("状态筛选改变,选中状态:", this.state[this.stateIndex]); |
| | | this.init(); |
| | | }, |
| | | |
| | | // 新增:开始日期改变事件 |
| | | bindStartDate(e) { |
| | | this.startDate = e.detail.value; |
| | | this.pageIndex = 1; |
| | | this.data = []; |
| | | console.log("开始日期改变:", this.startDate); |
| | | this.init(); |
| | | }, |
| | | |
| | | // 新增:结束日期改变事件 |
| | | bindEndDate(e) { |
| | | this.endDate = e.detail.value; |
| | | this.pageIndex = 1; |
| | | this.data = []; |
| | | console.log("结束日期改变:", this.endDate); |
| | | this.init(); |
| | | }, |
| | | |
| | | // 新增:搜索按钮点击事件 |
| | | handleSearch() { |
| | | this.pageIndex = 1; |
| | | this.data = []; |
| | | this.init(); |
| | | }, |
| | | |
| | | async init() { |
| | | let result = this.current === 1 ? "已完成" : "未完成"; |
| | | if (this.isLoading) return; |
| | |
| | | limit: this.limit, |
| | | statusUser: userName, |
| | | result: result, |
| | | searchValue: this.searchValue |
| | | searchValue: this.searchValue, |
| | | selectedIndex: this.optionsIndex // 新增:传递搜索选项索引 |
| | | } |
| | | }); |
| | | |
| | | const list = res.data.tbBillList || []; |
| | | let list = res.data.tbBillList || []; |
| | | |
| | | // 对所有页面进行前端筛选(未完成和已提交) |
| | | // 状态筛选 |
| | | if (this.stateIndex > 0) { |
| | | const selectedState = this.state[this.stateIndex]; |
| | | console.log("前端状态筛选:", selectedState); |
| | | if (selectedState === '合格') { |
| | | list = list.filter(item => item.result === '合格'); |
| | | } else if (selectedState === '不合格') { |
| | | list = list.filter(item => item.result === '不合格'); |
| | | } |
| | | } |
| | | |
| | | // 日期范围筛选 |
| | | if (this.startDate || this.endDate) { |
| | | console.log("前端日期筛选:", this.startDate, "到", this.endDate); |
| | | const startDateObj = this.startDate ? new Date(this.startDate) : null; |
| | | const endDateObj = this.endDate ? new Date(this.endDate) : null; |
| | | |
| | | // 设置开始日期的时间为当天的开始时间 (00:00:00) |
| | | if (startDateObj) { |
| | | startDateObj.setHours(0, 0, 0, 0); |
| | | } |
| | | |
| | | // 设置结束日期的时间为当天的结束时间 (23:59:59) |
| | | if (endDateObj) { |
| | | endDateObj.setHours(23, 59, 59, 999); |
| | | } |
| | | |
| | | list = list.filter(item => { |
| | | if (item.createTime) { |
| | | const itemDate = new Date(item.createTime); |
| | | let isValid = true; |
| | | |
| | | if (startDateObj && itemDate < startDateObj) { |
| | | isValid = false; |
| | | } |
| | | |
| | | if (endDateObj && itemDate > endDateObj) { |
| | | isValid = false; |
| | | } |
| | | |
| | | return isValid; |
| | | } |
| | | return true; |
| | | }); |
| | | } |
| | | |
| | | if (this.pageIndex === 1) { |
| | | this.data = list; |
| | | } else { |
| | |
| | | this.noData = this.pageIndex >= this.totalPage; |
| | | |
| | | if (this.current === 1) { |
| | | this.checkedCount = '已完成(' + this.totalCount + ')'; |
| | | this.checkedCount = this.totalCount; |
| | | } else { |
| | | this.uncheckedCount = this.totalCount; |
| | | } |
| | |
| | | } |
| | | }, |
| | | |
| | | // 搜索 |
| | | handleSearch() { |
| | | this.pageIndex = 1; |
| | | this.data = []; |
| | | this.init(); |
| | | }, |
| | | |
| | | // Tab 切换 |
| | | onClickItem(index) { |
| | | if (this.current !== index.currentIndex) { |
| | | this.current = index.currentIndex; |
| | | this.data = []; |
| | | this.pageIndex = 1; |
| | | // 重置筛选条件 |
| | | this.optionsIndex = 0; |
| | | this.searchValue = ''; |
| | | this.stateIndex = 0; |
| | | this.startDate = new Date().toISOString().slice(0, 10); |
| | | this.endDate = new Date().toISOString().slice(0, 10); |
| | | this.init(); |
| | | } |
| | | }, |
| | |
| | | } |
| | | |
| | | .status-fail { |
| | | background: linear-gradient(135deg, #3498db, #2980b9); |
| | | background: linear-gradient(135deg, #ff0000, #ff0000); |
| | | color: white; |
| | | } |
| | | |