Jelajahi Sumber

refactor(生产管理): 重构文件,修改和添加了路由,渲染状态颜色

对生产管理的文件进行了重构,将单个功能的.vue文件都命名问index.vue,通过不同的目录来区分功能页面.
wyoujia 1 tahun lalu
induk
melakukan
368451c2f3

+ 1 - 1
admin.ui.plus-master/.env.development

@@ -3,5 +3,5 @@ ENV = 'development'
 
 # 本地环境接口地址
 VITE_API_URL = 'http://ipos.biz:8070'
-#VITE_API_URL = 'http://192.168.0.12:8000'
+#VITE_API_URL = 'http://192.168.4.10:8000'
 

+ 3 - 3
admin.ui.plus-master/src/api/admin/deviceAuthorization/README.md

@@ -1,11 +1,11 @@
-#### 简介
+# 简介
 
 	deviceAuthorization 目录中的ts文件用于 设备授权管理 后端接口请求交互和转换前端页面对象处理
 
-#### oilSdkAuthorDto.ts
+## oilSdkAuthorDto.ts
 
 	设备授权管理 - 油机SDK授权页面 数据对象的DTO
 
-#### oilSdkAuthor.ts
+## oilSdkAuthor.ts
 
 	设备授权管理 - 油机SDK授权页面 发送后端请求数据

+ 4 - 4
admin.ui.plus-master/src/components/my-select-request/index.vue

@@ -6,7 +6,7 @@
 
 <script setup lang="ts" name="my-select-request">
 import {onMounted, reactive, ref, watch} from "vue";
-import {localStorageSet} from "/@/utils/localStorageSet";
+import {sessionStorageSet} from "/@/utils/sessionStorageSet";
 import {DictApi} from "/@/api/admin/Dict";
 import {DictGetListDto} from "/@/api/admin/data-contracts";
   /**
@@ -44,12 +44,12 @@ import {DictGetListDto} from "/@/api/admin/data-contracts";
    * 获取缓存,缓存不存在就发送请求
    * */
   const init = async () => {
-    state.selectDto = localStorageSet.getItemWithExpiration(props.code as string)
+    state.selectDto = sessionStorageSet.getItemWithExpiration(props.code as string)
     if (!state.selectDto){
       const res = await new DictApi().getList([props.code] as string[])
       /**存一天的缓存*/
-      localStorageSet.setItemWithExpiration(props.code as string, res?.data,1)
-      state.selectDto = localStorageSet.getItemWithExpiration(props.code as string)
+      sessionStorageSet.setItemWithExpiration(props.code as string, res?.data,1)
+      state.selectDto = sessionStorageSet.getItemWithExpiration(props.code as string)
     }
   }
 

+ 1 - 0
admin.ui.plus-master/src/stores/userInfo.ts

@@ -50,6 +50,7 @@ export const useUserInfo = defineStore('userInfo', {
       Local.remove(adminTokenKey)
       window.requests = []
       window.location.reload()
+
     },
     //查询用户信息
     async getApiUserInfo() {

+ 4 - 4
admin.ui.plus-master/src/utils/localStorageSet.ts → admin.ui.plus-master/src/utils/sessionStorageSet.ts

@@ -4,17 +4,17 @@
  * @param value 值
  * @param expirationMinutes 过期时间(天)
  */
-export const localStorageSet = {
+export const sessionStorageSet = {
   // 存储数据和过期时间
    setItemWithExpiration(key:string, value:any, expirationDays:number) {
     const expirationMS = expirationDays * 24 * 60 * 1000; // 转换为毫秒
     const expirationTime = new Date().getTime() + expirationMS;
-    localStorage.setItem(key, JSON.stringify({ value, expirationTime }));
+    sessionStorage.setItem(key, JSON.stringify({ value, expirationTime }));
   },
 
   // 读取数据并检查是否过期
   getItemWithExpiration(key:string) {
-    const item = localStorage.getItem(key);
+    const item = sessionStorage.getItem(key);
     if (!item) {
       return null; // 数据不存在
     }
@@ -22,7 +22,7 @@ export const localStorageSet = {
     const now = new Date().getTime();
 
     if (now > parsedItem.expirationTime) {
-      localStorage.removeItem(key); // 数据已过期,删除它
+      sessionStorage.removeItem(key); // 数据已过期,删除它
       return null;
     }
     return parsedItem.value?.[key] ?? []; // 返回有效数据

+ 14 - 0
admin.ui.plus-master/src/views/admin/authorize/README.md

@@ -0,0 +1,14 @@
+# 简介
+
+	authorize目录是设备授权管理菜单
+
+## components目录
+
+### form-edit.vue
+
+	表单组件
+
+## fueLingSdk目录
+
+	设备授权管理 - 油机SDK授权页面 
+

+ 11 - 9
admin.ui.plus-master/src/views/admin/product/goodInfo.vue → admin.ui.plus-master/src/views/admin/product/goodInfo/index.vue

@@ -158,8 +158,8 @@
                   <el-image loading="lazy"
                             alt="fgg"
                             class="img"
-                            fit="fill"
-                            :src="goods.basicInformation.img" >
+                            fit="contain"
+                            :src="baseUrl + '/' + goods.basicInformation.img" >
                     <template #error>
                       <div class="image-slot">
                         <el-icon><icon-picture /></el-icon>
@@ -235,15 +235,15 @@
 
 <script setup lang="ts" name="goodInfo">
 import {onMounted, reactive} from "vue";
-import {ComponentDetails} from "/@/api/admin/productionManagement/ComponentDetails";
-import router from "/@/router";
+import {ComponentDetails} from "/src/api/admin/productionManagement/ComponentDetails";
+import router from "/src/router";
 import type {
   alarmLog,
   goodsInformationBasic,
   productionLog
-} from "/@/api/admin/productionManagement/ComponentDetailsDto";
-import {adminProductGoodsInfoDto, filterData} from "/@/api/admin/productionManagement/ComponentDetailsDto";
-import type {columnsProps, pageInput} from "/@/api/admin/shareDto/shareDto";
+} from "/src/api/admin/productionManagement/ComponentDetailsDto";
+import {adminProductGoodsInfoDto, filterData} from "/src/api/admin/productionManagement/ComponentDetailsDto";
+import type {columnsProps, pageInput} from "/src/api/admin/shareDto/shareDto";
 import { Picture as IconPicture } from '@element-plus/icons-vue'
 //组件的页面对象
 const goods = reactive({
@@ -292,12 +292,14 @@ const goods = reactive({
   } as alarmLog,
 } as adminProductGoodsInfoDto)
 
+//图片url前缀
+const baseUrl = import.meta.env.VITE_API_URL
 
 //查看大图
 const showBigPic = (val) => {
   // eslint-disable-next-line no-console
   console.log(val)
-  goods.imageUrl = val
+  goods.imageUrl = baseUrl + '/' + val
   goods.showBig = true
 }
 
@@ -355,7 +357,7 @@ const initAlarmLog = async () => {
 
 onMounted(() => {
   goods.id = router.currentRoute.value.params.guid
-  console.log(goods.productionLog.pageInput.PageSize)
+  // console.log(goods.productionLog.pageInput.PageSize)
   /**初始化 */
   initBasicInformation()
   initProductionLog()

+ 24 - 0
admin.ui.plus-master/src/views/admin/product/groupLogo/index.vue

@@ -0,0 +1,24 @@
+<template>
+  <div class="layout-pd">
+    <el-row>
+      <el-col :xs="24">
+        <el-card class="mt8" shadow="hover" >
+          123
+        </el-card>
+      </el-col>
+      <el-col :xs="24">
+        <el-card class="mt8" shadow="hover" >
+          321
+        </el-card>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script setup lang="ts">
+
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 45 - 23
admin.ui.plus-master/src/views/admin/product/index.vue → admin.ui.plus-master/src/views/admin/product/record/index.vue

@@ -50,9 +50,27 @@
             <el-table-column prop="bomProNo" label="生产编号"  />
             <el-table-column prop="cpuId" label="CPUID"  />
             <el-table-column prop="software_v" label="软件版本"  />
-            <el-table-column prop="status" label="状态" width="120" />
-            <el-table-column prop="key_name" label="密钥状态"  />
-            <el-table-column prop="stand_name" label="团标状态" />
+            <el-table-column prop="status"  label="状态" width="120" >
+              <template #default="{ row }">
+                <div :style="{color:row.status.color} " class="bold-font">
+                  {{row.status.name}}
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="key_name" label="密钥状态"  >
+              <template #default="{ row }">
+                <div :style="{color:row.key_name.color}" class="bold-font">
+                  {{row.key_name.name}}
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="stand_name" label="团标状态" >
+              <template #default="{ row }">
+                <div :style="{color:row.stand_name.color}" class="bold-font">
+                  {{row.stand_name.name}}
+                </div>
+              </template>
+            </el-table-column>
             <el-table-column prop="createTime" label="创建时间"  />
             <el-table-column prop="remark" label="备注" >
               <!-- <template #default="{ row }">
@@ -133,20 +151,20 @@
   </div>
 </template>
 <script lang="ts" setup name="admin/Component">
-import {ref, reactive, onMounted, onBeforeMount, defineAsyncComponent} from 'vue'  //computed, getCurrentInstance
-import { ComponentApi } from '/@/api/admin/productionManagement/Component'
-import dayjs from 'dayjs'
-import eventBus from '/@/utils/mitt'
-import {PageInputFileGetPageDto} from "/@/api/admin/productionManagement/ComopnentDto";
-import {ComponentGetPageOutPut} from "/@/api/admin/productionManagement/CommunalDto";
-import router from "/@/router";
-import {localStorageSet} from "/@/utils/localStorageSet";
-import {DictApi} from "/@/api/admin/Dict";
+import {ref, reactive, onMounted, defineAsyncComponent} from 'vue'  //computed, getCurrentInstance
+import { ComponentApi } from '/src/api/admin/productionManagement/Component'
+// import dayjs from 'dayjs'
+// import eventBus from '/@/utils/mitt'
+import {PageInputFileGetPageDto} from "/src/api/admin/productionManagement/ComopnentDto";
+import {ComponentGetPageOutPut} from "/src/api/admin/productionManagement/CommunalDto";
+import router from "/src/router";
+import {sessionStorageSet} from "/src/utils/sessionStorageSet";
+import {DictApi} from "/src/api/admin/Dict";
 //import { isImage } from '/@/utils/test'
 //import commonFunction from '/@/utils/commonFunction'
 
 //const { proxy } = getCurrentInstance() as any
-const MySelectRequest = defineAsyncComponent(() => import('/@/components/my-select-request/index.vue'))
+const MySelectRequest = defineAsyncComponent(() => import('/src/components/my-select-request/index.vue'))
 /**
  * 向子组件传值,
  * code 字段编码
@@ -207,18 +225,19 @@ const bomModel = reactive({
  * 初始化,获取缓存部件状态
  */
 const init = async () => {
-  let localStatus;
-  localStatus = localStorageSet.getItemWithExpiration(componentStatusCode.code as string)
-  if (!localStatus){
+  let sessionStatus;
+  sessionStatus = sessionStorageSet.getItemWithExpiration(componentStatusCode.code as string)
+  if (!sessionStatus){
     const res = await new DictApi().getList([componentStatusCode.code] as string[])
     /**存一天的缓存*/
-    localStorageSet.setItemWithExpiration(componentStatusCode.code as string, res?.data,1)
-    localStatus = localStorageSet.getItemWithExpiration(componentStatusCode.code as string as string)
+    sessionStorageSet.setItemWithExpiration(componentStatusCode.code as string, res?.data,1)
+    sessionStatus = sessionStorageSet.getItemWithExpiration(componentStatusCode.code as string as string)
   }
 
   /**将状态转化为map的形式*/
-  componentStatus.value = localStatus.reduce((map, obj) => {
-    map.set(Number(obj.value), obj.name);
+  componentStatus.value = sessionStatus.reduce((map, obj) => {
+    obj.color = obj.code.split("_")[1]
+    map.set(Number(obj.value), {...obj});
     return map;
   },new Map());
 }
@@ -246,9 +265,9 @@ const onQuery = async () => {
   const arr = res?.data?.list
   bomModel.bomListData = arr.map(item => ({
     ...item,
-    key_name:componentStatus.value.get(item.key_name),
-    stand_name:componentStatus.value.get(item.stand_name),
-    status:componentStatus.value.get(item.status)
+    key_name:componentStatus.value?.get(item.key_name) ?? '',
+    stand_name:componentStatus.value?.get(item.stand_name) ?? '',
+    status:componentStatus.value?.get(item.status) ?? ''
   }))
   bomModel.total = res?.data?.total ?? 0
   bomModel.loading = false
@@ -307,4 +326,7 @@ const toPage = (row) => {
 .el-input {
   width: 240px;
 }
+.bold-font {
+  font-weight: bold;
+}
 </style>

+ 55 - 46
admin.ui.plus-master/src/views/admin/product/type.vue → admin.ui.plus-master/src/views/admin/product/type/index.vue

@@ -46,14 +46,16 @@
             <el-table-column prop="guid" label="序号"  />
             <el-table-column prop="type" label="部件类型"  >
               <template #default="{ row }">
-                {{getComponentType(row.type)}}
+                {{row.type}}
               </template>
             </el-table-column>
             <el-table-column prop="bomName" label="部件名称"  />
             <el-table-column prop="bomNo" label="物料号"  />
             <el-table-column prop="status" label="状态"  >
-              <template #default="{ row }">
-                {{getComponentState(row.status)}}
+              <template #default="{ row }" >
+                <div :style="{color: row.status.color}" class="bold-font">
+                  {{row.status.name}}
+                </div>
               </template>
             </el-table-column>
             <el-table-column prop="remark" label="备注" />
@@ -67,7 +69,7 @@
                     :lazy="true"
                     class="img"
                     :hide-on-click-modal="true"
-                    fit="scale-down"
+                    fit="contain"
                     preview-teleported
                   >
                     <template #error>
@@ -154,23 +156,23 @@
 
 <script lang="ts" setup name="admin/product/bom">
 import {ref, reactive, onMounted, onBeforeMount, computed, defineAsyncComponent} from 'vue'
-import { ComponentTypeApi } from '/@/api/admin/productionManagement/ComponentType'
+import { ComponentTypeApi } from '/src/api/admin/productionManagement/ComponentType'
 // import dayjs from 'dayjs'
-import eventBus from '/@/utils/mitt'
-import { isImage } from '/@/utils/test'
-import {FileGetPageOutput} from "/@/api/admin/data-contracts";
-import {PageInputFileGetPageDto} from "/@/api/admin/productionManagement/ComopnentDto";
-import {ComponentGetPageDto} from "/@/api/admin/productionManagement/ComponentTypeDto";
+import eventBus from '/src/utils/mitt'
+import { isImage } from '/src/utils/test'
+import {FileGetPageOutput} from "/src/api/admin/data-contracts";
+import {PageInputFileGetPageDto} from "/src/api/admin/productionManagement/ComopnentDto";
+import {ComponentGetPageDto} from "/src/api/admin/productionManagement/ComponentTypeDto";
 import { Picture as IconPicture } from '@element-plus/icons-vue'
-import {localStorageSet} from "/@/utils/localStorageSet";
-import {DictApi} from "/@/api/admin/Dict";
+import {sessionStorageSet} from "/src/utils/sessionStorageSet";
+import {DictApi} from "/src/api/admin/Dict";
 //import commonFunction from '/@/utils/commonFunction'
 
 // const { proxy } = getCurrentInstance() as any
 
 /**引入组件*/
-const EditDialog = defineAsyncComponent(() => import('./components/form-edit.vue'))
-const MySelectRequest = defineAsyncComponent(() => import('/@/components/my-select-request/index.vue'))
+const EditDialog = defineAsyncComponent(() => import('../components/form-edit.vue'))
+const MySelectRequest = defineAsyncComponent(() => import('/src/components/my-select-request/index.vue'))
 /**
  * 向子组件传值,
  * code 字段编码
@@ -256,32 +258,32 @@ const showBigPic = (val) => {
   state.showBig = true
 }
 
-/**返回部件类型*/
-const getComponentType = (type) =>{
-  if(mapType.value?.has(type)){
-    return mapType.value.get(type)
-  }else {
-    return type
-  }
-}
-
-const getComponentState = (state) => {
-  if(mapState.value.has(state)){
-    return mapState.value.get(state)
-  }else {
-    return state
-  }
-}
+// /**返回部件类型*/
+// const getComponentType = (type) =>{
+//   if(mapType.value?.has(type)){
+//     return mapType.value.get(type)
+//   }else {
+//     return type
+//   }
+// }
+//
+// const getComponentState = (state) => {
+//   if(mapState.value.has(state)){
+//     return mapState.value.get(state).name
+//   }else {
+//     return state
+//   }
+// }
 
 //获取部件类型map
 const initLocalType = async () => {
-  let localType = localStorageSet.getItemWithExpiration(propsType.code)
+  let localType = sessionStorageSet.getItemWithExpiration(propsType.code)
 
   if(!localType){
     const res = await new DictApi().getList([propsType.code] as string[])
     /**存一天的缓存*/
-    localStorageSet.setItemWithExpiration(propsType.code as string, res?.data,1)
-    localType = localStorageSet.getItemWithExpiration(propsType.code as string)
+    sessionStorageSet.setItemWithExpiration(propsType.code as string, res?.data,1)
+    localType = sessionStorageSet.getItemWithExpiration(propsType.code as string)
   }
 
   mapType.value  = localType?.reduce((map, obj) => {
@@ -292,22 +294,24 @@ const initLocalType = async () => {
 
 //获取部件状态map
 const initLocalState = async () => {
-  let localState = localStorageSet.getItemWithExpiration(propsState.code)
+  let sessionState = sessionStorageSet.getItemWithExpiration(propsState.code)
 
-  if(!localState){
+  if(!sessionState){
     const res = await new DictApi().getList([propsState.code] as string[])
     /**存一天的缓存*/
-    localStorageSet.setItemWithExpiration(propsState.code as string, res?.data,1)
-    localState = localStorageSet.getItemWithExpiration(propsState.code as string)
+    sessionStorageSet.setItemWithExpiration(propsState.code as string, res?.data,1)
+    sessionState = sessionStorageSet.getItemWithExpiration(propsState.code as string)
   }
-
-  mapState.value = localState?.reduce((map, obj) => {
-    map.set(Number(obj.value), obj.name);
+  mapState.value =sessionState?.reduce((map, obj) => {
+    obj.color = obj.code.split("_")[1]
+    map.set(Number(obj.value), {...obj});
     return map;
   },new Map());
 }
 
 onMounted(() => {
+  initLocalType()
+  initLocalState()
   onQuery()
   eventBus.off('refreshView')
   eventBus.on('refreshView', async () => {
@@ -329,15 +333,17 @@ const getInitialIndex = (imgUrl: string) => {
 
 /**查询*/
 const onQuery = async () => {
-  await initLocalType()
-  await initLocalState()
   state.loading = true
-  const res = await new ComponentTypeApi().getPage({ ...state.pageInput, filter: state.filterModel }).catch(() => {
+  const {data} = await new ComponentTypeApi().getPage({ ...state.pageInput, filter: state.filterModel }).catch(() => {
     state.loading = false
   })
-
-  state.bomListData = res?.data?.list ?? []
-  state.total = res?.data?.total ?? 0
+  const arr = data?.list ?? []
+  state.bomListData = arr.map(item => ({
+    ...item,
+    type: mapType.value.get(item.type),
+    status: mapState.value.get(item.status),
+  }))
+  state.total = data?.total ?? 0
   state.loading = false
 }
 
@@ -424,4 +430,7 @@ const onCurrentChange = (val: number) => {
 .el-input {
   width: 240px;
 }
+.bold-font {
+  font-weight: bold;
+}
 </style>

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

@@ -225,12 +225,12 @@ const lineChart = ref({
         data: [],
         lineStyle: { color: '#3498db' },
         itemStyle: { color: '#3498db', borderColor: '#3498db' },
-        // areaStyle: {
-        //   color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
-        //     { offset: 0, color: '#3498db' },
-        //     { offset: 1, color: '#3498db' },
-        //   ]),
-        // },
+        areaStyle: {
+          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+            { offset: 0, color: '#3498db' },
+            { offset: 1, color: '#3498db' },
+          ]),
+        },
       },
       {
         name: '团标主板',
@@ -241,12 +241,12 @@ const lineChart = ref({
         data: [],
         lineStyle: { color: '#2ecc71' },
         itemStyle: { color: '#2ecc71', borderColor: '#2ecc71' },
-        // areaStyle: {
-        //   color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
-        //     { offset: 0, color: '#51cc88' },
-        //     { offset: 1, color: '#51cc88' },
-        //   ]),
-        // },
+        areaStyle: {
+          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+            { offset: 0, color: '#51cc88' },
+            { offset: 1, color: '#51cc88' },
+          ]),
+        },
       },
       {
         name: '团标备案主板',
@@ -257,12 +257,12 @@ const lineChart = ref({
         data: [],
         lineStyle: { color: '#e74c3c' },
         itemStyle: { color: '#e74c3c', borderColor: '#e74c3c' },
-        // areaStyle: {
-        //   color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
-        //     { offset: 0, color: '#e3584a' },
-        //     { offset: 1, color: '#e3584a' },
-        //   ]),
-        // },
+        areaStyle: {
+          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+            { offset: 0, color: '#e3584a' },
+            { offset: 1, color: '#e3584a' },
+          ]),
+        },
       },
       {
         name: 'ECVR-FM备案',
@@ -273,12 +273,12 @@ const lineChart = ref({
         data: [],
         lineStyle: { color: '#f39c12' },
         itemStyle: { color: '#f39c12', borderColor: '#f39c12' },
-        // areaStyle: {
-        //   color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
-        //     { offset: 0, color: '#eea93c' },
-        //     { offset: 1, color: '#eea93c' },
-        //   ]),
-        // },
+        areaStyle: {
+          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+            { offset: 0, color: '#eea93c' },
+            { offset: 1, color: '#eea93c' },
+          ]),
+        },
       },
     ],
   }