3 changed files with 112 additions and 59 deletions
-
8src/services/matrix/manage.ts
-
57src/views/matrixManage/add.vue
-
102src/views/matrixManage/matrixList.vue
@ -0,0 +1,57 @@ |
|||||
|
<template> |
||||
|
<el-dialog v-if="addVisible" v-model="addVisible" width="25rem" align-center :close-on-click-modal="false" destroy-on-close> |
||||
|
<template #header><h2>新增基质</h2></template> |
||||
|
<el-form ref="addFormRef" :model="addForm" label-width="auto" style="max-width: 600px;" :rules="rules"> |
||||
|
<el-form-item label="基质名称" prop="name"> |
||||
|
<el-input v-model.async="addForm.name" /> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<div class="flex justify-center h-[5rem] pt-[2rem]"> |
||||
|
<el-button type="primary" @click="onSave">保存</el-button> |
||||
|
<el-button @click="onCancel">取消</el-button> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
</template> |
||||
|
<script lang="ts" setup> |
||||
|
import { ref, reactive, defineExpose } from 'vue' |
||||
|
const emits = defineEmits(['save']) |
||||
|
const rules = ref({ |
||||
|
name: [{ |
||||
|
required: true, |
||||
|
message: '请输入名称', |
||||
|
trigger: 'change', |
||||
|
}] |
||||
|
}) |
||||
|
const addVisible = ref(false) |
||||
|
let addForm = ref({name:''}) |
||||
|
const addFormRef:any = ref<any>() |
||||
|
let operateType = 'add' |
||||
|
|
||||
|
const showDialog = (type:string, craftItem:{name:string}) => { |
||||
|
operateType = type |
||||
|
addVisible.value = true; |
||||
|
if(craftItem){ |
||||
|
addForm.value = { |
||||
|
name:craftItem.name |
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
const onSave = () => { |
||||
|
addFormRef.value.validate((vali:boolean) => { |
||||
|
if(vali){ |
||||
|
emits('save', {...addForm.value}, operateType) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
const onCancel = () => { |
||||
|
addForm.value = {name:''} |
||||
|
addVisible.value = false; |
||||
|
} |
||||
|
|
||||
|
defineExpose({ |
||||
|
showDialog, |
||||
|
onCancel |
||||
|
}) |
||||
|
</script> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue