From b6d39af78f90623f808198ef9fbb156115aff565 Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期四, 26 十二月 2024 14:33:07 +0800 Subject: [PATCH] 完成设施和环境迁移 --- src/components/do/a6-facilities-environment/Personnel-management-dia.vue | 211 ++++ src/components/view/a6-facilities-environment.vue | 66 + src/components/do/a6-facilities-environment/facilities-environmental-conditions/illuminance-recording.vue | 375 ++++++++ src/components/do/a6-facilities-environment/Personnel-management.vue | 241 +++++ src/components/do/a6-facilities-environment/facilities-environmental-conditions.vue | 51 + src/components/do/a6-facilities-environment/facilities-environmental-conditions/temperature-humidity-record.vue | 390 +++++++++ src/components/do/a6-facilities-environment/external-personnel-management.vue | 124 ++ src/components/do/a6-facilities-environment/three-wastes-dialog.vue | 190 ++++ src/components/do/a6-facilities-environment/three-wastes-treatment.vue | 218 +++++ src/components/do/a6-facilities-environment/facilities-environmental-conditions/lightning-protection-detection.vue | 268 ++++++ src/components/do/a6-facilities-environment/facilities-environmental-conditions/power-supply-stability.vue | 360 ++++++++ src/assets/api/controller.js | 53 + 12 files changed, 2,547 insertions(+), 0 deletions(-) diff --git a/src/assets/api/controller.js b/src/assets/api/controller.js index 12d99d0..cc3fd74 100644 --- a/src/assets/api/controller.js +++ b/src/assets/api/controller.js @@ -64,6 +64,9 @@ processReport, processComplain, inconsistentDistribution, + facilitiesAndEnvironment, + internalWastes, + foreignRegister, } } @@ -839,3 +842,53 @@ delInconsistentDistribution:'/inconsistentDistribution/delInconsistentDistribution', // 涓嶇鍚堥」鐨勫垎甯冨垹闄� exportInconsistentDistribution:'/inconsistentDistribution/exportInconsistentDistribution', // 瀵煎嚭涓嶇鍚堥」鐨勫垎甯� } + +// 6.3 璁炬柦鍜岀幆澧冩潯浠� +const facilitiesAndEnvironment = { + // 璁炬柦鍜岀幆澧冩潯浠惰姹�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐓у害璁板綍琛� + addFeLightningProtection: "/feIllumination/addFeLightningProtection", // 璁炬柦鍜岀幆澧冩潯浠惰姹�-鐓у害璁板綍琛�-妫�娴嬪尯鍩� 鏂板/淇敼 + deleteFeLightningProtection: "/feIllumination/deleteFeLightningProtection", // 璁炬柦鍜岀幆澧冩潯浠惰姹�-鐓у害璁板綍琛�-妫�娴嬪尯鍩� 鍒犻櫎 + getFeLightningProtection: "/feIllumination/getFeLightningProtection", // 璁炬柦鍜岀幆澧冩潯浠惰姹�-鐓у害璁板綍琛�-妫�娴嬪尯鍩� 鏌ヨ + deleteFeIlluminationDetectionArea: "/feIllumination/deleteFeIlluminationDetectionArea", // 鐓у害璁板綍琛�-妫�娴嬪尯鍩� 鍒犻櫎 + getFeIlluminationDetectionArea: "/feIllumination/getFeIlluminationDetectionArea", // 鐓у害璁板綍琛�-妫�娴嬪尯鍩� 鏍规嵁鐓у害璁板綍鏌ヨ + exportFeIllumination: "/feIllumination/exportFeIllumination", // 鐓у害璁板綍琛�-妫�娴嬪尯鍩� 瀵煎嚭 + // 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-闃查浄妫�娴� + addLightningProtectionDetection: "/feLightningProtection/addLightningProtectionDetection", // 璁炬柦鍜岀幆澧冩潯浠惰姹�-闃查浄妫�娴嬫柊澧�/淇敼 + deleteLightningProtectionDetection: "/feLightningProtection/deleteLightningProtectionDetection", // 璁炬柦鍜岀幆澧冩潯浠惰姹�-闃查浄妫�娴嬪垹闄� + getLightningProtectionDetection: "/feLightningProtection/getLightningProtectionDetection", // 璁炬柦鍜岀幆澧冩潯浠惰姹�-闃查浄妫�娴嬫煡璇� + exportOfLightningProtectionDetection: "/feLightningProtection/exportOfLightningProtectionDetection", // 璁炬柦鍜岀幆澧冩潯浠惰姹�-闃查浄妫�娴嬪鍑� + // 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐢垫簮绋冲畾鎬� + addLaboratoryFacilityPowerStable: "/fePowerStable/addLaboratoryFacilityPowerStable", // 璁炬柦鍜岀幆澧冩潯浠惰姹�-鐢垫簮绋冲畾鎬ф柊澧�/淇敼 + deleteLaboratoryFacilityPowerStable: "/fePowerStable/deleteLaboratoryFacilityPowerStable", // 璁炬柦鍜岀幆澧冩潯浠惰姹�-鐢垫簮绋冲畾鎬у垹闄� + getLaboratoryFacilityPowerStablePage: "/fePowerStable/getLaboratoryFacilityPowerStablePage", // 璁炬柦鍜岀幆澧冩潯浠惰姹�-鐢垫簮绋冲畾鎬ф煡璇� + getCalibrationDate: "/fePowerStable/getCalibrationDate", // 璁炬柦鍜岀幆澧冩潯浠惰姹�-鐢垫簮绋冲畾鎬� 鏂板 閫夋嫨璁惧鍚庢煡璇㈡渶鏂拌澶囩紪鍙凤紝鏍″噯鏃ユ湡 + deleteFeMeasuredQuantity: "/fePowerStable/deleteFeMeasuredQuantity", // 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐢垫簮绋冲畾鎬�-娴嬪畾閲� 鍒犻櫎 + getFeMeasuredQuantityService: "/fePowerStable/getFeMeasuredQuantityService", // 鐢垫簮绋冲畾鎬�-娴嬪畾閲� 鏍规嵁鐢垫簮绋冲畾鎬ф煡璇� + exportFePowerStable: "/fePowerStable/exportFePowerStable", // 鐢垫簮绋冲畾鎬�-娴嬪畾閲� 瀵煎嚭 + // 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴﹁褰� + addFeTempHumDate: "/feTempHumDate/addFeTempHumDate", // 璇曢獙鍖哄煙-鏂板/淇敼 + deleteFeTempHumDate: "/feTempHumDate/deleteFeTempHumDate", // 璇曢獙鍖哄煙-鍒犻櫎 + getFeTempHumDate: "/feTempHumDate/getFeTempHumDate", // 璇曢獙鍖哄煙-鏌ヨ" + addFeTempHumRecord: "/feTempHumDate/addFeTempHumRecord", // 璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴﹁褰曟柊澧�/淇敼 + deleteFeTempHumRecord: "/feTempHumDate/deleteFeTempHumRecord", // 璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴﹁褰曞垹闄� + getFeTempHumRecordPage: "/feTempHumDate/getFeTempHumRecordPage", // 璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴﹁褰曟煡璇� + exportTemperatureAndHumidityRecords: '/feTempHumDate/exportTemperatureAndHumidityRecords', // 璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴﹁褰� 瀵煎嚭 +} +// 6.3涓夊簾澶勭悊 +const internalWastes = { + pageInternalWastes: '/internalWastes/pageInternalWastes', // 瀹夊叏鍐呭姟涓夊簾澶勭悊鍒嗛〉鏌ヨ + getInternalWastesOne: '/internalWastes/getInternalWastesOne', // 瀹夊叏鍐呭姟涓夊簾澶勭悊鏌ョ湅璇︽儏 + addInternalWastes: '/internalWastes/addInternalWastes', // 瀹夊叏鍐呭姟涓夊簾澶勭悊鏂板 + updateInternalWastes: '/internalWastes/updateInternalWastes', // 瀹夊叏鍐呭姟涓夊簾澶勭悊鍒嗛〉淇敼 + delInternalWastes: '/internalWastes/delInternalWastes', // 瀹夊叏鍐呭姟涓夊簾澶勭悊鍒犻櫎 + exportInternalWastes: '/internalWastes/exportInternalWastes', // 瀵煎嚭涓夊簾澶勭悊 +} +// 6.3杩涘嚭浜哄憳鐧昏 +const foreignRegister = { + pageForeignRegister: '/foreignRegister/pageForeignRegister', // 澶栨潵浜哄憳鍒嗛〉鏌ヨ + getForeignRegisterOne: '/foreignRegister/getForeignRegisterOne', // 澶栨潵浜哄憳鏌ョ湅璇︽儏 + addForeignRegister: '/foreignRegister/addForeignRegister', // 澶栨潵浜哄憳鏂板 + updateForeignRegister: '/foreignRegister/updateForeignRegister', // 澶栨潵浜哄憳淇敼 + delForeignRegister: '/foreignRegister/delForeignRegister', // 澶栨潵浜哄憳鍒犻櫎 + exportForeignRegister: '/foreignRegister/exportForeignRegister', // 瀵煎嚭澶栨潵浜哄憳 +} diff --git a/src/components/do/a6-facilities-environment/Personnel-management-dia.vue b/src/components/do/a6-facilities-environment/Personnel-management-dia.vue new file mode 100644 index 0000000..14d2b3b --- /dev/null +++ b/src/components/do/a6-facilities-environment/Personnel-management-dia.vue @@ -0,0 +1,211 @@ +<template> + <div> + <el-dialog v-loading="diaLoading" :close-on-click-modal="false" + :close-on-press-escape="false" + :visible.sync="formDia" + title="澶栨潵浜哄憳绠$悊淇℃伅" + width="80%" @close="closeThreeWastesDia"> + <el-form ref="form" :model="form" :rules="rules" label-width="auto"> + <el-col :span="12"> + <el-form-item label="鏃ユ湡" prop="registerDate"> + <el-date-picker v-model="form.registerDate" + clearable + format="yyyy-MM-dd" + placeholder="閫夋嫨鏃ユ湡" + size="small" + type="date" + value-format="yyyy-MM-dd"> + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="杩涘叆鍖哄煙" prop="area"> + <el-input v-model="form.area" clearable size="small"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="杩涘叆浜哄憳" prop="personnel"> + <el-input v-model="form.personnel" clearable size="small"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="杩涘叆鍘熷洜" prop="reason"> + <el-input v-model="form.reason" clearable size="small"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="闄悓浜哄憳" prop="accompanyingId"> + <el-select v-model="form.accompanyingId" clearable filterable + placeholder="璇烽�夋嫨闄悓浜哄憳" size="small"> + <el-option v-for="(item,i) in personList" :key="i" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鎵瑰噯浜虹鍚�" prop="approveId"> + <el-select v-model="form.approveId" clearable filterable + placeholder="璇烽�夋嫨鎵瑰噯浜�" size="small"> + <el-option v-for="(item,i) in personList" :key="i" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="淇濆瘑鍙婂叾瀹冩儏鍐�" prop="confidentiality"> + <el-input v-model="form.confidentiality" clearable size="small"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="澶囨敞" prop="remark"> + <el-input v-model="form.remark" clearable size="small"></el-input> + </el-form-item> + </el-col> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="closeThreeWastesDia">鍙� 娑�</el-button> + <el-button :loading="loading" type="primary" @click="handleEdit">鎻� 浜�</el-button> + </span> + </el-dialog> + </div> +</template> + +<script> +export default { + name: 'Personnel-management-dia', + // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢� + components: {}, + data() { + // 杩欓噷瀛樻斁鏁版嵁 + return { + formDia: false, + diaLoading: false, + loading: false, + form: { + registerDate: '', + area: '', + personnel: '', + reason: '', + accompanyingId: '', + accompanyingName: '', + approveId: '', + approveName: '', + confidentiality: '', + remark: '', + }, + rules: { + registerDate: [{required: true, message: '璇烽�夋嫨鏃ユ湡',trigger: 'change'}], + area: [{required: true, message: '璇峰~鍐欒繘鍏ュ尯鍩�',trigger: 'blur'}], + personnel: [{required: true, message: '璇峰~鍐欒繘鍏ヤ汉鍛�',trigger: 'blur'}], + reason: [{required: true, message: '璇峰~鍐欒繘鍏ュ師鍥�',trigger: 'blur'}], + accompanyingId: [{required: true, message: '璇烽�夋嫨闄悓浜哄憳',trigger: 'change'}], + approveId: [{required: true, message: '璇烽�夋嫨鎵瑰噯浜�',trigger: 'change'}], + confidentiality: [{required: true, message: '璇峰~鍐欎繚瀵嗗強鍏朵粬鎯呭喌',trigger: 'blur'}], + remark: [{required: false, message: '璇峰~鍐欏娉�',trigger: 'blur'}], + }, + operationType: '', + personList: [] + }; + }, + mounted() { + + }, + // 鏂规硶闆嗗悎 + methods: { + // 鎵撳紑寮规 + openDia (type, row) { + this.getAuthorizedPerson() + this.formDia = true + this.operationType = type + if (type !== 'add') { + this.searchInfo(row) + } else { + this.form.accompanyingId = JSON.parse(localStorage.getItem("user")).userId + } + }, + // 鏌ヨ璇︽儏 + searchInfo (row) { + this.diaLoading = true + this.$axios(this.$api.foreignRegister.getForeignRegisterOne + '?registerId=' + row.registerId).then(res => { + this.diaLoading = false + if (res.code === 201) return + this.form = res.data + }).catch(err => { + console.log(err) + this.diaLoading = false + }) + }, + // 鎻愪氦寮规鏁版嵁 + handleEdit () { + this.$refs['form'].validate((valid) => { + if (valid) { + this.loading = true + const internalImplementDto = this.HaveJson(this.form) + const index = this.personList.findIndex(item => item.value === internalImplementDto.accompanyingId) + if (index > -1) { + internalImplementDto.accompanyingName = this.personList[index].label + } + const index1 = this.personList.findIndex(item => item.value === internalImplementDto.approveId) + if (index1 > -1) { + internalImplementDto.approveName = this.personList[index].label + } + if (this.operationType === 'add') { + this.$axios.post(this.$api.foreignRegister.addForeignRegister, internalImplementDto, { + headers: { + "Content-Type": "application/json" + }, + noQs: true + }).then(res => { + this.loading = false + if (res.code === 201) return + this.$message.success('鎿嶄綔鎴愬姛') + this.closeThreeWastesDia() + }).catch(err => { + console.log('err---', err); + this.loading = false + }) + } else if (this.operationType === 'edit') { + this.$axios.post(this.$api.foreignRegister.updateForeignRegister, internalImplementDto, { + headers: { + "Content-Type": "application/json" + }, + noQs: true + }).then(res => { + this.loading = false + if (res.code === 201) return + this.$message.success('鎿嶄綔鎴愬姛') + this.closeThreeWastesDia() + }).catch(err => { + console.log('err---', err); + this.loading = false + }) + } + } else { + console.log('error submit!!'); + return false; + } + }); + }, + closeThreeWastesDia () { + this.$refs.form.resetFields(); + this.formDia = false + this.$emit('closeThreeWastesDia') + }, + getAuthorizedPerson() { + this.$axios.get(this.$api.user.getUserMenu).then(res => { + let data = [] + res.data.forEach(a => { + data.push({ + label: a.name, + value: a.id + }) + }) + this.personList = data + }) + }, + } +}; +</script> + +<style scoped> +</style> diff --git a/src/components/do/a6-facilities-environment/Personnel-management.vue b/src/components/do/a6-facilities-environment/Personnel-management.vue new file mode 100644 index 0000000..43c74ff --- /dev/null +++ b/src/components/do/a6-facilities-environment/Personnel-management.vue @@ -0,0 +1,241 @@ +<template> + <div> + <div class="search-background"> + <span class="search-group"> + <span style="width: 160px">鏃ユ湡锛�</span> + <el-date-picker v-model="searchForm.registerDate" + clearable + format="yyyy-MM-dd" + placeholder="閫夋嫨鏃ユ湡" + size="small" + style="width: 100%" + type="date" + value-format="yyyy-MM-dd"> + </el-date-picker> + <el-button size="medium" style="margin-left: 10px" @click="resetSearchForm">閲� 缃�</el-button> + <el-button size="medium" type="primary" @click="searchList">鏌� 璇�</el-button> + </span> + <span class="search-group"> + <el-button size="medium" @click="handleDown">瀵� 鍑�</el-button> + <el-button size="medium" type="primary" @click="openFormDia('add')">鏂� 澧�</el-button> + </span> + </div> + <div class="table"> + <ZTTable + :column="tableColumn" + :height="'calc(100vh - 20em)'" + :table-data="tableData" + :table-loading="tableLoading" + style="padding: 0 10px;margin-bottom: 16px"> + </ZTTable> + <el-pagination :current-page="1" :page-size="page.size" :page-sizes="[10, 20, 30, 50, 100]" + :total="total" layout="->,total, sizes, prev, pager, next, jumper" + @size-change="handleSizeChange" + @current-change="handleCurrentChange"> + </el-pagination> + </div> + <personnel-management-dia v-if="threeWastesDia" ref="threeWastesDia" @closeThreeWastesDia="closeThreeWastesDia"></personnel-management-dia> + </div> +</template> + +<script> +import ZTTable from '../../caorui/ZTTable/index.vue'; +import PersonnelManagementDia from './Personnel-management-dia.vue'; +import ThreeWastesDialog from './three-wastes-dialog.vue'; + +export default { + name: 'Personnel-management', + // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢� + components: { ThreeWastesDialog, PersonnelManagementDia, ZTTable }, + data() { + // 杩欓噷瀛樻斁鏁版嵁 + return { + searchForm: { + registerDate: '', + }, + tableColumn: [ + { + label: '鏃ユ湡', + prop: 'registerDate', + minWidth: '100' + }, + { + label: '杩涘叆鍖哄煙', + prop: 'area', + minWidth: '100' + }, + { + label: '杩涘叆浜哄憳', + prop: 'personnel', + minWidth: '100' + }, + { + label: '杩涘叆鍘熷洜', + prop: 'reason', + minWidth: '100' + }, + { + label: '闄悓浜哄憳', + prop: 'accompanyingName', + minWidth: '100' + }, + { + label: '鎵瑰噯浜虹鍚�', + prop: 'approveName', + minWidth: '100' + }, + { + label: '淇濆瘑鍙婂叾浠栨儏鍐�', + prop: 'confidentiality', + minWidth: '100' + }, + { + label: '澶囨敞', + prop: 'remark', + minWidth: '100' + }, + { + dataType: 'action', + fixed: 'right', + minWidth: '220', + label: '鎿嶄綔', + operation: [ + { + name: '缂栬緫', + type: 'text', + clickFun: (row) => { + this.openFormDia('edit', row); + }, + }, + { + name: '鍒犻櫎', + type: 'text', + color: '#f56c6c', + clickFun: (row) => { + this.delPlan(row) + }, + } + ] + } + ], + tableData: [], + tableLoading: false, + page: { + size: 20, + current: 1, + }, + total: 0, + threeWastesDia: false + }; + }, + mounted() { + this.searchList() + }, + // 鏂规硶闆嗗悎 + methods: { + // 鏌ヨ鍒楄〃 + searchList () { + const entity = this.searchForm + const page = this.page + this.tableLoading = true + this.$axios.post(this.$api.foreignRegister.pageForeignRegister, {entity, page}, { + headers: { + "Content-Type": "application/json" + }, + noQs: true + }).then(res => { + this.tableLoading = false + if (res.code === 201) return + this.tableData = res.data.records + this.total = res.data.total + }).catch(err => { + console.log('err---', err); + this.tableLoading = false + }) + }, + // 鍒犻櫎 + delPlan (row) { + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + this.tableLoading = true + this.$axios.get(this.$api.foreignRegister.delForeignRegister + '?registerId=' + row.registerId).then(res => { + this.tableLoading = false + if (res.code === 201) return + this.$message.success('鍒犻櫎鎴愬姛') + this.searchList() + }).catch(err => { + this.tableLoading = false + console.log('err---', err); + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + // 鏂板锛岀紪杈戯紝鎵瑰噯寮规 + openFormDia (type, row) { + this.threeWastesDia = true + this.$nextTick(() => { + this.$refs.threeWastesDia.openDia(type, row) + }) + }, + // 瀵煎嚭 + handleDown (row) { + const entity = this.searchForm + this.$axios.post(this.$api.foreignRegister.exportForeignRegister,{entity},{ + responseType: "blob", + headers: { + "Content-Type": "application/json" + }, + noQs: true}).then(res => { + this.outLoading = false + this.$message.success('瀵煎嚭鎴愬姛') + const blob = new Blob([res],{ type: 'application/msword' }); + const url = URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = url; + link.download = '澶栨潵浜哄憳鐧昏' + '.docx'; + link.click(); + }) + }, + closeThreeWastesDia () { + this.threeWastesDia = false + this.searchList() + }, + // 閲嶇疆鏌ヨ鏉′欢 + resetSearchForm () { + this.searchForm.registerDate = ''; + this.searchList() + }, + // 鍒嗛〉 + handleSizeChange(val) { + this.page.size = val; + this.searchList(); + }, + handleCurrentChange(val) { + this.page.current = val; + this.searchList(); + }, + } +}; +</script> + +<style scoped> +.search-background { + width: 100%; + height: 60px; + line-height: 60px; + display: flex; + justify-content: space-between; +} +.search-group { + display: flex; + align-items: center; + margin: 0 20px; +} +</style> diff --git a/src/components/do/a6-facilities-environment/external-personnel-management.vue b/src/components/do/a6-facilities-environment/external-personnel-management.vue new file mode 100644 index 0000000..89c85fc --- /dev/null +++ b/src/components/do/a6-facilities-environment/external-personnel-management.vue @@ -0,0 +1,124 @@ +<style scoped> + .title { + height: 60px; + line-height: 60px; + } + + .search { + background-color: #fff; + height: 30px; + display: flex; + align-items: center; + } + .search_thing { + display: flex; + align-items: center; + height: 50px; + } + .search_label { + width: 80px; + font-size: 14px; + text-align: right; + } + + .search_input { + width: calc(100% - 120px); + } + .table { + margin-top: 10px; + background-color: #fff; + height: calc(100vh - 18em); + } + +</style> +<template> + <div class="below-standard-main"> + <div style="width: 100%;height: 100%;"> + <div> + <el-row class="title"> + <el-col :span="12" style="padding-left: 20px;text-align: left;">澶栨潵浜哄憳绠$悊</el-col> + <el-col :span="12" style="text-align: right;"> + <el-button size="small" type="primary" @click="$refs['ValueTable'].openAddDia('鏂板鎺ュ彛')" v-if="addPower">鏂� 澧�</el-button> + <el-button size="small" @click="$refs['ValueTable'].openDownDia()">瀵� 鍑�</el-button> + </el-col> + </el-row> + </div> + <div class="search"> + <div class="search_thing"> + <div class="search_label">鏃ユ湡锛�</div> + <div class="search_input"> + <el-date-picker + v-model="componentData.entity.sample" + format="yyyy-MM-dd HH:mm:ss" + value-format="yyyy-MM-dd HH:mm:ss" + type="date" + size="small" + @change="refreshTable()" + placeholder="閫夋嫨鏃ユ湡"> + </el-date-picker> + </div> + </div> + <div class="search_thing" style="padding-left: 30px;"> + <el-button size="small" @click="refresh()">閲� 缃�</el-button> + <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> + </div> + </div> + <div class="table"> + <ValueTable ref="ValueTable" :url="$api.unPass.pageInsUnPass" :componentData="componentData" + :key="upIndex" /> + </div> + </div> + </div> +</template> + +<script> + import ValueTable from '../../tool/value-table.vue' +export default { + components: { + ValueTable, + }, + data() { + return { + componentData: { + entity: { + sample: null, + model: null, + orderBy: { + field: 'id', + order: 'asc' + } + }, + isIndex: true, + showSelect: false, + select: false, + do: [], + tagField: [], + selectField: [], + requiredAdd: [], + requiredUp: [] + }, + entityCopy: {}, + upIndex: 0, + stateList: [], + addPower:true, + } + }, + mounted() { + this.entityCopy = this.HaveJson(this.componentData.entity) + this.getPower() + }, + methods :{ + refreshTable() { + this.$refs['ValueTable'].selectList() + }, + refresh() { + this.componentData.entity = this.HaveJson(this.entityCopy) + this.upIndex++ + }, + // 鏉冮檺鍒嗛厤 + getPower(radio) { + let power = JSON.parse(sessionStorage.getItem('power')) + }, + } +} +</script> diff --git a/src/components/do/a6-facilities-environment/facilities-environmental-conditions.vue b/src/components/do/a6-facilities-environment/facilities-environmental-conditions.vue new file mode 100644 index 0000000..38db4fc --- /dev/null +++ b/src/components/do/a6-facilities-environment/facilities-environmental-conditions.vue @@ -0,0 +1,51 @@ +<template> + <el-row> + <el-col :span="2"> + <el-menu style="height: 100vh;" @select="clickSelect" :default-active="activeName"> + <el-menu-item index="鐢垫簮绋冲畾鎬�"> + <span slot="title">鐢垫簮绋冲畾鎬�</span> + </el-menu-item> + <el-menu-item index="闃查浄妫�娴�"> + <span slot="title">闃查浄妫�娴�</span> + </el-menu-item> + <el-menu-item index="鐓у害璁板綍"> + <span slot="title">鐓у害璁板綍</span> + </el-menu-item> + <el-menu-item index="娓╂箍搴﹁褰�"> + <span slot="title">娓╂箍搴﹁褰�</span> + </el-menu-item> + </el-menu> + </el-col> + <el-col :span="22" style="padding: 10px"> + <power-supply-stability v-if="activeName === '鐢垫簮绋冲畾鎬�'"/> + <lightning-protection-detection v-if="activeName === '闃查浄妫�娴�'" /> + <illuminance-recording v-if="activeName === '鐓у害璁板綍'"/> + <temperature-humidity-record v-if="activeName === '娓╂箍搴﹁褰�'"/> + </el-col> + </el-row> +</template> + +<script> +// 鐢垫簮绋冲畾鎬� +import PowerSupplyStability from "./facilities-environmental-conditions/power-supply-stability.vue"; +// 闃查浄妫�娴� +import LightningProtectionDetection from "./facilities-environmental-conditions/lightning-protection-detection.vue"; +// 鐓у害璁板綍 +import IlluminanceRecording from "./facilities-environmental-conditions/illuminance-recording.vue"; +// 娓╂箍搴﹁褰� +import TemperatureHumidityRecord from "./facilities-environmental-conditions/temperature-humidity-record.vue"; + +export default { + components: {TemperatureHumidityRecord, IlluminanceRecording, LightningProtectionDetection, PowerSupplyStability}, + data() { + return { + activeName: "鐢垫簮绋冲畾鎬�" + } + }, + methods: { + clickSelect(index) { + this.activeName = index; + } + } +} +</script> diff --git a/src/components/do/a6-facilities-environment/facilities-environmental-conditions/illuminance-recording.vue b/src/components/do/a6-facilities-environment/facilities-environmental-conditions/illuminance-recording.vue new file mode 100644 index 0000000..4d32bce --- /dev/null +++ b/src/components/do/a6-facilities-environment/facilities-environmental-conditions/illuminance-recording.vue @@ -0,0 +1,375 @@ +<template> + <div> + <div class="header"> + <div>鐓у害璁板綍</div> + <div> + <el-button type="primary" size="small" @click="clickAdd">鏂� 澧�</el-button> + </div> + </div> + <el-table + :data="tableData" + style="width: 100%" + height="calc(100vh - 18em)"> + <el-table-column type="index" label="搴忓彿" width="120"> + <template v-slot="scope"> + <span>{{ (search.current - 1) * search.size + scope.$index + 1 }}</span> + </template> + </el-table-column> + <el-table-column prop="conclusion" label="缁撹" min-width="180"></el-table-column> + <el-table-column prop="testDate" label="娴嬭瘯鏃ユ湡" width="testDate" min-width="180"></el-table-column> + <el-table-column prop="testerUser" label="妫�娴嬭��" min-width="180"></el-table-column> + <el-table-column prop="checkerUser" label="鏍告煡浜�" min-width="180"></el-table-column> + <el-table-column prop="deviceName" label="璁惧鍚嶇О" min-width="180"></el-table-column> + <el-table-column prop="managementNumber" label="璁惧缂栧彿" min-width="180"></el-table-column> + <el-table-column prop="calibrationDate" label="鏍″噯鏃ユ湡" min-width="180"></el-table-column> + <el-table-column prop="nextCalibrationDate" label="涓嬫鏍″噯鏃ユ湡" min-width="180"></el-table-column> + <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="180"></el-table-column> + <el-table-column fixed="right" label="鎿嶄綔" min-width="140"> + <template v-slot="scope"> + <el-button type="text" size="small" @click="downLoadPost(scope.row)">瀵煎嚭</el-button> + <el-button type="text" size="small" @click="edit(scope.row)">缂栬緫</el-button> + <el-button type="text" size="small" @click="deleteRowFun(scope.row)">鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> + <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]" + :total="search.total" layout="->,total, sizes, prev, pager, next, jumper" + @size-change="handleSizeChange" + @current-change="handleCurrentChange"> + </el-pagination> + <el-dialog + title="鏂板" + :visible.sync="dialogVisible" + @open="openDialog" + width="50%"> + <div style="height: 50vh; overflow-y: auto"> + <el-form ref="form" :model="form" label-width="120px"> + <el-row> + <el-col :span="12"> + <el-form-item label="娴嬭瘯鏃ユ湡" prop="testDate" + :rules="[{ required: true, message: '璇疯緭鍏ユ祴璇曞湴鐐�', trigger: 'change' }]"> + <el-date-picker + value-format="yyyy-MM-dd" + style="width: 100%" + format="yyyy-MM-dd" + size="small" + v-model="form.testDate" + type="date" + placeholder="閫夋嫨鏃ユ湡"> + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="璁惧鍚嶇О" prop="deviceId" + :rules="[{ required: true, message: '璇疯緭鍏ユ祴璇曞湴鐐�', trigger: 'change' }]"> + <el-cascader + size="small" + style="width: 100%" + :props="{ expandTrigger: 'hover', emitPath:false }" + v-model="form.deviceId" + :options="cascaderList" + filterable + clearable + @change="getCalibrationDateFun" + ></el-cascader> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="璁惧缂栧彿"> + <el-input v-model="form.managementNumber" size="small" disabled></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鏍″噯鏃ユ湡"> + <el-input v-model="form.calibrationDate" size="small" disabled></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="涓嬫鏍″噯鏃ユ湡"> + <el-input v-model="form.nextCalibrationDate" size="small" disabled></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="妫�娴嬭��" prop="recipientUser"> + <el-select v-model="form.testerId" filterable placeholder="璇烽�夋嫨" clearable + size="small" style="width: 100%;"> + <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鏍告煡浜�" prop="recipientUser"> + <el-select v-model="form.checkerId" filterable placeholder="璇烽�夋嫨" clearable + size="small" style="width: 100%;" > + <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="24"> + <el-form-item label="缁撹"> + <el-input + type="textarea" + :rows="2" + placeholder="璇疯緭鍏ュ唴瀹�" + v-model="form.conclusion"> + </el-input> + </el-form-item> + </el-col> + </el-row> + <div> + <div style="display: flex; justify-content: flex-end; margin-bottom: 0.5em"> + <el-button type="primary" size="small" @click="feMeasuredQuantityListAdd">鏂板</el-button> + </div> + <div> + <el-table + :data="form.illuminationDetectionAreaList" + style="width: 100%; margin: auto" + height="40vh"> + <el-table-column type="index" label="搴忓彿" width="80"></el-table-column> + <el-table-column + prop="detectionAreaLabel" + label="妫�娴嬪尯鍩熷悕绉�" + align="center" + min-width="180"> + <template #default="{ row }"> + <el-input type="textarea" :rows="1" v-model="row.detectionAreaLabel"></el-input> + </template> + </el-table-column> + <el-table-column + prop="name" + label="妫�娴嬪��" + align="center" + min-width="300"> + <template> + <el-table-column label="绗竴娆�" align="center" prop="valueOne" min-width="100"> + <template #default="{ row }"> + <el-input :rows="1" v-model="row.valueOne" @blur="getAverage(row)"></el-input> + </template> + </el-table-column> + <el-table-column label="绗簩娆�" align="center" prop="valueTwo" min-width="100"> + <template #default="{ row }"> + <el-input :rows="1" v-model="row.valueTwo" @blur="getAverage(row)"></el-input> + </template> + </el-table-column> + <el-table-column label="绗笁娆�" align="center" prop="valueThree" min-width="100"> + <template #default="{ row }"> + <el-input :rows="1" v-model="row.valueThree" @blur="getAverage(row)"></el-input> + </template> + </el-table-column> + <el-table-column label="骞冲潎鍊�" align="center" prop="average" min-width="100"> + <template #default="{ row }"> + <el-input :rows="1" v-model="row.average"></el-input> + </template> + </el-table-column> + </template> + </el-table-column> + <el-table-column + prop="detectionAreaLabel" + label="澶囨敞" + align="center" + min-width="180"> + <template #default="{ row }"> + <el-input type="textarea" :rows="1" v-model="row.remark"></el-input> + </template> + </el-table-column> + <el-table-column + fixed="right" + label="鎿嶄綔" + width="100"> + <template slot-scope="scope"> + <el-button @click="feMeasuredQuantityListDelete(scope.row, scope.$index)" type="text" size="small"> + 鍒犻櫎 + </el-button> + </template> + </el-table-column> + </el-table> + </div> + </div> + </el-form> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="dialogVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="addPowerSupplyStability">纭� 瀹�</el-button> + </span> + </el-dialog> + </div> +</template> + +<script> +export default { + data() { + return { + search: { + size: 20, + current: 1, + total: 0 + }, + tableData: [], + dialogVisible: false, + form: { + deviceId: null, + illuminationDetectionAreaList: [] + }, + cascaderList: [], + responsibleOptions: [], + } + }, + mounted() { + this.initData() + }, + watch: { + dialogVisible(newVal) { + if (!newVal) { + this.form = { + deviceId: null, + illuminationDetectionAreaList: [] + } + } + } + }, + methods: { + getAverage(row) { + if (row.valueOne && row.valueTwo && row.valueThree) { + if (!isNaN(row.valueOne) && !isNaN(row.valueTwo) && !isNaN(row.valueThree)) { + const avg = Number(row.valueOne) + Number(row.valueTwo) + Number(row.valueThree) + console.log(avg) + row.average = Math.round(avg/3); + } else { + this.$message.warning("蹇呴』涓烘暟瀛楋紒") + } + } + }, + edit(row) { + this.$axios.get(this.$api.facilitiesAndEnvironment.getFeIlluminationDetectionArea + "?intensityIlluminationId=" + row.intensityIlluminationId).then(res => { + this.form = {...row} + this.form.illuminationDetectionAreaList = res.data; + this.dialogVisible = true + }); + }, + initData() { + this.$axios.get(this.$api.facilitiesAndEnvironment.getFeLightningProtection + '?size=' + this.search.size + '¤t=' + this.search.current).then(res => { + if (res.code === 201) return; + this.tableData = res.data.records; + this.search.total = res.data.total; + }); + }, + handleSizeChange(val) { + this.search.size = val; + this.initData(); + }, + handleCurrentChange(val) { + this.search.current = val; + this.initData(); + }, + deleteRowFun(row) { + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + this.$axios.delete(this.$api.facilitiesAndEnvironment.deleteFeLightningProtection + '?intensityIlluminationId=' + row.intensityIlluminationId).then(res => { + this.$message.success('鍒犻櫎鎴愬姛锛�') + this.initData() + }) + }) + }, + feMeasuredQuantityListDelete(row, index) { + if (row.detectionAreaId) { + this.$axios.delete(this.$api.facilitiesAndEnvironment.deleteFeIlluminationDetectionArea + '?detectionAreaId=' + row.detectionAreaId).then(res => { + if (res.code === 201) return + this.form.illuminationDetectionAreaList.splice(index, 1) + this.$message.success('鍒犻櫎鎴愬姛锛�') + }) + } else { + this.form.illuminationDetectionAreaList.splice(index, 1) + this.$message.success('鍒犻櫎鎴愬姛锛�') + } + }, + openDialog() { + this.$axios.get(this.$api.deviceScope.treeDevice).then(res => { + this.cascaderList = res.data; + }); + this.$nextTick(() => { + this.$refs['form'].clearValidate() + }) + this.getUserList() + }, + clickAdd() { + this.dialogVisible = true + }, + feMeasuredQuantityListAdd() { + const obj = { + detectionAreaLabel: null, + valueOne: null, + valueTwo: null, + valueThree: null, + average: null, + remark: null, + } + this.form.illuminationDetectionAreaList.push(obj) + }, + addPowerSupplyStability() { + this.$refs.form.validate((valid) => { + if (valid) { + this.$axios.post(this.$api.facilitiesAndEnvironment.addFeLightningProtection, this.form, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + this.initData() + this.dialogVisible = false + }) + } + }); + }, + // 鑾峰彇璐熻矗浜轰俊鎭帴鍙� + getUserList() { + this.$axios.get(this.$api.deviceScope.selectUserList).then(res => { + if (res.code == 200) { + this.responsibleOptions = res.data + } + }) + }, + getCalibrationDateFun() { + if (this.form.deviceId) { + this.$axios.get(this.$api.facilitiesAndEnvironment.getCalibrationDate + '?deviceId=' + this.form.deviceId).then(res => { + if (res.code === 201) return; + this.$set(this.form, 'deviceName', res.data.deviceName) + this.$set(this.form, 'managementNumber', res.data.managementNumber) + this.$set(this.form, 'calibrationDate', res.data.calibrationDate) + this.$set(this.form, 'nextCalibrationDate', res.data.nextCalibrationDate) + }); + } else { + this.form.deviceName = null + this.form.managementNumber = null + this.form.calibrationDate = null + this.form.nextCalibrationDate = null + } + }, + // 瀵煎嚭 + downLoadPost(row) { + this.$axios.get(this.$api.facilitiesAndEnvironment.exportFeIllumination + '?intensityIlluminationId=' + row.intensityIlluminationId,{responseType: "blob"}).then(res => { + this.outLoading = false + this.$message.success('瀵煎嚭鎴愬姛') + const blob = new Blob([res],{ type: 'application/msword' }); + const url = URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = url; + link.download = '鐓у害璁板綍' + '.docx'; + link.click(); + }) + }, + } +} +</script> + +<style scoped> +.header { + height: 3em; + width: 100%; + display: flex; + justify-content: space-between; +} +</style> diff --git a/src/components/do/a6-facilities-environment/facilities-environmental-conditions/lightning-protection-detection.vue b/src/components/do/a6-facilities-environment/facilities-environmental-conditions/lightning-protection-detection.vue new file mode 100644 index 0000000..c99a0d4 --- /dev/null +++ b/src/components/do/a6-facilities-environment/facilities-environmental-conditions/lightning-protection-detection.vue @@ -0,0 +1,268 @@ +<template> + <div> + <div class="header"> + <div>闃查浄妫�娴�</div> + <div> + <el-button type="primary" size="small" @click="clickAdd">瀵� 鍏�</el-button> + <el-button type="primary" size="small" @click="downLoadPost">瀵� 鍑�</el-button> + </div> + </div> + <el-table + :data="tableData" + style="width: 100%" + height="calc(100vh - 18em)"> + <el-table-column type="index" label="搴忓彿" width="120"> + <template v-slot="scope"> + <span>{{ (search.current - 1) * search.size + scope.$index + 1 }}</span> + </template> + </el-table-column> + <el-table-column + prop="fileName" + label="鍘熸枃浠跺悕" + min-width="180"> + </el-table-column> + <el-table-column + prop="detectionDate" + label="妫�娴嬫棩鏈�" + min-width="180"> + </el-table-column> + <el-table-column + prop="termValidity" + min-width="180" + label="鏈夋晥鏈�"> + </el-table-column> + <el-table-column + prop="detectionUnit" + min-width="180" + label="妫�娴嬪崟浣�"> + </el-table-column> + <el-table-column fixed="right" label="鎿嶄綔" min-width="100"> + <template v-slot="scope"> + <el-button type="text" size="small" @click="edit(scope.row)">缂栬緫</el-button> + <el-button type="text" size="small" @click="deleteRowFun(scope.row)">鍒犻櫎</el-button> + <el-button type="text" size="small" @click="download(scope.row)">涓嬭浇</el-button> + </template> + </el-table-column> + </el-table> + <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]" + :total="search.total" layout="->,total, sizes, prev, pager, next, jumper" + @size-change="handleSizeChange" + @current-change="handleCurrentChange"> + </el-pagination> + <el-dialog + title="鏂� 澧�" + :visible.sync="dialogVisible" + width="50%"> + <div style="height: 50vh;"> + <el-form ref="form" :model="form" label-width="80px"> + <el-row> + <el-col :span="12"> + <el-form-item label="妫�娴嬫棩鏈�" prop="detectionDate" + :rules="[{ required: true, message: '璇疯緭鍏ユ祴璇曞湴鐐�', trigger: 'blur' }]"> + <el-date-picker + value-format="yyyy-MM-dd" + format="yyyy-MM-dd" + style="width: 100%" + size="small" + v-model="form.detectionDate" + type="date" + placeholder="閫夋嫨鏃ユ湡"> + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鏈夋晥鏈�" prop="termValidity" + :rules="[{ required: true, message: '璇疯緭鍏ユ祴璇曞湴鐐�', trigger: 'blur' }]"> + <el-date-picker + value-format="yyyy-MM-dd" + format="yyyy-MM-dd" + style="width: 100%" + size="small" + v-model="form.termValidity" + type="date" + placeholder="閫夋嫨鏃ユ湡"> + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="24"> + <el-form-item label="妫�娴嬪崟浣�" prop="detectionUnit" + :rules="[{ required: true, message: '璇疯緭鍏ユ祴璇曞湴鐐�', trigger: 'blur' }]"> + <el-input v-model="form.detectionUnit" size="small"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="妫�娴嬪崟浣�" > + <el-upload + class="upload-demo" + drag + action="#" + :on-remove="handleRemove" + :http-request="httpRequest" + :file-list="form.fileList" + :on-exceed="handleExceed" + :limit="1" + multiple> + <i class="el-icon-upload"></i> + <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div> + </el-upload> + </el-form-item> + </el-col> + </el-row> + </el-form> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="dialogVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="addImport">纭� 瀹�</el-button> + </span> + </el-dialog> + </div> +</template> + +<script> + +export default { + data() { + return { + search: { + size: 20, + current: 1, + total: 0 + }, + tableData: [], + dialogVisible: false, + form: { + fileList: [], + fileData: [] + }, + } + }, + mounted() { + this.initData() + }, + watch: { + dialogVisible(newVal) { + if (!newVal) { + this.form = { + fileList: [], + fileData: [] + } + } + } + }, + methods: { + // 瀵煎嚭 + downLoadPost() { + this.$axios.get(this.$api.facilitiesAndEnvironment.exportOfLightningProtectionDetection,{responseType: "blob"}).then(res => { + this.outLoading = false + this.$message.success('瀵煎嚭鎴愬姛') + const blob = new Blob([res],{ type: 'application/msword' }); + const url = URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = url; + link.download = '闃查浄妫�娴嬪鍑�' + '.xlsx'; + link.click(); + }) + }, + initData() { + this.$axios.get(this.$api.facilitiesAndEnvironment.getLightningProtectionDetection + '?size=' + this.search.size + '¤t=' + this.search.current).then(res => { + if (res.code === 201) return; + this.tableData = res.data.records; + this.search.total = res.data.total; + }); + }, + handleSizeChange(val) { + this.search.size = val; + this.initData(); + }, + handleCurrentChange(val) { + this.search.current = val; + this.initData(); + }, + clickAdd() { + this.dialogVisible = true + }, + // 鏂囦欢鏁伴噺杩囧鏃舵彁閱� + handleExceed() { + this.$message({type: 'error', message: '鏈�澶氭敮鎸�1涓檮浠朵笂浼�'}) + }, + // 瑕嗙洊榛樿鐨勪笂浼犺涓猴紝鍙互鑷畾涔変笂浼犵殑瀹炵幇锛屽皢涓婁紶鐨勬枃浠朵緷娆℃坊鍔犲埌fileList鏁扮粍涓�,鏀寔澶氫釜鏂囦欢 + httpRequest(option) { + this.form.fileData.push(option) + }, + addImport() { + console.log(this.form) + this.$refs.form.validate((valid) => { + if (valid) { + let params = new FormData() + if (this.form.lightningProtectionId) { + params.append("lightningProtectionId", this.form.lightningProtectionId) + } + params.append("termValidity", this.form.termValidity) + params.append("detectionUnit", this.form.detectionUnit) + params.append("detectionDate", this.form.detectionDate) + if (this.form.fileData.length > 0) { + params.append("file", this.form.fileData[0].file) + } + this.$axios.post(this.$api.facilitiesAndEnvironment.addLightningProtectionDetection, params, { + headers: {'Content-Type': 'multipart/form-data;'}, + noQs: true + }).then(res => { + if (res.code === 201) return; + this.dialogVisible = false + this.initData() + }); + } + }); + }, + edit(row) { + this.dialogVisible = true + this.form = {...row} + this.form.fileList = [] + this.form.fileData = [] + this.form.fileList.push({name: row.systemFileName, url: "123434"}) + console.log(this.form) + }, + deleteRowFun(row) { + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + this.$axios.delete(this.$api.facilitiesAndEnvironment.deleteLightningProtectionDetection + '?lightningProtectionId=' + row.lightningProtectionId).then(res => { + this.$message.success('鍒犻櫎鎴愬姛锛�') + this.initData() + }) + }) + }, + handleRemove(file) { + this.$axios.delete(this.$api.personnel.deleteCNASFile + "?fileName=" + file.name).then(res => { + if (res.code === 201) return; + this.$message.success('鍒犻櫎鎴愬姛锛�') + let index = this.form.fileList.indexOf(fileName) + if (index != -1) { + this.successFileList.splice(index, 1) + } + }) + }, + download(row) { + let url = ''; + + // fileDownload.downloadIamge(url, row.fileName) + url = this.javaApi + 'img/' + row.systemFileName + const link = document.createElement('a'); + link.href = url; + link.download = row.fileName; + link.click(); + } + } +} +</script> + +<style scoped> +.header { + height: 3em; + width: 100%; + display: flex; + justify-content: space-between; +} +</style> diff --git a/src/components/do/a6-facilities-environment/facilities-environmental-conditions/power-supply-stability.vue b/src/components/do/a6-facilities-environment/facilities-environmental-conditions/power-supply-stability.vue new file mode 100644 index 0000000..4cbed1f --- /dev/null +++ b/src/components/do/a6-facilities-environment/facilities-environmental-conditions/power-supply-stability.vue @@ -0,0 +1,360 @@ +<template> + <div> + <div class="header"> + <div>鐢垫簮绋冲畾鎬�</div> + <div> + <el-button type="primary" size="small" @click="dialogVisible = true">鏂� 澧�</el-button> + </div> + </div> + <el-table + :data="tableData" + style="width: 100%" + height="calc(100vh - 18em)"> + <el-table-column type="index" label="搴忓彿" width="120"> + <template v-slot="scope"> + <span>{{ (search.current - 1) * search.size + scope.$index + 1 }}</span> + </template> + </el-table-column> + <el-table-column prop="testLocation" label="娴嬭瘯鍦扮偣" min-width="180"></el-table-column> + <el-table-column prop="testDate" label="娴嬭瘯鏃ユ湡" width="testDate" min-width="180"></el-table-column> + <el-table-column prop="conclusion" label="缁撹" min-width="180"></el-table-column> + <el-table-column prop="testerUser" label="妫�娴嬭��" min-width="180"></el-table-column> + <el-table-column prop="checkerUser" label="鏍告煡浜�" min-width="180"></el-table-column> + <el-table-column prop="deviceName" label="璁惧鍚嶇О" min-width="180"></el-table-column> + <el-table-column prop="managementNumber" label="璁惧缂栧彿" min-width="180"></el-table-column> + <el-table-column prop="calibrationDate" label="鏍″噯鏃ユ湡" min-width="180"></el-table-column> + <el-table-column prop="nextCalibrationDate" label="涓嬫鏍″噯鏃ユ湡" min-width="180"></el-table-column> + <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="180"></el-table-column> + <el-table-column fixed="right" label="鎿嶄綔" min-width="140"> + <template v-slot="scope"> + <el-button type="text" size="small" @click="downLoadPost(scope.row)">瀵煎嚭</el-button> + <el-button type="text" size="small" @click="edit(scope.row)">缂栬緫</el-button> + <el-button type="text" size="small" @click="deleteRowFun(scope.row)">鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> + <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]" + :total="search.total" layout="->,total, sizes, prev, pager, next, jumper" + @size-change="handleSizeChange" + @current-change="handleCurrentChange"> + </el-pagination> + <el-dialog + title="鏂板" + :visible.sync="dialogVisible" + @open="openDialog" + width="50%"> + <div style="height: 50vh; overflow-y: auto"> + <el-form ref="form" :model="form" label-width="120px"> + <el-row> + <el-col :span="12"> + <el-form-item label="娴嬭瘯鍦扮偣" prop="testLocation" + :rules="[{ required: true, message: '璇疯緭鍏ユ祴璇曞湴鐐�', trigger: 'blur' }]"> + <el-input v-model="form.testLocation" size="small"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="娴嬭瘯鏃ユ湡" prop="testDate" + :rules="[{ required: true, message: '璇疯緭鍏ユ祴璇曞湴鐐�', trigger: 'change' }]"> + <el-date-picker + value-format="yyyy-MM-dd" + style="width: 100%" + format="yyyy-MM-dd" + size="small" + v-model="form.testDate" + type="date" + placeholder="閫夋嫨鏃ユ湡"> + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="璁惧鍚嶇О" prop="deviceId" + :rules="[{ required: true, message: '璇疯緭鍏ユ祴璇曞湴鐐�', trigger: 'change' }]"> + <el-cascader + size="small" + style="width: 100%" + :props="{ expandTrigger: 'hover', emitPath:false }" + v-model="form.deviceId" + :options="cascaderList" + filterable + clearable + @change="getCalibrationDateFun" + ></el-cascader> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="璁惧缂栧彿"> + <el-input v-model="form.managementNumber" size="small" disabled></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鏍″噯鏃ユ湡"> + <el-input v-model="form.calibrationDate" size="small" disabled></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="涓嬫鏍″噯鏃ユ湡"> + <el-input v-model="form.nextCalibrationDate" size="small" disabled></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="妫�娴嬭��" prop="recipientUser"> + <el-select v-model="form.testerId" filterable placeholder="璇烽�夋嫨" clearable + size="small" style="width: 100%;"> + <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鏍告煡浜�" prop="recipientUser"> + <el-select v-model="form.checkerId" filterable placeholder="璇烽�夋嫨" clearable + size="small" style="width: 100%;" > + <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="24"> + <el-form-item label="缁撹"> + <el-input + type="textarea" + :rows="2" + placeholder="璇疯緭鍏ュ唴瀹�" + v-model="form.conclusion"> + </el-input> + </el-form-item> + </el-col> + </el-row> + <div> + <div style="display: flex; justify-content: flex-end; margin-bottom: 0.5em"> + <el-button type="primary" size="small" @click="feMeasuredQuantityListAdd">鏂板</el-button> + </div> + <div> + <el-table + :data="form.feMeasuredQuantityList" + style="width: 100%; margin: auto" + height="40vh"> + <el-table-column type="index" label="搴忓彿" width="80"></el-table-column> + <el-table-column + prop="measuredQuantityLabel" + label="娴嬪畾閲忓悕绉�" + align="center" + min-width="180"> + <template #default="{ row }"> + <el-input type="textarea" :rows="1" v-model="row.measuredQuantityLabel"></el-input> + </template> + </el-table-column> + <el-table-column + prop="name" + label="鍊�" + align="center" + min-width="300"> + <template> + <el-table-column label="A" align="center" prop="valueA" min-width="100"> + <template #default="{ row }"> + <el-input :rows="1" v-model="row.valueA"></el-input> + </template> + </el-table-column> + <el-table-column label="B" align="center" prop="valueB" min-width="100"> + <template #default="{ row }"> + <el-input :rows="1" v-model="row.valueB"></el-input> + </template> + </el-table-column> + <el-table-column label="C" align="center" prop="valueC" min-width="100"> + <template #default="{ row }"> + <el-input :rows="1" v-model="row.valueC"></el-input> + </template> + </el-table-column> + </template> + </el-table-column> + <el-table-column + fixed="right" + label="鎿嶄綔" + width="100"> + <template slot-scope="scope"> + <el-button @click="feMeasuredQuantityListDelete(scope.row, scope.$index)" type="text" size="small"> + 鍒犻櫎 + </el-button> + </template> + </el-table-column> + </el-table> + </div> + </div> + </el-form> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="dialogVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="addPowerSupplyStability">纭� 瀹�</el-button> + </span> + </el-dialog> + </div> +</template> + +<script> +export default { + data() { + return { + search: { + size: 20, + current: 1, + total: 0 + }, + tableData: [], + dialogVisible: false, + form: { + deviceId: null, + feMeasuredQuantityList: [] + }, + cascaderList: [], + responsibleOptions: [] + } + }, + mounted() { + this.initData() + }, + watch: { + dialogVisible(newVal) { + if (!newVal) { + this.form = { + deviceId: null, + feMeasuredQuantityList: [] + } + } + } + }, + methods: { + // 鍒濆鍖栬皟鐢� + initData() { + this.$axios.get(this.$api.facilitiesAndEnvironment.getLaboratoryFacilityPowerStablePage + '?size=' + this.search.size + '¤t=' + this.search.current).then(res => { + if (res.code === 201) return; + this.tableData = res.data.records; + this.search.total = res.data.total; + }); + }, + handleSizeChange(val) { + this.search.size = val; + this.initData(); + }, + handleCurrentChange(val) { + this.search.current = val; + this.initData(); + }, + // 鐢垫簮绋冲畾鎬� 琛ㄦ牸涓殑琛屽垹闄ゆ寜閽� + deleteRowFun(row) { + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + this.$axios.delete(this.$api.facilitiesAndEnvironment.deleteLaboratoryFacilityPowerStable + '?powerStableId=' + row.powerStableId).then(res => { + this.$message.success('鍒犻櫎鎴愬姛锛�') + this.initData() + }) + }) + }, + // 鐢垫簮绋冲畾鎬�-鎵撳紑寮规璋冪敤璁惧鎺ュ彛锛屾煡璇娇鐢ㄧ殑璁惧 + openDialog() { + this.$axios.get(this.$api.deviceScope.treeDevice).then(res => { + this.cascaderList = res.data; + }); + this.$nextTick(() => { + this.$refs['form'].clearValidate() + }) + this.getUserList() + }, + // 鐢垫簮绋冲畾鎬�-寮规鐨勯�夋嫨璁惧鍚庤皟鐢ㄦ帴鍙o紝鏌ヨ璁惧缂栧彿锛屾牎鍑嗘棩鏈燂紝涓嬫鏍″噯鏃ユ湡 + getCalibrationDateFun() { + if (this.form.deviceId) { + this.$axios.get(this.$api.facilitiesAndEnvironment.getCalibrationDate + '?deviceId=' + this.form.deviceId).then(res => { + if (res.code === 201) return; + this.$set(this.form, 'deviceName', res.data.deviceName) + this.$set(this.form, 'managementNumber', res.data.managementNumber) + this.$set(this.form, 'calibrationDate', res.data.calibrationDate) + this.$set(this.form, 'nextCalibrationDate', res.data.nextCalibrationDate) + }); + } else { + this.form.deviceName = null + this.form.managementNumber = null + this.form.calibrationDate = null + this.form.nextCalibrationDate = null + } + }, + // 鐢垫簮绋冲畾鎬�-娴嬪畾閲忓脊妗嗕腑琛ㄦ牸鐨勫垹闄よ + feMeasuredQuantityListDelete(row, index) { + if (row.measuredQuantityId) { + this.$axios.delete(this.$api.facilitiesAndEnvironment.deleteFeMeasuredQuantity + '?measuredQuantityId=' + row.measuredQuantityId).then(res => { + if (res.code === 201) return + this.form.feMeasuredQuantityList.splice(index, 1) + this.$message.success('鍒犻櫎鎴愬姛锛�') + }) + } else { + this.form.feMeasuredQuantityList.splice(index, 1) + this.$message.success('鍒犻櫎鎴愬姛锛�') + } + }, + // 鐢垫簮绋冲畾鎬�-娴嬪畾閲忚〃鏍兼柊澧炶 + feMeasuredQuantityListAdd() { + const obj = { + measuredQuantityLabel: null, + valueA: null, + valueB: null, + valueC: null, + } + this.form.feMeasuredQuantityList.push(obj) + }, + // 鐢垫簮绋冲畾鎬� 鏂板 + addPowerSupplyStability() { + this.$refs.form.validate((valid) => { + if (valid) { + this.$axios.post(this.$api.facilitiesAndEnvironment.addLaboratoryFacilityPowerStable, this.form, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + this.initData() + this.dialogVisible = false + }) + } + }); + }, + // 瀵煎嚭 + downLoadPost(row) { + this.$axios.get(this.$api.facilitiesAndEnvironment.exportFePowerStable + '?powerStableId=' + row.powerStableId,{responseType: "blob"}).then(res => { + this.outLoading = false + this.$message.success('瀵煎嚭鎴愬姛') + const blob = new Blob([res],{ type: 'application/msword' }); + const url = URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = url; + link.download = '鐢垫簮绋冲畾鎬�' + '.docx'; + link.click(); + }) + }, + // 鐢垫簮绋冲畾鎬� 鐐瑰嚮琛岀紪杈戣Е鍙� + edit(row) { + this.$axios.get(this.$api.facilitiesAndEnvironment.getFeMeasuredQuantityService + "?powerStableId=" + row.powerStableId).then(res => { + this.form = {...row} + this.form.feMeasuredQuantityList = res.data; + this.dialogVisible = true + }); + }, + // 鑾峰彇璐熻矗浜轰俊鎭帴鍙� + getUserList() { + this.$axios.get(this.$api.deviceScope.selectUserList).then(res => { + if (res.code == 200) { + this.responsibleOptions = res.data + } + }) + }, + } +} +</script> + +<style scoped> +.header { + height: 3em; + width: 100%; + display: flex; + justify-content: space-between; +} +</style> diff --git a/src/components/do/a6-facilities-environment/facilities-environmental-conditions/temperature-humidity-record.vue b/src/components/do/a6-facilities-environment/facilities-environmental-conditions/temperature-humidity-record.vue new file mode 100644 index 0000000..5868d53 --- /dev/null +++ b/src/components/do/a6-facilities-environment/facilities-environmental-conditions/temperature-humidity-record.vue @@ -0,0 +1,390 @@ +<template> + <div> + <el-row :gutter="20"> + <el-col :span="12"> + <div class="header"> + <div>璇曢獙鍖哄煙</div> + <div> + <el-button type="primary" size="small" @click="clickAdd">鏂� 澧�</el-button> + </div> + </div> + <el-table + :data="tableData" + style="width: 100%" + @row-click="clickRow" + highlight-current-row + height="calc(100vh - 18em)"> + <el-table-column type="index" label="搴忓彿" width="80"> + <template v-slot="scope"> + <span>{{ (search.current - 1) * search.size + scope.$index + 1 }}</span> + </template> + </el-table-column> + <el-table-column prop="monthDate" label="鏈堝害鏃堕棿" min-width="180"></el-table-column> + <el-table-column prop="testAreaName" label="璇曢獙鍖哄煙鍚嶇О" min-width="180"></el-table-column> + <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="180"></el-table-column> + <el-table-column prop="createName" label="鍒涘缓浜�" min-width="180"></el-table-column> + <el-table-column fixed="right" label="鎿嶄綔" min-width="140"> + <template v-slot="scope"> + <el-button type="text" size="small" @click="downLoadPost(scope.row)">瀵煎嚭</el-button> + <el-button type="text" size="small" @click="edit(scope.row)">缂栬緫</el-button> + <el-button type="text" size="small" @click="deleteRowFun(scope.row)">鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> + <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]" + :total="search.total" layout="->,total, sizes, prev, pager, next, jumper" + @size-change="handleSizeChange" + @current-change="handleCurrentChange"> + </el-pagination> + </el-col> + <el-col :span="12"> + <div class="header"> + <div>娓╂箍搴﹁褰曪細{{ saveRow.monthDate }}</div> + <div> + <el-button type="primary" size="small" v-if="saveRow.monthDate" @click="dialogVisible1 = true">鏂� 澧�</el-button> + </div> + </div> + <el-table + :data="tableData1" + style="width: 100%" + height="calc(100vh - 18em)"> + <el-table-column type="index" label="搴忓彿" width="80"> + <template v-slot="scope"> + <span>{{ (search1.current - 1) * search1.size + scope.$index + 1 }}</span> + </template> + </el-table-column> + <el-table-column label="涓婂崍" min-width="200" align="center"> + <template> + <el-table-column prop="morningTestTime" label="鏃堕棿" min-width="110" show-overflow-tooltip></el-table-column> + <el-table-column prop="morningTemp" label="娓╁害" min-width="80" show-overflow-tooltip></el-table-column> + <el-table-column prop="morningHum" label="婀垮害" min-width="80" show-overflow-tooltip></el-table-column> + </template> + </el-table-column> + <el-table-column prop="morningRecorderUser" label="璁板綍鍛�" min-width="100"></el-table-column> + <el-table-column label="涓嬪崍" min-width="200" align="center"> + <template> + <el-table-column prop="afternoonTime" label="鏃堕棿" min-width="110" show-overflow-tooltip></el-table-column> + <el-table-column prop="afternoonTemp" label="娓╁害" min-width="80" show-overflow-tooltip></el-table-column> + <el-table-column prop="afternoonHum" label="婀垮害" min-width="80" show-overflow-tooltip></el-table-column> + </template> + </el-table-column> + <el-table-column prop="afternoonRecorderUser" label="璁板綍鍛�" min-width="100"></el-table-column> + <el-table-column prop="note" label="澶囨敞" show-overflow-tooltip min-width="100"></el-table-column> + <el-table-column fixed="right" label="鎿嶄綔" min-width="100"> + <template v-slot="scope"> + <el-button type="text" size="small" @click="edit1(scope.row)">缂栬緫</el-button> + <el-button type="text" size="small" @click="deleteRowFun1(scope.row)">鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> + <el-pagination :current-page="1" :page-size="search1.size" :page-sizes="[10, 20, 30, 50, 100]" + :total="search1.total" layout="->,total, sizes, prev, pager, next, jumper" + @size-change="handleSizeChange1" + @current-change="handleCurrentChange1"> + </el-pagination> + </el-col> + </el-row> + <el-dialog + title="鎻愮ず" + :visible.sync="dialogVisible" + width="50%"> + <div style="height: 20vh;"> + <el-form ref="form" :model="form" label-width="80px"> + <el-row> + <el-col :span="24"> + <el-form-item label="鏈堝害鏃堕棿" prop="monthDate" + :rules="[{ required: true, message: '璇疯緭鍏ユ湀搴︽椂闂�', trigger: 'blur' }]"> + <el-date-picker + value-format="yyyy-MM-dd" + style="width: 100%" + format="yyyy-MM-dd" + size="small" + v-model="form.monthDate" + type="date" + placeholder="閫夋嫨鏃ユ湡"> + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="24"> + <el-form-item label="璇曢獙鍖哄煙" prop="testAreaName" + :rules="[{ required: true, message: '璇疯緭鍏ヨ瘯楠屽尯鍩�', trigger: 'blur' }]"> + <el-input v-model="form.testAreaName"></el-input> + </el-form-item> + </el-col> + </el-row> + </el-form> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="dialogVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="addPowerSupplyStability">纭� 瀹�</el-button> + </span> + </el-dialog> + <el-dialog + title="鎻愮ず" + :visible.sync="dialogVisible1" + @open="openDialog" + width="50%"> + <div style="height: 40vh;"> + <el-form ref="form1" :model="form1" label-width="120px"> + <el-row> + <el-col :span="12"> + <el-form-item label="涓婂崍鏃堕棿"> + <el-date-picker + value-format="yyyy-MM-dd hh:mm:ss" + style="width: 100%" + format="yyyy-MM-dd hh:mm:ss" + size="small" + v-model="form1.morningTestTime" + type="datetime" + placeholder="璇烽�夋嫨鏃堕棿"> + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="涓婂崍娓╁害"> + <el-input v-model="form1.morningTemp" size="small"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="涓婂崍婀垮害"> + <el-input v-model="form1.morningHum" size="small"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="涓婂崍璁板綍鍛�"> + <el-select v-model="form1.morningRecorderId" filterable placeholder="璇烽�夋嫨" clearable + size="small" style="width: 100%;"> + <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="涓嬪崍鏃堕棿"> + <el-date-picker + value-format="yyyy-MM-dd hh:mm:ss" + style="width: 100%" + format="yyyy-MM-dd hh:mm:ss" + size="small" + v-model="form1.afternoonTime" + type="datetime" + placeholder="璇烽�夋嫨鏃堕棿"> + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="涓嬪崍娓╁害"> + <el-input v-model="form1.afternoonTemp" size="small"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="涓嬪崍婀垮害"> + <el-input v-model="form1.afternoonHum" size="small"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="涓嬪崍璁板綍鍛�"> + <el-select v-model="form1.afternoonRecorderId" filterable placeholder="璇烽�夋嫨" clearable + size="small" style="width: 100%;"> + <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="24"> + <el-form-item label="澶囨敞"> + <el-input + type="textarea" + :rows="2" + placeholder="璇疯緭鍏ュ唴瀹�" + v-model="form1.note"> + </el-input> + </el-form-item> + </el-col> + </el-row> + </el-form> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="dialogVisible1 = false">鍙� 娑�</el-button> + <el-button type="primary" @click="addPowerSupplyStability1">纭� 瀹�</el-button> + </span> + </el-dialog> + </div> +</template> + +<script> +export default { + data() { + return { + search: { + size: 20, + current: 1, + total: 0 + }, + search1: { + size: 20, + current: 1, + total: 0 + }, + tableData: [], + tableData1: [], + dialogVisible: false, + dialogVisible1: false, + form: {}, + form1: {}, + saveRow: {}, + responsibleOptions: [] + } + }, + mounted() { + this.initData() + }, + watch: { + dialogVisible(newVal) { + if (!newVal) { + this.form = { + } + } + }, + dialogVisible1(newVal) { + if (!newVal) { + this.form1 = { + } + } + } + }, + methods: { + // 瀵煎嚭 + downLoadPost(row) { + this.$axios.get(this.$api.facilitiesAndEnvironment.exportTemperatureAndHumidityRecords + '?dateId=' + row.dateId,{responseType: "blob"}).then(res => { + this.outLoading = false + this.$message.success('瀵煎嚭鎴愬姛') + const blob = new Blob([res],{ type: 'application/msword' }); + const url = URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = url; + link.download = '娓╂箍搴﹁褰�' + '.docx'; + link.click(); + }) + }, + openDialog() { + this.$axios.get(this.$api.deviceScope.selectUserList).then(res => { + if (res.code == 200) { + this.responsibleOptions = res.data + } + }) + }, + addPowerSupplyStability() { + this.$refs.form.validate((valid) => { + if (valid) { + this.$axios.post(this.$api.facilitiesAndEnvironment.addFeTempHumDate, this.form, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + this.initData() + this.dialogVisible = false + }) + } + }); + }, + addPowerSupplyStability1() { + if (!this.saveRow) { + this.$message.warning("璇烽�夋嫨璇曢獙鍖哄煙锛�") + return + } + this.$refs.form1.validate((valid) => { + if (valid) { + this.form1.dateId = this.saveRow.dateId + this.$axios.post(this.$api.facilitiesAndEnvironment.addFeTempHumRecord, this.form1, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + this.initData1(this.saveRow.dateId) + this.dialogVisible1 = false + }) + } + }); + }, + clickRow(row) { + this.saveRow = row + this.initData1(row.dateId) + }, + edit(row) { + this.form = {...row} + this.dialogVisible = true + }, + deleteRowFun(row) { + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + this.$axios.delete(this.$api.facilitiesAndEnvironment.deleteFeTempHumDate + '?dateId=' + row.dateId).then(res => { + this.$message.success('鍒犻櫎鎴愬姛锛�') + this.initData() + }) + }) + }, + edit1(row) { + this.form1 = {...row} + this.dialogVisible1 = true + }, + deleteRowFun1(row) { + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + this.$axios.delete(this.$api.facilitiesAndEnvironment.deleteFeTempHumRecord + '?tempHumId=' + row.tempHumId).then(res => { + this.$message.success('鍒犻櫎鎴愬姛锛�') + this.initData1(this.saveRow.dateId) + }) + }) + }, + initData() { + this.$axios.get(this.$api.facilitiesAndEnvironment.getFeTempHumDate + '?size=' + this.search.size + '¤t=' + this.search.current).then(res => { + if (res.code === 201) return; + this.tableData = res.data.records; + this.search.total = res.data.total; + }); + }, + initData1(dateId) { + this.$axios.get(this.$api.facilitiesAndEnvironment.getFeTempHumRecordPage + '?size=' + this.search1.size + '¤t=' + this.search1.current + '&dateId=' + dateId).then(res => { + if (res.code === 201) return; + this.tableData1 = res.data.records; + this.search1.total = res.data.total; + }); + }, + handleSizeChange(val) { + this.search.size = val; + this.initData(); + }, + handleCurrentChange(val) { + this.search.current = val; + this.initData(); + }, + handleSizeChange1(val) { + this.search1.size = val; + this.initData1(); + }, + handleCurrentChange1(val) { + this.search1.current = val; + this.initData1(); + }, + clickAdd() { + this.dialogVisible = true + } + } +} +</script> + +<style scoped> +.header { + height: 3em; + width: 100%; + display: flex; + justify-content: space-between; +} +</style> diff --git a/src/components/do/a6-facilities-environment/three-wastes-dialog.vue b/src/components/do/a6-facilities-environment/three-wastes-dialog.vue new file mode 100644 index 0000000..09d5ca2 --- /dev/null +++ b/src/components/do/a6-facilities-environment/three-wastes-dialog.vue @@ -0,0 +1,190 @@ +<template> + <div> + <el-dialog v-loading="diaLoading" :close-on-click-modal="false" + :close-on-press-escape="false" + :visible.sync="formDia" + title="涓夊簾澶勭悊淇℃伅" + width="80%" @close="closeThreeWastesDia"> + <el-form ref="form" :model="form" :rules="rules" label-width="auto"> + <el-col :span="24"> + <el-form-item label="澶囨敞" prop="purposes"> + <el-input v-model="form.remark" clearable size="small"></el-input> + </el-form-item> + </el-col> + </el-form> + <div style="text-align: right;margin-bottom: 10px"> + <el-button size="small" type="primary" @click="addRow">娣诲姞</el-button> + <el-button size="small" type="danger" @click="clearTable">娓呯┖</el-button> + </div> + <el-table :data="wastesDetailList" border height="300" style="width: 100%"> + <el-table-column align="center" label="搴忓彿" type="index" width="60" /> + <el-table-column header-align="center" label="鎺ユ敹浜�" prop="acceptor"> + <template slot-scope="{row}"> + <el-input v-model="row.acceptor" size="small"/> + </template> + </el-table-column> + <el-table-column header-align="center" label="鎺ユ敹鍗曚綅" prop="receivingUnit"> + <template slot-scope="{row}"> + <el-input v-model="row.receivingUnit" size="small"/> + </template> + </el-table-column> + <el-table-column header-align="center" label="鍚嶇О" prop="designation"> + <template slot-scope="{row}"> + <el-input v-model="row.designation" size="small"/> + </template> + </el-table-column> + <el-table-column header-align="center" label="绉讳氦浜�" prop="transferPeople" width="180"> + <template slot-scope="{row}"> + <el-input v-model="row.transferPeople" size="small"/> + </template> + </el-table-column> + <el-table-column header-align="center" label="浣撶Н" prop="volume" width="180"> + <template slot-scope="{row}"> + <el-input v-model="row.volume" size="small"/> + </template> + </el-table-column> + <el-table-column header-align="center" label="閫佸鐞嗘棩鏈�" prop="deliveryDate" width="180"> + <template slot-scope="{row}"> + <!-- <el-input v-model="row.deliveryDate" size="small"/> --> + <el-date-picker + value-format="yyyy-MM-dd" + style="width: 100%" + format="yyyy-MM-dd" + size="small" + v-model="row.deliveryDate" + type="date" + placeholder="閫夋嫨鏃ユ湡"> + </el-date-picker> + </template> + </el-table-column> + </el-table> + <span slot="footer" class="dialog-footer"> + <el-button @click="closeThreeWastesDia">鍙� 娑�</el-button> + <el-button :loading="loading" type="primary" @click="handleEdit">鎻� 浜�</el-button> + </span> + </el-dialog> + </div> +</template> + +<script> +export default { + name: 'three-wastes-dialog', + // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢� + components: {}, + data() { + // 杩欓噷瀛樻斁鏁版嵁 + return { + formDia: false, + diaLoading: false, + loading: false, + form: { + remark: '', + wastesId: '', + }, + rules: { + remark: [{required: false, message: '璇峰~鍐欏娉�',trigger: 'blur'}], + }, + wastesDetailList: [], + operationType: '', + }; + }, + mounted() { + + }, + // 鏂规硶闆嗗悎 + methods: { + // 鎵撳紑寮规 + openDia (type, row) { + this.formDia = true + this.operationType = type + if (type !== 'add') { + this.searchInfo(row) + } + }, + // 鏌ヨ璇︽儏 + searchInfo (row) { + this.diaLoading = true + this.$axios(this.$api.internalWastes.getInternalWastesOne + '?wastesId=' + row.wastesId).then(res => { + this.diaLoading = false + if (res.code === 201) return + this.form = res.data + this.wastesDetailList = this.form.wastesDetailList + }).catch(err => { + console.log(err) + this.diaLoading = false + }) + }, + // 鎻愪氦寮规鏁版嵁 + handleEdit () { + this.$refs['form'].validate((valid) => { + if (valid) { + if (this.wastesDetailList.length === 0) { + this.$message.warning('璇锋坊鍔犺〃鏍兼暟鎹�') + return + } + this.loading = true + const internalImplementDto = this.HaveJson(this.form) + internalImplementDto.wastesDetailList = this.HaveJson(this.wastesDetailList) + if (this.operationType === 'add') { + this.$axios.post(this.$api.internalWastes.addInternalWastes, internalImplementDto, { + headers: { + "Content-Type": "application/json" + }, + noQs: true + }).then(res => { + this.loading = false + if (res.code === 201) return + this.$message.success('鎿嶄綔鎴愬姛') + this.closeThreeWastesDia() + }).catch(err => { + console.log('err---', err); + this.loading = false + }) + } else if (this.operationType === 'edit') { + this.$axios.post(this.$api.internalWastes.updateInternalWastes, internalImplementDto, { + headers: { + "Content-Type": "application/json" + }, + noQs: true + }).then(res => { + this.loading = false + if (res.code === 201) return + this.$message.success('鎿嶄綔鎴愬姛') + this.closeThreeWastesDia() + }).catch(err => { + console.log('err---', err); + this.loading = false + }) + } + } else { + console.log('error submit!!'); + return false; + } + }); + }, + // 澧炲姞琛ㄦ牸琛屾暟鎹� + addRow () { + this.wastesDetailList.push({ + acceptor: '', + receivingUnit: '', + designation: '', + transferPeople: '', + volume: '', + deliveryDate: '', + }) + }, + // 娓呯┖琛ㄦ牸鏁版嵁 + clearTable () { + this.wastesDetailList = [] + }, + closeThreeWastesDia () { + this.$refs.form.resetFields(); + this.formDia = false + this.$emit('closeThreeWastesDia') + }, + } +}; +</script> + +<style scoped> +</style> diff --git a/src/components/do/a6-facilities-environment/three-wastes-treatment.vue b/src/components/do/a6-facilities-environment/three-wastes-treatment.vue new file mode 100644 index 0000000..9728652 --- /dev/null +++ b/src/components/do/a6-facilities-environment/three-wastes-treatment.vue @@ -0,0 +1,218 @@ +<template> + <div> + <div class="search-background"> + <span class="search-group"> + <span style="width: 160px">澶囨敞锛�</span> + <el-input v-model="searchForm.remark" clearable size="small"></el-input> + <el-button size="medium" style="margin-left: 10px" @click="resetSearchForm">閲� 缃�</el-button> + <el-button size="medium" type="primary" @click="searchList">鏌� 璇�</el-button> + </span> + <span class="search-group"> + <el-button size="medium" type="primary" @click="openFormDia('add')">鏂� 澧�</el-button> + </span> + </div> + <div class="table"> + <ZTTable + :column="tableColumn" + :height="'calc(100vh - 20em)'" + :table-data="tableData" + :table-loading="tableLoading" + style="padding: 0 10px;margin-bottom: 16px"> + </ZTTable> + <el-pagination :current-page="1" :page-size="page.size" :page-sizes="[10, 20, 30, 50, 100]" + :total="total" layout="->,total, sizes, prev, pager, next, jumper" + @size-change="handleSizeChange" + @current-change="handleCurrentChange"> + </el-pagination> + </div> + <three-wastes-dialog v-if="threeWastesDia" ref="threeWastesDia" @closeThreeWastesDia="closeThreeWastesDia"></three-wastes-dialog> + </div> +</template> + +<script> +import ZTTable from '../../caorui/ZTTable/index.vue'; +import ThreeWastesDialog from './three-wastes-dialog.vue'; +import ImplementPlanDia from '../a8-internal-audit-management/implementPlanDia.vue'; + +export default { + name: 'a6-three-wastes-treatment', + // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢� + components: { ImplementPlanDia, ThreeWastesDialog, ZTTable }, + data() { + // 杩欓噷瀛樻斁鏁版嵁 + return { + searchForm: { + remark: '', + }, + tableColumn: [ + { + label: '鍒涘缓鏃堕棿', + prop: 'createTime', + minWidth: '100' + }, + { + label: '鍒涘缓浜�', + prop: 'createUser', + minWidth: '100' + }, + { + label: '澶囨敞', + prop: 'remark', + minWidth: '100' + }, + { + label: '淇敼鏃堕棿', + prop: 'updateTime', + minWidth: '100' + }, + { + label: '淇敼浜�', + prop: 'updateUser', + minWidth: '100' + }, + { + dataType: 'action', + fixed: 'right', + minWidth: '220', + label: '鎿嶄綔', + operation: [ + { + name: '瀵煎嚭', + type: 'text', + clickFun: (row) => { + this.handleDown(row) + } + }, + { + name: '缂栬緫', + type: 'text', + clickFun: (row) => { + this.openFormDia('edit', row); + }, + }, + { + name: '鍒犻櫎', + type: 'text', + color: '#f56c6c', + clickFun: (row) => { + this.delPlan(row) + }, + } + ] + } + ], + tableData: [], + tableLoading: false, + page: { + size: 20, + current: 1, + }, + total: 0, + threeWastesDia: false + }; + }, + mounted() { + this.searchList() + }, + // 鏂规硶闆嗗悎 + methods: { + // 鏌ヨ鍒楄〃 + searchList () { + const entity = this.searchForm + const page = this.page + this.tableLoading = true + this.$axios.post(this.$api.internalWastes.pageInternalWastes, {entity, page}, { + headers: { + "Content-Type": "application/json" + }, + noQs: true + }).then(res => { + this.tableLoading = false + if (res.code === 201) return + this.tableData = res.data.records + this.total = res.data.total + }).catch(err => { + console.log('err---', err); + this.tableLoading = false + }) + }, + // 鍒犻櫎 + delPlan (row) { + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + this.tableLoading = true + this.$axios.get(this.$api.internalWastes.delInternalWastes + '?wastesId=' + row.wastesId).then(res => { + this.tableLoading = false + if (res.code === 201) return + this.$message.success('鍒犻櫎鎴愬姛') + this.searchList() + }).catch(err => { + this.tableLoading = false + console.log('err---', err); + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + // 鏂板锛岀紪杈戯紝鎵瑰噯寮规 + openFormDia (type, row) { + this.threeWastesDia = true + this.$nextTick(() => { + this.$refs.threeWastesDia.openDia(type, row) + }) + }, + // 瀵煎嚭 + handleDown (row) { + this.$axios.get(this.$api.internalWastes.exportInternalWastes + '?wastesId=' + row.wastesId,{responseType: "blob"}).then(res => { + this.outLoading = false + this.$message.success('瀵煎嚭鎴愬姛') + const blob = new Blob([res],{ type: 'application/msword' }); + const url = URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = url; + link.download = '涓夊簾澶勭悊瀵煎嚭' + '.docx'; + link.click(); + }) + }, + closeThreeWastesDia () { + this.threeWastesDia = false + this.searchList() + }, + // 閲嶇疆鏌ヨ鏉′欢 + resetSearchForm () { + this.searchForm.remark = ''; + this.searchList() + }, + // 鍒嗛〉 + handleSizeChange(val) { + this.page.size = val; + this.searchList(); + }, + handleCurrentChange(val) { + this.page.current = val; + this.searchList(); + }, + } +}; +</script> + +<style scoped> +.search-background { + width: 100%; + height: 60px; + line-height: 60px; + display: flex; + justify-content: space-between; +} +.search-group { + display: flex; + align-items: center; + margin: 0 20px; +} +</style> diff --git a/src/components/view/a6-facilities-environment.vue b/src/components/view/a6-facilities-environment.vue new file mode 100644 index 0000000..8fc25f0 --- /dev/null +++ b/src/components/view/a6-facilities-environment.vue @@ -0,0 +1,66 @@ +<template> + <div class="main"> + <el-tabs v-model="activeName" :lazy="true" type="border-card"> +<!-- <el-tab-pane label="澶栨潵浜哄憳绠$悊" name="澶栨潵浜哄憳绠$悊">--> +<!-- <ExternalPersonnelManagement v-if="activeName === '澶栨潵浜哄憳绠$悊'"/>--> +<!-- </el-tab-pane>--> +<!-- <el-tab-pane label="瀹為獙瀹よ鏂藉満鎵�淇℃伅" name="瀹為獙瀹よ鏂藉満鎵�淇℃伅">--> +<!-- 绌�--> +<!-- </el-tab-pane>--> + <el-tab-pane label="璁炬柦鍜岀幆澧冩潯浠惰姹�" name="璁炬柦鍜岀幆澧冩潯浠惰姹�"> + <FacilitiesEnvironmentalConditions v-if="activeName === '璁炬柦鍜岀幆澧冩潯浠惰姹�'"/> + </el-tab-pane> +<!-- <el-tab-pane label="鐜鏉′欢寮曠敤" name="鐜鏉′欢寮曠敤">--> +<!-- 绌�--> +<!-- </el-tab-pane>--> +<!-- <el-tab-pane label="瀹夊叏鍖轰唬琛ㄦ鏌�" name="瀹夊叏鍖轰唬琛ㄦ鏌�">--> +<!-- 绌�--> +<!-- </el-tab-pane>--> +<!-- <el-tab-pane label="瀹夊叏鍐呭姟" name="瀹夊叏鍐呭姟">--> +<!-- 绌�--> +<!-- </el-tab-pane>--> +<!-- <el-tab-pane label="搴熺墿澶勭悊浜ゆ帴璁板綍" name="搴熺墿澶勭悊浜ゆ帴璁板綍">--> +<!-- 绌�--> +<!-- </el-tab-pane>--> + <el-tab-pane label="涓夊簾澶勭悊" name="涓夊簾澶勭悊"> + <a6-three-wastes-treatment v-if="activeName === '涓夊簾澶勭悊'"></a6-three-wastes-treatment> + </el-tab-pane> + <el-tab-pane label="杩涘嚭浜哄憳绠$悊" name="杩涘嚭浜哄憳绠$悊"> + <personnel-management v-if="activeName === '杩涘嚭浜哄憳绠$悊'"></personnel-management> + </el-tab-pane> + </el-tabs> + </div> +</template> + +<script> +import FacilitiesEnvironmentalConditions from "../do/a6-facilities-environment/facilities-environmental-conditions.vue"; +// 澶栨潵浜哄憳绠$悊 +import ExternalPersonnelManagement from "../do/a6-facilities-environment/external-personnel-management.vue"; +import A6ThreeWastesTreatment from '../do/a6-facilities-environment/three-wastes-treatment.vue'; +import PersonnelManagement from '../do/a6-facilities-environment/Personnel-management.vue'; + +export default { + components: { + PersonnelManagement, + A6ThreeWastesTreatment, + ExternalPersonnelManagement, + FacilitiesEnvironmentalConditions}, + data() { + return { + activeName: '璁炬柦鍜岀幆澧冩潯浠惰姹�', + } + } +} +</script> + +<style scoped> +.main { + padding: 15px 0; + width: 100%; + border-radius: 15px; +} +/deep/ .el-tabs--border-card>.el-tabs__content { + height: calc(100vh - 9em); + padding: 0; +} +</style> -- Gitblit v1.9.3