Pārlūkot izejas kodu

pms SAP组织数据关联功能优化

zhangcl 3 mēneši atpakaļ
vecāks
revīzija
8ef6165596

+ 9 - 0
src/api/system/saporg/index.ts

@@ -16,6 +16,11 @@ export interface SapOrgVO {
   remark: string // 备注
 }
 
+export interface SelectedReqVO {
+  type: number // 类型(1工厂 2成本中心 3库位)
+  factoryCodes: [] // 已经选择的SAP工厂code 列表
+}
+
 // SAP中的组织主数据(工厂 成本中心) API
 export const SapOrgApi = {
   // 查询SAP中的组织主数据(工厂 成本中心)分页
@@ -32,6 +37,10 @@ export const SapOrgApi = {
     return await request.get({ url: '/system/sap-org/simple-list?type=' + type })
   },
 
+  getSelectedList: async (data: any): Promise<SapOrgVO[]> => {
+    return await request.post({ url: '/system/sap-org/selectedSimpleList', data })
+  },
+
   // 新增SAP中的组织主数据(工厂 成本中心)
   createSapOrg: async (data: SapOrgVO) => {
     return await request.post({ url: `/system/sap-org/create`, data })

+ 0 - 3
src/views/pms/iotlockstock/IotAddToStock.vue

@@ -33,7 +33,6 @@
             <el-input v-model="scope.row.remark" />
           </template>
         </el-table-column>
-        <el-table-column label="物料来源" align="center" prop="type" />
         <el-table-column label="操作" align="center" min-width="120px">
           <template #default="scope">
             <div style="display: flex; justify-content: center; align-items: center; width: 100%">
@@ -75,12 +74,10 @@
 
 import { IotMaintainApi, IotMaintainVO } from '@/api/pms/maintain'
 import { IotLockStockApi, IotLockStockVO } from '@/api/pms/iotlockstock'
-import DeviceList from '@/views/pms/failure/DeviceList.vue'
 import * as UserApi from '@/api/system/user'
 import { useUserStore } from '@/store/modules/user'
 import StockMaterialDrawer from '@/views/pms/iotlockstock/StockMaterialDrawer.vue'
 import { ref } from 'vue'
-import { IotMaintainMaterialVO } from '@/api/pms/maintain/material'
 import { useTagsViewStore } from '@/store/modules/tagsView'
 import {CACHE_KEY, useCache} from "@/hooks/web/useCache";
 

+ 4 - 4
src/views/pms/iotlockstock/StockMaterialDrawer.vue

@@ -77,7 +77,7 @@ const drawerFormData = ref({
   materialName: undefined,
   unit1: undefined,
   unitPrice1: undefined,
-  type: undefined,
+  type: 1,
   quantity1: undefined,
   totalCount: undefined,
   sapCode: undefined,
@@ -91,11 +91,11 @@ const resetDrawerForm = () => {
     materialName: undefined,
     unit1: undefined,
     unitPrice1: undefined,
-    type: undefined,
-    quantity: undefined,
+    type: 1,
+    quantity1: undefined,
     totalCount: undefined,
     sapCode: undefined,
-    status: undefined,
+    status1: undefined,
     remark1: undefined
   }
   drawerRef.value?.resetFields()

+ 1 - 1
src/views/pms/material/MaterialGroupTree.vue

@@ -13,7 +13,7 @@
       :expand-on-click-node="false"
       :filter-node-method="filterNode"
       :props="defaultProps"
-      default-expand-all
+      :default-expand-all="false"
       highlight-current
       node-key="id"
       @node-click="handleNodeClick"

+ 18 - 0
src/views/pms/material/index.vue

@@ -319,3 +319,21 @@ onMounted(() => {
   getList()
 })
 </script>
+
+<style scoped>
+/* Tree 组件滚动容器 */
+:deep(.el-tree) {
+  overflow-y: auto; /* 启用垂直滚动 */
+  padding: 5px;
+}
+/* 美化滚动条 */
+:deep(.el-tree::-webkit-scrollbar) {
+  width: 6px;
+  background-color: #f5f5f5;
+}
+
+:deep(.el-tree::-webkit-scrollbar-thumb) {
+  background-color: #c1c1c1;
+  border-radius: 3px;
+}
+</style>

+ 1 - 1
src/views/pms/materialgroup/index.vue

@@ -120,7 +120,7 @@ const queryParams = reactive({
   status: undefined
 })
 const queryFormRef = ref() // 搜索的表单
-const isExpandAll = ref(true) // 是否展开,默认全部展开
+const isExpandAll = ref(false) // 是否展开,默认全部展开
 const refreshTable = ref(true) // 重新渲染表格状态
 
 /** 查询物料组列表 */

+ 50 - 4
src/views/system/dept/DeptForm.vue

@@ -34,14 +34,16 @@
           />
         </el-select>
       </el-form-item>
+      <!--
       <el-form-item label="联系电话" prop="phone">
         <el-input v-model="formData.phone" maxlength="11" placeholder="请输入联系电话" />
       </el-form-item>
       <el-form-item label="邮箱" prop="email">
         <el-input v-model="formData.email" maxlength="50" placeholder="请输入邮箱" />
       </el-form-item>
+      -->
       <el-form-item label="SAP工厂">
-        <el-select v-model="formData.factoryIds" multiple placeholder="请选择">
+        <el-select v-model="formData.factoryIds" multiple placeholder="请选择" @change="selectedFactoryChange">
           <el-option
             v-for="item in factoryList"
             :key="item.id"
@@ -96,6 +98,9 @@ import {CommonStatusEnum} from '@/utils/constants'
 import {FormRules} from 'element-plus'
 import {IotTreeApi} from '@/api/system/tree'
 import * as SapOrgApi from "@/api/system/saporg";
+import {ImageVO} from "@/api/ai/image";
+import {SelectedReqVO, selectedReqVO} from "@/api/system/saporg";
+import { toRaw } from "vue";
 
 defineOptions({ name: 'SystemDeptForm' })
 
@@ -120,11 +125,17 @@ const formData = ref({
   stockLocationIds: [],
   status: CommonStatusEnum.ENABLE
 })
+
+const selectedFactoryReqVO = ref({
+  type: 0, // 类型(1工厂 2成本中心 3库位)
+  factoryCodes: [] // 已经选择的SAP工厂code 列表
+})
+
 const formRules = reactive<FormRules>({
   parentId: [{ required: true, message: '上级部门不能为空', trigger: 'blur' }],
   name: [{ required: true, message: '部门名称不能为空', trigger: 'blur' }],
   sort: [{ required: true, message: '显示排序不能为空', trigger: 'blur' }],
-  email: [{ type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }],
+  // email: [{ type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }],
   phone: [
     { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: '请输入正确的手机号码', trigger: 'blur' }
   ],
@@ -137,6 +148,8 @@ const factoryList = ref([] as SapOrgApi.SapOrgVO[]) // SAP工厂列表
 const costCenterList = ref([] as SapOrgApi.SapOrgVO[]) // SAP成本中心列表
 const stockLocationList = ref([] as SapOrgApi.SapOrgVO[]) // SAP库存地点列表
 
+const selectedFactoryCodes = ref([]) // 选择的SAP工厂 code 列表
+
 /** 打开弹窗 */
 const open = async (type: string, id?: number) => {
   dialogVisible.value = true
@@ -158,10 +171,22 @@ const open = async (type: string, id?: number) => {
   await getTree()
   // 加载工厂(SAP)列表
   factoryList.value = await SapOrgApi.SapOrgApi.getSimpleSapOrgList(1)
-  // 加载成本中心(SAP)列表
   costCenterList.value = await SapOrgApi.SapOrgApi.getSimpleSapOrgList(2)
-  // 加载库存地点(SAP)列表
   stockLocationList.value = await SapOrgApi.SapOrgApi.getSimpleSapOrgList(3)
+
+  // 根据已有的SAP工厂值 获取 factoryCode数组
+  /* selectedFactoryCodes.value = formData.value.factoryIds.map(id => {
+    const factory = factoryList.value.find(item => item.id === id)
+    return factory ? factory.factoryCode : null
+  }).filter(code => code !== null)
+  // 根据SAP工厂已有值 加载成本中心(SAP)列表
+  selectedFactoryReqVO.value.type = 2
+  selectedFactoryReqVO.value.factoryCodes = toRaw(selectedFactoryCodes.value)
+  costCenterList.value = await SapOrgApi.SapOrgApi.getSelectedList(selectedFactoryReqVO)
+  // 根据SAP工厂已有值 加载库存地点(SAP)列表
+  selectedFactoryReqVO.value.type = 3
+  selectedFactoryReqVO.value.factoryCodes = selectedFactoryCodes.value
+  stockLocationList.value = await SapOrgApi.SapOrgApi.getSelectedList(selectedFactoryReqVO) */
 }
 defineExpose({ open }) // 提供 open 方法,用于打开弹窗
 
@@ -200,6 +225,27 @@ const submitForm = async () => {
   }
 }
 
+/** 已经选择了 SAP工厂 */
+const selectedFactoryChange = async (selectedIds) => {
+  // 获取选中的factoryCode数组
+  const selectedFactoryCodes = selectedIds.map(id => {
+    const factory = factoryList.value.find(item => item.id === id)
+    return factory ? factory.factoryCode : null
+  }).filter(code => code !== null)
+
+  // 获得已经选择的 SAP 工厂 数组
+  // const factoryIds = formData.value.factoryIds
+  // 调用后台接口查询 SAP工厂下属的 成本中心列表
+  selectedFactoryReqVO.value.type = 2
+  selectedFactoryReqVO.value.factoryCodes = selectedFactoryCodes
+  costCenterList.value = await SapOrgApi.SapOrgApi.getSelectedList(selectedFactoryReqVO.value)
+
+  // 根据选择的 SAP工厂 调用后台接口查询 SAP工厂下属的 库存地点列表
+  selectedFactoryReqVO.value.type = 3
+  selectedFactoryReqVO.value.factoryCodes = selectedFactoryCodes
+  stockLocationList.value = await SapOrgApi.SapOrgApi.getSelectedList(selectedFactoryReqVO.value)
+}
+
 /** 重置表单 */
 const resetForm = () => {
   formData.value = {

+ 2 - 1
src/views/system/dept/index.vue

@@ -126,7 +126,7 @@ const queryParams = reactive({
   status: undefined
 })
 const queryFormRef = ref() // 搜索的表单
-const isExpandAll = ref(true) // 是否展开,默认全部展开
+const isExpandAll = ref(false) // 是否展开,默认全部展开
 const refreshTable = ref(true) // 重新渲染表格状态
 const userList = ref<UserApi.UserVO[]>([]) // 用户列表
 
@@ -188,4 +188,5 @@ onMounted(async () => {
   // 获取用户列表
   userList.value = await UserApi.getSimpleUserList()
 })
+
 </script>