From c104bf2b4ecf604245b38590bf1e8119530de10b Mon Sep 17 00:00:00 2001 From: yaowanxin <3588231647@qq.com> Date: 星期二, 12 八月 2025 16:26:55 +0800 Subject: [PATCH] Merge branch 'ywx' of http://114.132.189.42:9002/r/product-inventory-management into dev_ai --- src/views/energyManagement/waterManagement/components/waterBillForm.vue | 210 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 210 insertions(+), 0 deletions(-) diff --git a/src/views/energyManagement/waterManagement/components/waterBillForm.vue b/src/views/energyManagement/waterManagement/components/waterBillForm.vue new file mode 100644 index 0000000..a132041 --- /dev/null +++ b/src/views/energyManagement/waterManagement/components/waterBillForm.vue @@ -0,0 +1,210 @@ +<template> + <div> + <el-dialog + v-model="dialogFormVisible" + title="姘磋垂绠$悊" + width="70%" + @close="closeDia" + > + <el-form + :model="form" + label-width="140px" + label-position="top" + :rules="rules" + ref="formRef" + > + <el-row :gutter="30"> + <el-col :span="12"> + <el-form-item label="璁惧锛�" prop="code"> + <el-select + v-model="form.code" + placeholder="璇烽�夋嫨" + clearable + @change="setName" + :disabled="operationType !== 'add'" + > + <el-option + v-for="item in codeList" + :key="item.deviceModel" + :label="item.deviceName" + :value="item.deviceModel" + > + {{item.deviceName + '--' + item.deviceModel}} + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鐢ㄦ按閲忥細" prop="waterConsumption"> + <el-input + v-model="form.waterConsumption" + placeholder="璇疯緭鍏�" + clearable + /> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="30"> + <el-col :span="12"> + <el-form-item label="姘磋垂鍗曚环锛�" prop="waterPrice"> + <el-input + v-model="form.waterPrice" + placeholder="璇疯緭鍏�" + clearable + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="姘磋垂閲戦锛�" prop="waterBill"> + <el-input + v-model="form.waterBill" + placeholder="鑷姩璁$畻" + clearable + disabled + /> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="30"> + <el-col :span="12"> + <el-form-item label="璁¤垂鏃ユ湡锛�" prop="billDate"> + <el-date-picker + style="width: 100%" + v-model="form.billDate" + value-format="YYYY-MM-DD" + format="YYYY-MM-DD" + type="date" + placeholder="璇烽�夋嫨" + clearable + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鐢ㄦ按绫诲瀷锛�" prop="waterType"> + <el-select + v-model="form.waterType" + placeholder="璇烽�夋嫨" + clearable + > + <el-option label="宸ヤ笟鐢ㄦ按" value="industrial" /> + <el-option label="鐢熸椿鐢ㄦ按" value="domestic" /> + <el-option label="娑堥槻鐢ㄦ按" value="fire" /> + <el-option label="缁垮寲鐢ㄦ按" value="greening" /> + </el-select> + </el-form-item> + </el-col> + </el-row> + </el-form> + <template #footer> + <div class="dialog-footer"> + <el-button type="primary" @click="submitForm">纭</el-button> + <el-button @click="closeDia">鍙栨秷</el-button> + </div> + </template> + </el-dialog> + </div> +</template> + +<script setup> +import {ref, reactive, nextTick, watch} from "vue"; +import useUserStore from "@/store/modules/user.js"; +import {waterDeviceList, waterBillAdd, waterBillUpdate} from "@/api/energyManagement/waterManagement.js"; +const { proxy } = getCurrentInstance() +const emit = defineEmits(['close']) +const dialogFormVisible = ref(false); +const operationType = ref('') +const userStore = useUserStore(); + +const data = reactive({ + form: { + name: "", + code: "", + waterConsumption: "", + waterPrice: "", + waterBill: "", + billDate: "", + waterType: "", + }, + rules: { + code: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }], + waterConsumption: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + waterPrice: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + billDate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }], + waterType: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }], + }, +}) +const { form, rules } = toRefs(data); +const codeList = ref([]) + +// 鎵撳紑寮规 +const openDialog = (type, row) => { + operationType.value = type; + dialogFormVisible.value = true; + form.value = {} + proxy.resetForm("formRef"); + waterDeviceList().then((res) => { + codeList.value = res.data; + }); + if (type === "edit") { + form.value = {...row} + } +} +const setName = (code) => { + const index = codeList.value.findIndex(item => item.deviceModel === code); + if (index > -1) { + console.log(codeList) + form.value.name = codeList.value[index].deviceName; + } +} + +// 璁$畻姘磋垂閲戦 +const calculateWaterBill = () => { + if (form.value.waterConsumption && form.value.waterPrice) { + form.value.waterBill = (parseFloat(form.value.waterConsumption) * parseFloat(form.value.waterPrice)).toFixed(2); + } +} + +// 鐩戝惉鐢ㄦ按閲忓拰姘磋垂鍗曚环鍙樺寲 +watch([() => form.value.waterConsumption, () => form.value.waterPrice], () => { + calculateWaterBill(); +}); + +const submitForm = () => { + proxy.$refs["formRef"].validate(valid => { + if (valid) { + if (operationType.value === "add") { + waterBillAdd(form.value).then(response => { + proxy.$modal.msgSuccess("鏂板鎴愬姛") + closeDia() + }) + } else { + waterBillUpdate(form.value).then(response => { + proxy.$modal.msgSuccess("淇敼鎴愬姛") + closeDia() + }) + } + } + }) +} +// 鍏抽棴寮规 +const closeDia = () => { + proxy.resetForm("formRef"); + dialogFormVisible.value = false; + emit('close') +}; +// 鑾峰彇褰撳墠鏃ユ湡骞舵牸寮忓寲涓� YYYY-MM-DD +function getCurrentDate() { + const today = new Date(); + const year = today.getFullYear(); + const month = String(today.getMonth() + 1).padStart(2, "0"); // 鏈堜唤浠�0寮�濮� + const day = String(today.getDate()).padStart(2, "0"); + return `${year}-${month}-${day}`; +} +defineExpose({ + openDialog, +}); +</script> + +<style scoped> + +</style> -- Gitblit v1.9.3