From 589bcdb26f8e9d3e0d5ef46d27acc901c96d50ea Mon Sep 17 00:00:00 2001 From: eight <641137800@qq.com> Date: 星期二, 15 四月 2025 15:44:49 +0800 Subject: [PATCH] update --- src/views/ecg/devmanage/DeviceForm.vue | 176 +++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 135 insertions(+), 41 deletions(-) diff --git a/src/views/ecg/devmanage/DeviceForm.vue b/src/views/ecg/devmanage/DeviceForm.vue index c497aa5..b1fc3c7 100644 --- a/src/views/ecg/devmanage/DeviceForm.vue +++ b/src/views/ecg/devmanage/DeviceForm.vue @@ -1,32 +1,78 @@ <template> <Dialog :title="dialogTitle" v-model="dialogVisible"> <el-form - ref="formRef" - :model="formData" - :rules="formRules" - label-width="100px" - v-loading="formLoading" + ref="formRef" + :model="formData" + :rules="formRules" + label-width="100px" + v-loading="formLoading" > - <el-form-item label="璁惧缂栧彿" prop="devId"> - <el-input v-model="formData.devId" placeholder="璇疯緭鍏ヨ澶囩紪鍙�" /> - </el-form-item> - <el-form-item label="鍒嗙被鍚�" prop="category"> - <el-input v-model="formData.category" placeholder="璇疯緭鍏ュ垎绫诲悕" /> - </el-form-item> - <el-form-item label="鍝佺墝" prop="brand"> - <el-input v-model="formData.brand" placeholder="璇疯緭鍏ュ搧鐗�" /> - </el-form-item> - <el-form-item label="鍨嬪彿" prop="model"> - <el-input v-model="formData.model" placeholder="璇疯緭鍏ュ瀷鍙�" /> - </el-form-item> <el-form-item label="閲囪喘鏃ユ湡" prop="purchaseDate"> <el-date-picker - v-model="formData.purchaseDate" - type="date" - value-format="x" - placeholder="閫夋嫨閲囪喘鏃ユ湡" + v-model="formData.purchaseDate" + type="date" + value-format="x" + placeholder="閫夋嫨閲囪喘鏃ユ湡" + :readonly="formType === 'devState'" /> </el-form-item> + <el-form-item label="璁惧鍥烘湁缂栧彿" prop="devId"> + <el-input v-model="formData.devCodeIntrinsic" :readonly="formType === 'devState'" placeholder="璇疯緭鍏ヨ澶囧浐鏈夌紪鍙�" /> + </el-form-item> + <el-form-item label="璁惧鍖婚櫌缂栧彿" prop="devId"> + <el-input v-model="formData.devCodeHosp" :readonly="formType === 'devState'" placeholder="璇疯緭鍏ヨ澶囧尰闄㈢紪鍙�" /> + </el-form-item> + <el-form-item label="璁惧绉戝缂栧彿" prop="devId"> + <el-input v-model="formData.devCodeDept" :readonly="formType === 'devState'" placeholder="璇疯緭鍏ヨ澶囩瀹ょ紪鍙�" /> + </el-form-item> + <el-form-item label="鍒嗙被鍚�" prop="category"> + <el-select v-model="formData.category" placeholder="璇烽�夋嫨鍒嗙被鍚�" @change="categoryChanged" :disabled="formType === 'devState'"> + <el-option + v-for="dict in categoryOptions" + :key="dict.value as string" + :label="dict.label" + :value="dict.value" + /> + </el-select> + </el-form-item> + <el-form-item label="鍝佺墝" prop="brand"> + <el-select v-model="formData.brand" placeholder="璇烽�夋嫨鍝佺墝" @change="brandChanged" :disabled="formType === 'devState'"> + <el-option + v-for="dict in brandOptions" + :key="dict.value" + :label="dict.label" + :value="dict.value" + /> + </el-select> + </el-form-item> + <el-form-item label="鍨嬪彿" prop="model"> + <el-select v-model="formData.model" placeholder="璇烽�夋嫨鍨嬪彿" :disabled="formType === 'devState'"> + <el-option + v-for="dict in modelOptions" + :key="dict.value" + :label="dict.label" + :value="dict.value" + /> + </el-select> + </el-form-item> + + <el-form-item v-if="formType !== 'create'" label="鐘舵��" prop="state"> + <el-radio-group v-if="formType === 'devState'" v-model="formData.state"> + <el-radio key="0" :value="0"> 绌洪棽涓� </el-radio> + <el-radio key="5" :value="5"> 宸查鍙� </el-radio> + <el-radio key="10" :value="10"> 宸茶鏈� </el-radio> + <el-radio key="20" :value="20"> 宸查仐澶� </el-radio> + <el-radio key="30" :value="30"> 寰呯淮淇� </el-radio> + <el-radio key="30" :value="40"> 缁翠慨涓� </el-radio> + <el-radio key="40" :value="50"> 宸叉姤搴� </el-radio> + </el-radio-group> + <span v-else>{{tranlateDevState(formData.state)}}</span> + </el-form-item> + + <el-form-item label="澶囨敞" prop="devId"> + <el-input v-model="formData.comment" placeholder="璇疯緭鍏ヨ澶囧娉�" /> + </el-form-item> + </el-form> <template #footer> <el-button @click="submitForm" type="primary" :disabled="formLoading">纭� 瀹�</el-button> @@ -35,7 +81,9 @@ </Dialog> </template> <script setup lang="ts"> -import { DeviceApi, DeviceVO } from '@/api/ecg/devmanage' +import {getStrDictOptions, DICT_TYPE, DictDataType} from '@/utils/dict' +import {DeviceApi, DeviceVO, DevModelApi, OptionsVO} from '@/api/ecg/devmanage' +import {tranlateDevState} from "@/utils/statusFormatter"; /** 璁惧 琛ㄥ崟 */ defineOptions({ name: 'DeviceForm' }) @@ -47,19 +95,21 @@ const dialogTitle = ref('') // 寮圭獥鐨勬爣棰� const formLoading = ref(false) // 琛ㄥ崟鐨勫姞杞戒腑锛�1锛変慨鏀规椂鐨勬暟鎹姞杞斤紱2锛夋彁浜ょ殑鎸夐挳绂佺敤 const formType = ref('') // 琛ㄥ崟鐨勭被鍨嬶細create - 鏂板锛泆pdate - 淇敼 -const formData = ref({ - id: undefined, - devId: undefined, - category: undefined, - brand: undefined, - model: undefined, - purchaseDate: undefined +const formData = ref<DeviceVO>({ + id: 0, + devId: '', + purchaseDate: new Date().getTime(), + devCodeIntrinsic: '', + devCodeHosp: '', + devCodeDept: '', + category: '', + brand: '', + model: '', + comment: '', + state: 0, }) + const formRules = reactive({ - devId: [{ required: true, message: '璁惧缂栧彿涓嶈兘涓虹┖', trigger: 'blur' }], - category: [{ required: true, message: '鍒嗙被鍚嶄笉鑳戒负绌�', trigger: 'blur' }], - brand: [{ required: true, message: '鍝佺墝涓嶈兘涓虹┖', trigger: 'blur' }], - model: [{ required: true, message: '鍨嬪彿涓嶈兘涓虹┖', trigger: 'blur' }] }) const formRef = ref() // 琛ㄥ崟 Ref @@ -69,13 +119,23 @@ dialogTitle.value = t('action.' + type) formType.value = type resetForm() + // 淇敼鏃讹紝璁剧疆鏁版嵁 if (id) { formLoading.value = true try { formData.value = await DeviceApi.getDevice(id) + const bandData = await DevModelApi.getBrandOption(formData.value.category!) + brandOptions.value = bandData + const modelData = await DevModelApi.getModelOption(formData.value.category!, formData.value.brand!) + modelOptions.value = modelData } finally { formLoading.value = false + } + } else { // 鏂板鏃� + if (categoryOptions.value.length !== 0) { + formData.value.category = categoryOptions.value[0].value as string + categoryChanged() } } } @@ -93,9 +153,12 @@ if (formType.value === 'create') { await DeviceApi.createDevice(data) message.success(t('common.createSuccess')) - } else { + } else if (formType.value === 'update') { await DeviceApi.updateDevice(data) message.success(t('common.updateSuccess')) + } else { + await DeviceApi.updateDeviceState(data) + message.success(t('common.updateStateSuccess')) } dialogVisible.value = false // 鍙戦�佹搷浣滄垚鍔熺殑浜嬩欢 @@ -108,13 +171,44 @@ /** 閲嶇疆琛ㄥ崟 */ const resetForm = () => { formData.value = { - id: undefined, - devId: undefined, - category: undefined, - brand: undefined, - model: undefined, - purchaseDate: undefined + id: 0, + devId: '', + purchaseDate: new Date().getTime(), + devCodeIntrinsic: '', + devCodeHosp: '', + devCodeDept: '', + category: '', + brand: '', + model: '', + comment: '', + state: 0, } formRef.value?.resetFields() } -</script> \ No newline at end of file + +const categoryOptions = ref<DictDataType[]>([]) +const brandOptions = ref<OptionsVO[]>([]) +const modelOptions = ref<OptionsVO[]>([]) + +const categoryChanged = async () => { + const data = await DevModelApi.getBrandOption(formData.value.category!) + brandOptions.value = data + + formData.value.brand = brandOptions.value.length === 0 ? "" : brandOptions.value[0].value + brandChanged() +} + +const brandChanged = async () => { + const data = await DevModelApi.getModelOption(formData.value.category!, formData.value.brand!) + modelOptions.value = data + + formData.value.model = modelOptions.value.length === 0 ? "" : modelOptions.value[0].value +} + +onMounted( async () => { + console.info("onMount DeviceForm...") + const data = await getStrDictOptions(DICT_TYPE.ECG_DEV_CATEGORY) + categoryOptions.value = data +}) + +</script> -- Gitblit v1.9.3