From c7f3fd5215399b37d0511b3bd555150ff1b13507 Mon Sep 17 00:00:00 2001
From: charles <981744753@qq.com>
Date: 星期一, 29 四月 2024 10:39:30 +0800
Subject: [PATCH] fix:回退原先版本

---
 src/views/newDashboard/index.vue |  177 ++++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 114 insertions(+), 63 deletions(-)

diff --git a/src/views/newDashboard/index.vue b/src/views/newDashboard/index.vue
index 62bc29e..459041a 100644
--- a/src/views/newDashboard/index.vue
+++ b/src/views/newDashboard/index.vue
@@ -1,36 +1,43 @@
 <script setup lang="ts">
-import { ref, onMounted, watch } from 'vue'
+import { ref, onMounted, watch, nextTick } from 'vue'
 import { ElMessage } from 'element-plus'
 import TaskTabs from '@/views/dashboard/components/TaskTabs.vue'
 import CurrentDateTime from '@/views/dashboard/components/CurrentDateTime.vue'
-import { getQualityProcedureApi, getProjectApi, getProductApi, getWorkerApi, updateQualityProcedureApi } from '@/api'
+import {
+  getQualityProcedureApi,
+  getProjectApi,
+  getProductApi,
+  getWorkerApi,
+  updateQualityProcedureApi,
+  qualityCountApi,
+  IQualityCountParams
+} from '@/api'
 import BigButton from '@/views/dashboard/components/BigButton.vue'
 import EditInspection from '@/views/newDashboard/components/EditInspection.vue'
 defineOptions({
   name: 'NewDashboardView'
 })
-const taskTabsList = [
+const taskTabsList: Array<any> = [
   { label: '寰呰川妫�', value: 1 },
   { label: '宸茶川妫�', value: 3 }
 ]
 const activeTaskTab = ref(1)
 const projectList = ref([])
 const productList = ref([])
-const projectIdArray = ref([])
-const productIdArray = ref([])
+const projectIdArray = ref('')
+const productIdArray = ref('')
 const workerList = ref([])
 const pageData = ref({ page: 1, pageSize: 1000 })
 const modalObj = ref({ modalValue: false })
 const qualityList = ref([])
 const lookQuality = ref({})
 const oldLookQuality = ref({})
+const DEFAULT_QUALITY_COUNT = { wait: '--', over: '--', scrapped: '--', pass: '--' }
+const qualityCountObj = ref({ ...DEFAULT_QUALITY_COUNT })
 const tableHeaderColor = ({ rowIndex }: any) => {
   if (rowIndex === 0) {
     return 'header-row-class' // 杩欎釜绫诲悕闇�瑕佷綘鑷繁瀹氫箟
   }
-}
-const changeTab = (tabObj: any) => {
-  console.log(tabObj)
 }
 const checkProduct = (quality: any) => {
   lookQuality.value = { ...quality }
@@ -42,6 +49,7 @@
     if (code == 200) {
       ElMessage.success(data)
       queryQualityProcedure()
+      queryQualityCount()
       modalObj.value.modalValue = false
     } else {
       ElMessage.error(data)
@@ -53,30 +61,45 @@
   getProjectApi(pageData.value).then(({ code, data }: any) => {
     if (code == 200) {
       projectList.value = data
+      if (Array.isArray(data) && data.length > 0) {
+        projectIdArray.value = data[0].id
+        queryProduct()
+      }
     }
   })
 }
 //2.鏍规嵁椤圭洰缂栧彿鏌ヨ浜у搧鍒楄〃
 const queryProduct = () => {
-  if (projectIdArray.value && projectIdArray.value.length > 0) {
-    getProductApi({ projectId: projectIdArray.value[0], ...pageData.value }).then(({ code, data }) => {
+  if (projectIdArray.value) {
+    getProductApi({ projectId: projectIdArray.value, ...pageData.value }).then(({ code, data }) => {
       if (code == 200) {
         productList.value = data
+        if (Array.isArray(data) && data.length > 0) {
+          productIdArray.value = data[0].id
+          queryQualityProcedure()
+          queryQualityCount()
+        }
       }
     })
   } else {
     productList.value = []
-    productIdArray.value = []
+    productIdArray.value = ''
   }
 }
 //3.鏌ヨ宸ュ簭璐ㄦ鍒楄〃
 const queryQualityProcedure = () => {
-  const params = { status: activeTaskTab.value, projectId: '', productId: '', ...pageData.value, keyword: '' }
-  if (Array.isArray(projectIdArray.value) && projectIdArray.value.length > 0) {
-    params.projectId = projectIdArray.value[0] + ''
+  const params: any = { status: activeTaskTab.value, projectId: '', productId: '', ...pageData.value, keyword: '' }
+  if (projectIdArray.value) {
+    params.projectId = projectIdArray.value + ''
+  } else {
+    qualityList.value = []
+    return
   }
-  if (Array.isArray(productIdArray.value) && productIdArray.value.length > 0) {
-    params.productId = productIdArray.value[0] + ''
+  if (productIdArray.value) {
+    params.productId = productIdArray.value + ''
+  } else {
+    qualityList.value = []
+    return
   }
   getQualityProcedureApi(params).then(({ code, data }: any) => {
     if (code == 200) {
@@ -89,6 +112,7 @@
   [() => activeTaskTab.value, () => productIdArray.value, () => projectIdArray.value],
   () => {
     queryQualityProcedure()
+    queryQualityCount()
   },
   { immediate: false }
 )
@@ -100,10 +124,35 @@
     }
   })
 }
+//6.鏌ヨ璐ㄦ鏁版嵁缁熻
+const queryQualityCount = () => {
+  const params: IQualityCountParams = { productId: '', projectId: '' }
+  if (projectIdArray.value) {
+    params.projectId = projectIdArray.value + ''
+  } else {
+    qualityCountObj.value = { ...DEFAULT_QUALITY_COUNT }
+    return
+  }
+  if (productIdArray.value) {
+    params.productId = productIdArray.value + ''
+  } else {
+    qualityCountObj.value = { ...DEFAULT_QUALITY_COUNT }
+    return
+  }
+  qualityCountApi(params).then(({ code, data }) => {
+    if (code == 200) {
+      for (let fieldName in data) {
+        if (isNaN(parseInt(data[fieldName]))) {
+          data[fieldName] = '--'
+        }
+      }
+      qualityCountObj.value = data
+    }
+  })
+}
 //6.鍒濆鍖栭〉闈㈡暟鎹�
 const initPage = () => {
   queryProject()
-  queryQualityProcedure()
   queryWorker()
 }
 onMounted(() => {
@@ -129,97 +178,94 @@
         <div class="img bg1"><img src="@/assets/images/u820.png" /></div>
         <div class="text">
           <div>寰呮娴�</div>
-          <div>1</div>
+          <div>{{ qualityCountObj.wait }}</div>
         </div>
       </div>
       <div class="item">
         <div class="img bg2"><img src="@/assets/images/u820.png" /></div>
         <div class="text">
           <div>瀹屾垚鏁�</div>
-          <div>1</div>
+          <div>{{ qualityCountObj.over }}</div>
         </div>
       </div>
       <div class="item">
         <div class="img bg3"><img src="@/assets/images/u820.png" /></div>
         <div class="text">
-          <div>鍚堟牸鏁�</div>
-          <div class="success-number">1</div>
+          <div>鍚堟牸鐜�</div>
+          <div class="success-number">
+            {{ qualityCountObj.pass }}
+            <span v-show="!isNaN(parseInt(qualityCountObj.pass))">%</span>
+          </div>
         </div>
       </div>
       <div class="item">
         <div class="img bg4"><img src="@/assets/images/u820.png" /></div>
         <div class="text">
-          <div>鎶ュ簾鏁�</div>
-          <div class="fail-number">0</div>
+          <div>鎶ュ簾鐜�</div>
+          <div class="fail-number">
+            {{ qualityCountObj.scrapped }}<span v-show="!isNaN(parseInt(qualityCountObj.scrapped))">%</span>
+          </div>
         </div>
       </div>
     </div>
     <div class="table-filter">
       <div class="left">
-        <TaskTabs v-model="activeTaskTab" style="margin-top: 20px" :list="taskTabsList" @change="changeTab"></TaskTabs>
+        <TaskTabs v-model="activeTaskTab" style="margin-top: 20px" :list="taskTabsList"></TaskTabs>
       </div>
       <div class="right">
         <el-select
           v-model="projectIdArray"
           :teleported="false"
           size="large"
-          :multiple-limit="1"
-          multiple
           placeholder="椤圭洰"
+          :clearable="true"
           @change="queryProduct"
         >
-          <el-option v-for="item in projectList" :key="item.id" :label="item.projectName" :value="item.id" multiple>
+          <el-option v-for="item in projectList" :key="item.id" :label="item.projectName" :value="item.id">
             <div class="item-option">
               <div>{{ item.id }}</div>
               <div>{{ item.projectName }}</div>
             </div>
           </el-option>
         </el-select>
-        <el-select
-          v-model="productIdArray"
-          :teleported="false"
-          size="large"
-          :multiple-limit="1"
-          multiple
-          placeholder="浜у搧"
-        >
-          <el-option v-for="item in productList" :key="item.id" :label="item.productName" :value="item.id" multiple>
+        <el-select v-model="productIdArray" :teleported="false" size="large" placeholder="浜у搧" :clearable="true">
+          <el-option v-for="item in productList" :key="item.id" :label="item.name" :value="item.id">
             <div class="item-option">
               <div>{{ item.id }}</div>
-              <div>{{ item.productName }}</div>
+              <div>{{ item.name }}</div>
             </div>
           </el-option>
         </el-select>
       </div>
     </div>
     <div class="table">
-      <el-empty v-if="qualityList.length == 0" description="鏆傛棤鏁版嵁" />
+      <!--<el-empty v-if="qualityList.length == 0" description="鏆傛棤鏁版嵁" />-->
       <el-table
-        v-else
         :data="qualityList"
         :header-cell-class-name="tableHeaderColor"
         row-class-name="row-bg"
         style="width: 100%; background: transparent"
         border
       >
-        <el-table-column prop="workOrderId" align="center" label="宸ュ崟鍙�" />
-        <el-table-column prop="projectId" align="center" label="椤圭洰鍙�" />
-        <el-table-column prop="productId" align="center" label="浜у搧鍙�" />
-        <el-table-column prop="productName" align="center" label="浜у搧鍚�" />
-        <el-table-column prop="procedureId" align="center" label="宸ュ簭鍙�" />
-        <el-table-column prop="procedureName" align="center" label="宸ュ簭鍚嶇О" />
-        <el-table-column prop="drawingNumber" align="center" label="鍥惧彿" />
-        <el-table-column prop="amount" align="center" label="鍥惧彿" />
-        <el-table-column prop="transferAmount" align="center" label="杞Щ鏁伴噺" />
-        <el-table-column prop="scrappedAmount" align="center" label="鎶ュ簾鏁伴噺" />
-        <el-table-column prop="passAmount" align="center" label="鍚堟牸鏁伴噺" />
-        <el-table-column prop="workerName" align="center" label="鍔犲伐鍛�" />
+        <el-table-column fixed prop="procedureName" style="background: gray" align="center" label="浜у搧宸ュ簭" />
+        <el-table-column prop="workOrderId" align="center" label="宸ュ崟缂栧彿" />
+        <el-table-column prop="productName" align="center" label="浜у搧鍚嶇О" />
+        <el-table-column prop="drawingNumber" align="center" label="浜у搧鍥惧彿" />
+        <el-table-column prop="amount" align="center" label="璁″垝鏁�" />
+        <el-table-column prop="transferAmount" align="center" label="杞叆鏁�" />
+        <el-table-column prop="scrappedAmount" align="center" label="鎶ュ簾鏁�" />
+        <el-table-column prop="passAmount" align="center" label="鍚堟牸鏁�" />
+        <el-table-column prop="workerName" align="center" label="鍔犲伐浜哄憳" />
         <el-table-column prop="inspectionPeople" align="center" label="璐ㄦ鍛�" />
-        <el-table-column align="center" label="鎿嶄綔" width="120px">
+        <!--<el-table-column prop="procedureId" align="center" label="宸ュ簭鍙�" />-->
+        <el-table-column fixed="right" align="center" label="鎿嶄綔" width="120px">
           <template #default="scope">
             <BigButton bg-color="#00ff00" @click="checkProduct(scope.row)">璐ㄦ</BigButton>
           </template>
         </el-table-column>
+        <template #empty>
+          <el-empty description="鏆傛棤鏁版嵁"></el-empty>
+        </template>
       </el-table>
     </div>
   </div>
@@ -330,22 +376,26 @@
       margin-left: 10px;
     }
     .right {
-      width: 34%;
+      width: 40%;
       display: flex;
       justify-content: space-around;
       margin-top: 2.5vh;
+      margin-right: -10px;
       .el-select {
         width: 256px;
         :deep(.el-select__wrapper) {
-          background-color: transparent !important;
+          // background-color: transparent !important;
+        }
+        :deep(.el-select__placeholder) {
+          //color: white;
         }
       }
       .el-select-dropdown__item {
-        color: white;
+        //color: white;
       }
       .el-select-dropdown__item.is-hovering {
-        color: #fff;
-        background: transparent !important;
+        //color: #fff;
+        //background: transparent !important;
         /*background: linear-gradient(*/
         /*to right,*/
         /*rgba(147, 250, 255, 0),*/
@@ -354,15 +404,19 @@
         /*);*/
       }
       :deep(.el-select__popper) {
-        border: 1px solid #1ca898;
-        background: deepskyblue;
+        width: 100%;
+        //border: 1px solid #1ca898;
+        // background: deepskyblue;
       }
       .item-option {
         width: 100%;
         display: flex;
         flex: 1;
         > div {
-          width: 50%;
+          min-width: 50%;
+          white-space: nowrap;
+          overflow: hidden;
+          text-overflow: ellipsis;
           text-align: center;
         }
       }
@@ -370,9 +424,6 @@
         background: transparent;
         font-size: 16px;
         color: white;
-      }
-      :deep(.el-icon) {
-        display: none;
       }
     }
   }

--
Gitblit v1.8.0