From 4c3fd93d87daace1de00b129e642193fe863f4a2 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期二, 11 三月 2025 09:23:29 +0800
Subject: [PATCH] Merge branch 'dev' of http://114.132.189.42:9002/r/center-lims-before-ruoyi into dev
---
src/views/CNAS/resourceDemand/device/component/maintenance.vue | 345 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 345 insertions(+), 0 deletions(-)
diff --git a/src/views/CNAS/resourceDemand/device/component/maintenance.vue b/src/views/CNAS/resourceDemand/device/component/maintenance.vue
new file mode 100644
index 0000000..c875750
--- /dev/null
+++ b/src/views/CNAS/resourceDemand/device/component/maintenance.vue
@@ -0,0 +1,345 @@
+<!-- 璁惧缁存姢 -->
+<template>
+ <div>
+ <div class="search">
+ <div class="search_thing">
+ <div class="search_label">娴佺▼缂栧彿锛�</div>
+ <div class="search_input"><el-input v-model="search.deviceNumber" clearable placeholder="璇疯緭鍏�" size="small"
+ @keyup.enter.native="getAllMessage(clickNodeVal.value)"></el-input></div>
+ </div>
+ <div class="search_thing" style="padding-left: 20px;">
+ <el-button size="small" @click="resetSearch">閲� 缃�</el-button>
+ <el-button size="small" type="primary" @click="getAllMessage(clickNodeVal.value)">鏌� 璇�</el-button>
+ </div>
+ <div class="btns">
+ <el-button size="small" type="primary" @click="dialogVisible = true; add()">娣诲姞缁存姢璁板綍</el-button>
+ <el-button :loading="outLoading" size="small" type="primary" @click="handleDown">瀵煎嚭</el-button>
+ </div>
+ </div>
+ <div class="tables" style="margin-top: 16px;">
+ <el-table ref="table" :data="MaintainParam" height="calc(100vh - 20em)">
+ <el-table-column label="搴忓彿" type="index" width="120">
+ <template v-slot="scope">
+ <span>{{ (search.current - 1) * search.size + scope.$index + 1 }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="娴佺▼缂栧彿" min-width="180" prop="deviceNumber" />
+ <el-table-column label="璁惧鍚嶇О" min-width="150" prop="deviceName" />
+ <el-table-column label="绠$悊缂栧彿" min-width="150" prop="managementNumber" />
+ <el-table-column label="缁存姢鍐呭" min-width="150" prop="content" />
+ <el-table-column label="缁存姢鏃堕棿" min-width="150" prop="date" />
+ <el-table-column label="鎻愪氦浜�" min-width="150" prop="name" />
+ <el-table-column label="鎻愪氦鏃ユ湡" min-width="150" prop="date">
+ </el-table-column>
+ <el-table-column fixed="right" label="鎿嶄綔" width="150">
+ <template slot-scope="scope">
+ <el-button size="small" type="text" @click="handleViewClick(scope.row)">鏌ョ湅</el-button>
+ <el-button size="small" type="text" @click="handleDeleteClick(scope.$index, 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>
+ </div>
+ <!-- 鏂板缓缁存姢 -->
+ <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="dialogVisible"
+ title="娣诲姞缁存姢璁板綍"
+ top="5vh" width="60%">
+ <el-form ref="form" :model="formData" label-width="130px">
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="娴佺▼缂栧彿:" prop="deviceNumber">
+ <el-input v-model="formData.deviceNumber" clearable disabled size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璁惧鍚嶇О:" prop="deviceName">
+ <el-input v-model="formData.deviceName" clearable disabled placeholder="璇疯緭鍏�" size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="绠$悊缂栧彿:" prop="managementNumber">
+ <el-input v-model="formData.managementNumber" clearable disabled placeholder="璇疯緭鍏�"
+ size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item :rules="[{ required: true, message: '璇疯緭鍏ョ淮鎶ゅ唴瀹�', trigger: 'blur' }]" label="缁存姢鍐呭:"
+ prop="content">
+ <el-input v-model="formData.content" placeholder="璇疯緭鍏�" size="small" type="textarea"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :rules="[{ required: true, message: '璇烽�夋嫨缁存姢鏃堕棿', trigger: 'blur' }]" label="缁存姢鏃堕棿:" prop="date">
+ <el-date-picker v-model="formData.date" format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" size="small"
+ style="width:100%" type="date" value-format="yyyy-MM-dd">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :rules="[{ required: true, message: '璇烽�夋嫨缁存姢绫诲瀷', trigger: 'blur' }]" label="缁存姢绫诲瀷:"
+ prop="maintenanceType">
+ <el-radio-group v-model="formData.maintenanceType" :disabled="!this.editMode">
+ <el-radio :label="0">浣跨敤鍓嶅悗缁存姢</el-radio>
+ <el-radio :label="1">璁″垝涓淮鎶�</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :rules="[{ required: true, message: '璇烽�夋嫨涓嬫缁存姢鏃堕棿', trigger: 'blur' }]" label="涓嬫缁存姢鏃堕棿:"
+ prop="nextDate">
+ <el-date-picker
+ v-model="formData.nextDate"
+ :picker-options="{ disabledDate: this.disabledDate }"
+ format="yyyy-MM-dd"
+ placeholder="閫夋嫨鏃ユ湡" size="small"
+ style="width:90%"
+ type="date"
+ value-format="yyyy-MM-dd">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :rules="[{ required: true, message: '璇疯緭鍏ョ淮鎶や汉', trigger: 'blur' }]" label="缁存姢浜�:" prop="name">
+ <el-input v-model="formData.name" clearable placeholder="璇疯緭鍏�" size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="澶囨敞:">
+ <el-input v-model="formData.comments" placeholder="璇疯緭鍏�" size="small" type="textarea"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button v-if="editMode" @click="dialogVisible = false">鍙� 娑�</el-button>
+ <el-button v-if="editMode" type="primary" @click="addRecord">纭� 瀹�</el-button>
+ </span>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import {
+ exportMaintenanceRecord,
+ deleteDeviceMaintenance,
+ selectDeviceByCode,
+ addDeviceMaintenance,
+ getDeviceMaintenancePage, deviceMaintenanceExport,
+} from '@/api/cnas/resourceDemand/device.js'
+export default {
+ props: {
+ clickNodeVal: {
+ type: Object,
+ default: () => {
+ return {};
+ }
+ }
+ },
+ data() {
+ return {
+ search: {
+ size: 20,
+ current: 1,
+ total: 0,
+ deviceNumber: ''
+ },
+ editMode: false,
+ dialogVisible: false,
+ //琛ㄥ崟缁存姢鍐呭
+ formData: {},
+ //琛ㄥご鏄剧ず
+ MaintainParam: [],
+ outLoading: false
+ }
+ },
+ mounted() {
+ this.getAllMessage(this.clickNodeVal.value)
+ },
+ methods: {
+ //涓嬫缁存姢鏃ユ湡:绂佺敤鍦ㄧ淮鎶ゆ棩鏈熷墠鐨勬棩鏈�
+ disabledDate(time) {
+ let selectDate = this.formData.date
+ if (selectDate) {
+ let oldDate = new Date(selectDate)
+ return time <= oldDate.getTime()
+ }
+ return false
+ },
+ handleSizeChange(val) {
+ this.search.size = val
+ this.getAllMessage(this.clickNodeVal.value)
+ },
+ handleCurrentChange(val) {
+ this.search.current = val
+ this.getAllMessage(this.clickNodeVal.value)
+ },
+ //鎿嶄綔璇︽儏鏌ョ湅
+ handleViewClick(row) {
+ this.editMode = false;
+ this.dialogVisible = true;
+ this.formData = row;
+ },
+ // 瀵煎嚭
+ handleDownOne() {
+ this.outLoading = true
+ deviceMaintenanceExport({ deviceId: this.clickNodeVal.value }).then(res => {
+ this.outLoading = false
+ const blob = new Blob([res], { type: 'application/octet-stream' });
+ this.$download.saveAs(blob, '璁惧缁存姢.xlsx')
+ })
+ },
+ //鎿嶄綔璇︽儏鍒犻櫎
+ handleDeleteClick(index, row) {
+ this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ枃浠�, 鏄惁缁х画?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ deleteDeviceMaintenance({ id: row.id }).then(res => {
+ this.getAllMessage(this.clickNodeVal.value)
+ this.$message({
+ type: 'success',
+ message: '鍒犻櫎鎴愬姛!'
+ });
+ })
+ }).catch(() => {
+ this.$message({
+ type: 'info',
+ message: '宸插彇娑堝垹闄�'
+ });
+ });
+ },
+ //鐐瑰嚮鍚庡彲缂栬緫
+ add() {
+ selectDeviceByCode({ id: this.clickNodeVal.value }).then(res => {
+ this.formData.deviceName = res.data.deviceName
+ this.formData.managementNumber = res.data.managementNumber
+ this.$nextTick(() => {
+ this.$refs['form'].clearValidate()
+ })
+ });
+ this.editMode = true;
+ },
+ //娣诲姞缁存姢璁板綍
+ addRecord() {
+ this.$refs['form'].validate((valid) => {
+ if (valid) {
+ this.formData.deviceId = this.clickNodeVal.value;
+ addDeviceMaintenance(this.formData).then(res => {
+ if (res.code == 200) {
+ this.$message.success('娣诲姞鎴愬姛');
+ this.getAllMessage(this.clickNodeVal.value)
+ this.dialogVisible = false;
+ this.formData = {}; //娓呯┖琛ㄥ崟
+ }
+ })
+ // this.MaintainParam.push(this.formData)
+ }
+ })
+ },
+ resetSearch() {
+ this.search = {
+ size: 20,
+ current: 1,
+ total: 0,
+ deviceNumber: '',
+ }
+ this.getAllMessage(this.clickNodeVal.value);
+ },
+ //鑾峰彇琛ㄥ崟璁惧缁存姢淇℃伅
+ getAllMessage(deviceId) {
+ getDeviceMaintenancePage({
+ deviceId,
+ ...this.search
+ }).then(res => {
+ if (res.code == 200) {
+ this.MaintainParam = res.data.records
+ this.search.total = res.data.total
+ }
+ })
+ },
+ },
+ watch: {
+ // 鐩戝惉鐐瑰嚮el-tree鐨勬暟鎹紝杩涜鏁版嵁鍒锋柊
+ clickNodeVal(newVal) {
+ if (newVal.value) {
+ this.getAllMessage(newVal.value)
+ }
+ },
+ dialogVisible(newVal) {
+ if (newVal === false) {
+ this.formData = {}
+ this.$refs['form'].clearValidate()
+ }
+ }
+ }
+}
+</script>
+
+<style scoped>
+h4 {
+ font-weight: 400;
+ font-size: 16px;
+ display: flex;
+ justify-content: space-between;
+ margin: 10px 0;
+}
+
+h4 .line {
+ display: inline-block;
+ width: 3px;
+ height: 16px;
+ background: #3A7BFA;
+ margin-right: 4px;
+}
+
+.tables {
+ width: 100%;
+ height: calc(100vh - 17em);
+}
+
+.search {
+ background-color: #fff;
+ display: flex;
+ align-items: center;
+ position: relative;
+ margin-top: 10px;
+}
+
+.search_thing {
+ display: flex;
+ align-items: center;
+ height: 40px;
+}
+
+.search_label {
+ width: 80px;
+ font-size: 14px;
+ text-align: right;
+}
+
+.search_input {
+ width: 73%;
+}
+
+.btns {
+ position: absolute;
+ right: 0px;
+ top: 50%;
+ transform: translate(0, -50%);
+}
+
+.btns_thing {
+ position: absolute;
+ right: 230px;
+ top: 50%;
+ transform: translate(0, -50%);
+}
+
+.form .search_label {
+ width: 120px;
+}
+</style>
--
Gitblit v1.9.3