Explorar o código

pms 组织部门与SAP工厂/成本中心/库存地点关联

zhangcl hai 4 meses
pai
achega
0aeae77990

+ 0 - 1
src/api/pms/commonbommaterial/index.ts

@@ -1,5 +1,4 @@
 import request from '@/config/axios'
-import {IotDeviceVO} from "@/api/pms/device";
 
 export interface CommonBomMaterialVO {
   id: number

+ 3 - 0
src/api/system/dept/index.ts

@@ -9,6 +9,9 @@ export interface DeptVO {
   leaderUserId: number
   phone: string
   email: string
+  factoryIds: string[]
+  costCenterIds: string[]
+  stockLocationIds: string[]
   createTime: Date
 }
 

+ 54 - 50
src/api/system/saporg/index.ts

@@ -1,50 +1,54 @@
-import request from '@/config/axios'
-
-// SAP中的组织主数据(工厂 成本中心) VO
-export interface SapOrgVO {
-  id: number // 主键id
-  factoryCode: string // sap工厂编号
-  factoryName: string // sap工厂名称
-  costCenterCode: string // SAP成本中心编码
-  costCenterName: string // SAP成本中心名称
-  storageLocationCode: string // SAP库位编码
-  storageLocationName: string // SAP库位名称
-  type: number // 类型(1工厂 2成本中心 3库位)
-  responsiblePerson: string // 责任人id(多个逗号分隔)
-  sort: number // 分类排序
-  status: number // 部门状态(0正常 1停用)
-  remark: string // 备注
-}
-
-// SAP中的组织主数据(工厂 成本中心) API
-export const SapOrgApi = {
-  // 查询SAP中的组织主数据(工厂 成本中心)分页
-  getSapOrgPage: async (params: any) => {
-    return await request.get({ url: `/system/sap-org/page`, params })
-  },
-
-  // 查询SAP中的组织主数据(工厂 成本中心)详情
-  getSapOrg: async (id: number) => {
-    return await request.get({ url: `/system/sap-org/get?id=` + id })
-  },
-
-  // 新增SAP中的组织主数据(工厂 成本中心)
-  createSapOrg: async (data: SapOrgVO) => {
-    return await request.post({ url: `/system/sap-org/create`, data })
-  },
-
-  // 修改SAP中的组织主数据(工厂 成本中心)
-  updateSapOrg: async (data: SapOrgVO) => {
-    return await request.put({ url: `/system/sap-org/update`, data })
-  },
-
-  // 删除SAP中的组织主数据(工厂 成本中心)
-  deleteSapOrg: async (id: number) => {
-    return await request.delete({ url: `/system/sap-org/delete?id=` + id })
-  },
-
-  // 导出SAP中的组织主数据(工厂 成本中心) Excel
-  exportSapOrg: async (params) => {
-    return await request.download({ url: `/system/sap-org/export-excel`, params })
-  },
-}
+import request from '@/config/axios'
+
+// SAP中的组织主数据(工厂 成本中心) VO
+export interface SapOrgVO {
+  id: number // 主键id
+  factoryCode: string // sap工厂编号
+  factoryName: string // sap工厂名称
+  costCenterCode: string // SAP成本中心编码
+  costCenterName: string // SAP成本中心名称
+  storageLocationCode: string // SAP库位编码
+  storageLocationName: string // SAP库位名称
+  type: number // 类型(1工厂 2成本中心 3库位)
+  responsiblePerson: string // 责任人id(多个逗号分隔)
+  sort: number // 分类排序
+  status: number // 部门状态(0正常 1停用)
+  remark: string // 备注
+}
+
+// SAP中的组织主数据(工厂 成本中心) API
+export const SapOrgApi = {
+  // 查询SAP中的组织主数据(工厂 成本中心)分页
+  getSapOrgPage: async (params: any) => {
+    return await request.get({ url: `/system/sap-org/page`, params })
+  },
+
+  // 查询SAP中的组织主数据(工厂 成本中心)详情
+  getSapOrg: async (id: number) => {
+    return await request.get({ url: `/system/sap-org/get?id=` + id })
+  },
+
+  getSimpleSapOrgList: async (type: number): Promise<SapOrgVO[]> => {
+    return await request.get({ url: '/system/sap-org/simple-list?type=' + type })
+  },
+
+  // 新增SAP中的组织主数据(工厂 成本中心)
+  createSapOrg: async (data: SapOrgVO) => {
+    return await request.post({ url: `/system/sap-org/create`, data })
+  },
+
+  // 修改SAP中的组织主数据(工厂 成本中心)
+  updateSapOrg: async (data: SapOrgVO) => {
+    return await request.put({ url: `/system/sap-org/update`, data })
+  },
+
+  // 删除SAP中的组织主数据(工厂 成本中心)
+  deleteSapOrg: async (id: number) => {
+    return await request.delete({ url: `/system/sap-org/delete?id=` + id })
+  },
+
+  // 导出SAP中的组织主数据(工厂 成本中心) Excel
+  exportSapOrg: async (params) => {
+    return await request.download({ url: `/system/sap-org/export-excel`, params })
+  },
+}

+ 49 - 6
src/views/system/dept/DeptForm.vue

@@ -5,7 +5,7 @@
       v-loading="formLoading"
       :model="formData"
       :rules="formRules"
-      label-width="80px"
+      label-width="100px"
     >
       <el-form-item label="上级部门" prop="parentId">
         <el-tree-select
@@ -40,6 +40,36 @@
       <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-option
+            v-for="item in factoryList"
+            :key="item.id"
+            :label="item.factoryName"
+            :value="item.id!"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="SAP成本中心">
+        <el-select v-model="formData.costCenterIds" multiple placeholder="请选择">
+          <el-option
+            v-for="item in costCenterList"
+            :key="item.id"
+            :label="item.costCenterName"
+            :value="item.id!"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="SAP库存地点">
+        <el-select v-model="formData.stockLocationIds" multiple placeholder="请选择">
+          <el-option
+            v-for="item in stockLocationList"
+            :key="item.id"
+            :label="item.storageLocationName"
+            :value="item.id!"
+          />
+        </el-select>
+      </el-form-item>
       <el-form-item label="状态" prop="status">
         <el-select v-model="formData.status" clearable placeholder="请选择状态">
           <el-option
@@ -58,13 +88,14 @@
   </Dialog>
 </template>
 <script lang="ts" setup>
-import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
-import { defaultProps, handleTree } from '@/utils/tree'
+import {DICT_TYPE, getIntDictOptions} from '@/utils/dict'
+import {defaultProps, handleTree} from '@/utils/tree'
 import * as DeptApi from '@/api/system/dept'
 import * as UserApi from '@/api/system/user'
-import { CommonStatusEnum } from '@/utils/constants'
-import { FormRules } from 'element-plus'
-import { IotTreeApi, IotTreeVO } from '@/api/system/tree'
+import {CommonStatusEnum} from '@/utils/constants'
+import {FormRules} from 'element-plus'
+import {IotTreeApi} from '@/api/system/tree'
+import * as SapOrgApi from "@/api/system/saporg";
 
 defineOptions({ name: 'SystemDeptForm' })
 
@@ -84,6 +115,9 @@ const formData = ref({
   leaderUserId: undefined,
   phone: undefined,
   email: undefined,
+  factoryIds: [],
+  costCenterIds: [],
+  stockLocationIds: [],
   status: CommonStatusEnum.ENABLE
 })
 const formRules = reactive<FormRules>({
@@ -99,6 +133,9 @@ const formRules = reactive<FormRules>({
 const formRef = ref() // 表单 Ref
 const deptTree = ref() // 树形结构
 const userList = ref<UserApi.UserVO[]>([]) // 用户列表
+const factoryList = ref([] as SapOrgApi.SapOrgVO[]) // SAP工厂列表
+const costCenterList = ref([] as SapOrgApi.SapOrgVO[]) // SAP成本中心列表
+const stockLocationList = ref([] as SapOrgApi.SapOrgVO[]) // SAP库存地点列表
 
 /** 打开弹窗 */
 const open = async (type: string, id?: number) => {
@@ -119,6 +156,12 @@ const open = async (type: string, id?: number) => {
   userList.value = await UserApi.getSimpleUserList()
   // 获得部门树
   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)
 }
 defineExpose({ open }) // 提供 open 方法,用于打开弹窗