张诺
10 小时以前 f624d2f62d1e2e6c61dffd79eb728d41a0128c72
src/views/productionManagement/workOrder/index.vue
@@ -337,10 +337,8 @@
            </el-button>
          </el-col>
        </el-row>
        <el-table :data="scheduleRows" border style="width: 100%" v-loading="scheduleLoading">
          <el-table-column type="index" label="序号" width="70" align="center" />
          <el-table-column type="index" label="序号" width="70" align="center" :index="indexMethod" />
          <el-table-column label="本次上机机台" min-width="220">
            <template #default="{ row }">
              <el-select
@@ -441,6 +439,7 @@
import {ElMessageBox, ElMessage} from "element-plus";
import Pagination from "@/components/PIMTable/Pagination.vue";
import dayjs from "dayjs";
import { processList } from '@/api/productionManagement/productionProcess.js'
import {
  productWorkOrderPage,
  updateProductWorkOrder,
@@ -672,8 +671,7 @@
      return;
    }
    const rows = buildScheduleRowsFromRecords(records);
    const rows = records.map(record => mapMachineRecordToScheduleRow(record));
    scheduleRows.value = rows.length > 0 ? rows : [createScheduleRow({})];
  } catch (error) {
    console.error("获取排产记录失败", error);
@@ -814,6 +812,10 @@
  }
  return payload;
};
const indexMethod = (index) => {
  return (schedulePage.current - 1) * schedulePage.size + index + 1;
};
const mapMachineRecordToScheduleRow = (record) => {
@@ -1008,15 +1010,20 @@
          showReportDialog(row);
        },
        // 用户当前id
        disabled: row => row.completeQuantity === row.planQuantity ||
        disabled: row => row.completeQuantity !==0 ||
            !isCurrentUserInUserIds(row)
      },
      {
        name: "生产排产",
        clickFun: row => {
          if (!row.canSchedule) {
            ElMessage.warning("当前用户不在该工序人员中,不能生产排产");
            return;
          }
          openScheduleDialog(row);
        },
      },
        disabled: row => !row.canSchedule
      }
      // {
      //   name:"审核",
      //   color: "#f56c6c",
@@ -1260,18 +1267,27 @@
  page.size = obj.limit;
  getList();
};
const getList = () => {
const getList = async () => {
  tableLoading.value = true;
  const params = {...searchForm.value, ...page};
  productWorkOrderPage(params)
      .then(res => {
        tableLoading.value = false;
        tableData.value = res.data.records;
        page.total = res.data.total;
      })
      .catch(() => {
        tableLoading.value = false;
      });
  try {
    await ensureCurrentUser();
    await processLists();
    const params = { ...searchForm.value, ...page };
    const res = await productWorkOrderPage(params);
    const records = Array.isArray(res?.data?.records) ? res.data.records : [];
    tableData.value = records.map(row => ({
      ...row,
      canSchedule: canScheduleByWorkOrderNo(row)
    }));
    page.total = res?.data?.total || 0;
  } finally {
    tableLoading.value = false;
  }
};
// 下载并打印工单流转卡(文件流)
@@ -1520,9 +1536,44 @@
  }
}
onMounted(() => {
  ensureCurrentUser();
  getList();
const processData = ref([]);
// 查询所有工序
const processLists = async () => {
  console.log(processData.value)
  if (processData.value.length > 0) {
    return processData.value;
  }
  const res = await processList();
  processData.value = Array.isArray(res?.data) ? res.data : [];
  return processData.value;
};
// 判断当前用户是否能排产
const canScheduleByWorkOrderNo = (row) => {
  if (!row) return false;
  const uid = String(currentUserId.value || "");
  if (!uid) return false;
  const currentProcess = processData.value.find(item =>
      String(item.id) === String(row.processId)
  );
  if (!currentProcess) return false;
  const ids = normalizeArray(currentProcess.userIds)
      .map(id => String(id).trim())
      .filter(Boolean);
  return ids.includes(uid);
};
onMounted(async () => {
  await ensureCurrentUser();
  await processLists();
  await getList();
  getUserList();
  getDeviceList();
});