yyb
6 天以前 9141e0e9ffea6ff3035dbe9c80f844656dff00a9
src/views/productionManagement/workOrderEdit/index.vue
@@ -12,6 +12,20 @@
                    prefix-icon="Search" />
        </div>
        <div class="search-item">
          <span class="search_title">报工人:</span>
          <el-select v-model="searchForm.workerName"
                     style="width: 240px"
                     placeholder="请选择"
                     clearable
                     filterable
                     @change="handleQuery">
            <el-option v-for="item in userOptions"
                       :key="item.userId"
                       :label="item.nickName"
                       :value="item.nickName" />
          </el-select>
        </div>
        <div class="search-item">
          <el-button type="primary"
                     @click="handleQuery">搜索</el-button>
        </div>
@@ -52,6 +66,29 @@
                          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%"
                     clearable
                     @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 +110,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 +185,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 +204,7 @@
      fixed: "right",
      operation: [
        {
          name: "计划时间",
          name: "指派",
          clickFun: row => {
            handleEdit(row);
          },
@@ -175,6 +226,7 @@
  const data = reactive({
    searchForm: {
      workOrderNo: "",
      workerName: "",
    },
  });
  const { searchForm } = toRefs(data);
@@ -193,6 +245,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 +302,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 +327,7 @@
  onMounted(() => {
    getList();
    loadUserOptions();
  });
</script>