Prechádzať zdrojové kódy

feat:imes_cloud前端页面优化

huang, kai (Contractor) 1 mesiac pred
rodič
commit
6f987073ce

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

@@ -5,6 +5,8 @@ import router from '/@/router'
 import { directive } from '/@/directive/index'
 import { i18n } from '/@/i18n/index'
 import other from '/@/utils/other'
+import { usePersonalStore } from './stores/personalStore'; // 引入个人中心相关的Store
+import { UserApi } from '/@/api/admin/User'; // 引入获取个人数据的API
 
 import ElementPlus from 'element-plus'
 import '/@/theme/index.scss'
@@ -32,4 +34,5 @@ directive(app)
 other.elSvg(app)
 
 app.use(pinia).use(router).use(ElementPlus).use(i18n).use(VueGridLayout).use(DataVVue3)
-.use(globalProperties).mount('#app')
+.use(globalProperties).mount('#app').use(pinia);
+

+ 15 - 0
admin.ui.plus-master/src/stores/personalStore.ts

@@ -0,0 +1,15 @@
+import { defineStore } from 'pinia';
+
+export const usePersonalStore = defineStore('personal', {
+  state: () => ({
+    personalFormNickName: ''
+  }),
+  getters: {
+    // 可以添加计算属性
+  },
+  actions: {
+    setPersonalFormNickName(nickName: string) {
+      this.personalFormNickName = nickName;
+    }
+  }
+});

+ 123 - 128
admin.ui.plus-master/src/views/admin/PCBA/boardList/index.vue

@@ -1,81 +1,66 @@
-
 <template>
   <div class="layout-pd">
     <el-row>
-<!--操作-->
-      <el-col :xs="24" >
-        <el-card class="mt8"  shadow="hover" >
-<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-col :xs="24">
+        <el-card class="mt8" shadow="hover">
+          <el-form :model="state.filter" :inline="true" @submit.stop.prevent>
+            <el-form-item prop="name" style="width: 100%;height: 15vh" >
+              <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
                 <el-form-item label="序列号">
                   <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-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>
               </el-col>
-<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
-            <el-form-item label="开始创建时间">
+              <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
+                <el-form-item label="创建时间范围">
                   <el-date-picker
-                    v-model="state.filter.beginCreateTime"
-                    type="datetime"
+                    v-model="state.filter.createTimeRange"
+                    type="daterange"
                     value-format="YYYY-MM-DD HH:mm:ss"
                     range-separator="To"
-                    start-placeholder="Start date"
-                    end-placeholder="End date"
+                    start-placeholder="开始日期"
+                    end-placeholder="结束日期"
                   />
                 </el-form-item>
               </el-col>
-<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
-            <el-form-item label="结束创建时间">
-                  <el-date-picker
-                    v-model="state.filter.endCreateTime"
-                    type="datetime"
-                    value-format="YYYY-MM-DD HH:mm:ss"
-                    range-separator="To"
-                    start-placeholder="Start date"
-                    end-placeholder="End date"
-                  />
-                </el-form-item>
-              </el-col>
-
-
-
-<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
+              <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-option value="-1" >所有</el-option>
+                    <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-form-item>
               </el-col>
-<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
+              <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
                 <el-form-item label="最新检测员">
                   <el-input v-model="state.filter.lastTestUser" placeholder="单行输入" clearable></el-input>
                 </el-form-item>
               </el-col>
-</el-form-item>
+              <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20 my-flex my-flex-start">
+              <span  style="margin-top: -35px"> <el-button type="primary" icon="ele-CirclePlus" @click="onQuery"> 查询 </el-button></span> 
+              </el-col>
+            </el-form-item>
           </el-form>
-<div class="my-flex my-flex-start" >
-<el-button  type="primary" icon="ele-CirclePlus" @click="onQuery"> 查询 </el-button>
-</div>
-</el-card>
+
+           
+
+        </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>
-<div class="my-flex my-flex-end" style="margin-top: 20px">
+      <!--表格-->
+      <el-col :xs="24">
+        <el-card style="height: 50vh" 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>
+          <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"
@@ -88,78 +73,76 @@
               layout="total, sizes, prev, pager, next, jumper"
             />
           </div>
-</el-card>
+        </el-card>
       </el-col>
-</el-row>
-    </div>
-  </template>
-  <script setup lang="ts">
-  import {onBeforeMount, onMounted, reactive, watch} from "vue";
-  import eventBus from "/@/utils/mitt";
-import { BoardListApi } from '/@/api/admin/PCBA/boardListApi'
-import { BoardListDto } from '/@/api/admin/PCBA/boardListDto'
+    </el-row>
+  </div>
+</template>
+<script setup lang="ts">
+import { onBeforeMount, onMounted, reactive, watch } 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";
 
 /**数据对象*/
-  const state = reactive({
-    /**加载显示 */
-    loading: false,
-    /**条件查询模块 */
-      filter: {
-/**序列号 */
-        serno: "",
-
-/**boardType */
-        boardType: -1,
-/**起始创建时间 */
-        beginCreateTime: "",
-/**结束创建时间 */
-        endCreateTime: "",
-/**lastTestState */
-        lastTestState: -1,
-/**最新检测员 */
-        lastTestUser: "",},
-
-        testState_text:"所有",
+const state = reactive({
+  /**加载显示 */
+  loading: false,
+  /**条件查询模块 */
+  filter: {
+    /**序列号 */
+    serno: "",
+    /**boardType */
+    boardType: -1,
+    /**创建时间范围 */
+    createTimeRange: [],
+    /**lastTestState */
+    lastTestState: -1,
+    /**最新检测员 */
+    lastTestUser: "",
+  },
+  testState_text: "所有",
   /**表格信息 */
-tableModel: [] as BoardListDto,
-    /**动态表头 */
-    dynamicColumns: [
-{ prop: 'serno', label: '序列号' },
-{ prop: 'boardType', label: '主板类型' },
-{ prop: 'boardName', label: '主板名称' },
-{ prop: 'createTime', label: '创建时间' },
-{ prop: 'lastTestTime', label: '最近检测时间' },
-{ prop: 'lastTestState', label: '最新检测状态' },
-{ prop: 'lastTestUser', label: '最新检测员' },
-{ prop: 'onceTestPass', label: '是否一次通过' },
-{ prop: 'testTimes', label: '测试次数' },
-{ prop: 'successTimes', label: '测试成功次数' },
-{ prop: 'functionNum', label: '功能项数' },
-{ prop: 'functionSuccessNum', label: '功能项成功数' },
-{ prop: 'duration', label: '测试总耗时' },
-{ prop: 'info', label: '备注' },],
-/**分页标识 */
-    pageInput:{
-      CurrentPage: 1,
-      PageSize: 10,
-    } as pageInput,
-    /**分页总数 */
-    total: 0,
-})
-  onMounted(() => {
-    init()
-    eventBus.off('refreshView')
-    eventBus.on('refreshView', async () => {
-      await init()
-    })
-  })
-  onBeforeMount(() => {
-    eventBus.off('refreshView')
+  tableModel: [] as BoardListDto,
+  /**动态表头 */
+  dynamicColumns: [
+    { prop: 'serno', label: '序列号' },
+    { prop: 'boardType', label: '主板类型' },
+    { prop: 'boardName', label: '主板名称' },
+    { prop: 'createTime', label: '创建时间' },
+    { prop: 'lastTestTime', label: '最近检测时间' },
+    { prop: 'lastTestState', label: '最新检测状态' },
+    { prop: 'lastTestUser', label: '最新检测员' },
+    { prop: 'onceTestPass', label: '是否一次通过' },
+    { prop: 'testTimes', label: '测试次数' },
+    { prop:'successTimes', label: '测试成功次数' },
+    { prop: 'functionNum', label: '功能项数' },
+    { prop: 'functionSuccessNum', label: '功能项成功数' },
+    { prop: 'duration', label: '测试总耗时' },
+    { prop: 'info', label: '备注' },
+  ],
+  /**分页标识 */
+  pageInput: {
+    CurrentPage: 1,
+    PageSize: 10,
+  } as pageInput,
+  /**分页总数 */
+  total: 0,
+});
+
+onMounted(() => {
+  init()
+  eventBus.off('refreshView')
+  eventBus.on('refreshView', async () => {
+    await init()
   })
-  
+})
+onBeforeMount(() => {
+  eventBus.off('refreshView')
+})
 
-    /**页条数变化*/
+/**页条数变化*/
 const onSizeChange = () => {
   init()
 }
@@ -169,23 +152,35 @@ const onCurrentChange = () => {
   init()
 }
 
+/**
+ * 监听变换
+ */
+watch(() => {}, () => {})
 
-  /**
-  * 监听变换
-  */
-  watch(() => {},() => {})
 /**条件查询 */
-          const onQuery = () => {
-          init()
-        }
-        /**初始化 */
-        const init = async () => {
-          state.loading = true
-const res:any = await new BoardListApi().getList({...state.pageInput, Filter:state.filter})
-            state.total = res?.data?.total ?? 0
-state.tableModel = res?.data?.list ?? []
-          state.loading = false
-        }
+const onQuery = () => {
+  init()
+}
+
+/**初始化 */
+const init = async () => {
+  state.loading = true;
+  // 处理时间范围,将数组中的开始和结束时间分别赋值给API需要的字段
+  const { createTimeRange, ...filterWithoutTimeRange } = state.filter;
+  const beginCreateTime = createTimeRange.length > 0? createTimeRange[0] : "";
+  const endCreateTime = createTimeRange.length > 1? createTimeRange[1] : "";
+  const res: any = await new BoardListApi().getList({
+   ...state.pageInput,
+    Filter: {
+     ...filterWithoutTimeRange,
+      beginCreateTime,
+      endCreateTime,
+    },
+  });
+  state.total = res?.data?.total?? 0;
+  state.tableModel = res?.data?.list?? [];
+  state.loading = false;
+}
 </script>
 <style scoped lang="scss">
-  </style>
+</style>    

+ 1 - 1
admin.ui.plus-master/src/views/admin/authorize/fuelingFTP/index.vue

@@ -56,7 +56,7 @@
       </el-col>
       <!--表格-->
       <el-col :xs="24">
-        <el-card style="height: 70vh" class="my-fill mt8" shadow="hover">
+        <el-card style="height: 65vh" class="my-fill mt8" shadow="hover">
           <el-table ref="multipleTableRef" v-loading="state.loading" stripe :data="state.tableModel" row-key="id"
             style="width: 100%">
             <el-table-column type="index" label="记录" width="60" />

+ 1 - 1
admin.ui.plus-master/src/views/admin/authorize/fuelingFTPofDate/index.vue

@@ -62,7 +62,7 @@
       </el-col>
       <!--表格-->
       <el-col :xs="24">
-        <el-card style="height: 65vh" class="my-fill mt8" shadow="hover">
+        <el-card style="height: 60vh" class="my-fill mt8" shadow="hover">
           <el-table ref="multipleTableRef" v-loading="state.loading" stripe :data="state.tableModel" row-key="id"
             style="width: 100%">
             <el-table-column type="index" label="记录" width="60" />

+ 13 - 2
admin.ui.plus-master/src/views/admin/authorize/softwarePackageManagement/index.vue

@@ -9,6 +9,7 @@
               <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
                 <el-form-item label="软件类型">
                   <el-select v-model="softwareData.Filter.softwareType" placeholder="请选择软件类型" style="width: 200px;">
+                    <el-option label="所有" :value="''"></el-option>
                     <el-option v-for="(value, key) in softwareType" :key="key" :label="value[1].name"
                       :value="Number(value[1].value)" />
                   </el-select>
@@ -27,6 +28,7 @@
               <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
                 <el-form-item label="设备类型">
                   <el-select v-model="softwareData.Filter.equipmentType" placeholder="请选择设备类型" style="width: 200px;">
+                    <el-option label="所有" :value="''"></el-option>
                     <el-option v-for="(value, key) in equipmentType" :key="key" :label="value[1].name"
                       :value="Number(value[1].value)" />
                   </el-select>
@@ -35,9 +37,18 @@
               <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
                 <el-form-item label="选择时间">
                   <el-date-picker v-model="softwareData.time" type="datetimerange" value-format="YYYY-MM-DD HH:mm:ss"
-                    range-separator="To" start-placeholder="Start date" end-placeholder="End date" />
+                    range-separator="To" start-placeholder="开始日期" end-placeholder="结束日期" />
                 </el-form-item>
               </el-col>
+              <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
+                              <el-form-item label="状态">
+                                  <el-select  placeholder="请选择上传状态">
+                                   <el-option label="已发布" :value="''"></el-option>
+                                   <el-option label="待发布" :value="''"></el-option>
+                                   <el-option label="失效" :value="''"></el-option>
+                                 </el-select>
+                             </el-form-item>
+                           </el-col>
             </el-form-item>
           </el-form>
 
@@ -57,7 +68,7 @@
       </el-col>
       <!--表格-->
       <el-col :xs="24">
-        <el-card style="height: 70vh" class="my-fill mt8" shadow="hover">
+        <el-card style="height: 65vh" class="my-fill mt8" shadow="hover">
           <el-table v-loading="softwareData.loading" stripe :data="softwareData.tableModel" row-key="id"
             style="width: 100%">
             <el-table-column v-for="column in softwareData.dynamicColumns" :key="column.prop" :prop="column.prop"

+ 19 - 1
admin.ui.plus-master/src/views/admin/personal/index.vue

@@ -136,8 +136,9 @@
 </template>
 
 <script setup lang="ts" name="personal">
-import { reactive, computed, onMounted, toRefs, ref, getCurrentInstance, defineAsyncComponent } from 'vue'
+import { reactive, computed, onMounted, toRefs, ref, getCurrentInstance, defineAsyncComponent, provide, watch } from 'vue'
 import { formatAxis } from '/@/utils/formatTime'
+import { usePersonalStore } from '/@/stores/personalStore'; // 引入新的 Store
 import { UserApi } from '/@/api/admin/User'
 import { UserGetBasicOutput } from '/@/api/admin/data-contracts'
 import { useUserInfo } from '/@/stores/userInfo'
@@ -177,6 +178,16 @@ const state = reactive({
 
 const { personalInfo, personalForm } = toRefs(state)
 
+const personalStore = usePersonalStore();
+
+// 使用 ref 包装数据,使其具有响应式
+const personalFormNickNameRef = ref(personalForm.nickName);
+provide('personalFormNickName', personalFormNickNameRef);
+
+// 当 personalForm.nickName 变化时,更新 ref 的值
+watch(personalForm.nickName, (newValue) => {
+  personalFormNickNameRef.value = newValue;
+});
 // 当前时间提示语
 const currentTime = computed(() => {
   return formatAxis(new Date())
@@ -211,10 +222,16 @@ const initData = async () => {
     state.personalForm.name = res.data?.name as string
     state.personalForm.nickName = res.data?.nickName as string
     state.personalInfo = res.data as UserGetBasicOutput
+    // 确保数据加载完成后更新 ref 的值
+    personalFormNickNameRef.value = state.personalForm.nickName;
+    personalStore.setPersonalFormNickName(state.personalForm.nickName);
   }
   state.loading = false
 }
 
+console.log(personalForm.nickName);
+
+
 // 上传头像成功
 const onAvatarSuccess = (res: AxiosResponse) => {
   state.avatarLoading = false
@@ -257,6 +274,7 @@ const onUpdateBasic = async () => {
       state.personalInfo.nickName = state.personalForm.nickName
       state.personalInfo.name = state.personalForm.name
       storesUserInfo.setUserName(state.personalForm.nickName || state.personalForm.name)
+      personalStore.setPersonalFormNickName(state.personalForm.nickName); // 更新 Store 中的值
     }
   })
 }

+ 1 - 111
admin.ui.plus-master/src/views/admin/product/goodInfo/index.vue

@@ -8,30 +8,10 @@
           <div class="basicInformation" v-loading="goods.loadingBasic">
             <div class="basicInformation-left">
               <div class="item ">
-                <el-popover
-                  placement="top-start"
-                  :width="200"
-                  title="物料名称"
-                  trigger="hover"
-                  :content="goods.basicInformation.bomName"
-                >
-                  <template #reference>
                     <span class="m-2"> 物料名称: {{goods.basicInformation.bomName}}</span>
-                  </template>
-                </el-popover>
               </div>
               <div class="item">
-                <el-popover
-                  placement="top-start"
-                  :width="200"
-                  title="物料号"
-                  trigger="hover"
-                  :content="goods.basicInformation.bomNo"
-                >
-                  <template #reference>
                     <span class="m-2"> 物料号: {{goods.basicInformation.bomNo}}</span>
-                  </template>
-                </el-popover>
               </div>
               <!-- <div class="item">
                 <el-popover
@@ -47,136 +27,46 @@
                 </el-popover>
               </div> -->
               <div class="item">
-                <el-popover
-                  placement="top-start"
-                  :width="200"
-                  title="条码"
-                  trigger="hover"
-                  :content="goods.basicInformation.barCode"
-                >
-                  <template #reference>
                     <span class="m-2"> 条码: {{goods.basicInformation.barCode}}</span>
-                  </template>
-                </el-popover>
               </div>
               <div class="item">
-                <el-popover
-                  placement="top-start"
-                  :width="200"
-                  title="软件版本"
-                  trigger="hover"
-                  :content="goods.basicInformation.software_v"
-                >
-                  <template #reference>
                     <span class="m-2"> 软件版本: {{goods.basicInformation.software_v}}</span>
-                  </template>
-                </el-popover>
               </div>
               <div class="item">
-                <el-popover
-                  placement="top-start"
-                  :width="200"
-                  title="状态"
-                  trigger="hover"
-                  :content="goods.basicInformation.status"
-                >
-                  <template #reference>
                     <span class="m-2 ">
                       状态:
                       <span class="bold-font" :style="{color:getComponentStatusType(goods.basicInformation.status).color}">
                         {{getComponentStatusType(goods.basicInformation.status).name}}
                       </span>
                     </span>
-                  </template>
-                </el-popover>
               </div>
               <div class="item">
-                <el-popover
-                  placement="top-start"
-                  :width="200"
-                  title="中化密钥"
-                  trigger="hover"
-                  :content="goods.basicInformation.key_name"
-                >
-                  <template #reference>
                     <span class="m-2">
                       密钥状态:
                       <span class="bold-font" :style="{color:getComponentStatus(goods.basicInformation.key_name).color}">
                         {{getComponentStatus(goods.basicInformation.key_name).name }}
                       </span>
                     </span>
-                  </template>
-                </el-popover>
               </div>
               <div class="item">
-                <el-popover
-                  placement="top-start"
-                  :width="200"
-                  title="团标状态"
-                  trigger="hover"
-                  :content="goods.basicInformation.stand_name"
-                >
-                  <template #reference>
                     <span class="m-2 ">
-                      标状态:
+                      国标状态:
                       <span class="bold-font" :style="{color:getComponentStatus(goods.basicInformation.stand_name).color}">
                         {{getComponentStatus(goods.basicInformation.stand_name).name }}
                       </span>
                     </span>
-                  </template>
-                </el-popover>
               </div>
               <div class="item">
-                <el-popover
-                  placement="top-start"
-                  :width="200"
-                  title="创建时间"
-                  trigger="hover"
-                  :content="goods.basicInformation.createTime"
-                >
-                  <template #reference>
                     <span class="m-2"> 创建时间: {{goods.basicInformation.createTime}}</span>
-                  </template>
-                </el-popover>
               </div>
               <div class="item">
-                <el-popover
-                  placement="top-start"
-                  :width="200"
-                  trigger="hover"
-                  title="备注"
-                  :content="goods.basicInformation.remark"
-                >
-                  <template #reference>
                     <span class="m-2"> 备注: {{goods.basicInformation.remark}}</span>
-                  </template>
-                </el-popover>
               </div>
               <div class="item">
-                <el-popover
-                  placement="top-start"
-                  :width="200"
-                  title="检测时间"
-                  trigger="hover"
-                  :content="goods.basicInformation.detectionTime"
-                >
-                  <template #reference>
                     <span class="m-2"> 检测时间: {{goods.basicInformation.detectionTime}}</span>
-                  </template>
-                </el-popover>
               </div>
               <div class="item">
-                <el-popover
-                  placement="top-start"
-                  :width="200"
-                  title="检测员"
-                  trigger="hover"
-                  :content="goods.basicInformation.detectionEmployee"
-                >
-                  <template #reference>
                     <span class="m-2"> 检测员: {{goods.basicInformation.detectionEmployee}}</span>
-                  </template>
-                </el-popover>
               </div>
               <div class="item">
               </div>

+ 13 - 4
admin.ui.plus-master/src/views/admin/product/groupLogo/index.vue

@@ -11,8 +11,9 @@
                 </el-form-item>
               </el-col>
               <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
-                <el-form-item label="标状态">
+                <el-form-item label="标状态">
                   <el-select v-model="groupLogoKeyOnQuery.filter.state" placeholder="请选择部件类型">
+                    <el-option label="所有" :value="''" ></el-option>
                     <el-option v-for="(value, key) in groupKeyGroupStatus" :key="key" :label="value[1].name"
                       :value="Number(value[1].value)" />
                   </el-select>
@@ -21,6 +22,7 @@
               <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
                 <el-form-item label="密钥类型">
                   <el-select v-model="groupLogoKeyOnQuery.filter.deviceType" placeholder="请选择部件类型">
+                    <el-option label="所有" :value="''"></el-option>
                     <el-option v-for="(value, key) in groupLogoKeyKeyType" :key="key" :label="value[1].name"
                       :value="value[1].value" />
                   </el-select>
@@ -46,7 +48,7 @@
 
         </el-card>
       </el-col>
-      <el-col :xs="24">
+      <el-col  style="max-height:40vh" :xs="24">
         <el-card class="mt8" shadow="hover">
           <el-table v-loading="state.loading" stripe :data="state.list" row-key="id" style="width: 100%">
             <el-table-column prop="keyGuid" label="GUID" />
@@ -100,6 +102,7 @@ const groupLogoKeyOnQuery = reactive({
     lastUpdate: '',
     applicationTime: '',
     recordTime: '',
+    state:''
   } as groupLogoKeyFilterModel,
 })
 
@@ -111,7 +114,7 @@ const state = reactive({
   list: [] as Array<groupLogoKeyFilterModel>,
   pageInput: {
     currentPage: 1,
-    pageSize: 10,
+    pageSize: 5,
   } as groupLogoKeyPageInput,
   total: 0
 })
@@ -166,7 +169,12 @@ const onCurrentChange = (val: number) => {
 
 const onQuery = async () => {
   state.loading = true
-  const { data } = await new GroupLogoKeyApi().getPage({ ...state.pageInput, filter: groupLogoKeyOnQuery.filter } as groupLogoKeyRequestBody).catch(() => state.loading = false)
+
+  const filterCopy = {...groupLogoKeyOnQuery.filter };
+  if (filterCopy.state === '' || filterCopy.state === null) {
+    delete filterCopy.state;
+  }
+  const { data } = await new GroupLogoKeyApi().getPage({ ...state.pageInput, filter: filterCopy } as groupLogoKeyRequestBody).catch(() => state.loading = false)
   state.list = data?.list ?? []
   state.total = data?.total ?? 0
   state.loading = false
@@ -184,6 +192,7 @@ const onReset = () => {
     lastUpdate: '',
     applicationTime: '',
     recordTime: '',
+    state:''
   }
   state.pageInput.currentPage = 1
   onQuery()

+ 23 - 2
admin.ui.plus-master/src/views/admin/product/qrBook/components/qrbook-edit.vue

@@ -15,7 +15,11 @@
             </el-col>
             <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
               <el-form-item label="上传人" prop="author">
-                <el-input v-model="formData.editData.author" placeholder="请输入上传人" clearable></el-input>
+                <!-- <el-input v-model="formData.editData.author" placeholder="请输入上传人" clearable></el-input> -->
+                
+                  <span v-if="injectedNickName">{{ injectedNickName }}</span>
+                  <span v-else>暂未获取到上传人昵称</span>
+              
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
@@ -44,12 +48,15 @@
   </template>
   
   <script setup lang="ts">
-  import {defineAsyncComponent, reactive, ref, watch} from "vue";
+  import {defineAsyncComponent, reactive, ref, watch, inject, computed} from "vue";
   import {FormRules} from "element-plus";
+  import { usePersonalStore } from "/@/stores/personalStore"; // 引入新的 Store
   import {useGlobalCacheStore} from "/@/stores/globalCacheStore";
   import { QRBookFileInfoRequset, QRBookTableInfo } from "/@/api/admin/productionManagement/QRBookDto";
   import { QRBookApi } from "/@/api/admin/productionManagement/qrBookApi";
   import eventBus from "/@/utils/mitt";
+  import {}from"@\views\admin\personal\index.vue"
+import { log } from "console";
   
   /** 引入组件 */
   const QRBookUpload = defineAsyncComponent(() => import('./qrbook-upload.vue'))
@@ -59,6 +66,20 @@
   /** 获取文件状态 */
   const statusType = ref(globalCacheStore.getGlobalStore().get('qrBookFileStatus'))
   
+  const personalStore = usePersonalStore();
+  // 使用computed确保数据变化时能及时更新
+  const injectedNickName = computed(() => personalStore.personalFormNickName);
+
+  // 可以添加watch用于调试,观察数据变化
+  watch(injectedNickName, (newValue) => {
+    console.log('上传人昵称已更新:', newValue);
+  });
+
+
+// 打印日志进行调试
+console.log('injectedNickName:', injectedNickName.value);
+
+
   /**数据对象 */
   const formData = reactive({
     loading: false,

+ 12 - 2
admin.ui.plus-master/src/views/admin/product/qrBook/index.vue

@@ -24,9 +24,19 @@
                                 <el-form-item label="选择时间">
                                     <el-date-picker v-model="qrBookData.time" type="datetimerange"
                                         value-format="YYYY-MM-DD HH:mm:ss" range-separator="To"
-                                        start-placeholder="Start date" end-placeholder="End date" />
+                                        start-placeholder="开始日期" end-placeholder="结束日期" />
                                 </el-form-item>
                             </el-col>
+
+                            <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
+                              <el-form-item label="状态">
+                                  <el-select  placeholder="请选择上传状态">
+                                   <el-option label="所有" :value="''"></el-option>
+                                   <el-option label="开启" :value="''"></el-option>
+                                   <el-option label="关闭" :value="''"></el-option>
+                                 </el-select>
+                             </el-form-item>
+                           </el-col>
                         </el-form-item>
                     </el-form>
 
@@ -48,7 +58,7 @@
 
             <!-- 表格 -->
             <el-col :xs="24">
-                <el-card style="height: 70vh;" class="my-fill mt8" shadow="hover">
+                <el-card style="height: 65vh;" class="my-fill mt8" shadow="hover">
                     <el-table v-loading="qrBookData.loading" stripe :data="qrBookData.tableModel" row-key="id"
                         style="width: 100%;">
                         <el-table-column v-for="column in qrBookData.dynamicColumns" :key="column.prop"

+ 11 - 5
admin.ui.plus-master/src/views/admin/product/record/index.vue

@@ -4,7 +4,7 @@
     <el-row>
       <!--操作-->
       <el-col :xs="24">
-        <el-card class="mt8" shadow="hover">
+        <el-card  class="mt8" shadow="hover">
           <el-form :model="bomModel.filterModel" @submit.stop.prevent>
             <el-form-item class="form_item" prop="name" style="width:100%">
               <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
@@ -25,6 +25,7 @@
               <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
                 <el-form-item label="部件类型">
                   <el-select v-model="bomModel.filterModel.bomType" placeholder="请选择部件类型">
+                    <el-option label="所有" :value="''"></el-option>
                     <el-option v-for="(value, key) in componentType" :key="key" :label="value[1].name"
                       :value="Number(value[1].value)" />
                   </el-select>
@@ -53,15 +54,15 @@
               <el-button type="primary" icon="ele-Search" @click="onQuery"> 查询 </el-button>
               <el-button type="primary" icon="ele-RefreshRight" @click="onReset"> 重置 </el-button>
             </el-row>
-            <el-button v-auth="'api:admin:file:upload-file'" type="primary" icon="ele-Upload" @click="onUpload"> 上传
-            </el-button>
+            <!-- <el-button v-auth="'api:admin:file:upload-file'" type="primary" icon="ele-Upload" @click="onUpload"> 上传
+            </el-button> -->
           </el-row>
 
         </el-card>
       </el-col>
       <!--表格-->
       <el-col :xs="24">
-        <el-card style="height: 70vh" class="my-fill mt8" shadow="hover">
+        <el-card style="height: 60vh" class="my-fill mt8" shadow="hover">
           <el-table v-loading="bomModel.loading" stripe :data="bomModel.bomListData" row-key="id" style="width: 100%">
             <el-table-column prop="guid" label="序号" />
             <el-table-column prop="manufacturer" label="厂商" />
@@ -84,7 +85,7 @@
                 </div>
               </template>
             </el-table-column> -->
-            <el-table-column prop="tqcKeyState" label="标状态">
+            <el-table-column prop="tqcKeyState" label="标状态">
               <template #default="{ row }">
                 <!-- <div :style="{color:getComponentStatus(row.key_name).color}" class="bold-font"> -->
                 <div :style="{ color: getColor(getComponentStatus(row.tqcKeyState).name) }" class="bold-font">
@@ -260,6 +261,11 @@ onMounted(async () => {
 const onQuery = async () => {
   bomModel.loading = true
   debugger
+    let filter = {...bomModel.filterModel };
+  if (!filter.bomType) {
+    // 如果bomType为空,即选择了“所有”,从过滤条件中删除该字段
+    delete filter.bomType; 
+  }
   const res = await new ComponentApi().getPage({ ...bomModel.pageInput, filter: bomModel.filterModel }).catch(() => {
     bomModel.loading = false
   })

+ 1 - 0
admin.ui.plus-master/src/views/admin/product/type/index.vue

@@ -20,6 +20,7 @@
               <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
                 <el-form-item label="部件类型">
                   <el-select v-model="state.filterModel.bomType" placeholder="请选择部件类型">
+                    <el-option label="所有" :value="''"></el-option>
                     <el-option v-for="(value, key) in componentType" :key="key" :label="value[1].name"
                       :value="Number(value[1].value)" />
                   </el-select>

+ 22 - 14
admin.ui.plus-master/src/views/admin/workbench/index.vue

@@ -25,13 +25,13 @@
         </div>
       </el-col>
     </el-row>
-    <el-row :gutter="15" class="home-card-two mb15">
-      <el-col :xs="24" :sm="14" :md="14" :lg="16" :xl="16">
+    <el-row :gutter="10" class="home-card-two mb15">
+      <el-col :xs="24" :sm="14" :md="14" :lg="14" :xl="14">
         <div class="home-card-item">
           <div style="height: 100%" ref="homeLineRef"></div>
         </div>
       </el-col>
-      <el-col :xs="24" :sm="10" :md="10" :lg="8" :xl="8" class="home-media">
+      <el-col :xs="24" :sm="12" :md="12" :lg="10" :xl="10" class="home-media">
         <div class="home-card-item">
           <div style="height: 100%" ref="homePieRef"></div>
         </div>
@@ -96,7 +96,7 @@ const state = reactive({
     {
       num1: 0,
       // num2: '-12.32',
-      num3: '标备案主板',
+      num3: '标备案主板',
       num4: 'fa fa-microchip',
       color1: '#FF6462',
       color2: '--next-color-primary-lighter',
@@ -217,13 +217,13 @@ const lineChart = ref({
   option : {
     backgroundColor: state.charts.bgColor,
     title: {
-      text: '标灌注',
+      text: '标灌注',
       x: 'left',
       textStyle: { fontSize: '15', color: state.charts.color },
     },
-    grid: { top: 70, right: 20, bottom: 30, left: 30 },
+    grid: { top: 50, right: 30, bottom: 40, left: 40 },
     tooltip: { trigger: 'axis' },
-    legend: { data: ['ECVR-FM', '团标主板', '团标备案主板', 'ECVR-FM备案'], right: 0 },
+    legend: { data: ['ECVR-FM', '国标主板', '国标备案主板', 'ECVR-FM备案'], right: 0 },
     xAxis: {
       data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
     },
@@ -252,7 +252,7 @@ const lineChart = ref({
         },
       },
       {
-        name: '标主板',
+        name: '标主板',
         type: 'line',
         symbolSize: 6,
         symbol: 'circle',
@@ -268,7 +268,7 @@ const lineChart = ref({
         },
       },
       {
-        name: '标备案主板',
+        name: '标备案主板',
         type: 'line',
         symbolSize: 6,
         symbol: 'circle',
@@ -324,11 +324,11 @@ const initPieChart = () => {
   for (var i = 0; i < pieChart.getName.length; i++) {
     data.push({ name: pieChart.getName[i], value: pieChart.getValue[i] })
   }
-  const colorList = ['#51A3FC', '#36C78B', '#FEC279', '#968AF5', '#B0C54EFF','#E720E8','#E710E8']
+  const colorList = ['#E720E8', '#36C78B', '#FEC279', '#968AF5', '#B0C54EFF','#51A3FC','#E710E8','#e44040','#d0ff00','#b11eeb','#030396','#00566b','#ff05ac']
   const option = {
     backgroundColor: state.charts.bgColor,
     title: {
-      text: '标灌注',
+      text: '标灌注',
       x: 'left',
       textStyle: { fontSize: '15', color: state.charts.color },
     },
@@ -645,7 +645,8 @@ watch(
 <style scoped lang="scss">
 $homeNavLengh: 8;
 .home-container {
-  overflow: hidden;
+  // overflow: hidden;
+  max-height:100%;
   .home-card-one,
   .home-card-two,
   .home-card-three {
@@ -693,9 +694,10 @@ $homeNavLengh: 8;
   .home-card-two,
   .home-card-three {
     .home-card-item {
-      height: 400px;
+      // height: 600px;
+      min-height: 59vh;
       width: 100%;
-      overflow: hidden;
+      // overflow: hidden;
       .home-monitor {
         height: 100%;
         .flex-warp-item {
@@ -729,5 +731,11 @@ $homeNavLengh: 8;
       }
     }
   }
+  .home-card-one{
+    .home-card-item{
+      min-height: 20vh;
+    }
+  }
+
 }
 </style>

+ 1 - 1
package-lock.json

@@ -1,5 +1,5 @@
 {
-  "name": "Web",
+  "name": "imes_cloud",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {}