yyb
7 天以前 425b026b723e3bf23b5945676da474d5f599d45f
生产排产: 增加报工人和交接人选择功能
已修改1个文件
75 ■■■■■ 文件已修改
src/views/productionManagement/workOrderEdit/index.vue 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/productionManagement/workOrderEdit/index.vue
@@ -52,6 +52,28 @@
                          value-format="YYYY-MM-DD"
                          style="width: 300px" />
        </el-form-item>
        <el-form-item label="报工人">
          <el-select v-model="editrow.workerId"
                     placeholder="请选择"
                     style="width: 100%"
                     @change="handleWorkerChange">
            <el-option v-for="item in userOptions"
                       :key="item.userId"
                       :label="item.nickName"
                       :value="item.userId" />
          </el-select>
        </el-form-item>
        <el-form-item label="交接人">
          <el-select v-model="editrow.handoverUserId"
                     placeholder="请选择"
                     style="width: 100%"
                     @change="handleHandoverUserChange">
            <el-option v-for="item in userOptions"
                       :key="item.userId"
                       :label="item.nickName"
                       :value="item.userId" />
          </el-select>
        </el-form-item>
      </el-form>
      <template #footer>
        <span class="dialog-footer">
@@ -73,6 +95,8 @@
    updateProductWorkOrder,
  } from "@/api/productionManagement/workOrder.js";
  import { getCurrentInstance, reactive, toRefs } from "vue";
import { userListAll } from '@/api/publicApi'
  const { proxy } = getCurrentInstance();
  const tableColumn = ref([
@@ -146,6 +170,18 @@
      width: "140",
    },
    {
      label: "报工人",
      prop: "workerName",
      width: "120",
      formatter: row => row?.workerName || (row?.workerId ? row.workerId : "-"),
    },
    {
      label: "交接人",
      prop: "handoverUserName",
      width: "120",
      formatter: row => row?.handoverUserName || (row?.handoverUserId ? row.handoverUserId : "-"),
    },
    {
      label: "操作",
      width: "100",
      align: "center",
@@ -153,7 +189,7 @@
      fixed: "right",
      operation: [
        {
          name: "计划时间",
          name: "指派",
          clickFun: row => {
            handleEdit(row);
          },
@@ -193,6 +229,36 @@
    return "#67c23a";
  };
  const userOptions = ref([]);
  const loadUserOptions = async () => {
    try {
      const res = await userListAll();
      userOptions.value = res.data;
    } catch (error) {
      console.error("获取用户列表失败", error);
    }
  };
  const handleWorkerChange = val => {
    const user = (userOptions.value || []).find(item => item.userId === val);
    if (editrow.value) {
      editrow.value.workerName = user ? (user.nickName || user.userName || "") : "";
    }
  };
  const handleHandoverUserChange = val => {
    const user = (userOptions.value || []).find(item => item.userId === val);
    if (editrow.value) {
      editrow.value.handoverUserName = user ? (user.nickName || user.userName || "") : "";
    }
  };
  const normalizeNullableUserId = value => {
    if (value === undefined || value === null || value === "") return null;
    const n = Number(value);
    if (!Number.isFinite(n) || n <= 0) return null;
    return n;
  };
  // 查询列表
  /** 搜索按钮操作 */
  const handleQuery = () => {
@@ -220,10 +286,16 @@
  const handleEdit = row => {
    editrow.value = JSON.parse(JSON.stringify(row));
    editrow.value.workerId = normalizeNullableUserId(editrow.value.workerId);
    editrow.value.handoverUserId = normalizeNullableUserId(editrow.value.handoverUserId);
    editDialogVisible.value = true;
  };
  const handleUpdate = () => {
    editrow.value.workerId = normalizeNullableUserId(editrow.value.workerId);
    editrow.value.handoverUserId = normalizeNullableUserId(editrow.value.handoverUserId);
    if (!editrow.value.workerId) editrow.value.workerName = null;
    if (!editrow.value.handoverUserId) editrow.value.handoverUserName = null;
    updateProductWorkOrder(editrow.value)
      .then(res => {
        proxy.$modal.msgSuccess("提交成功");
@@ -239,6 +311,7 @@
  onMounted(() => {
    getList();
    loadUserOptions();
  });
</script>