From 7db419acdd2c02950b67c081dd2d7f61fdb2cb89 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期一, 30 三月 2026 16:09:07 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/RuiShiGe/LingPaoCheShenKu

---
 项目代码/WMS/WMSClient/src/views/widesea_wms/stock/Eliteselection.vue |  415 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 415 insertions(+), 0 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/widesea_wms/stock/Eliteselection.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/widesea_wms/stock/Eliteselection.vue"
new file mode 100644
index 0000000..ee08a4d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/widesea_wms/stock/Eliteselection.vue"
@@ -0,0 +1,415 @@
+<template>
+    <div class="container">
+        <div class="header">
+            <div class="title">绮炬帓鏄剧ず</div>
+            <div class="legend-section">
+                <div class="legend-item">
+                    <div class="legend-label">铏氭嫙绮炬帓</div>
+                    <span class="color-box color-green"></span>
+                </div>
+                <div class="legend-item">
+                    <div class="legend-label">铏氭嫙绮炬帓鏃犱换鍔�</div>
+                    <span class="color-box color-lightgreen"></span>
+                </div>
+            </div>
+        </div>
+        <div class="content-wrapper">
+            <div class="content">
+                <div v-if="displayItems.length === 0" class="no-data">
+                    <div class="no-data-text">鏆傛棤鏁版嵁</div>
+                </div>
+                <div v-for="(item, index) in displayItems" :key="index" class="box">
+                    <div class="box-content color-green" v-if="item.lockStatue == 1" @click="mouseClick(item.pvi)">
+                        <div class="text-line">{{ item.pvi }}</div>
+                        <div class="text-line">{{ item.vehicleCharacteristic }}</div>
+                        <div class="text-line">{{ item.carBodyCharacteristic }}</div>
+                    </div>
+                    <div class="box-content color-lightgreen" v-else-if="item.lockStatue == 0"
+                        @click="mouseClick(item.pvi)">
+                        <div class="text-line">{{ item.pvi }}</div>
+                        <div class="text-line">{{ item.vehicleCharacteristic }}</div>
+                        <div class="text-line">{{ item.carBodyCharacteristic }}</div>
+                    </div>
+                    <div class="box-content color-font" v-else-if="item.lockStatue != 1 || item.lockStatue != 0"
+                        @click="mouseClick(item.pvi)">
+                        <div class="text-line">{{ item.pvi }}</div>
+                        <div class="text-line">{{ item.vehicleCharacteristic }}</div>
+                        <div class="text-line">{{ item.carBodyCharacteristic }}</div>
+                    </div>
+                    <div class="box-index">{{ index + 1 }}</div>
+                </div>
+            </div>
+        </div>
+    </div>
+    <el-dialog v-model="dialogVisible" title="杞﹁韩淇℃伅鏌ョ湅" :before-close="handleClose">
+        <div v-if="stockInfos.message" class="no-data-message">{{ stockInfos.message }}</div>
+        <el-form v-else ref="$form" :model="stockInfos" label-position="left" label-width="120px" size="medium">
+            <el-row :gutter="20" type="flex" justify="start" align="top" tag="div">
+                <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+                    <el-form-item label="搴撲綅缂栧彿锛�">
+                        <j-el-description :value="stockInfos.locationCode" type="primary" ellipsis></j-el-description>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+                    <el-form-item label="PVI:">
+                        <j-el-description :value="stockInfos.pvi" type="primary" ellipsis></j-el-description>
+                    </el-form-item>
+                </el-col>
+            </el-row>
+            <el-row :gutter="20" type="flex" justify="start" align="top" tag="div">
+                <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+                    <el-form-item label="杞﹀瀷:">
+                        <j-el-description :value="stockInfos.vehicleCharacteristic" type="primary"
+                            ellipsis></j-el-description>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+                    <el-form-item label="杞﹁韩绫诲瀷">
+                        <j-el-description :value="getcarType(stockInfos.carType)" type="primary"
+                            ellipsis></j-el-description>
+                    </el-form-item>
+                </el-col>
+            </el-row>
+            <el-row :gutter="20" type="flex" justify="start" align="top" tag="div" style="margin-bottom: 10px;">
+                <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+                    <el-form-item label="宸ュ崟绫诲瀷:">
+                        <j-el-description :value="getOrderType(stockInfos.workOrderType)" type="primary"
+                            ellipsis></j-el-description>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+                    <el-form-item label="澶╃獥鐗瑰緛:">
+                        <j-el-description :value="stockInfos.skylightCharacteristic" type="primary"
+                            ellipsis></j-el-description>
+                    </el-form-item>
+                </el-col>
+            </el-row>
+            <el-row :gutter="20" type="flex" justify="start" align="top" tag="div" style="margin-bottom: 10px;">
+                <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+                    <el-form-item label="杞﹁韩棰滆壊:">
+                        <j-el-description :value="stockInfos.carBodyCharacteristic" type="primary"
+                            ellipsis></j-el-description>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+                    <el-form-item label="鐧借溅韬墿鏂欏彿:">
+                        <j-el-description :value="stockInfos.biwMaterialCode" type="primary" ellipsis></j-el-description>
+                    </el-form-item>
+                </el-col>
+            </el-row>
+            <el-row :gutter="20" type="flex" justify="start" align="top" tag="div" style="margin-bottom: 10px;">
+                <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+                    <el-form-item label="褰╄溅韬墿鏂欏彿:">
+                        <j-el-description :value="stockInfos.pbMaterial" type="primary" ellipsis></j-el-description>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+                    <el-form-item label="鐒婅涓婄嚎鏃堕棿:">
+                        <j-el-description :value="stockInfos.biwInPassTime" type="primary" ellipsis></j-el-description>
+                    </el-form-item>
+                </el-col>
+            </el-row>
+            <el-divider />
+        </el-form>
+        <template #footer>
+            <div class="dialog-footer">
+                <el-button @click="dialogVisible = false">鍙栨秷</el-button>
+                <el-button type="primary" @click="dialogVisible = false">
+                    纭
+                </el-button>
+            </div>
+        </template>
+    </el-dialog>
+</template>
+  
+<script>
+import JElDescription from "./JElDescription";
+export default {
+    data() {
+        return {
+            mesLockInfos: [],
+            timer: null,
+            dialogVisible: false,
+            stockInfos: {
+
+            },
+        }
+    },
+    computed: {
+        displayItems() {
+            return this.mesLockInfos.slice(0, 50)
+        }
+    },
+    methods: {
+        GetViewData() {
+            this.http.post('/api/VV_MesLockInfo/GetMesLockInfo', '', '鏌ヨ涓�').then((x) => {
+                this.mesLockInfos = x.data
+            })
+        },
+        mouseClick(pvi) {
+            this.http.post('/api/VV_MesLockInfo/GetStockInfo?PVI=' + pvi, '', '鏌ヨ涓�').then((x) => {
+                if (x.data === null) {
+                    this.stockInfos = { message: '鏃犲簱瀛樻暟鎹�' };
+                } else {
+                    this.stockInfos = x.data;
+                }
+                this.dialogVisible = true;
+            })
+        },
+        getcarType(carType) {
+            if (carType == 1) return '鐧借溅韬�'
+            if (carType == 2) return '褰╄溅韬�'
+            if (carType == 3) return '绌烘粦姗�'
+        },
+        getOrderType(OrderType) {
+            if (OrderType == 1) return '鍥藉唴閿�鍞溅'
+            if (OrderType == 2) return '鍥介檯閿�鍞溅'
+            if (OrderType == 3) return '灞曡溅'
+            if (OrderType == 4) return '浼佷笟鐢ㄨ溅'
+            if (OrderType == 6) return '璇曞埗杞�'
+            if (OrderType == 7) return 'SKD/CKD杞�'
+            if (OrderType == 8) return '鐗规畩閰嶇疆杞�'
+            if (OrderType == 11) return '楠岃瘉璁㈠崟'
+        },
+        startTimer() {
+            // 娓呴櫎鍙兘瀛樺湪鐨勬棫瀹氭椂鍣�
+            if (this.timer) {
+                clearInterval(this.timer)
+            }
+            // 璁剧疆鏂扮殑瀹氭椂鍣紝姣�30绉掑埛鏂颁竴娆�
+            this.timer = setInterval(() => {
+                this.GetViewData()
+            }, 30000)
+        },
+        stopTimer() {
+            if (this.timer) {
+                clearInterval(this.timer)
+                this.timer = null
+            }
+        }
+    },
+    mounted() {
+        this.GetViewData()
+        this.startTimer()
+    },
+    beforeUnmount() {
+        this.stopTimer()
+    },
+    components: { JElDescription }
+}
+</script>
+  
+<style scoped>
+.header {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding: 16px 24px;
+    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+    border-bottom: none;
+    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
+}
+
+.title {
+    font-size: 24px;
+    font-weight: 700;
+    color: #ffffff;
+    margin-left: 0;
+    text-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
+    letter-spacing: 0.5px;
+}
+
+.legend-section {
+    display: flex;
+    gap: 24px;
+    align-items: center;
+}
+
+.legend-item {
+    display: flex;
+    align-items: center;
+    gap: 8px;
+    padding: 6px 12px;
+    background-color: rgba(255, 255, 255, 0.2);
+    border-radius: 20px;
+    backdrop-filter: blur(10px);
+}
+
+.legend-label {
+    font-size: 15px;
+    color: #ffffff;
+    font-weight: 500;
+    letter-spacing: 0.3px;
+}
+
+.color-box {
+    display: inline-block;
+    width: 18px;
+    height: 18px;
+    border-radius: 4px;
+    border: 2px solid rgba(255, 255, 255, 0.3);
+    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
+}
+
+.color-green {
+    background-color: #167C07;
+}
+
+.color-lightgreen {
+    background-color: #9dc88d;
+}
+
+.color-font {
+    background-color: #6ec0f0;
+}
+
+.box-content.color-green {
+    background-color: #167C07;
+    border-radius: 8px;
+    padding: 12px;
+    margin: -12px;
+    margin-bottom: -12px;
+    height: 100%;
+    display: flex;
+    flex-direction: column;
+    justify-content: space-between;
+}
+
+.box-content.color-lightgreen {
+    background-color: #9dc88d;
+    border-radius: 8px;
+    padding: 12px;
+    margin: -12px;
+    margin-bottom: -12px;
+    height: 100%;
+    display: flex;
+    flex-direction: column;
+    justify-content: space-between;
+}
+
+.box-content.color-font {
+    background-color: #6ec0f0;
+    border-radius: 8px;
+    padding: 12px;
+    margin: -12px;
+    margin-bottom: -12px;
+    height: 100%;
+    display: flex;
+    flex-direction: column;
+    justify-content: space-between;
+}
+
+.content-wrapper {
+    padding: 24px;
+    height: calc(100vh - 72px);
+    overflow-y: auto;
+    background: linear-gradient(180deg, #f8f9fa 0%, #e9ecef 100%);
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+
+.content {
+    display: grid;
+    grid-template-columns: repeat(10, 1fr);
+    gap: 12px;
+    width: 100%;
+}
+
+.box {
+    width: 100%;
+    height: 100%;
+    border: none;
+    border-radius: 8px;
+    display: flex;
+    flex-direction: column;
+    justify-content: space-between;
+    padding: 12px;
+    font-size: 13px;
+    font-weight: 500;
+    color: #333;
+    cursor: pointer;
+    background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
+    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
+    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
+    position: relative;
+    overflow: hidden;
+}
+
+.box-content {
+    flex: 1;
+    display: flex;
+    flex-direction: column;
+    justify-content: space-around;
+    overflow: hidden;
+}
+
+.text-line {
+    line-height: 1.6;
+    text-align: center;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    color: #ffffff;
+    font-weight: 600;
+    font-size: 13px;
+    letter-spacing: 0.3px;
+}
+
+.box-index {
+    text-align: center;
+    margin-top: 8px;
+    font-size: 16px;
+    color: #756767;
+    font-weight: 800;
+    padding-top: 8px;
+    border-top: 1px solid rgba(255, 255, 255, 0.2);
+    letter-spacing: 0.5px;
+}
+
+.color-box {
+    display: inline-block;
+    width: 20px;
+    height: 20px;
+    margin-right: 15px;
+    border-radius: 3px;
+}
+
+/* 鏃犳暟鎹彁绀烘牱寮� */
+.no-data-message {
+    text-align: center;
+    padding: 40px 20px;
+    font-size: 16px;
+    color: #909399;
+    background-color: #f4f4f5;
+    border-radius: 4px;
+}
+
+/* 椤甸潰鏃犳暟鎹彁绀烘牱寮� */
+.no-data {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    justify-content: center;
+    width: 100%;
+    height: 100%;
+    min-height: 300px;
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    transform: translate(-50%, -50%);
+}
+
+.no-data-icon {
+    font-size: 80px;
+    margin-bottom: 20px;
+    opacity: 0.6;
+}
+
+.no-data-text {
+    font-size: 18px;
+    color: #909399;
+    font-weight: 500;
+}
+</style>
+  
\ No newline at end of file

--
Gitblit v1.9.3