From e5454b769d44a34af423bf87ac8a740bf8c20341 Mon Sep 17 00:00:00 2001 From: Crunchy <3114200645@qq.com> Date: 星期二, 29 四月 2025 13:25:29 +0800 Subject: [PATCH] Merge branch 'dev' into dev_tides --- src/views/CNAS/resourceDemand/device/component/equipmentMaintenance.vue | 297 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 297 insertions(+), 0 deletions(-) diff --git a/src/views/CNAS/resourceDemand/device/component/equipmentMaintenance.vue b/src/views/CNAS/resourceDemand/device/component/equipmentMaintenance.vue new file mode 100644 index 0000000..add36e0 --- /dev/null +++ b/src/views/CNAS/resourceDemand/device/component/equipmentMaintenance.vue @@ -0,0 +1,297 @@ +<template> + <div> + <div class="search"> + <el-button size="small" type="primary" @click="refreshTableList">鍒锋柊</el-button> + <el-button size="small" type="primary" @click="openDia('add')">鏂� 寤�</el-button> + <el-button :loading="outLoading" size="small" type="primary" @click="openHandleOut">瀵� 鍑�</el-button> + </div> + <div> + <lims-table :tableData="tableData" :column="column" + height="calc(100vh - 20em)" @pagination="pagination" + :page="page" :tableLoading="tableLoading"></lims-table> + </div> + <el-dialog :visible.sync="dialogVisible" title="浠櫒璁惧浣跨敤缁存姢淇濆吇琛�" width="55%"> + <el-form ref="form" :model="form" label-width="130px" :rules="rules"> + <el-row> + <el-col :span="12"> + <el-form-item label="缁存姢鏃ユ湡:" prop="maintenanceDate"> + <el-date-picker v-model="form.maintenanceDate" :disabled="operationType === 'view'" + format="yyyy-MM-dd" size="small" placeholder="閫夋嫨鏃ユ湡" style="width:100%" + type="date" value-format="yyyy-MM-dd"> + </el-date-picker> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="24"> + <el-form-item label="缁存姢鍐呭:" prop="maintenanceContentArr"> + <el-checkbox-group v-model="form.maintenanceContentArr" :disabled="operationType === 'view'"> + <el-checkbox v-for="city in qualificationList" :key="city.label" :label="city.label" + :value="city.label"></el-checkbox> + </el-checkbox-group> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="缁存姢浜�:" prop="maintenanceUserId"> + <el-select v-model="form.maintenanceUserId" + clearable filterable + placeholder="璇烽�夋嫨" 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="remark"> + <el-input v-model="form.remark" :disabled="operationType === 'view'" size="small" + style="width: 100%;"></el-input> + </el-form-item> + </el-col> + </el-row> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="closeDia">鍙� 娑�</el-button> + <el-button v-if="operationType !== 'view'" type="primary" @click="saveRecord" :loading="buttonLoading">纭� 瀹�</el-button> + </span> + </el-dialog> + </div> +</template> + +<script> +import { + addDeviceMaintenance, + deleteDeviceMaintenance, exportDeviceMaintenance, + selectDeviceMaintenancePage +} from "@/api/cnas/resourceDemand/device"; +import limsTable from "@/components/Table/lims-table.vue"; +import {selectUserCondition} from "@/api/system/user"; + +export default { + name: '', + // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢� + components: {limsTable}, + props: { + clickNodeVal: { + type: Object, + default: () => { + return {}; + } + }, + }, + data() { + // 杩欓噷瀛樻斁鏁版嵁 + return { + search: { + maintenanceDate: '', + }, + outLoading: false, + tableData: [], + tableLoading: false, + page: { + total: 0, + size: 20, + current: 1 + }, + column: [ + { label: '缁存姢鏃ユ湡', prop: 'maintenanceDate' }, + { label: '缁存姢鍐呭', prop: 'maintenanceContent' }, + { label: '缁存姢浜�', prop: 'maintenanceUserName' }, + { label: '澶囨敞', prop: 'remark' }, + { + dataType: 'action', + label: '鎿嶄綔', + operation: [ + { + name: '缂栬緫', + type: 'text', + clickFun: (row) => { + this.openDia('edit', row); + }, + }, + { + name: '鍒犻櫎', + type: 'text', + clickFun: (row) => { + this.handleDeleteClick(row); + }, + }, + ] + } + ], + dialogVisible: false, + form: { + id: '', + deviceId: '', + maintenanceDate: '', + maintenanceContentArr: [], + maintenanceContent: '', + maintenanceUserId: '', + remark: '', + }, + operationType: '', + buttonLoading: false, + qualificationList: [], + rules: { + maintenanceDate: [{ required: true, message: '璇烽�夋嫨缁存姢鏃ユ湡', trigger: 'change' }], + maintenanceContentArr: [{ required: true, message: '璇烽�夋嫨缁存姢鍐呭', trigger: 'change' }], + maintenanceUserId: [{ required: true, message: '璇烽�夋嫨缁存姢浜�', trigger: 'change' }], + }, + responsibleOptions: [], + }; + }, + mounted() { + this.refreshTableList() + }, + // 鏂规硶闆嗗悎 + methods: { + // 鐐瑰嚮鍒锋柊 + refreshTableList () { + this.page.current = 1; + this.getTableList() + }, + // 鍒嗛〉鍒囨崲 + pagination(page) { + this.page.size = page.limit + this.getTableList() + }, + getTableList () { + this.tableLoading = true + selectDeviceMaintenancePage({ + deviceId: this.clickNodeVal.value, + ...this.page + }).then(res => { + this.tableLoading = false + this.tableData = res.data.records + this.page.total = res.data.total + }).catch(err => { + this.tableLoading = false + }) + }, + // 鎵撳紑鎿嶄綔寮规 + openDia (type, row) { + this.operationType = type + this.dialogVisible = true + this.$nextTick(() => { + this.$refs['form'].resetFields() + this.form.id = '' + if (this.operationType === 'edit') { + this.form = {...row} + this.$set(this.form, 'maintenanceContentArr', this.form.maintenanceContent.split(',')) + } + }) + this.getDictS() + this.getUserList() + }, + // 鏌ヨ缁存姢鍐呭閫夋嫨妗嗗唴瀹� + getDictS () { + // 瀹氫箟瀹為獙瀹ゅ悕绉颁笌缁存姢鍐呭绫诲瀷鐨勬槧灏勫叧绯� + const labTypeMapping = { + '鑰佸寲瀹�': 'aging_maintenance_content', + '鑰佸寲瀹為獙瀹�': 'aging_maintenance_content', + '鐢垫�ц兘瀹為獙瀹�': 'electrical_maintenance_content', + '鐜瀹為獙瀹�': 'environmental_maintenance_content', + '鐕冪儳瀹為獙瀹�': 'burn_maintenance_content', + '娣风偧瀹為獙瀹�': 'mixing_maintenance_content', + '妫�娴嬩腑蹇冪數鎬ц兘瀹為獙瀹�': 'center_electrical_maintenance_content', + '鎭掓俯浜�': 'temperature2_maintenance_content', + '鎭掓俯涓�': 'temperature1_maintenance_content', + '鍖栧瀹為獙瀹�': 'chemistry_maintenance_content', + '鍒舵牱瀹�': 'sample_maintenance_content', + '浣庢俯瀹為獙瀹�': 'hypothermia_maintenance_content', + }; + // 鑾峰彇褰撳墠鑺傜偣鐨勫疄楠屽鍚嶇О + const name = this.clickNodeVal.parent.label; + // 鏍规嵁鏄犲皠鍏崇郴鑾峰彇瀵瑰簲鐨勭被鍨� + const type = labTypeMapping[name]; + this.getDicts(type).then((response) => { + this.qualificationList = response.data.map((m) => { + return { + label: m.dictLabel, + value: m.dictValue, + }; + }); + }); + }, + openHandleOut () { + this.outLoading = true + exportDeviceMaintenance({ + deviceId: this.clickNodeVal.value + }).then(res => { + this.outLoading = false + const blob = new Blob([res], { type: 'application/octet-stream' }); + this.$download.saveAs(blob, '璁惧缁存姢淇濆吇.doc') + }) + + }, + handleDeleteClick(row) { + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ枃浠�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + deleteDeviceMaintenance({ id: row.id }).then(res => { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛!' + }); + this.refreshTableList() + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + // 鎻愪氦鏂板鍜屼繚瀛� + saveRecord () { + this.$refs.form.validate((valid) => { + if (valid) { + this.buttonLoading = true; + this.form.maintenanceContent = this.form.maintenanceContentArr.join(',') + this.form.deviceId = this.clickNodeVal.value + addDeviceMaintenance(this.form).then(res => { + this.buttonLoading = false; + this.$message.success('鏂板鎴愬姛') + this.closeDia() + this.getTableList() + }).catch(err => { + this.buttonLoading = false; + }) + } + }) + }, + closeDia () { + this.$refs['form'].resetFields(); + this.dialogVisible = false + this.refreshTableList() + }, + // 鑾峰彇璐熻矗浜轰俊鎭帴鍙� + getUserList() { + selectUserCondition({type: 2}).then(res => { + if (res.code == 200) { + this.responsibleOptions = res.data + } + }) + }, + }, + watch: { + // 鐩戝惉鐐瑰嚮el-tree鐨勬暟鎹紝杩涜鏁版嵁鍒锋柊 + clickNodeVal(newVal) { + if (newVal.value) { + this.refreshTableList(); + } + }, + } +}; +</script> + +<style scoped> +.search { + height: 46px; + text-align: right; + margin-top: 10px; +} +</style> -- Gitblit v1.9.3