gaoluyang
2026-06-02 7c2cdcbc7f5585b96fba76a07b0e4417a09c4d7e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
<template>
  <FormDialog
    v-model="visible"
    title="验收审批"
    width="500px"
    @confirm="sendForm"
    @cancel="handleCancel"
    @close="handleClose"
  >
    <el-form :model="form" label-width="100px">
      <el-form-item label="验收人" required>
        <el-select
          v-model="form.acceptanceName"
          filterable
          placeholder="请选择验收人"
          style="width: 100%"
        >
          <el-option
            v-for="item in userList"
            :key="item.userId"
            :label="item.nickName"
            :value="item.userId"
          />
        </el-select>
      </el-form-item>
      <el-form-item label="验收时间" required>
        <el-date-picker
          v-model="form.acceptanceTime"
          placeholder="请选择验收时间"
          format="YYYY-MM-DD HH:mm:ss"
          value-format="YYYY-MM-DD HH:mm:ss"
          type="datetime"
          clearable
          style="width: 100%"
        />
      </el-form-item>
      <el-form-item label="验收备注">
        <el-input
          v-model="form.acceptanceRemark"
          placeholder="请输入验收备注"
          type="textarea"
          :rows="3"
        />
      </el-form-item>
    </el-form>
  </FormDialog>
</template>
 
<script setup>
import FormDialog from "@/components/Dialog/FormDialog.vue";
import { maintenanceAcceptance } from "@/api/equipmentManagement/upkeep";
import { userListNoPage } from "@/api/system/user.js";
import { ElMessage } from "element-plus";
import { ref, reactive } from "vue";
import dayjs from "dayjs";
 
defineOptions({
  name: "验收审批弹窗",
});
 
const emits = defineEmits(["ok"]);
 
const maintenanceId = ref();
const visible = ref(false);
const loading = ref(false);
const userList = ref([]);
 
const form = reactive({
  acceptanceName: undefined,
  acceptanceTime: undefined,
  acceptanceRemark: undefined,
});
 
const loadUserList = () => {
  userListNoPage().then((res) => {
    userList.value = res.data || [];
  });
};
 
const resetForm = () => {
  form.acceptanceName = undefined;
  form.acceptanceTime = undefined;
  form.acceptanceRemark = undefined;
};
 
const sendForm = async () => {
  if (!form.acceptanceName) {
    ElMessage.error("验收人不能为空");
    return;
  }
  if (!form.acceptanceTime) {
    ElMessage.error("验收时间不能为空");
    return;
  }
 
  loading.value = true;
  try {
    const selectedUser = userList.value.find(
      (item) => item.userId === form.acceptanceName
    );
    const data = {
      id: maintenanceId.value,
      acceptanceName: selectedUser ? selectedUser.nickName : form.acceptanceName,
      acceptanceTime: dayjs(form.acceptanceTime).format("YYYY-MM-DD HH:mm:ss"),
      acceptanceRemark: form.acceptanceRemark,
    };
    const { code } = await maintenanceAcceptance(data);
    if (code == 200) {
      ElMessage.success("验收审批成功");
      emits("ok");
      resetForm();
      visible.value = false;
    }
  } finally {
    loading.value = false;
  }
};
 
const handleCancel = () => {
  resetForm();
  visible.value = false;
};
 
const handleClose = () => {
  resetForm();
  visible.value = false;
};
 
const open = (id, row) => {
  maintenanceId.value = id;
  visible.value = true;
  resetForm();
  loadUserList();
};
 
defineExpose({
  open,
});
</script>
 
<style lang="scss" scoped></style>