新疆大罗素
1.库存管理页面、采购台账新增/编辑弹窗、入库记录页面添加库位字段
已修改4个文件
166 ■■■■■ 文件已修改
src/views/inventoryManagement/stockManagement/BatchNoQtyDetail.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/stockManagement/New.vue 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/stockManagement/Record.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/procurementManagement/procurementLedger/index.vue 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/stockManagement/BatchNoQtyDetail.vue
@@ -24,6 +24,7 @@
          <el-table-column label="规格型号" prop="model" show-overflow-tooltip />
          <el-table-column label="单位" prop="unit" show-overflow-tooltip />
          <el-table-column label="批号" prop="batchNo" show-overflow-tooltip />
          <el-table-column label="库位" prop="warehouse" show-overflow-tooltip />
          <el-table-column
            label="合格库存数量"
            prop="qualifiedQuantity"
src/views/inventoryManagement/stockManagement/New.vue
@@ -123,6 +123,32 @@
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="选择设备"
                          prop="deviceId">
              <el-select v-model="formState.deviceId"
                         placeholder="请选择设备"
                         filterable
                         clearable
                         style="width: 100%"
                         @change="handleDeviceChange">
                <el-option v-for="device in iotDeviceList"
                           :key="device.id"
                           :label="device.deviceName"
                           :value="device.id" />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="库位"
                          prop="storageLocation">
              <el-input v-model="formState.storageLocation"
                        placeholder="选择设备后自动获取"
                        disabled />
            </el-form-item>
          </el-col>
        </el-row>
        <el-form-item label="备注"
                      prop="remark">
          <el-input v-model="formState.remark"
@@ -146,10 +172,11 @@
</template>
<script setup>
  import { ref, computed, watch, getCurrentInstance } from "vue";
  import { ref, computed, watch, getCurrentInstance, onMounted } from "vue";
  import ProductSelectDialog from "@/views/basicData/product/ProductSelectDialog.vue";
  import { addStockInRecordOnly } from "@/api/inventoryManagement/stockInventory.js";
  import { createStockUnInventory } from "@/api/inventoryManagement/stockUninventory.js";
  import { getLedgerPage } from "@/api/equipmentManagement/ledger.js";
  const props = defineProps({
    visible: {
@@ -180,7 +207,12 @@
    remark: "",
    needInspect: false,
    inspectType: 0,
    deviceId: "",
    storageLocation: "",
  });
  // IoT设备列表
  const iotDeviceList = ref([]);
  const isShow = computed({
    get() {
@@ -221,6 +253,8 @@
      remark: "",
      needInspect: false,
      inspectType: 0,
      deviceId: "",
      storageLocation: "",
    };
    isShow.value = false;
  };
@@ -240,6 +274,36 @@
    }
  };
  // 获取IoT设备列表
  const getIotDeviceList = async () => {
    try {
      const res = await getLedgerPage({
        isIotDevice: 1,
        page: 1,
        size: 999,
      });
      if (res.data && res.data.records) {
        iotDeviceList.value = res.data.records;
      }
    } catch (error) {
      console.error("获取IoT设备列表失败:", error);
    }
  };
  // 设备选择变更时,自动填充库位
  const handleDeviceChange = (deviceId) => {
    const device = iotDeviceList.value.find(d => d.id === deviceId);
    if (device) {
      formState.value.storageLocation = device.storageLocation || '';
    } else {
      formState.value.storageLocation = '';
    }
  };
  onMounted(() => {
    getIotDeviceList();
  });
  const handleSubmit = () => {
    proxy.$refs["formRef"].validate(valid => {
      if (valid) {
src/views/inventoryManagement/stockManagement/Record.vue
@@ -87,6 +87,9 @@
        <el-table-column label="批号"
                         prop="batchNo"
                         show-overflow-tooltip />
        <el-table-column label="库位"
                         prop="warehouse"
                         show-overflow-tooltip />
        <el-table-column label="物联设备"
                         prop="warehouse"
                         show-overflow-tooltip
src/views/procurementManagement/procurementLedger/index.vue
@@ -587,6 +587,35 @@
              </el-tag>
            </template>
          </el-table-column>
          <el-table-column label="选择设备"
                           prop="deviceId"
                           width="150">
            <template #default="scope">
              <span v-if="scope.row.productType === 2">--</span>
              <el-select v-else
                         v-model="scope.row.deviceId"
                         placeholder="请选择设备"
                         filterable
                         clearable
                         @change="handleDeviceChange(scope.row, scope.$index)">
                <el-option v-for="device in iotDeviceList"
                           :key="device.id"
                           :label="device.deviceName"
                           :value="device.id" />
              </el-select>
            </template>
          </el-table-column>
          <el-table-column label="库位"
                           prop="storageLocation"
                           width="120">
            <template #default="scope">
              <span v-if="scope.row.productType === 2">--</span>
              <el-input v-else
                        v-model="scope.row.storageLocation"
                        placeholder="自动获取"
                        disabled />
            </template>
          </el-table-column>
          <el-table-column label="入库审核状态"
                           prop="stockInApprovalStatus"
                           width="120">
@@ -853,6 +882,32 @@
        </el-row>
        <el-row :gutter="30" v-if="productForm.productType !== 2">
          <el-col :span="12">
            <el-form-item label="选择设备:"
                          prop="deviceId">
              <el-select v-model="productForm.deviceId"
                         placeholder="请选择设备"
                         filterable
                         clearable
                         style="width: 100%"
                         @change="handleProductDeviceChange">
                <el-option v-for="device in iotDeviceList"
                           :key="device.id"
                           :label="device.deviceName"
                           :value="device.id" />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="库位:"
                          prop="storageLocation">
              <el-input v-model="productForm.storageLocation"
                        placeholder="选择设备后自动获取"
                        disabled />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30" v-if="productForm.productType !== 2">
          <el-col :span="12">
            <el-form-item label="是否质检:"
                          prop="isChecked">
              <el-radio-group v-model="productForm.isChecked">
@@ -950,6 +1005,7 @@
  const salesContractList = ref([]);
  const supplierList = ref([]);
  const contractList = ref([]); // 供应商合同列表
  const iotDeviceList = ref([]); // IoT设备列表
  const contractFileDialogVisible = ref(false);
  const contractFileList = ref([]);
  const tableLoading = ref(false);
@@ -965,6 +1021,7 @@
  import { modelList, productTreeList } from "@/api/basicData/product.js";
  import { getSparePartsList } from "@/api/equipmentManagement/spareParts.js";
  import { getSupplierContractList, getSupplierContractFilesByNo } from "@/api/basicData/supplierContract.js";
  import { getLedgerPage } from "@/api/equipmentManagement/ledger.js";
  import dayjs from "dayjs";
  import FileUpload from "@/components/AttachmentUpload/file/index.vue";
@@ -1185,6 +1242,8 @@
      invoiceType: "",
      warnNum: "",
      isChecked: false,
      deviceId: "",
      storageLocation: "",
    },
    productRules: {
      productId: [{ required: true, message: "请选择", trigger: "change" }],
@@ -2284,6 +2343,42 @@
    }
  };
  // 获取IoT设备列表
  const getIotDeviceList = async () => {
    try {
      const res = await getLedgerPage({
        isIotDevice: 1,
        page: 1,
        size: 999,
      });
      if (res.data && res.data.records) {
        iotDeviceList.value = res.data.records;
      }
    } catch (error) {
      console.error("获取IoT设备列表失败:", error);
    }
  };
  // 设备选择变更时,自动填充库位
  const handleDeviceChange = (row, index) => {
    const device = iotDeviceList.value.find(d => d.id === row.deviceId);
    if (device) {
      row.storageLocation = device.storageLocation || '';
    } else {
      row.storageLocation = '';
    }
  };
  // 产品弹窗中设备选择变更时,自动填充库位
  const handleProductDeviceChange = (deviceId) => {
    const device = iotDeviceList.value.find(d => d.id === deviceId);
    if (device) {
      productForm.value.storageLocation = device.storageLocation || '';
    } else {
      productForm.value.storageLocation = '';
    }
  };
  // 格式化文件大小
  const formatFileSize = (bytes) => {
    if (!bytes) return '0 B';
@@ -2296,6 +2391,7 @@
  onMounted(() => {
    getList();
    getTemplateList();
    getIotDeviceList();
  });
</script>