Parcourir la source

pms 安全库存

zhangcl il y a 4 mois
Parent
commit
920d55ae62

+ 63 - 59
src/api/pms/iotsapstock/index.ts

@@ -1,59 +1,63 @@
-import request from '@/config/axios'
-
-// PMS SAP 库存(通用库存/项目部库存) VO
-export interface IotSapStockVO {
-  id: number // 主键
-  deptId: number // 组织部门id
-  factory: string // 工厂(SAP) 专业公司
-  projectDepartment: string // 库存地点 - SAP 部门 项目部级 通用库 项目部库
-  materialCode: string // 物料编码
-  materialName: string // 物料名称
-  materialGroupName: string // 物料组
-  materialGroupId: number // 物料组id
-  quantity: number // 数量
-  unitPrice: number // 单价
-  unit: string // 单位
-  safetyStock: number // 安全库存
-  shelvesId: number // 货架id
-  cargoLocationId: number // 库位id
-  type: number // 类型(通用库 项目部库)
-  syncStatus: number // 同步状态 0未同步 1同步成功 2同步失败
-  syncTime: Date // 最后一次同步时间
-  syncError: string // 同步失败时的错误信息
-  sort: number // 排序
-  status: number // 状态 0启用  1停用
-  remark: string // 备注
-}
-
-// PMS SAP 库存(通用库存/项目部库存) API
-export const IotSapStockApi = {
-  // 查询PMS SAP 库存(通用库存/项目部库存)分页
-  getIotSapStockPage: async (params: any) => {
-    return await request.get({ url: `/pms/iot-sap-stock/page`, params })
-  },
-
-  // 查询PMS SAP 库存(通用库存/项目部库存)详情
-  getIotSapStock: async (id: number) => {
-    return await request.get({ url: `/pms/iot-sap-stock/get?id=` + id })
-  },
-
-  // 新增PMS SAP 库存(通用库存/项目部库存)
-  createIotSapStock: async (data: IotSapStockVO) => {
-    return await request.post({ url: `/pms/iot-sap-stock/create`, data })
-  },
-
-  // 修改PMS SAP 库存(通用库存/项目部库存)
-  updateIotSapStock: async (data: IotSapStockVO) => {
-    return await request.put({ url: `/pms/iot-sap-stock/update`, data })
-  },
-
-  // 删除PMS SAP 库存(通用库存/项目部库存)
-  deleteIotSapStock: async (id: number) => {
-    return await request.delete({ url: `/pms/iot-sap-stock/delete?id=` + id })
-  },
-
-  // 导出PMS SAP 库存(通用库存/项目部库存) Excel
-  exportIotSapStock: async (params) => {
-    return await request.download({ url: `/pms/iot-sap-stock/export-excel`, params })
-  },
-}
+import request from '@/config/axios'
+
+// PMS SAP 库存(通用库存/项目部库存) VO
+export interface IotSapStockVO {
+  id: number // 主键
+  deptId: number // 组织部门id
+  factoryId: number // 工厂(SAP) 专业公司id
+  factory: string // 工厂(SAP) 专业公司名称
+  storageLocationId: number // 库存地点id
+  projectDepartment: string // 库存地点 - SAP 部门 项目部级 通用库 项目部库
+  materialCode: string // 物料编码
+  materialName: string // 物料名称
+  materialGroupName: string // 物料组
+  materialGroupId: number // 物料组id
+  quantity: number // 数量
+  unitPrice: number // 单价
+  unit: string // 单位
+  safetyStock: number // 安全库存
+  storageAreaId: number // 库区id
+  storageAreaName: string // 库区名称
+  shelvesId: number // 货架id
+  cargoLocationId: number // 库位id
+  type: number // 类型(通用库 项目部库)
+  syncStatus: number // 同步状态 0未同步 1同步成功 2同步失败
+  syncTime: Date // 最后一次同步时间
+  syncError: string // 同步失败时的错误信息
+  sort: number // 排序
+  status: number // 状态 0启用  1停用
+  remark: string // 备注
+}
+
+// PMS SAP 库存(通用库存/项目部库存) API
+export const IotSapStockApi = {
+  // 查询PMS SAP 库存(通用库存/项目部库存)分页
+  getIotSapStockPage: async (params: any) => {
+    return await request.get({ url: `/pms/iot-sap-stock/page`, params })
+  },
+
+  // 查询PMS SAP 库存(通用库存/项目部库存)详情
+  getIotSapStock: async (id: number) => {
+    return await request.get({ url: `/pms/iot-sap-stock/get?id=` + id })
+  },
+
+  // 新增PMS SAP 库存(通用库存/项目部库存)
+  createIotSapStock: async (data: IotSapStockVO) => {
+    return await request.post({ url: `/pms/iot-sap-stock/create`, data })
+  },
+
+  // 修改PMS SAP 库存(通用库存/项目部库存)
+  updateIotSapStock: async (data: IotSapStockVO) => {
+    return await request.put({ url: `/pms/iot-sap-stock/update`, data })
+  },
+
+  // 删除PMS SAP 库存(通用库存/项目部库存)
+  deleteIotSapStock: async (id: number) => {
+    return await request.delete({ url: `/pms/iot-sap-stock/delete?id=` + id })
+  },
+
+  // 导出PMS SAP 库存(通用库存/项目部库存) Excel
+  exportIotSapStock: async (params) => {
+    return await request.download({ url: `/pms/iot-sap-stock/export-excel`, params })
+  },
+}

+ 12 - 54
src/views/pms/iotsapstock/IotSapStockForm.vue

@@ -7,73 +7,26 @@
       label-width="100px"
       v-loading="formLoading"
     >
-      <el-form-item label="组织部门id" prop="deptId">
-        <el-input v-model="formData.deptId" placeholder="请输入组织部门id" />
-      </el-form-item>
-      <el-form-item label="工厂(SAP) 专业公司" prop="factory">
-        <el-input v-model="formData.factory" placeholder="请输入工厂(SAP) 专业公司" />
-      </el-form-item>
-      <el-form-item label="库存地点 - SAP 部门 项目部级 通用库 项目部库" prop="projectDepartment">
-        <el-input v-model="formData.projectDepartment" placeholder="请输入库存地点 - SAP 部门 项目部级 通用库 项目部库" />
-      </el-form-item>
       <el-form-item label="物料编码" prop="materialCode">
-        <el-input v-model="formData.materialCode" placeholder="请输入物料编码" />
+        <el-input v-model="formData.materialCode" placeholder="请输入物料编码" disabled/>
       </el-form-item>
       <el-form-item label="物料名称" prop="materialName">
-        <el-input v-model="formData.materialName" placeholder="请输入物料名称" />
-      </el-form-item>
-      <el-form-item label="物料组" prop="materialGroupName">
-        <el-input v-model="formData.materialGroupName" placeholder="请输入物料组" />
-      </el-form-item>
-      <el-form-item label="物料组id" prop="materialGroupId">
-        <el-input v-model="formData.materialGroupId" placeholder="请输入物料组id" />
+        <el-input v-model="formData.materialName" placeholder="请输入物料名称" disabled/>
       </el-form-item>
       <el-form-item label="数量" prop="quantity">
-        <el-input v-model="formData.quantity" placeholder="请输入数量" />
+        <el-input v-model="formData.quantity" placeholder="请输入数量" disabled/>
       </el-form-item>
       <el-form-item label="单价" prop="unitPrice">
-        <el-input v-model="formData.unitPrice" placeholder="请输入单价" />
+        <el-input v-model="formData.unitPrice" placeholder="请输入单价" disabled/>
       </el-form-item>
       <el-form-item label="单位" prop="unit">
-        <el-input v-model="formData.unit" placeholder="请输入单位" />
+        <el-input v-model="formData.unit" placeholder="请输入单位" disabled/>
       </el-form-item>
       <el-form-item label="安全库存" prop="safetyStock">
         <el-input v-model="formData.safetyStock" placeholder="请输入安全库存" />
       </el-form-item>
-      <el-form-item label="货架id" prop="shelvesId">
-        <el-input v-model="formData.shelvesId" placeholder="请输入货架id" />
-      </el-form-item>
-      <el-form-item label="库位id" prop="cargoLocationId">
-        <el-input v-model="formData.cargoLocationId" placeholder="请输入库位id" />
-      </el-form-item>
-      <el-form-item label="类型(通用库 项目部库)" prop="type">
-        <el-select v-model="formData.type" placeholder="请选择类型(通用库 项目部库)">
-          <el-option label="请选择字典生成" value="" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="同步状态 0未同步 1同步成功 2同步失败" prop="syncStatus">
-        <el-radio-group v-model="formData.syncStatus">
-          <el-radio value="1">请选择字典生成</el-radio>
-        </el-radio-group>
-      </el-form-item>
-      <el-form-item label="最后一次同步时间" prop="syncTime">
-        <el-date-picker
-          v-model="formData.syncTime"
-          type="date"
-          value-format="x"
-          placeholder="选择最后一次同步时间"
-        />
-      </el-form-item>
-      <el-form-item label="同步失败时的错误信息" prop="syncError">
-        <el-input v-model="formData.syncError" placeholder="请输入同步失败时的错误信息" />
-      </el-form-item>
       <el-form-item label="排序" prop="sort">
-        <el-input v-model="formData.sort" placeholder="请输入排序" />
-      </el-form-item>
-      <el-form-item label="状态 0启用  1停用" prop="status">
-        <el-radio-group v-model="formData.status">
-          <el-radio value="1">请选择字典生成</el-radio>
-        </el-radio-group>
+        <el-input-number v-model="formData.sort" :min="0" controls-position="right" />
       </el-form-item>
       <el-form-item label="备注" prop="remark">
         <el-input v-model="formData.remark" placeholder="请输入备注" />
@@ -122,6 +75,11 @@ const formData = ref({
   remark: undefined,
 })
 const formRules = reactive({
+  safetyStock: [{
+    pattern: /^(?!-)\d+(\.\d+)?$/,
+    message: '安全库存必须为非负小数',
+    trigger: 'blur'
+  }]
 })
 const formRef = ref() // 表单 Ref
 
@@ -194,4 +152,4 @@ const resetForm = () => {
   }
   formRef.value?.resetFields()
 }
-</script>
+</script>

+ 32 - 188
src/views/pms/iotsapstock/index.vue

@@ -8,32 +8,25 @@
       :inline="true"
       label-width="68px"
     >
-      <el-form-item label="组织部门id" prop="deptId">
-        <el-input
-          v-model="queryParams.deptId"
-          placeholder="请输入组织部门id"
-          clearable
-          @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
-      </el-form-item>
-      <el-form-item label="工厂(SAP) 专业公司" prop="factory">
-        <el-input
-          v-model="queryParams.factory"
-          placeholder="请输入工厂(SAP) 专业公司"
-          clearable
-          @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
+      <el-form-item label="工厂" prop="factoryId">
+        <el-select v-model="queryParams.factoryId" clearable placeholder="请选择" class="!w-240px">
+          <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 部门 项目部级 通用库 项目部库" prop="projectDepartment">
-        <el-input
-          v-model="queryParams.projectDepartment"
-          placeholder="请输入库存地点 - SAP 部门 项目部级 通用库 项目部库"
-          clearable
-          @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
+      <el-form-item label="库存地点" prop="storageLocationId">
+        <el-select v-model="queryParams.storageLocationId" clearable placeholder="请选择" class="!w-240px">
+          <el-option
+            v-for="item in storageLocationList"
+            :key="item.id"
+            :label="item.storageLocationName"
+            :value="item.id!"
+          />
+        </el-select>
       </el-form-item>
       <el-form-item label="物料编码" prop="materialCode">
         <el-input
@@ -53,146 +46,6 @@
           class="!w-240px"
         />
       </el-form-item>
-      <el-form-item label="物料组" prop="materialGroupName">
-        <el-input
-          v-model="queryParams.materialGroupName"
-          placeholder="请输入物料组"
-          clearable
-          @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
-      </el-form-item>
-      <el-form-item label="物料组id" prop="materialGroupId">
-        <el-input
-          v-model="queryParams.materialGroupId"
-          placeholder="请输入物料组id"
-          clearable
-          @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
-      </el-form-item>
-      <el-form-item label="数量" prop="quantity">
-        <el-input
-          v-model="queryParams.quantity"
-          placeholder="请输入数量"
-          clearable
-          @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
-      </el-form-item>
-      <el-form-item label="单价" prop="unitPrice">
-        <el-input
-          v-model="queryParams.unitPrice"
-          placeholder="请输入单价"
-          clearable
-          @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
-      </el-form-item>
-      <el-form-item label="单位" prop="unit">
-        <el-input
-          v-model="queryParams.unit"
-          placeholder="请输入单位"
-          clearable
-          @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
-      </el-form-item>
-      <el-form-item label="安全库存" prop="safetyStock">
-        <el-input
-          v-model="queryParams.safetyStock"
-          placeholder="请输入安全库存"
-          clearable
-          @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
-      </el-form-item>
-      <el-form-item label="货架id" prop="shelvesId">
-        <el-input
-          v-model="queryParams.shelvesId"
-          placeholder="请输入货架id"
-          clearable
-          @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
-      </el-form-item>
-      <el-form-item label="库位id" prop="cargoLocationId">
-        <el-input
-          v-model="queryParams.cargoLocationId"
-          placeholder="请输入库位id"
-          clearable
-          @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
-      </el-form-item>
-      <el-form-item label="类型(通用库 项目部库)" prop="type">
-        <el-select
-          v-model="queryParams.type"
-          placeholder="请选择类型(通用库 项目部库)"
-          clearable
-          class="!w-240px"
-        >
-          <el-option label="请选择字典生成" value="" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="同步状态 0未同步 1同步成功 2同步失败" prop="syncStatus">
-        <el-select
-          v-model="queryParams.syncStatus"
-          placeholder="请选择同步状态 0未同步 1同步成功 2同步失败"
-          clearable
-          class="!w-240px"
-        >
-          <el-option label="请选择字典生成" value="" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="最后一次同步时间" prop="syncTime">
-        <el-date-picker
-          v-model="queryParams.syncTime"
-          value-format="YYYY-MM-DD HH:mm:ss"
-          type="daterange"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
-          :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
-          class="!w-220px"
-        />
-      </el-form-item>
-      <el-form-item label="同步失败时的错误信息" prop="syncError">
-        <el-input
-          v-model="queryParams.syncError"
-          placeholder="请输入同步失败时的错误信息"
-          clearable
-          @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
-      </el-form-item>
-      <el-form-item label="排序" prop="sort">
-        <el-input
-          v-model="queryParams.sort"
-          placeholder="请输入排序"
-          clearable
-          @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
-      </el-form-item>
-      <el-form-item label="状态 0启用  1停用" prop="status">
-        <el-select
-          v-model="queryParams.status"
-          placeholder="请选择状态 0启用  1停用"
-          clearable
-          class="!w-240px"
-        >
-          <el-option label="请选择字典生成" value="" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="备注" prop="remark">
-        <el-input
-          v-model="queryParams.remark"
-          placeholder="请输入备注"
-          clearable
-          @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
-      </el-form-item>
       <el-form-item label="创建时间" prop="createTime">
         <el-date-picker
           v-model="queryParams.createTime"
@@ -231,33 +84,14 @@
   <!-- 列表 -->
   <ContentWrap>
     <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
-      <el-table-column label="主键" align="center" prop="id" />
-      <el-table-column label="组织部门id" align="center" prop="deptId" />
-      <el-table-column label="工厂(SAP) 专业公司" align="center" prop="factory" />
-      <el-table-column label="库存地点 - SAP 部门 项目部级 通用库 项目部库" align="center" prop="projectDepartment" />
+      <el-table-column label="工厂" align="center" prop="factory" />
+      <el-table-column label="库存地点" align="center" prop="projectDepartment" />
       <el-table-column label="物料编码" align="center" prop="materialCode" />
       <el-table-column label="物料名称" align="center" prop="materialName" />
-      <el-table-column label="物料组" align="center" prop="materialGroupName" />
-      <el-table-column label="物料组id" align="center" prop="materialGroupId" />
       <el-table-column label="数量" align="center" prop="quantity" />
       <el-table-column label="单价" align="center" prop="unitPrice" />
       <el-table-column label="单位" align="center" prop="unit" />
       <el-table-column label="安全库存" align="center" prop="safetyStock" />
-      <el-table-column label="货架id" align="center" prop="shelvesId" />
-      <el-table-column label="库位id" align="center" prop="cargoLocationId" />
-      <el-table-column label="类型(通用库 项目部库)" align="center" prop="type" />
-      <el-table-column label="同步状态 0未同步 1同步成功 2同步失败" align="center" prop="syncStatus" />
-      <el-table-column
-        label="最后一次同步时间"
-        align="center"
-        prop="syncTime"
-        :formatter="dateFormatter"
-        width="180px"
-      />
-      <el-table-column label="同步失败时的错误信息" align="center" prop="syncError" />
-      <el-table-column label="排序" align="center" prop="sort" />
-      <el-table-column label="状态 0启用  1停用" align="center" prop="status" />
-      <el-table-column label="备注" align="center" prop="remark" />
       <el-table-column
         label="创建时间"
         align="center"
@@ -273,7 +107,7 @@
             @click="openForm('update', scope.row.id)"
             v-hasPermi="['pms:iot-sap-stock:update']"
           >
-            编辑
+            安全库存
           </el-button>
           <el-button
             link
@@ -304,6 +138,7 @@ import { dateFormatter } from '@/utils/formatTime'
 import download from '@/utils/download'
 import { IotSapStockApi, IotSapStockVO } from '@/api/pms/iotsapstock'
 import IotSapStockForm from './IotSapStockForm.vue'
+import * as SapOrgApi from "@/api/system/saporg";
 
 /** PMS SAP 库存(通用库存/项目部库存) 列表 */
 defineOptions({ name: 'IotSapStock' })
@@ -311,6 +146,9 @@ defineOptions({ name: 'IotSapStock' })
 const message = useMessage() // 消息弹窗
 const { t } = useI18n() // 国际化
 
+const factoryList = ref([] as SapOrgApi.SapOrgVO[])   // 工厂列表
+const storageLocationList = ref([] as SapOrgApi.SapOrgVO[]) // 库存地点列表
+
 const loading = ref(true) // 列表的加载中
 const list = ref<IotSapStockVO[]>([]) // 列表的数据
 const total = ref(0) // 列表的总页数
@@ -318,7 +156,9 @@ const queryParams = reactive({
   pageNo: 1,
   pageSize: 10,
   deptId: undefined,
+  factoryId: undefined,
   factory: undefined,
+  storageLocationId: undefined,
   projectDepartment: undefined,
   materialCode: undefined,
   materialName: undefined,
@@ -352,6 +192,10 @@ const getList = async () => {
   } finally {
     loading.value = false
   }
+  // 加载工厂(SAP)列表
+  factoryList.value = await SapOrgApi.SapOrgApi.getSimpleSapOrgList(1)
+  // 加载库存地点(SAP)列表
+  storageLocationList.value = await SapOrgApi.SapOrgApi.getSimpleSapOrgList(3)
 }
 
 /** 搜索按钮操作 */
@@ -404,4 +248,4 @@ const handleExport = async () => {
 onMounted(() => {
   getList()
 })
-</script>
+</script>