ezhizao_zx hace 9 meses
padre
commit
b1713f512f

+ 16 - 0
src/api/business/taksStockLot.js

@@ -61,3 +61,19 @@ export function exportNoStartLot(data) {
     `未盘点批次_${new Date().getTime()}.xlsx`
   )
 }
+
+export function getLotsByOutsourceFormNo(data) {
+  return request({
+    url: baseUrl + "/business/taksStockLot/getLotsByOutsourceFormNo",
+    method: "post",
+    data: data,
+  });
+}
+
+export function batchTaksStockLot(data) {
+  return request({
+    url: baseUrl + "/business/taksStockLot/batchTaksStockLot",
+    method: "post",
+    data: data,
+  })
+}

+ 357 - 0
src/views/business/companyProductPackage/index.vue

@@ -0,0 +1,357 @@
+<template>
+  <div class="page-container row-container">
+
+    <section class="list-part-container" style="flex: 2">
+      <!-- 搜索区域 -->
+      <el-form class="list-search-container" :model="queryParams" ref="queryRef" :inline="true">
+        <el-form-item class="section-title" label="辅料管理" />
+
+        <!-- <el-form-item label="辅料名称:" prop="code">
+          <el-input v-model="queryParams.name" placeholder="请输入辅料名称" clearable @keyup.enter="handleQuery"
+            style="width: 160px;" />
+        </el-form-item> -->
+        <el-form-item label="辅料编号:" prop="accessoriesCode">
+          <el-input v-model="queryParams.accessoriesCode" placeholder="请输入辅料编号" clearable @keyup.enter="handleQuery" />
+        </el-form-item>
+        <el-form-item label="物料描述:" prop="description">
+          <el-input v-model="queryParams.description" placeholder="请输入物料描述" clearable @keyup.enter="handleQuery" />
+        </el-form-item>
+        <el-form-item>
+          <el-button type="info" icon="Search" @click="handleQuery">搜索</el-button>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" icon="Plus" @click="handleAdd(null)"
+            v-hasPermi="['business:accessories:add']">新增</el-button>
+          <el-button type="primary" icon="Download" @click="handleSync()"
+            v-hasPermi="['business:accessories:sync']">拉取p2数据</el-button>
+        </el-form-item>
+
+      </el-form>
+      <!-- 列表区域 -->
+      <div class="el-table-container">
+        <div class="el-table-inner-container">
+          <el-table v-loading="loading" :data="processList" border height="100%"
+            @selection-change="handleSelectionChange">
+            <el-table-column type="selection" width="55" align="center" />
+            <el-table-column type="index" label="行号" width="50" align="center" />
+            <el-table-column label="辅料编号" align="center" prop="accessoriesCode">
+              <template #default="scope">
+                <el-input v-if="scope.row.editStatus" placeholder="辅料编号" v-model="scope.row.accessoriesCode"
+                  style="width: 100%;" />
+                <div v-else>{{ scope.row.accessoriesCode }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="账号" align="center" prop="itype">
+              <template #default="scope">
+                <el-input v-if="scope.row.editStatus" placeholder="账号" v-model="scope.row.itype" style="width: 100%;" />
+                <div v-else>{{ scope.row.itype }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="主管部门" align="center" prop="cusven">
+              <template #default="scope">
+                <el-input v-if="scope.row.editStatus" placeholder="主管部门" v-model="scope.row.cusven"
+                  style="width: 100%;" />
+                <div v-else>{{ scope.row.cusven }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="物料描述" align="center" prop="description" width="200">
+              <template #default="scope">
+                <el-input v-if="scope.row.editStatus" placeholder="物料描述" v-model="scope.row.description"
+                  style="width: 100%;" />
+                <div v-else>{{ scope.row.description }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="采购单位" align="center" prop="unit">
+              <template #default="scope">
+                <el-input v-if="scope.row.editStatus" placeholder="采购单位" v-model="scope.row.unit"
+                  style="width: 100%;" />
+                <div v-else>{{ scope.row.unit }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="换算单位" align="center" prop="pouom">
+              <template #default="scope">
+                <el-input v-if="scope.row.editStatus" placeholder="换算单位" v-model="scope.row.pouom"
+                  style="width: 100%;" />
+                <div v-else>{{ scope.row.pouom }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="环保大类码" align="center" prop="htype">
+              <template #default="scope">
+                <el-input v-if="scope.row.editStatus" placeholder="环保大类码" v-model="scope.row.htype"
+                  style="width: 100%;" />
+                <div v-else>{{ scope.row.htype }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="环保大类简称" align="center" prop="htyna" width="120">
+              <template #default="scope">
+                <el-input v-if="scope.row.editStatus" placeholder="环保大类简称" v-model="scope.row.htyna"
+                  style="width: 100%;" />
+                <div v-else>{{ scope.row.htyna }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="月用量" align="center" prop="monthUseAmount">
+              <template #default="scope">
+                <el-input-number v-if="scope.row.editStatus" placeholder="月用量" v-model="scope.row.monthUseAmount"
+                  style="width: 100%;" :step="0.01" step-strictly :controls="false" />
+                <div v-else>{{ scope.row.monthUseAmount }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="类别" align="center" prop="ltype">
+              <template #default="scope">
+                <el-input v-if="scope.row.editStatus" placeholder="类别" v-model="scope.row.ltype" style="width: 100%;" />
+                <div v-else>{{ scope.row.ltype }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="交货天数" align="center" prop="deliveryDate">
+              <template #default="scope">
+                <el-input-number v-if="scope.row.editStatus" placeholder="交货天数" v-model="scope.row.deliveryDate"
+                  style="width: 100%;" :step="1" step-strictly :controls="false" />
+                <div v-else>{{ scope.row.deliveryDate }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="安全库存量" align="center" prop="safetyStock">
+              <template #default="scope">
+                <el-input-number v-if="scope.row.editStatus" placeholder="安全库存量" v-model="scope.row.safetyStock"
+                  style="width: 100%;" :step="0.01" step-strictly :controls="false" />
+                <div v-else>{{ scope.row.safetyStock }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="单价" align="center" prop="price">
+              <template #default="scope">
+                <el-input-number v-if="scope.row.editStatus" placeholder="单价" v-model="scope.row.price"
+                  style="width: 100%;" :step="0.00000001" step-strictly :controls="false" />
+                <div v-else>{{ scope.row.price }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="状态" align="center" prop="status">
+              <template #default="scope">
+                <el-input v-if="scope.row.editStatus" placeholder="状态" v-model="scope.row.status"
+                  style="width: 100%;" />
+                <div v-else>{{ scope.row.status }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="环保标志" align="center" prop="ecoMark">
+              <template #default="scope">
+                <el-input v-if="scope.row.editStatus" placeholder="环保标志" v-model="scope.row.ecoMark"
+                  style="width: 100%;" />
+                <div v-else>{{ scope.row.ecoMark }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="单位换算比例" align="center" prop="conversionRatio" width="120">
+              <template #default="scope">
+                <el-input-number v-if="scope.row.editStatus" placeholder="单位换算比例" v-model="scope.row.conversionRatio"
+                  style="width: 100%;" :step="0.0001" step-strictly :controls="false" />
+                <div v-else>{{ scope.row.conversionRatio }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="包装箱尺寸" align="center" prop="packageStandard">
+              <template #default="scope">
+                <el-input v-if="scope.row.editStatus" placeholder="包装箱尺寸" v-model="scope.row.packageStandard"
+                  style="width: 100%;" />
+                <div v-else>{{ scope.row.packageStandard }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="美捷原系统物料编码" align="center" prop="ypart">
+              <template #default="scope">
+                <el-input v-if="scope.row.editStatus" placeholder="美捷原系统物料编码" v-model="scope.row.ypart"
+                  style="width: 100%;" />
+                <div v-else>{{ scope.row.ypart }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="当月加权平均单价" align="center" prop="monthAvgPrice">
+              <template #default="scope">
+                <el-input-number v-if="scope.row.editStatus" placeholder="当月加权平均单价" v-model="scope.row.monthAvgPrice"
+                  style="width: 100%;" :step="0.000001" step-strictly :controls="false" />
+                <div v-else>{{ scope.row.monthAvgPrice }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="费用类别" align="center" prop="ftype">
+              <template #default="scope">
+                <el-input v-if="scope.row.editStatus" placeholder="费用类别" v-model="scope.row.ftype"
+                  style="width: 100%;" />
+                <div v-else>{{ scope.row.ftype }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="领用计费形式" align="center" prop="ktype">
+              <template #default="scope">
+                <el-input v-if="scope.row.editStatus" placeholder="领用计费形式" v-model="scope.row.ktype"
+                  style="width: 100%;" />
+                <div v-else>{{ scope.row.ktype }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="标准寿命天数" align="center" prop="ktyts">
+              <template #default="scope">
+                <el-input-number v-if="scope.row.editStatus" placeholder="标准寿命天数" v-model="scope.row.ktyts"
+                  style="width: 100%;" :step="1" step-strictly :controls="false" />
+                <div v-else>{{ scope.row.ktyts }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="备注" align="center" prop="remark">
+              <template #default="scope">
+                <el-input v-if="scope.row.editStatus" placeholder="备注" v-model="scope.row.remark"
+                  style="width: 100%;" />
+                <div v-else>{{ scope.row.remark }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="120">
+              <template #default="scope">
+                <el-button v-if="!scope.row.editStatus" link type="warning" size="small" icon="Edit"
+                  @click="handleUpdate(scope.row)" v-hasPermi="['business:accessories:edit']">修改</el-button>
+                <el-button v-else link type="success" size="small" icon="Check"
+                  @click="handleSave(scope.row)">保存</el-button>
+                <el-button v-if="!scope.row.editStatus" link type="danger" size="small" icon="Delete"
+                  @click="handleDelete(scope.row, scope.$index)"
+                  v-hasPermi="['business:accessories:remove']">删除</el-button>
+                <el-button v-else link type="info" size="small" icon="Close" @click="handleCancel(scope.row)"
+                  v-hasPermi="['business:accessories:remove']">取消</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+      </div>
+      <pagination :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
+        @pagination="getList" />
+    </section>
+  </div>
+</template>
+
+<script setup name="Equipment">
+import { listAccessories, delAccessories, addAccessories, updateAccessories, getP2Accessories } from "@/api/business/accessories";
+const { proxy } = getCurrentInstance();
+const processList = ref([]);
+const loading = ref(true);
+const ids = ref([])
+const single = ref(true);
+const multiple = ref(true);
+const total = ref(0);
+/** 查询对象 */
+const queryParams = ref({
+  pageNum: 1,
+  pageSize: 10,
+  code: null,
+  name: null,
+  status: null,
+})
+
+/***********************  方法区  ****************************/
+
+/** 查询检查类别列表 */
+function getList() {
+  loading.value = true;
+  listAccessories(queryParams.value).then(response => {
+    processList.value = response.rows;
+    total.value = response.total;
+    loading.value = false;
+  });
+}
+
+/** 搜索按钮操作 */
+function handleQuery() {
+  queryParams.value.pageNum = 1;
+  getList();
+}
+
+
+// 多选框选中数据
+function handleSelectionChange(selection) {
+  ids.value = selection.map(item => item.id);
+  single.value = selection.length != 1;
+  multiple.value = !selection.length;
+}
+
+/** 新增按钮操作 */
+function handleAdd() {
+  processList.value.push({ editStatus: true })
+}
+
+/** 修改按钮操作 */
+function handleUpdate(row) {
+  row.editStatus = true
+}
+
+
+/** 删除按钮操作 */
+function handleDelete(row, index) {
+  const _ids = row.id || ids.value;
+  if (row.id == null) {
+    console.log(index)
+    processList.value.splice(index, 1)
+    return
+  }
+  proxy.$modal.confirm('是否确认删除选中的数据项?').then(function () {
+    return delAccessories(_ids);
+  }).then(() => {
+    getList();
+    proxy.$modal.msgSuccess("删除成功!");
+  }).catch(() => { });
+}
+
+function handleSave(row) {
+  // 保存判断
+  if (row.accessoriesCode == null || row.accessoriesCode == '') {
+    proxy.$modal.msgError("请输入辅料编码!")
+    return
+  }
+  if (row.itype == null || row.itype == '') {
+    proxy.$modal.msgError("请输入账号")
+    return
+  }
+  if (row.ltype == null || row.ltype == '') {
+    proxy.$modal.msgError("请输入辅料类别")
+    return
+  }
+  loading.value = true;
+  if (row.id == null) {
+    addAccessories(row).then(afterSave)
+  } else {
+    updateAccessories(row).then(afterSave)
+  }
+}
+
+function afterSave(res) {
+  if (res.code === 200) {
+    getList()
+    proxy.$modal.msgSuccess("保存成功!")
+  } else {
+    proxy.$modal.msgError("保存失败!")
+  }
+}
+
+function handleCancel(row) {
+  row.editStatus = false
+}
+
+function handleSync() {
+  // pullP2Accessories
+  loading.value = true;
+  getP2Accessories().then(res => {
+    if (res.code === 200) {
+      getList()
+      proxy.$modal.msgSuccess("拉取成功")
+    } else {
+      proxy.$modal.msgError("拉取失败")
+    }
+  })
+}
+
+getList();
+</script>
+<style scoped>
+:deep(.el-tree-node__label) {
+  font-size: 14px !important;
+  display: inline-block;
+  width: 100%;
+}
+
+:deep(.el-tree-node__content) {
+  height: 40px;
+  border-bottom: 1px solid #ebeef5;
+  padding: 8px 0;
+  line-height: 23px;
+}
+
+.move-handle {
+  cursor: move;
+  background-color: #eee;
+}
+</style>

+ 224 - 0
src/views/business/inventoryCheck/OutsourceCheckDialog.vue

@@ -0,0 +1,224 @@
+<template>
+  <el-drawer title="外协单信息" :with-header="false" v-model="visible" direction="rtl" size="100%">
+    <div class="form-container column-container">
+      <div class="form-btns-container">
+        <span class="title-label">
+          <el-icon>
+            <Document />
+          </el-icon>
+          <span>盘点批次</span>
+        </span>
+
+        <div class="close-btn" @click="cancel">
+          <i class="fa fa-times" aria-hidden="true" />
+          <!-- <span>关闭</span> -->
+        </div>
+      </div>
+      <el-form class="list-search-container" :model="queryParams" ref="queryRef" :inline="true"
+        style="margin-right: 0px">
+        <el-form-item class="section-title" label="外协盘点批次列表" />
+        <el-form-item label="外协单号:">
+          <el-input placeholder="请输入外协单号" v-model.trim="queryParams.outsourceFormNo"
+            @keydown.enter.prevent="submitQuery" clearable style="width: 130px" />
+        </el-form-item>
+        <el-form-item style="margin-left: 0">
+          <el-button type="info" icon="Search" @click="submitQuery">提交
+          </el-button>
+          <el-button type="primary" icon="Check" @click="handleTaksLot">一键盘点
+          </el-button>
+        </el-form-item>
+      </el-form>
+      <div class="el-table-container">
+        <div class="el-table-inner-container">
+          <el-table v-loading="loading" :data="dataList" size="small" border height="100%">
+            <el-table-column label="行号" type="index" align="center" width="48" />
+            <el-table-column label="批次号" prop="lotCode" align="center" width="120px">
+              <template #default="scope">
+                <el-button link type="primary" @click="handleColumnClick(scope.row.lotCode)"><span>{{ scope.row.lotCode
+                    }}</span></el-button>
+              </template>
+            </el-table-column>
+            <el-table-column label="产品描述" align="center" prop="productDescription" />
+            <el-table-column label="箱号" align="center" prop="carrierName" width="120" />
+            <el-table-column label="生产状态" prop="isProductStatus" width="90" align="center">
+              <template #default="scope">
+                <dict-tag :options="inventory_production_status" :value="scope.row.isProductStatus" />
+              </template>
+            </el-table-column>
+            <el-table-column label="工段" align="center" prop="deptName" width="100" />
+            <el-table-column label="工序" align="center" prop="processAlias" width="110" />
+            <el-table-column label="投入数" align="center" prop="prodNum" width="96" />
+            <el-table-column label="盘点数量" align="center" prop="taksStockNum" width="96">
+              <template #default="scope">
+                <el-input-number v-if="scope.row.editStatus" v-model="scope.row.taksStockNum" controls-position="right"
+                  style="width: 100px" :min="0" :precision="0" :max="99999"
+                  @input="(val) => { handleChangeTaksStockNum(val, scope.row, scope.$index) }" />
+                <div v-else>{{ scope.row.taksStockNum }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column label="外协单号" align="center" prop="outsourceFormNo" width="110" />
+            <el-table-column label="标识" width="300" align="center">
+              <template #default="scope">
+                <el-tag v-if="scope.row.isWaste == 1" class="spacing" type="danger">{{ "批废" }}</el-tag>
+                <el-tag v-if="scope.row.isAmend == 1" class="spacing" type="danger">{{ "工艺修改" }}</el-tag>
+                <el-tag v-if="scope.row.isWasteRecycling == 1" class="spacing" type="primary">{{ "废品回用" }}</el-tag>
+              </template>
+            </el-table-column>
+            <el-table-column label="盘点状态" prop="isTaksStock" width="200" align="center">
+              <template #default="scope">
+                <el-select v-model="scope.row.isTaksStock" placeholder="请选择盘点状态" style="width: 160px"
+                  v-if="scope.row.editStatus"
+                  @change="(val) => { handleChangeTaksStock(val, scope.row, scope.$index) }">
+                  <el-option v-for="dict in is_taks_stock" :key="dict.value" :label="dict.label"
+                    :value="dict.value"></el-option>
+                </el-select>
+                <div v-else>
+                  <dict-tag :options="is_taks_stock" :value="scope.row.isTaksStock" />
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column label="操作" width="160" align="center" v-if="detailInfo.status != 2">
+              <template #default="scope">
+                <el-button link icon="Check" v-if="scope.row.editStatus" type="success"
+                  @click="handleSave(scope.row, scope.$index)">保存</el-button>
+                <el-button link icon="Edit" v-else type="warning" @click="handleEdit(scope.row, scope.$index)"
+                  v-hasPermi="['business:inventoryCheck:editDetail']">编辑</el-button>
+                <el-button link icon="Close" v-if="scope.row.editStatus" type="danger"
+                  @click="handleCancel(scope.row, scope.$index)">取消</el-button>
+                <el-button link icon="Delete" v-else type="danger" @click="handleDelete(scope.row, scope.$index)"
+                  v-hasPermi="['business:inventoryCheck:deleteDetail']">删除</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+      </div>
+    </div>
+  </el-drawer>
+</template>
+<script setup>
+import {
+  listTaksStockLot, updateTaksStockLot, updateNoStartLot, exportNoStartLot, getLotsByOutsourceFormNo, batchTaksStockLot
+} from "@/api/business/taksStockLot";
+import { getDeptList } from "@/api/business/planDetailSubDetail.js";
+import { ref } from "vue";
+import router from "@/router";
+const { proxy } = getCurrentInstance();
+/** 字典 */
+const { is_identification } = proxy.useDict("is_identification");
+const { is_taks_stock } = proxy.useDict("is_taks_stock");
+const { inventory_production_status } = proxy.useDict("inventory_production_status");
+
+/** 表单抽屉 页变量 */
+const loading = ref(false);
+const visible = ref(false);
+const detailInfo = ref({});
+const total = ref(0)
+const isDispatch = ref(false)
+const deptList = ref([])
+const dataList = ref([])
+/** 查询对象 */
+const queryParams = ref({
+  pageNum: 1,
+  pageSize: 50,
+  productDescription: "",
+  lotCode: "",
+  deptId: null,
+  flags: null,
+  isTaksStock: null
+});
+
+/****************************  方法区  ****************************/
+/** 打开抽屉 */
+const open = (row) => {
+  visible.value = true;
+  reset();
+  detailInfo.value = proxy.deepClone(row);
+}
+function handleEdit(row, index) {
+  row.editStatus = true
+  console.log(row);
+  if (row.isTaksStock != 1) {
+    row.taksStockNum = row.prodNum
+  }
+  console.log(row)
+}
+//一键盘点
+function handleTaksLot() {
+  batchTaksStockLot(dataList.value).then(res => {
+    if (res.code == 200) {
+      proxy.$modal.msgSuccess(res.msg);
+      dataList.value = []
+    }
+  })
+}
+function handleSave(row, index) {
+  updateTaksStockLot(row).then(res => {
+    if (res.code == 200) {
+      proxy.$modal.msgSuccess("保存成功");
+      console.log(res)
+      dataList.value[index] = { ...res.data, editStatus: false }
+    }
+  })
+}
+/** 打开批次详情页 */
+// function handleColumnClick(lotCode) {
+//   router.push({ path: "/reviseBath/lotFormParticulars/" + lotCode });
+// }
+function handleColumnClick(lotCode) {
+  // 拼接 URL
+  const url = "/reviseBath/lotFormParticulars/" + lotCode;
+  // 在新标签页打开 URL
+  window.open(url, '_blank');
+}
+function handleChangeTaksStock(value, row, index) {
+  if (value == 0) {
+    dataList.value[index].taksStockNum = 0
+  }
+}
+function handleChangeTaksStockNum(value, row, index) {
+  if (value != 0) {
+    dataList.value[index].isTaksStock = "1"
+  }
+}
+function handleCancel(row, index) {
+  dataList.value[index].editStatus = false
+}
+
+function handleDelete(row, index) {
+  dataList.value.splice(index, 1)
+}
+
+function submitQuery() {
+  console.log(detailInfo.value)
+  getLotsByOutsourceFormNo({ outsourceFormNo: queryParams.value.outsourceFormNo, takeStockPeriodId: detailInfo.value.id }).then(res => {
+    if (res.code === 200) {
+      dataList.value.push(...res.data.filter(e => !dataList.value.some(t => t.id === e.id)))
+    }
+  })
+}
+/** 取消按钮 */
+const cancel = () => {
+  visible.value = false;
+  reset();
+};
+
+/** 表单重置 */
+const reset = () => {
+  queryParams.value = {
+    pageNum: 1,
+    pageSize: 50,
+    productDescription: "",
+    lotCode: "",
+    deptId: null,
+    flags: null,
+    isTaksStock: null
+  };
+  dataList.value = [];
+};
+
+
+/** 暴露给父组件的方法 */
+defineExpose({
+  open,
+});
+</script>

+ 12 - 0
src/views/business/inventoryCheck/form.vue

@@ -55,6 +55,8 @@
           <el-button :disabled="queryParams.deptId == null || queryParams.deptId == '0'" type="primary" icon="Check"
             @click="handleTaksLot">一键盘点未开始批次
           </el-button>
+          <el-button type="primary" icon="List" @click="showOutsourceCheckDialog">外协发出单盘点
+          </el-button>
         </el-form-item>
       </el-form>
       <div class="el-table-container">
@@ -85,6 +87,7 @@
                 <div v-else>{{ scope.row.taksStockNum }}</div>
               </template>
             </el-table-column>
+            <el-table-column label="外协单号" align="center" prop="outsourceFormNo" width="110" />
             <el-table-column label="标识" width="300" align="center">
               <template #default="scope">
                 <el-tag v-if="scope.row.isWaste == 1" class="spacing" type="danger">{{ "批废" }}</el-tag>
@@ -123,6 +126,7 @@
       <paginationMax v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
         v-model:limit="queryParams.pageSize" @pagination="getList" />
     </div>
+    <OutsourceCheckDialog ref="outsourceCheckDialogRef" />
   </el-drawer>
 </template>
 <script setup>
@@ -132,12 +136,16 @@ import {
 import { getDeptList } from "@/api/business/planDetailSubDetail.js";
 import { ref } from "vue";
 import router from "@/router";
+import OutsourceCheckDialog from "./OutsourceCheckDialog.vue";
 const { proxy } = getCurrentInstance();
 /** 字典 */
 const { is_identification } = proxy.useDict("is_identification");
 const { is_taks_stock } = proxy.useDict("is_taks_stock");
 const { inventory_production_status } = proxy.useDict("inventory_production_status");
 
+// 组件
+const outsourceCheckDialogRef = ref(null)
+
 /** 表单抽屉 页变量 */
 const loading = ref(false);
 const visible = ref(false);
@@ -263,6 +271,10 @@ function handleExport() {
   exportNoStartLot({ takeStockPeriodId: queryParams.value.takeStockPeriodId, isTaksStock: 0 })
 }
 
+function showOutsourceCheckDialog() {
+  outsourceCheckDialogRef.value.open(detailInfo.value)
+}
+
 /** 暴露给父组件的方法 */
 defineExpose({
   open,