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
| <template>
| <div>
| <el-dialog
| v-model="isShow"
| title="编辑工序"
| width="400"
| @close="closeModal"
| >
| <el-form label-width="140px" :model="formState" label-position="top" ref="formRef">
| <el-form-item
| label="工序名称:"
| prop="name"
| :rules="[
| {
| required: true,
| message: '请输入工序名称',
| },
| {
| max: 100,
| message: '最多100个字符',
| }
| ]">
| <el-input v-model="formState.name" />
| </el-form-item>
| <el-form-item label="备注" prop="remark">
| <el-input v-model="formState.remark" type="textarea" />
| </el-form-item>
| </el-form>
| <template #footer>
| <div class="dialog-footer">
| <el-button type="primary" @click="handleSubmit">确认</el-button>
| <el-button @click="closeModal">取消</el-button>
| </div>
| </template>
| </el-dialog>
| </div>
| </template>
|
| <script setup>
| import { ref, computed, getCurrentInstance } from "vue";
| import {update} from "@/api/productionManagement/productionProcess.js";
|
| const props = defineProps({
| visible: {
| type: Boolean,
| required: true,
| },
|
| record: {
| type: Object,
| required: true,
| }
| });
|
| const emit = defineEmits(['update:visible', 'completed']);
|
| // 响应式数据(替代选项式的 data)
| const formState = ref({
| id: props.record.id,
| name: props.record.name,
| remark: props.record.remark,
| });
|
| const isShow = computed({
| get() {
| return props.visible;
| },
| set(val) {
| emit('update:visible', val);
| },
| });
|
| let { proxy } = getCurrentInstance()
|
| const closeModal = () => {
| isShow.value = false;
| };
|
| const handleSubmit = () => {
| proxy.$refs["formRef"].validate(valid => {
| if (valid) {
| update(formState.value).then(res => {
| // 关闭模态框
| isShow.value = false;
| // 告知父组件已完成
| emit('completed');
| proxy.$modal.msgSuccess("提交成功");
| })
| }
| })
| };
|
| defineExpose({
| closeModal,
| handleSubmit,
| isShow,
| });
| </script>
|
|