From 983dddd66ab8a999544272089e8c0fc12370f356 Mon Sep 17 00:00:00 2001
From: wbc <2597324127@qq.com>
Date: 星期一, 08 十二月 2025 22:38:22 +0800
Subject: [PATCH] 通用界面,不良功能搬运至平板程序
---
pages/QC/XJ/List.vue | 611 +++++++++++++++++++++++++++++++++----------------------
1 files changed, 368 insertions(+), 243 deletions(-)
diff --git a/pages/QC/XJ/List.vue b/pages/QC/XJ/List.vue
index 78147a2..bf2e174 100644
--- a/pages/QC/XJ/List.vue
+++ b/pages/QC/XJ/List.vue
@@ -1,187 +1,104 @@
<template>
- <view>
+ <view class="inspection-app">
<!-- 鍒锋柊椤甸潰鍚庣殑椤堕儴鎻愮ず妗� -->
<view class="tips" :class="{ 'tips-ani': tipShow }">鍒锋柊鎴愬姛</view>
- <view class="newsTab">
- <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem" style-type="button"
- active-color="#87cefa" ></uni-segmented-control>
- <view class="content">
- <view v-show="current===0">
- <!-- 鍩轰簬 uni-list 鐨勯〉闈㈠竷灞� -->
- <uni-list>
- <!-- to 灞炴�ф惡甯﹀弬鏁拌烦杞鎯呴〉闈紝褰撳墠鍙负鍙傝�� -->
- <uni-list-item style="margin-top: 10px;background-color:#EFEFF4;border-radius: 5px;"
- class="list-item" direction="column" v-for="item in data" :key="item.id"
- :to="'Add?id='+item.id+'&releaseNo='+item.releaseNo">
- <!-- 閫氳繃header鎻掓Ы瀹氫箟鍒楄〃鐨勬爣棰� -->
- <template v-slot:header>
- <view class="form-group uni-title" style="margin-bottom: 0;">
- <label class="form-label">妫�楠屽崟鍙�:</label>
- <input class="form-input" disabled="true" type="text" v-model="item.releaseNo"/>
- </view>
- </template>
- <!-- 閫氳繃body鎻掓Ы瀹氫箟鍒楄〃鍐呭鏄剧ず -->
- <template v-slot:body>
- <view style="margin-top: 0;">
- <view class="uni-content">
- <view class="uni-title-sub uni-ellipsis-2">
- <view class="form-group">
- <label class="form-label lab">鍒涘缓鏃堕棿:</label>
- <input class="form-input" disabled="true" type="text" v-model="item.createDate"/>
- </view>
- </view>
- <view class="uni-note" >
- <view class="form-group">
- <label class="form-label lab">鍒涘缓浜�:</label>
- <input class="form-input" disabled="true" type="text" v-model="item.createBy"/>
- </view>
- </view>
-
- <view class="uni-title-sub uni-ellipsis-2">
- <view class="form-group">
- <label class="form-label lab">浜х嚎:</label>
- <input class="form-input" disabled="true" type="text" v-model="item.daa020"/>
- </view>
- </view>
-
- <view class="uni-title-sub uni-ellipsis-2">
- <view class="form-group">
- <label class="form-label lab">鐗╂枡缂栫爜:</label>
- <input class="form-input" disabled="true" type="text" v-model="item.itemNo"/>
- </view>
- </view>
-
- <view class="uni-title-sub uni-ellipsis-2">
- <view class="form-group">
- <label class="form-label">鐗╂枡鍚嶇О:</label>
- <input class="form-input" disabled="true" type="text" v-model="item.itemName"/>
- </view>
- </view>
-
- <view class="uni-title-sub uni-ellipsis-2">
- <view class="form-group">
- <label class="form-label">瑙勬牸鍨嬪彿:</label>
- <input class="form-input" disabled="true" type="text" v-model="item.itemModel"/>
- </view>
- </view>
-
- <view class="uni-title-sub uni-ellipsis-2">
- <view class="form-group">
- <label class="form-label">宸ュ崟鏁伴噺:</label>
- <input class="form-input" disabled="true" type="text" v-model="item.planQty"/>
- </view>
- </view>
-
- <view class="uni-note" style="color: red">
- <view class="form-group">
- <label class="form-label lab">妫�楠屼汉:</label>
- <input class="form-input" disabled="true" type="text" v-model="item.fcheckBy"/>
- </view>
- </view>
- <view class="uni-note" style="color: red">
- <view class="form-group">
- <label class="form-label lab">妫�娴嬬粨鏋�:</label>
- <input class="form-input" disabled="true" type="text" v-model="item.fcheckResu"/>
- </view>
- </view>
- </view>
- </view>
- </template>
- </uni-list-item>
- </uni-list>
- <!-- 閫氳繃 loadMore 缁勪欢瀹炵幇涓婃媺鍔犺浇鏁堟灉锛屽闇�鑷畾涔夋樉绀哄唴瀹癸紝鍙弬鑰冿細https://ext.dcloud.net.cn/plugin?id=29 -->
- <!-- <uni-load-more v-if="loading || options.status === 'noMore' " :status="options.status" /> -->
-
- <!-- <view class="fab" @click="handleFabClick">
- <text class="fab-icon">+</text>
- </view> -->
- <view class="plus-button" @click="handleFabClick">
- +
- </view>
+ <!-- 椤堕儴绛涢�夊尯 -->
+ <view class="filter-section">
+ <view class="filter-controls">
+ <!-- 鏌ヨ鏉′欢閫夋嫨鍣� -->
+ <view class="dropdown-filter">
+ <picker @change="onOptionsChange" :value="optionsIndex" :range="options">
+ <view class="picker">{{options[optionsIndex]}}</view>
+ </picker>
</view>
- <view v-show="current===1">
- <uni-list>
- <!-- to 灞炴�ф惡甯﹀弬鏁拌烦杞鎯呴〉闈紝褰撳墠鍙负鍙傝�� -->
- <uni-list-item style="margin-top: 10px;background-color:#EFEFF4;border-radius:5px;"
- class="list-item" direction="column" v-for="item in data" :key="item.id"
- :to="'Add?id='+item.id+'&releaseNo='+item.releaseNo">
- <!-- 閫氳繃header鎻掓Ы瀹氫箟鍒楄〃鐨勬爣棰� -->
- <template v-slot:header>
- <view class="form-group uni-title" style="margin-bottom: 0;">
- <label class="form-label">妫�楠屽崟鍙�:</label>
- <input class="form-input" disabled="true" type="text" v-model="item.releaseNo"/>
- </view>
- </template>
- <!-- 閫氳繃body鎻掓Ы瀹氫箟鍒楄〃鍐呭鏄剧ず -->
- <template v-slot:body>
- <view style="margin-top: 0;">
- <view class="uni-content">
- <view class="uni-title-sub uni-ellipsis-2">
- <view class="form-group">
- <label class="form-label lab">鍒涘缓鏃堕棿:</label>
- <input class="form-input" disabled="true" type="text" v-model="item.createDate"/>
- </view>
- </view>
- <view class="uni-note" >
- <view class="form-group">
- <label class="form-label lab">鍒涘缓浜�:</label>
- <input class="form-input" disabled="true" type="text" v-model="item.createBy"/>
- </view>
- </view>
- <view class="uni-title-sub uni-ellipsis-2">
- <view class="form-group">
- <label class="form-label lab">浜х嚎:</label>
- <input class="form-input" disabled="true" type="text" v-model="item.daa020"/>
- </view>
- </view>
-
- <view class="uni-title-sub uni-ellipsis-2">
- <view class="form-group">
- <label class="form-label lab">鐗╂枡缂栫爜:</label>
- <input class="form-input" disabled="true" type="text" v-model="item.itemNo"/>
- </view>
- </view>
-
- <view class="uni-title-sub uni-ellipsis-2">
- <view class="form-group">
- <label class="form-label">鐗╂枡鍚嶇О:</label>
- <input class="form-input" disabled="true" type="text" v-model="item.itemName"/>
- </view>
- </view>
-
- <view class="uni-title-sub uni-ellipsis-2">
- <view class="form-group">
- <label class="form-label">瑙勬牸鍨嬪彿:</label>
- <input class="form-input" disabled="true" type="text" v-model="item.itemModel"/>
- </view>
- </view>
-
- <view class="uni-title-sub uni-ellipsis-2">
- <view class="form-group">
- <label class="form-label">宸ュ崟鏁伴噺:</label>
- <input class="form-input" disabled="true" type="text" v-model="item.planQty"/>
- </view>
- </view>
- <view class="uni-note" style="color: red">
- <view class="form-group">
- <label class="form-label lab">妫�楠屼汉:</label>
- <input class="form-input" disabled="true" type="text" v-model="item.fcheckBy"/>
- </view>
- </view>
- <view class="uni-note" style="color: red">
- <view class="form-group">
- <label class="form-label lab">妫�娴嬬粨鏋�:</label>
- <input class="form-input" disabled="true" type="text" v-model="item.fcheckResu"/>
- </view>
- </view>
- </view>
- </view>
- </template>
- </uni-list-item>
- </uni-list>
+
+ <!-- 鎼滅储妗� -->
+ <view class="search-container">
+ <input class="search-input" v-model="searchValue" :placeholder="'璇疯緭鍏�'+options[optionsIndex]" @confirm="btnclicked" />
+ <button class="search-button" @click="btnclicked">鎼滅储</button>
+ </view>
+
+ <!-- 鐘舵�佸垏鎹㈡爣绛� -->
+ <view class="status-tabs">
+ <button :class="['tab-button', current === 0 ? 'active' : '']" @click="onClickItem({currentIndex: 0})">
+ 鏈彁浜�({{unsubmittedCount}})
+ </button>
+ <button :class="['tab-button', current === 1 ? 'active' : '']" @click="onClickItem({currentIndex: 1})">
+ 宸叉彁浜�({{submittedCount}})
+ </button>
</view>
</view>
+ </view>
+
+ <!-- 妫�楠屽崟鍒楄〃 -->
+ <view class="inspection-list">
+ <!-- 妫�楠屽崟鍗$墖 -->
+ <view class="inspection-card" v-for="item in data" :key="item.id" @click="navigateToDetail(item)">
+ <view class="card-header">
+ <text class="card-title">妫�楠屽崟鍙�: {{item.releaseNo}}</text>
+ <text class="status pass" v-if="item.fcheckResu === '鍚堟牸'">鍚堟牸</text>
+ <text class="status unqualified" v-if="item.fcheckResu === '涓嶅悎鏍�'">涓嶅悎鏍�</text>
+ <text class="status pending" v-if="!item.fcheckResu">寰呮楠�</text>
+ </view>
+
+ <view class="card-body">
+ <view class="info-row">
+ <view class="info-item">
+ <text class="info-label">鐗╂枡淇℃伅</text>
+ <text class="info-content">{{item.itemNo}}<br>{{item.itemName}}</text>
+ </view>
+ <view class="info-item">
+ <text class="info-label">瑙勬牸鍨嬪彿</text>
+ <text class="info-content">{{item.itemModel}}</text>
+ </view>
+ </view>
+
+ <view class="info-row">
+ <view class="info-item">
+ <text class="info-label">浜х嚎</text>
+ <text class="info-content">{{item.daa020}}</text>
+ </view>
+ <view class="info-item">
+ <text class="info-label">宸ュ崟鏁伴噺</text>
+ <text class="info-content highlight">{{item.planQty}}</text>
+ </view>
+ </view>
+
+ <view class="info-row">
+ <view class="info-item">
+ <text class="info-label">妫�楠屼汉</text>
+ <text class="info-content">{{item.fcheckBy}}</text>
+ </view>
+ <view class="info-item">
+ <text class="info-label">鍒涘缓浜�</text>
+ <text class="info-content">{{item.createBy}}</text>
+ </view>
+ </view>
+
+ <view class="meta-info">
+ <text class="meta-item">
+ <uni-icons type="calendar" size="14" color="#95a5a6"></uni-icons>
+ {{item.createDate}}
+ </text>
+ <text class="meta-item" v-if="item.fcheckResu">
+ <uni-icons type="checkmarkempty" size="14" color="#95a5a6"></uni-icons>
+ 妫�娴嬬粨鏋�: {{item.fcheckResu}}
+ </text>
+ </view>
+ </view>
+
+ <view class="card-actions">
+ <button class="primary" @click.stop="navigateToDetail(item)">
+ {{current === 0 ? '寮�濮嬫楠�' : '鏌ョ湅璇︽儏'}}
+ </button>
+ </view>
+ </view>
+ </view>
+
+ <!-- 鏂板鎸夐挳 -->
+ <view class="plus-button" @click="handleFabClick">
+ +
</view>
</view>
</template>
@@ -194,7 +111,15 @@
items: ['鏈彁浜�', '宸叉彁浜�'],
current: 0,
data: [],
- tipShow: false // 鏄惁鏄剧ず椤堕儴鎻愮ず妗�
+ tipShow: false, // 鏄惁鏄剧ず椤堕儴鎻愮ず妗�
+ searchValue: '',
+ // ===== 鏂板鎼滅储鍔熻兘鐩稿叧鏁版嵁 =====
+ optionsIndex: 0, // 褰撳墠閫夋嫨鐨勬煡璇㈡潯浠剁储寮�
+ options: ['宸ュ崟', '妫�楠屽崟鍙�', '浜х嚎', '鐗╂枡缂栫爜', '鐗╂枡鍚嶇О'], // 鏌ヨ鏉′欢閫夐」
+ selectedField: 'billNo', // 褰撳墠閫夋嫨鐨勬煡璇㈠瓧娈碉紝榛樿涓哄伐鍗�
+ // ===== 鏂板鏁伴噺缁熻鍙橀噺 =====
+ unsubmittedCount: 0, // 鏈彁浜ゆ暟閲�
+ submittedCount: 0 // 宸叉彁浜ゆ暟閲�
};
},
onLoad() {
@@ -202,12 +127,37 @@
this.init();
},
methods: {
+ // ===== 鏂板鏌ヨ鏉′欢閫夋嫨鏂规硶 =====
+ onOptionsChange(e) {
+ this.optionsIndex = e.detail.value;
+ // 鏍规嵁閫夋嫨鐨勯�夐」璁剧疆鎼滅储瀛楁
+ const fieldMap = {
+ 0: 'billNo', // 宸ュ崟
+ 1: 'releaseNo', // 妫�楠屽崟鍙�
+ 2: 'daa020', // 浜х嚎
+ 3: 'itemNo', // 鐗╂枡缂栫爜
+ 4: 'itemName' // 鐗╂枡鍚嶇О
+ };
+ this.selectedField = fieldMap[this.optionsIndex];
+ },
+
+ //鎼滅储妗嗙偣鍑讳簨浠�
+ btnclicked() {
+ this.init();
+ },
+
init() {
-
+ //鑾峰彇鎼滅储鏉′欢鍐呭
+ let SearchValue = this.searchValue;
+
let result = "鏈畬鎴�";
if (this.current === 1) {
result = "宸插畬鎴�";
}
+
+ // 鑾峰彇杞﹂棿鍜岀嚎浣撶瓫閫夋潯浠�
+ const departmentId = uni.getStorageSync('qc_filter_departmentId') || '';
+ const lineId = uni.getStorageSync('qc_filter_lineId') || '';
//椤甸潰鍔犺浇鏃惰皟鐢ㄧ殑浜嬩欢
this.$post({
@@ -216,10 +166,21 @@
pageIndex: 1,
limit: 20,
createUser: this.$loginInfo.account,
- result: result
+ result: result,
+ SearchValue: SearchValue,
+ selectedIndex: this.optionsIndex, // 鏂板锛氭悳绱㈡潯浠剁储寮�
+ searchField: this.selectedField, // 鏂板锛氭悳绱㈠瓧娈靛悕
+ departmentId: departmentId, // 鏂板锛氳溅闂碔D
+ lineId: lineId // 鏂板锛氱嚎浣揑D
}
}).then(res => {
this.data = res.data.tbBillList;
+ // 璁剧疆鏁伴噺缁熻
+ if (this.current === 1) {
+ this.submittedCount = res.totalCount;
+ } else {
+ this.unsubmittedCount = res.totalCount;
+ }
})
},
handleFabClick() {
@@ -233,6 +194,12 @@
this.init();
}
},
+ navigateToDetail(item) {
+ uni.navigateTo({
+ url: 'Add?id=' + item.id + '&releaseNo=' + item.releaseNo
+ });
+ },
+
},
/**
* 涓嬫媺鍒锋柊鍥炶皟鍑芥暟
@@ -261,41 +228,218 @@
};
</script>
-<style lang="scss">
-@import '@/common/uni-ui.scss';
-
-.uni-note {
- margin-top: 0;
+<style scoped>
+/* 鍩虹鏍峰紡閲嶇疆 */
+.inspection-app {
+ padding: 10px;
+ background-color: #f5f7fa;
+ min-height: 100vh;
}
-/* Set the input backgrounds to be gray */
-.form-input {
- background-color: #f2f2f2; /* Or any other shade of gray you prefer */
+/* 椤堕儴绛涢�夊尯 */
+.filter-section {
+ margin-bottom: 24px;
}
-/* Ensure automatic adaptation based on page size */
-.form-group {
+.filter-controls {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 10px;
+}
+
+/* 鏌ヨ鏉′欢閫夋嫨鍣� */
+.dropdown-filter {
+ min-width: 80px;
+ margin-right: 10px;
+}
+
+.picker {
+ padding: 8px 12px;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ background-color: white;
+ font-size: 14px;
+ min-width: 80px;
+}
+
+/* 鎼滅储妗嗘牱寮� */
+.search-container {
+ display: flex;
+ flex: 1;
+ margin-right: 10px;
+ height: 36px;
+ min-width: 200px;
+}
+
+.search-input {
+ flex: 1;
+ padding: 8px 12px;
+ border: 1px solid #ddd;
+ border-radius: 4px 0 0 4px;
+ font-size: 14px;
+ background-color: white;
+}
+
+.search-button {
+ padding: 0 12px;
+ border: 1px solid #3498db;
+ border-radius: 0 4px 4px 0;
+ background-color: #3498db;
+ color: white;
+ font-size: 14px;
+ margin: 0;
+}
+
+.status-tabs {
+ display: flex;
+ border-radius: 4px;
+ overflow: hidden;
+ background-color: #ecf0f1;
+ flex: 1;
+ min-width: 200px;
+}
+
+.tab-button {
+ padding: 0px 16px;
+ border: none;
+ background: none;
+ font-size: 14px;
+ transition: all 0.3s;
+ margin: 0;
+ height: 35px;
+ flex: 1;
+}
+
+.tab-button.active {
+ background-color: #3498db;
+ color: white;
+}
+
+/* 妫�楠屽崟鍒楄〃 */
+.inspection-list {
+ display: flex;
+ flex-direction: column;
+ gap: 20px;
+}
+
+/* 妫�楠屽崟鍗$墖 */
+.inspection-card {
+ background-color: white;
+ border-radius: 8px;
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
+ overflow: hidden;
+ transition: all 0.3s;
+}
+
+.card-header {
+ padding: 16px;
+ border-bottom: 1px solid #eee;
display: flex;
align-items: center;
}
-.form-label {
- margin-bottom: 0;
- border-bottom: 1px solid #FFFFFF;
- padding: 5px;
- font-size: 12px;
- width: 60px;
- /* Adjust the font size as per your requirement */
+.card-title {
+ font-size: 16px;
+ font-weight: 600;
+ flex: 1;
+ margin: 0 8px;
}
-.form-input {
- flex: 1;
- margin-bottom: 0;
- border-bottom: 1px solid #c7c7c7;
- padding: 5px;
+.status {
font-size: 12px;
- background-color: #FFFFFF;
- /* Adjust the font size as per your requirement */
+ padding: 4px 8px;
+ border-radius: 4px;
+ font-weight: 500;
+}
+
+.status.pending {
+ background-color: #f39c12;
+ color: white;
+}
+
+.status.pass {
+ background-color: #00cd00;
+ color: white;
+}
+
+.status.unqualified {
+ background-color: #ff0000;
+ color: white;
+}
+
+.card-body {
+ padding: 16px;
+}
+
+.info-row {
+ display: flex;
+ margin-bottom: 12px;
+ gap: 16px;
+}
+
+.info-item {
+ flex: 1;
+}
+
+.info-label {
+ display: block;
+ font-size: 12px;
+ color: #7f8c8d;
+ margin-bottom: 4px;
+}
+
+.info-content {
+ font-size: 14px;
+ color: #2c3e50;
+ line-height: 1.5;
+}
+
+.highlight {
+ font-weight: 600;
+ color: #2c3e50;
+ font-size: 16px;
+}
+
+.meta-info {
+ display: flex;
+ gap: 16px;
+ font-size: 12px;
+ color: #95a5a6;
+ margin-top: 12px;
+}
+
+.meta-item {
+ display: flex;
+ align-items: center;
+ gap: 4px;
+}
+
+.card-actions {
+ padding: 12px 16px;
+ border-top: 1px solid #eee;
+ display: flex;
+ gap: 8px;
+}
+
+button {
+ padding: 8px 16px;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ background-color: white;
+ font-size: 14px;
+ transition: all 0.2s;
+ flex: 1;
+}
+
+button.primary {
+ background-color: #3498db;
+ color: white;
+ border-color: #2980b9;
+}
+
+button:hover {
+ transform: translateY(-1px);
+ box-shadow: 0 2px 8px rgba(0,0,0,0.15);
}
.plus-button {
@@ -305,7 +449,7 @@
width: 60px;
height: 60px;
border-radius: 50%;
- background-color: #007bff;
+ background-color: #3498db;
color: #ffffff;
text-align: center;
line-height: 59px;
@@ -313,15 +457,6 @@
cursor: pointer;
z-index: 1000;
margin-bottom: 35px;
-}
-
-page {
- display: flex;
- flex-direction: column;
- box-sizing: border-box;
- background-color: #efeff4;
- min-height: 100%;
- height: auto;
}
.tips {
@@ -342,36 +477,26 @@
opacity: 1;
}
-.content {
- width: 100%;
+/* 鍝嶅簲寮忚璁� */
+@media (min-width: 768px) {
+ .inspection-list {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));
+ }
+
+ .info-row {
+ flex-direction: row;
+ }
}
-.list-picture {
- width: 100%;
- height: 145px;
-}
-
-.thumb-image {
- width: 100%;
- height: 100%;
-}
-
-.ellipsis {
- display: flex;
- overflow: hidden;
-}
-
-.uni-ellipsis-1 {
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
-}
-
-.uni-ellipsis-2 {
- overflow: hidden;
- text-overflow: ellipsis;
- display: -webkit-box;
- -webkit-line-clamp: 2;
- -webkit-box-orient: vertical;
+@media (min-width: 300px) {
+ .inspection-list {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
+ }
+
+ .info-row {
+ flex-direction: row;
+ }
}
</style>
\ No newline at end of file
--
Gitblit v1.9.3