Ver Fonte

入库单管理、入库单管理

yangyuxuan há 3 meses atrás
pai
commit
000521c458

+ 8 - 0
src/api/comprehensiveGuarantee/materialReserveManagement/OutboundManagement.ts

@@ -7,3 +7,11 @@ export function getOutboundOrder(params?: any) {
     params: params
   });
 }
+//新增出库
+export function createOutboundOrder(data) {
+  return request({
+    url: '/api/resource_provison/material/warehouse_outbound/create',
+    method: 'post',
+    data: data
+  });
+}

+ 5 - 0
src/types/components.d.ts

@@ -24,9 +24,12 @@ declare module 'vue' {
     DistributionMap: typeof import('./../components/Map/YztMap/DistributionMap.vue')['default']
     DrawMap: typeof import('./../components/Map/YztMap/DrawMap.vue')['default']
     Editor: typeof import('./../components/Editor/index.vue')['default']
+    ElAnchor: typeof import('element-plus/es')['ElAnchor']
+    ElAnchorLink: typeof import('element-plus/es')['ElAnchorLink']
     ElAutocomplete: typeof import('element-plus/es')['ElAutocomplete']
     ElBadge: typeof import('element-plus/es')['ElBadge']
     ElButton: typeof import('element-plus/es')['ElButton']
+    ElCard: typeof import('element-plus/es')['ElCard']
     ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
     ElCol: typeof import('element-plus/es')['ElCol']
     ElColorPicker: typeof import('element-plus/es')['ElColorPicker']
@@ -57,6 +60,8 @@ declare module 'vue' {
     ElSwitch: typeof import('element-plus/es')['ElSwitch']
     ElTable: typeof import('element-plus/es')['ElTable']
     ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
+    ElTabPane: typeof import('element-plus/es')['ElTabPane']
+    ElTabs: typeof import('element-plus/es')['ElTabs']
     ElTag: typeof import('element-plus/es')['ElTag']
     ElText: typeof import('element-plus/es')['ElText']
     ElTimeline: typeof import('element-plus/es')['ElTimeline']

+ 6 - 1
src/views/comprehensiveGuarantee/MaterialReserveManagement/InventoryDetails.vue

@@ -51,7 +51,12 @@
           <el-table-column label="剩余库存" align="center" prop="remaining_stock" />
           <el-table-column label="创建时间" align="center" prop="create_time" />
         </el-table>
-        <pagination v-show="total > 0" v-model:page="queryParams.page" v-model:limit="queryParams.pageSize" :total="total" @pagination="tableData" />
+        <pagination
+          v-show="total > 0"
+          v-model:page="queryParams.page"
+          v-model:limit="queryParams.pageSize"
+          :total="total"
+          @pagination="fetchWorkrData" />
       </div>
     </div>
   </div>

+ 17 - 59
src/views/comprehensiveGuarantee/MaterialReserveManagement/OutboundManagement.vue

@@ -21,7 +21,7 @@
           <el-table-column
             label="出库单号"
             align="center"
-            prop="outboundOrderId"
+            prop="outbound_number"
           width="150"
           fixed
           show-overflow-tooltip
@@ -29,112 +29,112 @@
           <el-table-column
             label="仓库名称"
             align="center"
-            prop="warehouseName"
+            prop="warehouse_id"
           width="120"
           show-overflow-tooltip
           />
           <el-table-column
             label="出库单商品总体积(cm³)"
             align="center"
-            prop="totalVolume"
+            prop="total_volume"
           width="120"
           show-overflow-tooltip
           />
           <el-table-column
             label="出库单商品总重量(kg)"
             align="center"
-            prop="totalWeight"
+            prop="total_weight"
           width="120"
           show-overflow-tooltip
           />
           <el-table-column
             label="出库单发货总体积(cm³)"
             align="center"
-            prop="shippedTotalVolume"
+            prop="total_shipping_volume"
           width="150"
           show-overflow-tooltip
           />
           <el-table-column
             label="出库单发货总重量(kg)"
             align="center"
-            prop="shippedTotalWeight"
+            prop="total_shipping_weight"
           width="150"
           show-overflow-tooltip
           />
           <el-table-column
             label="出库单商品总数量"
             align="center"
-            prop="totalQuantity"
+            prop="total_quantity"
           width="120"
           show-overflow-tooltip
           />
           <el-table-column
             label="出库单发货时间"
             align="center"
-            prop="shippedTime"
+            prop="shipping_time"
           width="180"
           show-overflow-tooltip
           />
           <el-table-column
             label="灾种名称"
             align="center"
-            prop="disasterType"
+            prop="disaster_type"
           width="120"
           show-overflow-tooltip
           />
           <el-table-column
             label="调运机构名称"
             align="center"
-            prop="transportationOrgName"
+            prop="dispatching_agency"
           width="150"
           show-overflow-tooltip
           />
           <el-table-column
             label="发货人姓名"
             align="center"
-            prop="shipperName"
+            prop="shipper_name"
           width="120"
           show-overflow-tooltip
           />
           <el-table-column
             label="发货人手机"
             align="center"
-            prop="shipperPhone"
+            prop="shipper_mobile"
           width="120"
           show-overflow-tooltip
           />
           <el-table-column
             label="发货人地址"
             align="center"
-            prop="shipperAddress"
+            prop="shipper_address"
           width="200"
           show-overflow-tooltip
           />
           <el-table-column
             label="发货方备注"
             align="center"
-            prop="shipperRemarks"
+            prop="shipper_remark"
           width="180"
           show-overflow-tooltip
           />
           <el-table-column
             label="收货人姓名"
             align="center"
-            prop="recipientName"
+            prop="receiver_name"
           width="120"
           show-overflow-tooltip
           />
           <el-table-column
             label="收货人手机"
             align="center"
-            prop="recipientPhone"
+            prop="receiver_mobile"
           width="120"
           show-overflow-tooltip
           />
           <el-table-column
             label="收货人地址"
             align="center"
-            prop="recipientAddress"
+            prop="receiver_address"
           width="200"
           show-overflow-tooltip
           />
@@ -176,48 +176,6 @@ const queryParams = reactive({
   pageSize: '10',
 });
 
-// const tableData = [
-//   {
-//     outboundOrderId: 'ORD001',
-//     warehouseName: '仓库A',
-//     totalVolume: '12345',
-//     totalWeight: '50.0',
-//     shippedTotalVolume: '11000',
-//     shippedTotalWeight: '48.5',
-//     totalQuantity: '100',
-//     shippedTime: '2023-10-01 10:00:00',
-//     disasterType: '洪水',
-//     transportationOrgName: '物流公司X',
-//     shipperName: '张三',
-//     shipperPhone: '13800000001',
-//     shipperAddress: '北京市海淀区某街道123号',
-//     shipperRemarks: '请小心搬运',
-//     recipientName: '李四',
-//     recipientPhone: '13800000002',
-//     recipientAddress: '上海市黄浦区某小区456号'
-//   },
-//   {
-//     outboundOrderId: 'ORD002',
-//     warehouseName: '仓库B',
-//     totalVolume: '23456',
-//     totalWeight: '75.0',
-//     shippedTotalVolume: '22000',
-//     shippedTotalWeight: '73.0',
-//     totalQuantity: '150',
-//     shippedTime: '2023-10-02 14:30:00',
-//     disasterType: '地震',
-//     transportationOrgName: '物流公司Y',
-//     shipperName: '王五',
-//     shipperPhone: '13800000003',
-//     shipperAddress: '广州市天河区某路789号',
-//     shipperRemarks: '无特殊要求',
-//     recipientName: '赵六',
-//     recipientPhone: '13800000004',
-//     recipientAddress: '成都市武侯区某小区101号'
-//   },
-//   // 可以根据需要添加更多数据
-// ];
-
 const tableData = ref([]);
 const getDataList = () => {
   getOutboundOrder().then((res) => {

+ 26 - 14
src/views/comprehensiveGuarantee/MaterialReserveManagement/addInbound.vue

@@ -97,6 +97,7 @@
               node-key="id"
               placeholder="请选择库房名称"
               :render-after-expand="false"
+              :props="defaultProps"
             />
           </el-form-item>
 
@@ -132,6 +133,7 @@ import {
   getWarehousingEntry
 } from '@/api/comprehensiveGuarantee/materialReserveManagement/InboundManagement';
 import { deepClone } from '@/utils';
+import { validatePhone } from '@/utils/validate';
 const emits = defineEmits(['close','confirm']);
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 const { sys_store_type, sys_yes_no } = toRefs<any>(proxy?.useDict('sys_store_type','sys_yes_no'));
@@ -139,20 +141,20 @@ const buttonLoading = ref(false);
 const eventFormRef = ref('');
 // 表单初始数据
 const initFormData = {
-  warehouse_id: 'WH001', // 仓库编号
-  purchase_order_number: '111', // 采购单号
+  warehouse_id: '', // 仓库编号
+  purchase_order_number: '', // 采购单号
   is_donation: '', // 是否捐赠(是、否)
-  transport_order_number: 'TN789012', // 运单号
-  donator_phone: '13800138000', // 捐赠人联系电话
-  donator_name: '张三', // 捐赠人姓名
-  reviewer: '李四', // 审核人
-  enterprise_name: '某某企业有限公司', // 企业名称
-  enterprise_code: 'ENT001', // 企业编号
-  grading_info: 'A级', // 分级信息
-  type: '1', // 类型(1_调拨入库、2_归还入库、3_回收入库)
-  supplier_name: '供应商甲', // 供应商名称
-  remark: '这是备注信息', // 备注
-  supplier_code: 'SPL001', // 供应商编号
+  transport_order_number: '', // 运单号
+  donator_phone: '', // 捐赠人联系电话
+  donator_name: '', // 捐赠人姓名
+  reviewer: '', // 审核人
+  enterprise_name: '', // 企业名称
+  enterprise_code: '', // 企业编号
+  grading_info: '', // 分级信息
+  type: '', // 类型(1_调拨入库、2_归还入库、3_回收入库)
+  supplier_name: '', // 供应商名称
+  remark: '', // 备注
+  supplier_code: '', // 供应商编号
   completion_time: '', // 完成时间
   planned_completion_time: '', // 计划完成时间
   room_id:'', //库房id
@@ -167,7 +169,10 @@ const data = reactive({
     purchase_order_number: [{ required: true, message: '采购单号不能为空', trigger: 'blur' }],
     is_donation: [{ required: true, message: '请选择是否捐赠', trigger: 'change' }],
     transport_order_number: [{ required: true, message: '运单号不能为空', trigger: 'blur' }],
-    donator_phone: [{ required: true, message: '捐赠人联系电话不能为空', trigger: 'blur' }],
+    donator_phone: [
+      { required: true, message: '捐赠人联系电话不能为空', trigger: 'blur' },
+      { validator: validatePhone, message: '请输入正确格式的联系电话', trigger: 'blur' }
+    ],
     donator_name: [{ required: true, message: '捐赠人姓名不能为空', trigger: 'blur' }],
     reviewer: [{ required: true, message: '审核人不能为空', trigger: 'blur' }],
     enterprise_name: [{ required: true, message: '企业名称不能为空', trigger: 'blur' }],
@@ -225,6 +230,13 @@ const getWarehouseName = () => {
     warehouseName.value = res.data;
   })
 }
+const defaultProps = reactive({
+  children:'children',
+  label:'label',
+  disabled:(node) => {
+    return node.isWarehouse && !node.children;
+  }
+})
 onMounted(() => {
   getWarehouseName();
 });

+ 115 - 36
src/views/comprehensiveGuarantee/MaterialReserveManagement/addOutbound.vue

@@ -8,43 +8,50 @@
       <div class="common-dialog-box">
         <el-form ref="eventFormRef" :model="form" :rules="rules" label-width="200px">
           <el-form-item label="出库单号:" prop="invoice_number">
-            <el-input v-model="form.invoice_number" placeholder="请输入出库单号" style="width: 468px !important" />
+            <el-input v-model="form.outbound_number" placeholder="请输入出库单号" style="width: 468px !important" />
           </el-form-item>
 
-          <el-form-item label="仓库名称:" prop="warehouse_number">
-            <el-input v-model="form.warehouse_number" placeholder="请输入仓库名称" style="width: 468px !important" />
+          <el-form-item label="库房名称:" prop="warehouse_number">
+            <el-tree-select
+              v-model="form.warehouse_id"
+              :data="warehouseName"
+              node-key="id"
+              placeholder="请选择库房名称"
+              :render-after-expand="false"
+              :props="defaultProps"
+            />
           </el-form-item>
 
           <el-form-item label="出库单商品总体积(cm³):" prop="commodity_volume">
-            <el-input v-model="form.commodity_volume" placeholder="请输入出库单商品总体积" style="width: 468px !important" />
+            <el-input v-model="form.total_volume" placeholder="请输入出库单商品总体积" style="width: 468px !important" />
           </el-form-item>
 
           <el-form-item label="出库单商品总重量(kg):" prop="commodity_weight">
-            <el-input v-model="form.commodity_weight" placeholder="请输入出库单商品总重量" style="width: 468px !important" />
+            <el-input v-model="form.total_weight" placeholder="请输入出库单商品总重量" style="width: 468px !important" />
           </el-form-item>
 
           <el-form-item label="出库单发货总体积(cm³):" prop="shipped_volume">
-            <el-input v-model="form.shipped_volume" placeholder="请输入出库单发货总体积" style="width: 468px !important" />
+            <el-input v-model="form.total_shipping_volume" placeholder="请输入出库单发货总体积" style="width: 468px !important" />
           </el-form-item>
 
           <el-form-item label="出库单发货总重量(kg):" prop="shipped_weight">
-            <el-input v-model="form.shipped_weight" placeholder="请输入出库单发货总重量" style="width: 468px !important" />
+            <el-input v-model="form.total_shipping_weight" placeholder="请输入出库单发货总重量" style="width: 468px !important" />
           </el-form-item>
 
           <el-form-item label="出库单商品总数量:" prop="commodity_number">
-            <el-input v-model="form.commodity_number" placeholder="请输入出库单商品总数量" style="width: 468px !important" />
+            <el-input v-model="form.total_quantity" placeholder="请输入出库单商品总数量" style="width: 468px !important" />
           </el-form-item>
 
           <el-form-item label="出库单发货时间:" prop="delivery_time">
-            <el-input v-model="form.delivery_time" placeholder="请输入出库单发货时间" style="width: 468px !important" />
+            <el-input v-model="form.shipping_time" placeholder="请输入出库单发货时间" style="width: 468px !important" />
           </el-form-item>
 
           <el-form-item label="灾种名称:" prop="disaster_name">
-            <el-input v-model="form.disaster_name" placeholder="请输入灾种名称" style="width: 468px !important" />
+            <el-input v-model="form.disaster_type" placeholder="请输入灾种名称" style="width: 468px !important" />
           </el-form-item>
 
           <el-form-item label="调运机构名称:" prop="organization_name">
-            <el-input v-model="form.organization_name" placeholder="请输入调运机构名称" style="width: 468px !important" />
+            <el-input v-model="form.dispatching_agency" placeholder="请输入调运机构名称" style="width: 468px !important" />
           </el-form-item>
 
           <el-form-item label="发货人姓名:" prop="shipper_name">
@@ -52,7 +59,31 @@
           </el-form-item>
 
           <el-form-item label="发货人手机:" prop="shipper_phone">
-            <el-input v-model="form.shipper_phone" placeholder="请输入发货人手机" style="width: 468px !important" />
+            <el-input v-model="form.shipper_mobile" placeholder="请输入发货人手机" style="width: 468px !important" />
+          </el-form-item>
+
+          <el-form-item label="发货人地址:" prop="shipper_address">
+            <el-input v-model="form.shipper_address" placeholder="请输入发货人地址" style="width: 468px !important" />
+          </el-form-item>
+
+          <el-form-item label="发货方备注:" prop="shipper_remark">
+            <el-input v-model="form.shipper_remark" placeholder="请输入发货方备注" style="width: 468px !important" />
+          </el-form-item>
+
+          <el-form-item label="收货人姓名:" prop="receiver_name">
+            <el-input v-model="form.receiver_name" placeholder="请输入收货人姓名" style="width: 468px !important" />
+          </el-form-item>
+
+          <el-form-item label="收货人手机:" prop="receiver_mobile">
+            <el-input v-model="form.receiver_mobile" placeholder="请输入收货人姓名" style="width: 468px !important" />
+          </el-form-item>
+
+          <el-form-item label="收货人地址:" prop="receiver_address">
+            <el-input v-model="form.receiver_address" placeholder="请输入收货人地址" style="width: 468px !important" />
+          </el-form-item>
+
+          <el-form-item label="报告附件:" prop="filename">
+            <file-upload v-model="form.filename" :limit="1" :file-type="['xlsx','xls']" />
           </el-form-item>
         </el-form>
         <div class="common-dialog-footer">
@@ -65,41 +96,66 @@
 </template>
 <script setup lang="ts">
 import { ref, reactive, toRefs } from 'vue';
-const emits = defineEmits(['close']);
+import { validatePhone } from '@/utils/validate';
+import { deepClone } from '@/utils';
+import { createWarehousingEntry } from '@/api/comprehensiveGuarantee/materialReserveManagement/InboundManagement';
+import { createOutboundOrder } from '@/api/comprehensiveGuarantee/materialReserveManagement/OutboundManagement';
+import { getWarehouseTree } from '@/api/comprehensiveGuarantee/materialReserveManagement/warehouseManagement';
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+const emits = defineEmits(['close','confirm']);
 const buttonLoading = ref(false);
 const eventFormRef = ref('');
 // 表单初始数据
 const initFormData = {
-  invoice_number: '', // 出库单号
-  warehouse_number: '', // 仓库名称
-  commodity_volume: '', // 出库单商品总体积
-  commodity_weight: '0', // 出库单商品总重量
-  shipped_volume: '', // 出库单发货总体积
-  shipped_weight: '', // 出库单发货总重量
-  commodity_number: '', // 出库单商品总数量
-  delivery_time: '', // 出库单发货时间
-  disaster_name: '', // 灾种名称
-  organization_name: '', // 调运机构名称
-  shipper_name: '', // 发货人姓名
-  shipper_phone: '' // 发货人手机
+  outbound_number: '123', // 出库单号
+  warehouse_id: '应急仓库1', // 仓库名称
+  total_volume: '256', // 出库单商品总体积
+  total_weight: '0', // 出库单商品总重量
+  total_shipping_volume: '256', // 出库单发货总体积
+  total_shipping_weight: '256', // 出库单发货总重量
+  total_quantity: '128', // 出库单商品总数量
+  shipping_time: '2025-1-30', // 出库单发货时间
+  disaster_type: '名称', // 灾种名称
+  dispatching_agency: '机构名称', // 调运机构名称
+  shipper_name: '小名', // 发货人姓名
+  shipper_mobile: '13899703675', // 发货人手机
+  shipper_address: '茂名市', //发货人地址
+  shipper_remark: '这是备注', //备注
+  receiver_name: '姓名', //收货人姓名
+  receiver_mobile: '13899703675', //收货人手机
+  receiver_address: '地址', //收货人地址
+  filename: [],  //附件
+
 };
 
 // 表单数据
 const data = reactive({
   form: { ...initFormData },
   rules: {
-    invoice_number: [{ required: true, message: '出库单号不能为空', trigger: 'blur' }],
-    warehouse_number: [{ required: true, message: '仓库名称不能为空', trigger: 'blur' }],
-    commodity_volume: [{ required: true, message: '出库单商品总体积不能为空', trigger: 'blur' }],
-    commodity_weight: [{ required: true, message: '出库单商品总重量不能为空', trigger: 'blur' }],
-    shipped_volume: [{ required: true, message: '出库单发货总体积不能为空', trigger: 'blur' }],
-    shipped_weight: [{ required: true, message: '出库单发货总重量不能为空', trigger: 'blur' }],
-    commodity_number: [{ required: true, message: '出库单商品总数量不能为空', trigger: 'blur' }],
-    delivery_time: [{ required: true, message: '出库单发货时间不能为空', trigger: 'blur' }],
-    disaster_name: [{ required: true, message: '灾种名称不能为空', trigger: 'blur' }],
-    organization_name: [{ required: true, message: '调运机构名称不能为空', trigger: 'blur' }],
+    outbound_number: [{ required: true, message: '出库单号不能为空', trigger: 'blur' }],
+    warehouse_id: [{ required: true, message: '仓库名称不能为空', trigger: 'blur' }],
+    total_volume: [{ required: true, message: '出库单商品总体积不能为空', trigger: 'blur' }],
+    total_weight: [{ required: true, message: '出库单商品总重量不能为空', trigger: 'blur' }],
+    total_shipping_volume: [{ required: true, message: '出库单发货总体积不能为空', trigger: 'blur' }],
+    total_shipping_weight: [{ required: true, message: '出库单发货总重量不能为空', trigger: 'blur' }],
+    total_quantity: [{ required: true, message: '出库单商品总数量不能为空', trigger: 'blur' }],
+    shipping_time: [{ required: true, message: '出库单发货时间不能为空', trigger: 'blur' }],
+    disaster_type: [{ required: true, message: '灾种名称不能为空', trigger: 'blur' }],
+    dispatching_agency: [{ required: true, message: '调运机构名称不能为空', trigger: 'blur' }],
     shipper_name: [{ required: true, message: '发货人姓名不能为空', trigger: 'blur' }],
-    shipper_phone: [{ required: true, message: '发货人手机不能为空', trigger: 'blur' }]
+    shipper_mobile:[
+      { required: true, message: '发货人手机不能为空', trigger: 'blur' },
+      { validator: validatePhone, message: '请输入正确格式的联系电话', trigger: 'blur' }
+    ],
+    shipper_address: [{ required: true, message: '发货人姓名不能为空', trigger: 'blur' }],
+    shipper_remark: [{ required: true, message: '备注不能为空', trigger: 'blur' }],
+    receiver_name: [{ required: true, message: '收货人姓名不能为空', trigger: 'blur' }],
+    receiver_mobile:[
+      { required: true, message: '收货人手机不能为空', trigger: 'blur' },
+      { validator: validatePhone, message: '请输入正确格式的联系电话', trigger: 'blur' }
+    ],
+    receiver_address: [{ required: true, message: '收货人地址不能为空', trigger: 'blur' }],
+    filename: [{ required: true, message: '附件不能为空', trigger: 'blur' }],
   }
 });
 
@@ -108,10 +164,30 @@ const { form, rules } = toRefs(data);
 const closeDialog = () => {
   emits('close');
 };
+
+const warehouseName = ref();
+const getWarehouseName = () => {
+  getWarehouseTree().then((res) => {
+    warehouseName.value = res.data;
+  })
+}
+const defaultProps = reactive({
+  children:'children',
+  label:'label',
+  disabled:(node) => {
+    return node.isWarehouse && !node.children;
+  }
+})
 const submitForm = async (formEl) => {
   if (!formEl) return;
   await formEl.validate((valid, fields) => {
     if (valid) {
+      const temp = deepClone(form.value);
+      temp.filename = form.value.filename[0].url;
+      createOutboundOrder(temp).then(() => {
+        proxy.$modal.msgSuccess('新增成功');
+        emits('confirm');
+      })
     } else {
       nextTick(() => {
         let isError = document.getElementsByClassName('is-error');
@@ -128,6 +204,9 @@ const submitForm = async (formEl) => {
     }
   });
 };
+onMounted(() => {
+  getWarehouseName();
+});
 </script>
 
 <style lang="scss" scoped>