DFS_Shuo_Chen 2 달 전
부모
커밋
899a06f4b0

+ 2 - 0
admin.ui.plus-master/src/api/admin/PCBA/boardFunctionResultDto.ts

@@ -21,6 +21,8 @@
     export interface BoardFunctionResultDto{
    /** 序列号 */
       serno?: string
+   /** 外部序列号 */
+   exserno?: string      
    /** 主板类型 */
       boardType?: number
    /** 功能码 */

+ 2 - 0
admin.ui.plus-master/src/api/admin/PCBA/boardFunctionSummaryDto.ts

@@ -19,6 +19,8 @@
       list?: BoardFunctionSummaryOutput[] | null
     }
     export interface BoardFunctionSummaryOutput{
+        /** 主板类型; */
+        boardType?: number
    /** 功能码 */
         code?: number
    /** 功能名称 */

+ 3 - 1
admin.ui.plus-master/src/api/admin/PCBA/boardListDto.ts

@@ -21,7 +21,9 @@
     export interface BoardListDto{
    /** 序列号 */
       serno?: string
-   /** 主板类型 */
+   /** 外部序列号 */
+   exserno?: string
+      /** 主板类型 */
       boardType?: number
    /** 主板名称 */
       boardName?: string

+ 34 - 17
admin.ui.plus-master/src/api/admin/PCBA/boardSummaryDto.ts

@@ -1,30 +1,47 @@
 /** 查询信息输出 */
-export interface ResultOutputBoardSummaryOutput{
-     /** 是否成功标记 */
-     success?: boolean
-     /** 编码 */
-     code?: string | null
-     /** 消息 */
-     msg?: string | null
-     /** 数据 */
-    data?:BoardSummaryOutput[] | null
+  export interface ResultOutputPageOutputBoardSummaryOutput{
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+ data?:PageOutputBoardSummaryOutput[] | null
+}
+    export interface PageOutputBoardSummaryOutput{
+      /**
+      * 数据总数
+      * @format int64
+      */
+      total?: number
+      /** 数据 */
+      list?: BoardSummaryOutput[] | null
    }
          export interface BoardSummaryOutput{
+   /** 主板类型; */
+      boardType?: number
       /** 主板数量 */
            boardNum?: number
       /** 主板测试通过数量 */
            boardSuccessNum?: number
       /** 主板测试一次性通过数量 */
            boardOneTestSuccessNum?: number
-      /** 主板功能测试次数 */
-           boardFunctionTestTimes?: number
-      /** 主板功能测试成功次数 */
-           boardFunctionSuccessTimes?: number
+      /** 主板测试次数 */
+           boardTestTimes?: number
+      /** 主板测试成功次数 */
+           boardSuccessTimes?: number
       /** 主板测试通过率,单位:% */
            boardSuccessRate?: number
-      /** 主板测试一次性通过数量,单位:% */
+      /** 主板测试一次性通过,单位:% */
            boardOneTestSuccessRate?: number
-      /** 主板功能测试成功率,单位:% */
-           boardFunctionSuccessRate?: number
+      /** 主板测试成功率,单位:% */
+      boardTestSuccessRate?: number
    
-   }
+   }
+export interface pageInput {
+      /**当前页数 */
+      CurrentPage: number | any
+      /**展示页数 */
+      PageSize: number | any
+    }

+ 3 - 1
admin.ui.plus-master/src/api/admin/PCBA/boardTestRecordDto.ts

@@ -21,7 +21,9 @@
     export interface BoardTestRecordDto{
    /** 序列号 */
       serno?: string
-   /** 主板类型 */
+      /** 外部序列号 */
+      exserno?: string
+      /** 主板类型 */
       boardType?: number
    /** 主板名称 */
       boardName?: string

+ 4 - 1
admin.ui.plus-master/src/stores/globalCacheStore.ts

@@ -19,7 +19,10 @@ const arr =
     'equipmentType',
     'softwarePackageStatus',
     'oilEngineStatus',
-    'qrBookFileStatus'
+    'qrBookFileStatus',
+    'pcbaTestState',
+    'pcbaBoardType',
+    'pcbaTestType'
   ]
 
 export const useGlobalCacheStore = defineStore('globalCacheStore', {

+ 5 - 2
admin.ui.plus-master/src/views/admin/PCBA/boardFunctionList/index.vue

@@ -8,8 +8,11 @@
 <el-form :model="state.filter" :inline="true" @submit.stop.prevent>
             <el-form-item prop="name" style="width: 100%">
 <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
-                <el-form-item label="主板类型">
-                  <el-input v-model="state.filter.boardType" placeholder="单行输入" clearable></el-input>
+  <el-form-item label="主板类型">
+                  <el-select v-model="state.filter.boardType" placeholder="">
+                    <el-option v-for="(value, key) in PCBABoardType" :key="key" :label="value[1].name"
+                      :value="Number(value[1].value)" />
+                  </el-select>
                 </el-form-item>
               </el-col>
 <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">

+ 105 - 13
admin.ui.plus-master/src/views/admin/PCBA/boardFunctionResult/index.vue

@@ -12,23 +12,36 @@
                   <el-input v-model="state.filter.serno" placeholder="单行输入" clearable></el-input>
                 </el-form-item>
               </el-col>
+ <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
+                <el-form-item label="外部序列号">
+                  <el-input v-model="state.filter.exserno" placeholder="单行输入" clearable></el-input>
+                </el-form-item>
+              </el-col>             
 <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
-                <el-form-item label="主板类型">
-                  <el-input v-model="state.filter.boardType" placeholder="单行输入" clearable></el-input>
+  <el-form-item label="主板类型">
+                  <el-select v-model="state.filter.boardType" placeholder="">
+                    <el-option v-for="(value, key) in PCBABoardType" :key="key" :label="value[1].name"
+                      :value="Number(value[1].value)" />
+                  </el-select>
                 </el-form-item>
               </el-col>
 <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
-                <el-form-item label="功能码">
-                  <el-input v-model="state.filter.code" placeholder="单行输入" clearable></el-input>
+  <el-form-item label="功能码">
+                    <el-select  v-model="state.filter.code" default-first-option="true" filterable allow-create 
+                      value-key="code"
+                      @blur="codeblur()"
+                      title='可直接输入具体功能码'
+                      ref="codeSel">
+                    <el-option v-for="item in options" :key="item.key" :label="item.name"
+                      :value="Number(item.value)" />
+                  </el-select>
                 </el-form-item>
               </el-col>
 <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
-                <el-form-item label="测试结果">
-                  <el-select id="fruits" name="fruits" v-model="state.filter.result">
-                    <el-option value="-1" >所有</el-option>
-                    <el-option value="0">未测试</el-option>
-                    <el-option value="1">成功</el-option>
-                    <el-option value="2">失败</el-option>
+  <el-form-item label="测试结果">
+                  <el-select v-model="state.filter.result" placeholder="">
+                    <el-option v-for="(value, key) in PCBATestState" :key="key" :label="value[1].name"
+                      :value="Number(value[1].value)" />
                   </el-select>
                 </el-form-item>
               </el-col>
@@ -72,8 +85,40 @@
       <el-col  :xs="24" >
         <el-card style="height: 70vh" class="my-fill mt8" shadow="hover">
 <el-table v-loading="state.loading" stripe :data="state.tableModel" row-key="id" style="width: 100%">
-        <el-table-column v-for="column in state.dynamicColumns" :key="column.prop" :prop="column.prop" :label="column.label"  >
-        </el-table-column>
+        <!--<el-table-column v-for="column in state.dynamicColumns" :key="column.prop" :prop="column.prop" :label="column.label"  >
+        </el-table-column>-->
+
+
+        <el-table-column prop="serno" label="序列号" />
+        <el-table-column prop="exserno" label="外部序列号" />
+            <el-table-column prop="boardType" label="主板类型">
+              <template #default="{ row }">
+                <div :style="{ color: getPCBABoardType(row.boardType).color }" class="bold-font">
+                  {{ getPCBABoardType(row.boardType).name }}
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="code" label="功能码" />
+            <el-table-column prop="name" label="功能名称" />
+            <el-table-column prop="result" label="测试结果">
+              <template #default="{ row }">
+                <div :style="{ color: getPCBATestState(row.result).color }" class="bold-font">
+                  {{ getPCBATestState(row.result).name }}
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="onceTestPass" label="是否一次通过" >
+              <template #default="{ row }">
+              <el-text  v-if="row.onceTestPass">是</el-text>
+              <el-text  v-else>否</el-text>
+              </template>
+            </el-table-column>
+            <el-table-column prop="testTimes" label="测试次数" />
+            <el-table-column prop="successTimes" label="测试成功次数" />
+            <el-table-column prop="createTime" label="创建时间" />
+            <el-table-column prop="lastTestTime" label="最近测试时间" />
+            <el-table-column prop="lastTestUser" label="最新检测员" />
+            <el-table-column prop="info" label="备注" />
 </el-table>
 <div class="my-flex my-flex-end" style="margin-top: 20px">
             <el-pagination
@@ -94,11 +139,56 @@
     </div>
   </template>
   <script setup lang="ts">
-  import {onBeforeMount, onMounted, reactive, watch} from "vue";
+  import {onBeforeMount, onMounted, reactive, watch,ref} from "vue";
   import eventBus from "/@/utils/mitt";
 import { BoardFunctionResultApi } from '/@/api/admin/PCBA/BoardFunctionResultApi'
 import { BoardFunctionResultDto } from '/@/api/admin/PCBA/BoardFunctionResultDto'
 import type { pageInput } from "/@/api/admin/shareDto/shareDto";
+import { useGlobalCacheStore } from "/@/stores/globalCacheStore";
+import { getCurrentInstance } from 'vue';
+const { proxy: ctx } = getCurrentInstance();
+
+
+/**获取全局缓存*/
+const globalCacheStore = useGlobalCacheStore()
+/**数据字典缓存*/
+const PCBATestState = ref(globalCacheStore.getGlobalStore().get('pcbaTestState'))
+const PCBABoardType = ref(globalCacheStore.getGlobalStore().get('pcbaBoardType'))
+
+const getPCBATestState = (val) => {
+  val = String(val)
+  if(PCBATestState.value?.has(val)){
+    return PCBATestState.value.get(val)
+  }else {
+    return val
+  }
+}
+
+const getPCBABoardType = (val) => {
+  val = String(val)
+  if(PCBABoardType.value?.has(val)){
+    return PCBABoardType.value.get(val)
+  }else {
+    return val
+  }
+}
+
+const  codeblur = ()=>{
+
+let value = ctx.$refs.codeSel.selectedLabel
+
+if(value == '所有' || value == '')
+{
+  value = -1
+}
+state.filter.code = value
+}
+
+const options= [{
+      value: -1,
+      name: '所有',
+      key:"-1"
+    }]
 
 
 /**数据对象*/
@@ -109,6 +199,8 @@ import type { pageInput } from "/@/api/admin/shareDto/shareDto";
       filter: {
 /**序列号 */
         serno: "",
+/**外部序列号 */
+        exserno: "",
 /**boardType */
         boardType: -1,
 /**code */

+ 72 - 5
admin.ui.plus-master/src/views/admin/PCBA/boardFunctionSummary/index.vue

@@ -8,8 +8,11 @@
 <el-form :model="state.filter" :inline="true" @submit.stop.prevent>
             <el-form-item prop="name" style="width: 100%">
 <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
-                <el-form-item label="主板类型">
-                  <el-input v-model="state.filter.boardType" placeholder="单行输入" clearable></el-input>
+  <el-form-item label="主板类型">
+                  <el-select v-model="state.filter.boardType" placeholder="">
+                    <el-option v-for="(value, key) in PCBABoardType" :key="key" :label="value[1].name"
+                      :value="Number(value[1].value)" />
+                  </el-select>
                 </el-form-item>
               </el-col>
 <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
@@ -52,8 +55,46 @@
       <el-col  :xs="24" >
         <el-card style="height: 70vh" class="my-fill mt8" shadow="hover">
 <el-table v-loading="state.loading" stripe :data="state.tableModel" row-key="id" style="width: 100%">
-        <el-table-column v-for="column in state.dynamicColumns" :key="column.prop" :prop="column.prop" :label="column.label"  >
-        </el-table-column>
+        <!--<el-table-column v-for="column in state.dynamicColumns" :key="column.prop" :prop="column.prop" :label="column.label"  >
+        </el-table-column>-->
+
+
+
+
+
+
+            <el-table-column prop="boardType" label="主板类型">
+              <template #default="{ row }">
+                <div :style="{ color: getPCBABoardType(row.boardType).color }" class="bold-font">
+                  {{ getPCBABoardType(row.boardType).name }}
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="code" label="功能码" />
+            <el-table-column prop="name" label="功能名称" />
+            <el-table-column prop="num" label="测试功能数量" />
+            <el-table-column prop="successNum" label="通过数量" />
+            <el-table-column prop="oneTestSuccessNum" label="测试一次通过数量" />
+            <el-table-column prop="testTimes" label="测试次数" />
+            <el-table-column prop="testSuccessTimes" label="测试成功次数" />
+            <el-table-column prop="successRate" label="测试通过率" >
+            <template #default="{ row }">
+                <div> {{row.successRate }}%</div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="oneTestSuccessRate" label="测试一次通过率" >
+            <template #default="{ row }">
+                <div> {{row.oneTestSuccessRate }}%</div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="testSuccessRate" label="测试成功率">
+            <template #default="{ row }">
+                <div> {{row.testSuccessRate }}%</div>
+              </template>
+            </el-table-column>
+
+
+
 </el-table>
 <div class="my-flex my-flex-end" style="margin-top: 20px">
             <el-pagination
@@ -74,11 +115,37 @@
     </div>
   </template>
   <script setup lang="ts">
-  import {onBeforeMount, onMounted, reactive, watch} from "vue";
+  import {onBeforeMount, onMounted, reactive, watch,ref} from "vue";
   import eventBus from "/@/utils/mitt";
 import { BoardFunctionSummaryApi } from '/@/api/admin/PCBA/boardFunctionSummaryApi'
 import { BoardFunctionSummaryOutput } from '/@/api/admin/PCBA/boardFunctionSummaryDto'
 import type { pageInput } from "/@/api/admin/shareDto/shareDto";
+import { useGlobalCacheStore } from "/@/stores/globalCacheStore";
+
+
+/**获取全局缓存*/
+const globalCacheStore = useGlobalCacheStore()
+/**数据字典缓存*/
+const PCBATestState = ref(globalCacheStore.getGlobalStore().get('pcbaTestState'))
+const PCBABoardType = ref(globalCacheStore.getGlobalStore().get('pcbaBoardType'))
+
+const getPCBATestState = (val) => {
+  val = String(val)
+  if(PCBATestState.value?.has(val)){
+    return PCBATestState.value.get(val)
+  }else {
+    return val
+  }
+}
+
+const getPCBABoardType = (val) => {
+  val = String(val)
+  if(PCBABoardType.value?.has(val)){
+    return PCBABoardType.value.get(val)
+  }else {
+    return val
+  }
+}
 
 /**数据对象*/
   const state = reactive({

+ 77 - 4
admin.ui.plus-master/src/views/admin/PCBA/boardList/index.vue

@@ -13,9 +13,18 @@
                 </el-form-item>
               </el-col>
 <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
+                <el-form-item label="外部序列号">
+                  <el-input v-model="state.filter.exserno" placeholder="单行输入" clearable></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
 
                 <el-form-item label="主板类型">
-                  <el-input v-model="state.filter.boardType" placeholder="单行输入" clearable></el-input>
+                  <!--<el-input v-model="state.filter.boardType" placeholder="单行输入" clearable></el-input>-->
+                  <el-select v-model="state.filter.boardType" placeholder="">
+                    <el-option v-for="(value, key) in PCBABoardType" :key="key" :label="value[1].name"
+                      :value="Number(value[1].value)" />
+                  </el-select>
                 </el-form-item>
               </el-col>
 <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
@@ -48,11 +57,15 @@
 <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
                 <el-form-item label="最新测试状态">
                   <!--el-input v-model="state.filter.lastTestState" placeholder="单行输入" clearable></el-input-->
-                  <el-select id="fruits" name="fruits" v-model="state.filter.lastTestState">
+                  <!--<el-select id="fruits" name="fruits" v-model="state.filter.lastTestState">
                     <el-option value="-1" >所有</el-option>
                     <el-option value="0">未测试</el-option>
                     <el-option value="1">成功</el-option>
                     <el-option value="2">失败</el-option>
+                  </el-select>-->
+                  <el-select v-model="state.filter.lastTestState" placeholder="">
+                    <el-option v-for="(value, key) in PCBATestState" :key="key" :label="value[1].name"
+                      :value="Number(value[1].value)" />
                   </el-select>
                 </el-form-item>
               </el-col>
@@ -72,8 +85,40 @@
       <el-col  :xs="24" >
         <el-card style="height: 70vh" class="my-fill mt8" shadow="hover">
 <el-table v-loading="state.loading" stripe :data="state.tableModel" row-key="id" style="width: 100%">
-        <el-table-column v-for="column in state.dynamicColumns" :key="column.prop" :prop="column.prop" :label="column.label"  >
+<!--        <el-table-column v-for="column in state.dynamicColumns" :key="column.prop" :prop="column.prop" :label="column.label"  >
         </el-table-column>
+-->
+        <el-table-column prop="serno" label="序列号" />
+        <el-table-column prop="exserno" label="外部序列号" />
+            <el-table-column prop="boardType" label="主板类型">
+              <template #default="{ row }">
+                <div :style="{ color: getPCBABoardType(row.boardType).color }" class="bold-font">
+                  {{ getPCBABoardType(row.boardType).name }}
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="createTime" label="创建时间" />
+            <el-table-column prop="lastTestTime" label="最近检测时间" />
+            <el-table-column prop="lastTestState" label="最新检测状态">
+              <template #default="{ row }">
+                <div :style="{ color: getPCBATestState(row.lastTestState).color }" class="bold-font">
+                  {{ getPCBATestState(row.lastTestState).name }}
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="lastTestUser" label="最新检测员" />
+            <el-table-column prop="onceTestPass" label="是否一次通过" >
+            <template #default="{ row }">
+            <el-text  v-if="row.onceTestPass">是</el-text>
+            <el-text  v-else>否</el-text>
+            </template>
+            </el-table-column>
+            <el-table-column prop="testTimes" label="测试次数" />
+            <el-table-column prop="successTimes" label="测试成功次数" />
+            <el-table-column prop="functionNum" label="功能项数" />
+            <el-table-column prop="functionSuccessNum" label="功能项成功数" />
+            <el-table-column prop="info" label="备注" />
+
 </el-table>
 <div class="my-flex my-flex-end" style="margin-top: 20px">
             <el-pagination
@@ -94,11 +139,37 @@
     </div>
   </template>
   <script setup lang="ts">
-  import {onBeforeMount, onMounted, reactive, watch} from "vue";
+  import {onBeforeMount, onMounted, reactive, watch, ref} from "vue";
   import eventBus from "/@/utils/mitt";
 import { BoardListApi } from '/@/api/admin/PCBA/boardListApi'
 import { BoardListDto } from '/@/api/admin/PCBA/boardListDto'
 import type { pageInput } from "/@/api/admin/shareDto/shareDto";
+import { useGlobalCacheStore } from "/@/stores/globalCacheStore";
+
+
+/**获取全局缓存*/
+const globalCacheStore = useGlobalCacheStore()
+/**数据字典缓存*/
+const PCBATestState = ref(globalCacheStore.getGlobalStore().get('pcbaTestState'))
+const PCBABoardType = ref(globalCacheStore.getGlobalStore().get('pcbaBoardType'))
+
+const getPCBATestState = (val) => {
+  val = String(val)
+  if(PCBATestState.value?.has(val)){
+    return PCBATestState.value.get(val)
+  }else {
+    return val
+  }
+}
+
+const getPCBABoardType = (val) => {
+  val = String(val)
+  if(PCBABoardType.value?.has(val)){
+    return PCBABoardType.value.get(val)
+  }else {
+    return val
+  }
+}
 
 /**数据对象*/
   const state = reactive({
@@ -108,6 +179,8 @@ import type { pageInput } from "/@/api/admin/shareDto/shareDto";
       filter: {
 /**序列号 */
         serno: "",
+/**外部序列号 */
+        exserno: "",
 
 /**boardType */
         boardType: -1,

+ 105 - 15
admin.ui.plus-master/src/views/admin/PCBA/boardSummary/index.vue

@@ -8,8 +8,11 @@
 <el-form :model="state.filter" :inline="true" @submit.stop.prevent>
             <el-form-item prop="name" style="width: 100%">
 <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
-                <el-form-item label="主板类型">
-                  <el-input v-model="state.filter.boardType" placeholder="单行输入" clearable></el-input>
+  <el-form-item label="主板类型">
+                  <el-select v-model="state.filter.boardType" placeholder="">
+                    <el-option v-for="(value, key) in PCBABoardType" :key="key" :label="value[1].name"
+                      :value="Number(value[1].value)" />
+                  </el-select>
                 </el-form-item>
               </el-col>
 <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
@@ -45,26 +48,104 @@
           </el-form>
 <div class="my-flex my-flex-start" >
 <el-button  type="primary" icon="ele-CirclePlus" @click="onQuery"> 查询 </el-button>
+<!--<el-button  type="primary" icon="ele-CirclePlus" @click="onExport"> 导出 </el-button>
+<el-button  type="primary" icon="ele-CirclePlus" @click="onBatExport"> 批量导出 </el-button>-->
 </div>
 </el-card>
       </el-col>
 <!--表格-->
       <el-col  :xs="24" >
         <el-card style="height: 70vh" class="my-fill mt8" shadow="hover">
+
 <el-table v-loading="state.loading" stripe :data="state.tableModel" row-key="id" style="width: 100%">
-        <el-table-column v-for="column in state.dynamicColumns" :key="column.prop" :prop="column.prop" :label="column.label"  >
-        </el-table-column>
+        <!--<el-table-column v-for="column in state.dynamicColumns" :key="column.prop" :prop="column.prop" :label="column.label"  >
+        </el-table-column>-->
+
+
+
+        <el-table-column prop="boardType" label="主板类型">
+              <template #default="{ row }">
+                <div :style="{ color: getPCBABoardType(row.boardType).color }" class="bold-font">
+                  {{ getPCBABoardType(row.boardType).name }}
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="boardNum" label="主板数量" />
+            <el-table-column prop="boardSuccessNum" label="测试通过数量" />
+            <el-table-column prop="boardOneTestSuccessNum" label="一次通过数量" />
+            <el-table-column prop="boardTestTimes" label="测试次数" />
+            <el-table-column prop="boardSuccessTimes" label="测试成功次数" />
+            <el-table-column prop="boardSuccessRate" label="测试通过率" >
+            <template #default="{ row }">
+                <div> {{row.boardSuccessRate }}%</div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="boardOneTestSuccessRate" label="测试一次通过率" >
+            <template #default="{ row }">
+                <div> {{row.boardOneTestSuccessRate }}%</div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="boardTestSuccessRate" label="测试成功率" >
+            <template #default="{ row }">
+                <div> {{row.boardTestSuccessRate }}%</div>
+              </template>
+            </el-table-column>
 </el-table>
+
+<!--
+<div class="my-flex my-flex-end" style="margin-top: 20px">
+            <el-pagination
+              v-model:currentPage="state.pageInput.CurrentPage"
+              v-model:page-size="state.pageInput.PageSize"
+              :total="state.total"
+              :page-sizes="[10, 20, 50, 100]"
+              small
+              background
+              @size-change="onSizeChange"
+              @current-change="onCurrentChange"
+              layout="total, sizes, prev, pager, next, jumper"
+            />
+          </div>
+-->
+
 </el-card>
       </el-col>
 </el-row>
     </div>
   </template>
   <script setup lang="ts">
-  import {onBeforeMount, onMounted, reactive, watch} from "vue";
+  import {onBeforeMount, onMounted, reactive, watch,ref} from "vue";
   import eventBus from "/@/utils/mitt";
 import { BoardSummaryApi } from '/@/api/admin/PCBA/boardSummaryApi'
 import { BoardSummaryOutput } from '/@/api/admin/PCBA/boardSummaryDto'
+import type { pageInput } from "/@/api/admin/shareDto/shareDto";
+import { useGlobalCacheStore } from "/@/stores/globalCacheStore";
+
+
+/**获取全局缓存*/
+const globalCacheStore = useGlobalCacheStore()
+/**数据字典缓存*/
+const PCBATestState = ref(globalCacheStore.getGlobalStore().get('pcbaTestState'))
+const PCBABoardType = ref(globalCacheStore.getGlobalStore().get('pcbaBoardType'))
+
+const getPCBATestState = (val) => {
+  val = String(val)
+  if(PCBATestState.value?.has(val)){
+    return PCBATestState.value.get(val)
+  }else {
+    return val
+  }
+}
+
+const getPCBABoardType = (val) => {
+  val = String(val)
+  if(PCBABoardType.value?.has(val)){
+    return PCBABoardType.value.get(val)
+  }else {
+    return val
+  }
+}
+
 
 /**数据对象*/
 const state = reactive({
@@ -84,15 +165,16 @@ const state = reactive({
 tableModel: [] as BoardSummaryOutput,
     /**动态表头 */
     dynamicColumns: [
-{ prop: 'boardNum', label: '主板数量' },
-{ prop: 'boardSuccessNum', label: '主板测试通过数量' },
-{ prop: 'boardOneTestSuccessNum', label: '主板测试一次性通过数量' },
-{ prop: 'boardFunctionTestTimes', label: '主板功能测试次数' },
-{ prop: 'boardFunctionSuccessTimes', label: '主板功能测试成功次数' },
-{ prop: 'boardSuccessRate', label: '主板测试通过率,单位:%' },
-{ prop: 'boardOneTestSuccessRate', label: '主板测试一次性通过率,单位:%' },
-{ prop: 'boardFunctionSuccessRate', label: '主板功能测试成功率,单位:%' }]
+    ],
+/**分页标识 */
+    pageInput:{
+      CurrentPage: 1,
+      PageSize: 10,
+    } as pageInput,
+    /**分页总数 */
+    total: 0,
 })
+
   onMounted(() => {
     init()
     eventBus.off('refreshView')
@@ -117,14 +199,22 @@ tableModel: [] as BoardSummaryOutput,
         /**初始化 */
         const init = async () => {
           state.loading = true
-const res:any = await new BoardSummaryApi().getList({...state.filter})
 
+          const res:any = await new BoardSummaryApi().getList({...state.pageInput, Filter:state.filter})
+            state.total = res?.data?.total ?? 0
 
+          state.tableModel = res?.data?.list ?? []
+
+
+        /*
+const res:any = await new BoardSummaryApi().getList({...state.filter})
 const array = [res.data] as BoardSummaryOutput;
 state.tableModel = array
-
+*/
           state.loading = false
         }
+/**导出 */
+        const onExport=()=>{}
 </script>
 <style scoped lang="scss">
   </style>

+ 134 - 13
admin.ui.plus-master/src/views/admin/PCBA/boardTestRecord/index.vue

@@ -13,18 +13,41 @@
                 </el-form-item>
               </el-col>
 <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
-                <el-form-item label="主板类型">
-                  <el-input v-model="state.filter.boardType" placeholder="单行输入" clearable></el-input>
+                <el-form-item label="外部序列号">
+                  <el-input v-model="state.filter.exserno" placeholder="单行输入" clearable></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
+  <el-form-item label="主板类型">
+                  <el-select v-model="state.filter.boardType" placeholder="">
+                    <el-option v-for="(value, key) in PCBABoardType" :key="key" :label="value[1].name"
+                      :value="Number(value[1].value)" />
+                  </el-select>
                 </el-form-item>
               </el-col>
 <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
                 <el-form-item label="功能码">
-                  <el-input v-model="state.filter.functionCode" placeholder="单行输入" clearable></el-input>
+                    <el-select  v-model="state.filter.functionCode" default-first-option="true" filterable allow-create 
+                      value-key="code"
+                      @blur="codeblur()"
+                      title='可直接输入具体功能码'
+                      ref="codeSel">
+                    <el-option v-for="item in options" :key="item.key" :label="item.name"
+                      :value="Number(item.value)" >
+
+                    </el-option>
+                    <!--<el-option  key = "-1" label="所有" value=-1>所有</el-option>-->
+                    
+                  </el-select>
                 </el-form-item>
+                
               </el-col>
 <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
                 <el-form-item label="检测类型">
-                  <el-input v-model="state.filter.testType" placeholder="单行输入" clearable></el-input>
+                  <el-select v-model="state.filter.testType" placeholder="">
+                    <el-option v-for="(value, key) in PCBATestType" :key="key" :label="value[1].name"
+                      :value="Number(value[1].value)" />
+                  </el-select>
                 </el-form-item>
               </el-col>
 <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
@@ -52,12 +75,10 @@
                 </el-form-item>
               </el-col>
 <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
-                <el-form-item label="测试结果">
-                  <el-select id="fruits" name="fruits" v-model="state.filter.result">
-                    <el-option value="-1" >所有</el-option>
-                    <el-option value="0">未测试</el-option>
-                    <el-option value="1">成功</el-option>
-                    <el-option value="2">失败</el-option>
+  <el-form-item label="测试结果">
+                  <el-select v-model="state.filter.result" placeholder="">
+                    <el-option v-for="(value, key) in PCBATestState" :key="key" :label="value[1].name"
+                      :value="Number(value[1].value)" />
                   </el-select>
                 </el-form-item>
               </el-col>
@@ -77,8 +98,41 @@
       <el-col  :xs="24" >
         <el-card style="height: 70vh" class="my-fill mt8" shadow="hover">
 <el-table v-loading="state.loading" stripe :data="state.tableModel" row-key="id" style="width: 100%">
-        <el-table-column v-for="column in state.dynamicColumns" :key="column.prop" :prop="column.prop" :label="column.label"  >
-        </el-table-column>
+        <!--<el-table-column v-for="column in state.dynamicColumns" :key="column.prop" :prop="column.prop" :label="column.label"  >
+        </el-table-column>-->
+
+ 
+
+        <el-table-column prop="serno" label="序列号" />
+        <el-table-column prop="exserno" label="外部序列号" />
+            <el-table-column prop="boardType" label="主板类型">
+              <template #default="{ row }">
+                <div :style="{ color: getPCBABoardType(row.boardType).color }" class="bold-font">
+                  {{ getPCBABoardType(row.boardType).name }}
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="functionCode" label="功能码" />
+            <el-table-column prop="functionName" label="功能名称" />
+            <el-table-column prop="testType" label="检测类型" >
+              <template #default="{ row }">
+                <div :style="{ color: getPCBATestType(row.testType).color }" class="bold-font">
+                  {{ getPCBATestType(row.testType).name }}
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="time" label="测试时间" />
+            <el-table-column prop="result" label="测试结果">
+              <template #default="{ row }">
+                <div :style="{ color: getPCBATestState(row.result).color }" class="bold-font">
+                  {{ getPCBATestState(row.result).name }}
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="testNum" label="测试功能数" />
+            <el-table-column prop="testSuccessNum" label="测试成功功能数" />
+            <el-table-column prop="user" label="测试员" />
+            <el-table-column prop="info" label="备注" />
 </el-table>
 <div class="my-flex my-flex-end" style="margin-top: 20px">
             <el-pagination
@@ -99,11 +153,76 @@
     </div>
   </template>
   <script setup lang="ts">
-  import {onBeforeMount, onMounted, reactive, watch} from "vue";
+  import {onBeforeMount, onMounted, reactive, watch,ref} from "vue";
   import eventBus from "/@/utils/mitt";
 import { BoardTestRecordApi } from '/@/api/admin/PCBA/boardTestRecordApi'
 import { BoardTestRecordDto } from '/@/api/admin/PCBA/boardTestRecordDto'
 import type { pageInput } from "/@/api/admin/shareDto/shareDto";
+import { useGlobalCacheStore } from "/@/stores/globalCacheStore";
+import { getCurrentInstance } from 'vue';
+const { proxy: ctx } = getCurrentInstance();
+
+/**获取全局缓存*/
+const globalCacheStore = useGlobalCacheStore()
+/**数据字典缓存*/
+const PCBATestState = ref(globalCacheStore.getGlobalStore().get('pcbaTestState'))
+const PCBABoardType = ref(globalCacheStore.getGlobalStore().get('pcbaBoardType'))
+const PCBATestType = ref(globalCacheStore.getGlobalStore().get('pcbaTestType'))
+
+const getPCBATestState = (val) => {
+  val = String(val)
+  if(PCBATestState.value?.has(val)){
+    return PCBATestState.value.get(val)
+  }else {
+    return val
+  }
+}
+
+const getPCBABoardType = (val) => {
+  val = String(val)
+  if(PCBABoardType.value?.has(val)){
+    return PCBABoardType.value.get(val)
+  }else {
+    return val
+  }
+}
+
+const getPCBATestType = (val) => {
+  val = String(val)
+  if(PCBATestType.value?.has(val)){
+    return PCBATestType.value.get(val)
+  }else {
+    return val
+  }
+}
+
+
+
+const  codeblur = ()=>{
+
+  let value = ctx.$refs.codeSel.selectedLabel
+
+  if(value == '所有'  || value == '')
+  {
+    value = -1
+
+   // ctx.$refs.codeSel.selectedValue = -1 
+
+   // return
+  }
+
+  state.filter.functionCode = value
+  
+}
+  
+const options= [{
+        value: -1,
+        name: '所有',
+        key:"-1",
+        info:"可直接输入具体功能码"
+      }
+    ]
+
 /**数据对象*/
   const state = reactive({
     /**加载显示 */
@@ -112,6 +231,8 @@ import type { pageInput } from "/@/api/admin/shareDto/shareDto";
       filter: {
 /**serno */
         serno: "",
+/**exserno */
+exserno: "",        
 /**boardType */
         boardType: -1,
 /**functionCode */

+ 2 - 0
admin.ui.plus-master/src/views/admin/product/record/index.vue

@@ -206,6 +206,8 @@ const bomModel = reactive({
 /**部件电子档案 - 列表状态 */
 const getComponentStatusType = (val) => {
   val = String(val)
+
+  
   if (componentStatusType.value?.has(val)) {
     return componentStatusType.value.get(val)
   } else {