feat emit
This commit is contained in:
parent
ee6ed82a4a
commit
3b6fd601f2
@ -7282,7 +7282,7 @@ export interface FeedingConfigGetListOutput {
|
||||
*/
|
||||
id?: number
|
||||
/** 配置名称 */
|
||||
name?: string | null
|
||||
configName?: string | null
|
||||
/** 配置编码 */
|
||||
code?: string | null
|
||||
/** 配置描述 */
|
||||
@ -7294,6 +7294,8 @@ export interface FeedingConfigGetListOutput {
|
||||
pumpSpeed?: number
|
||||
/** 启用状态 */
|
||||
enabled?: boolean
|
||||
|
||||
isTwoStep?: boolean
|
||||
}
|
||||
|
||||
/** 报警器分页 */
|
||||
|
1
src/types/mitt.d.ts
vendored
1
src/types/mitt.d.ts
vendored
@ -65,6 +65,7 @@ declare type MittType<T = any> = {
|
||||
forceOffline?: T
|
||||
refreshPrintTemplate?: T
|
||||
refreshRoom?: T
|
||||
refreshPump?: T
|
||||
}
|
||||
|
||||
// mitt 参数类型定义
|
||||
|
@ -1,16 +1,13 @@
|
||||
// https://www.npmjs.com/package/mitt
|
||||
import mitt, { Emitter } from 'mitt'
|
||||
|
||||
// 类型
|
||||
const emitter: Emitter<MittType> = mitt<MittType>()
|
||||
|
||||
// 导出
|
||||
export default emitter
|
||||
|
||||
export interface MittType {
|
||||
// ... existing code ...
|
||||
[key: string | symbol]: unknown
|
||||
refreshMsg: void
|
||||
refreshFeedMedium: void
|
||||
refreshBasicMedium: void
|
||||
refreshCell: void
|
||||
// ... existing code ...
|
||||
}
|
||||
|
||||
const emitter: Emitter<MittType> = mitt<MittType>()
|
||||
|
||||
export default emitter
|
||||
|
@ -1,113 +0,0 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
v-model="dialogVisible"
|
||||
:title="title"
|
||||
width="500px"
|
||||
:close-on-click-modal="false"
|
||||
:close-on-press-escape="false"
|
||||
append-to-body
|
||||
>
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
label-width="100px"
|
||||
@submit.prevent
|
||||
>
|
||||
<el-form-item label="培养基编号" prop="mediumCode">
|
||||
<el-input v-model="form.mediumCode" placeholder="请输入培养基编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="培养基名称" prop="mediumName">
|
||||
<el-input v-model="form.mediumName" placeholder="请输入培养基名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="葡萄糖浓度" prop="glucoseConc">
|
||||
<el-input-number v-model="form.glucoseConc" :min="0" :precision="2" :step="0.1" />
|
||||
</el-form-item>
|
||||
<el-form-item label="是否含葡萄糖" prop="isGlucose">
|
||||
<el-switch v-model="form.isGlucose" />
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-switch v-model="form.status" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, reactive } from 'vue'
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { BasicMediumDto } from '/@/api/admin/data-contracts'
|
||||
import { ItemDefBasicMediumApi } from '/@/api/admin/item-def-basic-medium'
|
||||
import eventBus from '/@/utils/mitt'
|
||||
|
||||
const props = defineProps<{
|
||||
title: string
|
||||
}>()
|
||||
|
||||
const dialogVisible = ref(false)
|
||||
const formRef = ref<FormInstance>()
|
||||
|
||||
const form = reactive<Partial<BasicMediumDto>>({
|
||||
mediumCode: '',
|
||||
mediumName: '',
|
||||
glucoseConc: 0,
|
||||
isGlucose: true,
|
||||
status: true
|
||||
})
|
||||
|
||||
const rules = {
|
||||
mediumCode: [{ required: true, message: '请输入培养基编号', trigger: 'blur' }],
|
||||
mediumName: [{ required: true, message: '请输入培养基名称', trigger: 'blur' }],
|
||||
glucoseConc: [{ required: true, message: '请输入葡萄糖浓度', trigger: 'blur' }],
|
||||
isGlucose: [{ required: true, message: '请选择是否含葡萄糖', trigger: 'change' }],
|
||||
status: [{ required: true, message: '请选择状态', trigger: 'change' }]
|
||||
}
|
||||
|
||||
const open = (data?: Partial<BasicMediumDto>) => {
|
||||
dialogVisible.value = true
|
||||
if (data) {
|
||||
Object.assign(form, data)
|
||||
} else {
|
||||
Object.assign(form, {
|
||||
mediumCode: '',
|
||||
mediumName: '',
|
||||
glucoseConc: 0,
|
||||
isGlucose: true,
|
||||
status: true
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
const submitForm = async () => {
|
||||
if (!formRef.value) return
|
||||
await formRef.value.validate(async (valid) => {
|
||||
if (valid) {
|
||||
try {
|
||||
if (form.id) {
|
||||
await new ItemDefBasicMediumApi().update(form as BasicMediumDto)
|
||||
ElMessage.success('修改成功')
|
||||
} else {
|
||||
await new ItemDefBasicMediumApi().add(form as BasicMediumDto)
|
||||
ElMessage.success('添加成功')
|
||||
}
|
||||
dialogVisible.value = false
|
||||
eventBus.emit('refreshBasicMedium')
|
||||
} catch (error) {
|
||||
console.error('提交失败:', error)
|
||||
ElMessage.error('提交失败')
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
open
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
@ -85,7 +85,7 @@
|
||||
<el-option
|
||||
v-for="config in state.configOptions"
|
||||
:key="config.id"
|
||||
:label="`${config.name} (${config.pumpSpeed}g/min)`"
|
||||
:label="`${config.configName} (${config.isTwoStep ? '两段式' : '三段式'})`"
|
||||
:value="config.id"
|
||||
/>
|
||||
</el-select>
|
||||
@ -450,7 +450,7 @@ const onSubmit = () => {
|
||||
if (res?.success) {
|
||||
closeDialog()
|
||||
emit('refresh')
|
||||
eventBus.emit('refreshPump' as keyof MittType<any>)
|
||||
eventBus.emit('refreshPump')
|
||||
}
|
||||
} catch (error: any) {
|
||||
proxy.$modal.msgError('操作失败')
|
||||
|
@ -146,8 +146,8 @@ const state = reactive({
|
||||
onMounted(() => {
|
||||
getUserOptions()
|
||||
Query()
|
||||
eventBus.off('refreshPump' as keyof MittType<any>)
|
||||
eventBus.on('refreshPump' as keyof MittType<any>, () => {
|
||||
eventBus.off('refreshPump')
|
||||
eventBus.on('refreshPump' , () => {
|
||||
Query()
|
||||
})
|
||||
})
|
||||
|
Loading…
x
Reference in New Issue
Block a user