From 952a20f1c005d80e9bf881287c40e6f4e4266a0b Mon Sep 17 00:00:00 2001
From: lxp <1928192722@qq.com>
Date: 星期三, 12 三月 2025 15:34:52 +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/calibration.vue | 805 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 805 insertions(+), 0 deletions(-)
diff --git a/src/views/CNAS/resourceDemand/device/component/calibration.vue b/src/views/CNAS/resourceDemand/device/component/calibration.vue
new file mode 100644
index 0000000..5f4fd0e
--- /dev/null
+++ b/src/views/CNAS/resourceDemand/device/component/calibration.vue
@@ -0,0 +1,805 @@
+<!-- 璁惧鏍″噯 -->
+<template>
+ <div>
+ <div class="btnS">
+ <el-button size="small" type="primary" @click="calibrationMaintenance()">鏍″噯椤圭洰缁存姢</el-button>
+ <el-button size="small" type="primary" @click="add('add')">娣诲姞鏍″噯璁板綍</el-button>
+ <el-button size="small" type="primary" @click="handleDown">瀵煎嚭Excel</el-button>
+ </div>
+ <div class="tables" style="margin-top: 16px;">
+ <el-table :data="tableData" 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="150" prop="processNumber"></el-table-column>
+ <el-table-column label="鏍″噯鏈烘瀯" min-width="150" prop="unitOfMeasure"
+ show-overflow-tooltip></el-table-column>
+ <el-table-column label="鏍″噯缁撹" min-width="150" prop="status">
+ <template v-slot="scope">
+ {{ scope.row.status === '0yes' ? '鍚堟牸' : scope.row.status === '1no' ? '涓嶅悎鏍�' : '鍏朵粬' }}
+ </template>
+ </el-table-column>
+ <el-table-column label="鏍″噯璇佷功缂栧彿" min-width="150" prop="certificateSerialNumber"></el-table-column>
+ <el-table-column label="璇存槑" min-width="150" prop="remark" show-overflow-tooltip></el-table-column>
+ <el-table-column label="鏍″噯鏃ユ湡" min-width="150" prop="calibrationDate"></el-table-column>
+ <el-table-column label="涓嬫鏍″噯鏃ユ湡" min-width="150" prop="nextCalibrationDate"></el-table-column>
+ <el-table-column label="纭鏃ユ湡" min-width="150" prop="confirmDate"></el-table-column>
+ <el-table-column label="鐧昏浜�" min-width="150" prop="createUser"></el-table-column>
+ <el-table-column label="鐧昏鏃ユ湡" min-width="150" prop="createTime"></el-table-column>
+ <el-table-column fixed="right" label="鎿嶄綔" min-width="150">
+ <template #default="{ row }">
+ <el-button size="small" type="text" @click="handleAttachmentClick(row)">闄勪欢</el-button>
+ <!-- <el-button size="small" type="text" @click="handleViewClick('view', row)">鏌ョ湅</el-button> -->
+ <el-button size="small" type="text" @click="handleViewClick('add', row)">缂栬緫</el-button>
+ <el-button size="small" type="text" @click="handleDeleteClick(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" style="margin-right: 5%;"
+ @size-change="handleSizeChange" @current-change="handleCurrentChange">
+ </el-pagination>
+ </div>
+ <!-- 鏂囦欢棰勮 -->
+ <el-dialog
+ :visible.sync="lookDialogVisible"
+ fullscreen
+ title="鏌ョ湅闄勪欢" width="800px">
+ <filePreview v-if="lookDialogVisible" :currentFile="{}"
+ :fileUrl="previewFile" style="height: 90vh;overflow-y: auto;top: 0"/>
+ </el-dialog>
+ <!-- 闄勪欢寮规 -->
+ <el-dialog
+ title="闄勪欢"
+ :visible.sync="dialogVisibleFile"
+ width="60%"
+ >
+ <el-upload
+ ref="upload"
+ style="margin-top: 5px;margin-bottom: 10px;"
+ :action="action"
+ :data="uploadData"
+ :headers="uploadHeader"
+ :before-upload="beforeUpload"
+ :on-success="onSuccess"
+ >
+ <el-button type="primary" size="small" :loading="upLoading">涓婁紶闄勪欢</el-button>
+ </el-upload>
+ <el-table
+ :data="fileData"
+ border
+ height="400px"
+ style="width: 100%">
+ <el-table-column label="搴忓彿" type="index" width="240px">
+ </el-table-column>
+ <el-table-column label="鏂囦欢鍚嶇О" prop="fileName">
+ </el-table-column>
+ <el-table-column label="鎿嶄綔">
+ <template slot-scope="scope">
+ <el-button type="text" @click="preview(scope.row)">棰勮</el-button>
+ <el-button type="text" @click="download(scope.row)">涓嬭浇</el-button>
+ <el-button type="text" @click="delFile(scope.row)" style="color: red;">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <span slot="footer" class="dialog-footer">
+ <el-button type="primary" @click="dialogVisibleFile = false">鍏� 闂�</el-button>
+ </span>
+ </el-dialog>
+
+
+
+ <!-- 鏍″噯椤圭洰缁存姢 -->
+ <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="dialogVisible0" title="鏍″噯椤圭洰缁存姢"
+ top="5vh" width="70%">
+ <h4>
+ <span style="display: flex;align-items: center;"><span class="line"></span><span>璁惧鏍″噯鍙傛暟缁存姢</span></span>
+ <el-button :loading="addCalibrateLoading" size="small" type="primary" @click="addCalibrate">娣� 鍔�</el-button>
+ </h4>
+ <div>
+ <el-form ref="form0" :model="form0" :rules="form0Rules"
+ label-position="right" label-width="120px">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="璁¢噺鍙傛暟:" prop="measurementParameter">
+ <el-input v-model="form0.measurementParameter" clearable placeholder="璇疯緭鍏�" size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="閲忕▼鑼冨洿:" prop="rangeOfMeasurement">
+ <el-input v-model="form0.rangeOfMeasurement" clearable placeholder="璇疯緭鍏�" size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鏈�澶у厑璁歌宸�:" prop="maxPermissibleError">
+ <el-input v-model="form0.maxPermissibleError" clearable placeholder="璇疯緭鍏�" size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鍒ゅ畾鏍囧噯:" prop="judgmentCriteria">
+ <el-input v-model="form0.judgmentCriteria" clearable placeholder="璇疯緭鍏�" size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ <h4>
+ <span style="display: flex;align-items: center;"><span class="line"></span><span>璁惧鏍″噯鍙傛暟</span></span>
+ </h4>
+ <!-- 璁惧鏍″噯鍙傛暟琛ㄦ牸 -->
+ <el-table ref="calibrateTable" v-loading="calibrateParamsLoading" :data="calibrateParams"
+ max-height="450"
+ stripe style="width: 100%">
+ <el-table-column label="缂栧彿" type="index" width="80"></el-table-column>
+ <el-table-column label="璁¢噺鍙傛暟" prop="measurementParameter"></el-table-column>
+ <el-table-column label="閲忕▼鑼冨洿" prop="rangeOfMeasurement"></el-table-column>
+ <el-table-column label="鏈�澶у厑璁歌宸�" prop="maxPermissibleError"></el-table-column>
+ <el-table-column label="鍒ゅ畾鏍囧噯" prop="judgmentCriteria"></el-table-column>
+ <el-table-column label="鍒涘缓浜�" prop="createdBy"></el-table-column>
+ <el-table-column label="鍒涘缓鏃堕棿" prop="creationTime"></el-table-column>
+ <el-table-column fixed="right" label="鎿嶄綔">
+ <template slot-scope="scope">
+ <el-button size="small" type="text" @click="handleDelete(scope.row)">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-dialog>
+
+ <!-- 娣诲姞鏍″噯璁板綍 -->
+ <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="dialogVisible1" title="鏍″噯璁板綍"
+ top="5vh"
+ width="80%" @close="resetCalibrationRecord">
+ <div style="height: 70vh;overflow-y: auto;overflow-x: hidden;">
+ <h4>
+ <div style="display: flex;align-items: center;">
+ <span class="line"></span>
+ <span>娣诲姞璁惧鏍″噯璁板綍</span>
+ </div>
+ </h4>
+ <el-form ref="calibrationRecord" :model="calibrationRecord"
+ :rules="formRules" label-position="right" label-width="120px">
+ <el-row>
+ <el-col :span="6">
+ <el-form-item label="鏍″噯鏈嶅姟鏈烘瀯:" prop="unitOfMeasure">
+ <el-input v-model="calibrationRecord.unitOfMeasure" :disabled="operationType === 'view'"
+ size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="鏍″噯鏃ユ湡:" prop="calibrationDate">
+ <el-date-picker v-model="calibrationRecord.calibrationDate" :disabled="operationType === 'view'"
+ format="yyyy-MM-dd"
+ placeholder="閫夋嫨鏃ユ湡"
+ size="small"
+ style="width: 90%" type="date"
+ value-format="yyyy-MM-dd" @change="getNextCalibrationDate">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ <el-col :span="10">
+ <el-form-item label="涓嬫鏍″噯鏃ユ湡:" label-width="140px">
+ <el-date-picker v-model="calibrationRecord.nextCalibrationDate" disabled
+ 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="6">
+ <el-form-item label="璁$畻鍣ㄥ叿:" prop="calculatingApparatus">
+ <el-input v-model="calibrationRecord.calculatingApparatus" :disabled="operationType === 'view'"
+ size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="璁$畻鏍囧噯閲忕▼:" prop="standardRange">
+ <el-input v-model="calibrationRecord.standardRange" :disabled="operationType === 'view'" size="small"
+ style="width: 90%"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="10">
+ <el-form-item label="璁¢噺鏍囧噯涓嶇‘瀹氬害:" label-width="140px" prop="calibrationStandardUncertainty">
+ <el-input v-model="calibrationRecord.calibrationStandardUncertainty" :disabled="operationType === 'view'" size="small"
+ style="width: 90%"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="鎵�渚濇嵁鏂囦欢:" prop="byDocument">
+ <el-input v-model="calibrationRecord.byDocument" :disabled="operationType === 'view'"
+ size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="璇佷功缂栧彿:" prop="certificateSerialNumber">
+ <el-input v-model="calibrationRecord.certificateSerialNumber" :disabled="operationType === 'view'" size="small"
+ style="width: 90%"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="10">
+ <el-form-item label="鐘舵��:" label-width="140px" prop="status" required>
+ <el-radio-group v-model="calibrationRecord.status" :disabled="operationType === 'view'">
+ <el-radio label="0yes">鍚堟牸</el-radio>
+ <el-radio label="1no">涓嶅悎鏍�</el-radio>
+ <el-radio label="2other">鍏朵粬</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="纭鏃ユ湡:">
+ <el-date-picker v-model="calibrationRecord.confirmDate" :disabled="operationType === 'view'"
+ format="yyyy-MM-dd HH:mm:ss" placeholder="閫夋嫨鏃ユ湡" size="small" style="width: 100%"
+ type="datetime" value-format="yyyy-MM-dd HH:mm:ss">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="澶囨敞:">
+ <el-input v-model="calibrationRecord.remark" :disabled="operationType === 'view'" :rows="3" size="small" style="width: 96%"
+ type="textarea"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <h4>
+ <span style="display: flex;align-items: center;">
+ <span class="line"></span><span>鏍″噯鏉$洰纭缁撴灉</span>
+ </span>
+ </h4>
+ <el-table ref="calibrateTable" :data="calibrateParams" border>
+ <el-table-column label="缂栧彿" type="index" width="60"></el-table-column>
+ <el-table-column label="璁¢噺鍙傛暟" prop="measurementParameter"></el-table-column>
+ <el-table-column label="閲忕▼鑼冨洿" prop="rangeOfMeasurement"></el-table-column>
+ <el-table-column label="鏈�澶у厑璁歌宸�" prop="maxPermissibleError"></el-table-column>
+ <el-table-column label="鍒ゅ畾鏍囧噯" prop="judgmentCriteria"></el-table-column>
+ <el-table-column label="鏄惁鏍″噯" prop="isCalibration">
+ <template slot="header" slot-scope="scope">
+ <span class="required-span">* </span>鏄惁鏍″噯
+ </template>
+ <template slot-scope="scope">
+ <el-radio-group v-model="scope.row.isCalibration" :disabled="operationType === 'view'">
+ <el-radio label="0yes">鏄�</el-radio>
+ <el-radio label="1no">鍚�</el-radio>
+ </el-radio-group>
+ </template>
+ </el-table-column>
+ <el-table-column label="鍒ゅ畾缁撴灉" min-width="140" prop="result">
+ <template slot="header" slot-scope="scope">
+ <span class="required-span">* </span>鍒ゅ畾缁撴灉
+ </template>
+ <template slot-scope="scope">
+ <el-radio-group v-model="scope.row.result" :disabled="operationType === 'view'" @input="checkRadio()">
+ <el-radio label="0yes">鍚堟牸</el-radio>
+ <el-radio label="1no">涓嶅悎鏍�</el-radio>
+ <el-radio label="2other">鍏朵粬</el-radio>
+ </el-radio-group>
+ </template>
+ </el-table-column>
+ <el-table-column label="鍗曢」缁撴灉璇存槑" prop="singleResultStatement">
+ <template slot-scope="scope">
+ <el-input v-model="scope.row.singleResultStatement" :disabled="operationType === 'view'"
+ size="small"></el-input>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-button v-if="operationType === 'add'" @click="dialogVisible1 = false">鍙� 娑�</el-button>
+ <el-button v-if="operationType === 'add'" :loading="addRecordLoading" type="primary"
+ @click="addRecord">纭� 瀹�</el-button>
+ </span>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import {
+ deviceMetricRecordPage,
+ showDeviceMetricsCopy,
+ deleteDeviceMetricRecord,
+ deviceMetricRecordExport,
+ deleteCNASFile,
+ selectDeviceMetric,
+ deleteDeviceMetrics,
+ addOrUpdateDeviceMetricRecord,
+ saveOrUpdateDeviceMetric, downLoadDeviceCalibrationFile, getDeviceCalibrationFile, delDeviceCalibrationFile
+} from '@/api/cnas/resourceDemand/device.js'
+import { mapGetters } from "vuex";
+import filePreview from "@/components/Preview/filePreview.vue";
+export default {
+ components: {filePreview},
+ props: {
+ clickNodeVal: {
+ type: Object,
+ default: () => {
+ return {};
+ }
+ }
+ },
+ data() {
+ return {
+ value: "",
+ calibrateParams: [],
+ calibrateParamsLoading: false,
+ addCalibrateLoading: false,
+ previewFile: '',
+ lookDialogVisible: false,
+ recordId: null,
+ uploadData: {},
+ fileData: [],
+ dialogVisibleFile: false,
+ calibrationRecord: {
+ unitOfMeasure: '', // 璁¢噺鍗曚綅
+ calibrationDate: null, // 鏍″噯鏃ユ湡
+ nextCalibrationDate: null, // 涓嬫鏍″噯鏃ユ湡
+ calculatingApparatus: '', // 璁$畻鍣ㄥ叿
+ confirmDate: null, // 纭鏃ユ湡
+ standardRange: '', // 璁$畻鏍囧噯閲忕▼
+ calibrationStandardUncertainty: '', // 璁¢噺鏍囧噯涓嶇‘瀹氬害
+ byDocument: '', // 渚濇嵁鏂囦欢
+ certificateSerialNumber: '', // 璇佷功缂栧彿
+ status: '', // 鐘舵��
+ remark: '', // 澶囨敞
+ systemFileName: '', //
+ fileName: '', //
+ },
+ formRules: {
+ unitOfMeasure: [{ required: true, message: '璇疯緭鍏ユ牎鍑嗘湇鍔℃満鏋�', trigger: 'blur' }],
+ calibrationDate: [{ required: true, message: '璇烽�夋嫨鏍″噯鏃ユ湡', trigger: 'change' }],
+ calculatingApparatus: [{ required: true, message: '璇疯緭鍏ヨ绠楀櫒鍏�', trigger: 'blur' }],
+ standardRange: [{ required: true, message: '璇疯緭鍏ヨ绠楁爣鍑嗛噺绋�', trigger: 'blur' }],
+ calibrationStandardUncertainty: [{ required: true, message: '璇疯緭鍏ヨ閲忔爣鍑嗕笉纭畾搴�', trigger: 'blur' }],
+ byDocument: [{ required: true, message: '璇疯緭鍏ユ墍渚濇嵁鏂囦欢', trigger: 'blur' }],
+ status: [{ required: true, message: '璇烽�夋嫨鐘舵��', trigger: 'change' }],
+ },
+ tableData: [],
+ dialogVisible0: false,
+ dialogVisible1: false,
+ form0: {
+ measurementParameter: '', // 璁¢噺鍙傛暟
+ rangeOfMeasurement: '',
+ maxPermissibleError: '',
+ judgmentCriteria: '',
+ createdBy: '',
+ action: '',
+ deviceId: null
+ },
+ form0Rules: {
+ measurementParameter: [
+ { required: true, message: '璇疯緭鍏ヨ閲忓弬鏁�', trigger: 'blur' }
+ ],
+ rangeOfMeasurement: [
+ { required: true, message: '璇疯緭鍏ラ噺绋嬭寖鍥�', trigger: 'blur' }
+ ],
+ maxPermissibleError: [
+ { required: true, message: '璇疯緭鍏ユ渶澶у厑璁歌宸�', trigger: 'blur' }
+ ],
+ judgmentCriteria: [
+ { required: true, message: '璇疯緭鍏ュ垽瀹氭爣鍑�', trigger: 'blur' }
+ ],
+ },
+ addRecordLoading: false,
+ upLoading: false,
+ operationType: '',
+ search: {
+ size: 20,
+ current: 1,
+ total: 0
+ },
+ }
+ },
+ // 鐢ㄤ簬涓婁紶鏂囦欢鐨勪俊鎭�
+ computed: {
+ ...mapGetters(["nickName"]),
+ action() {
+ return this.javaApi + '/personBasicInfo/saveDeviceCalibrationFile'
+ }
+ },
+ mounted() {
+ //鑾峰彇鎿嶄綔璁板綍淇℃伅
+ this.getTableList(this.clickNodeVal.value) // 鑾峰彇璁惧鏍″噯鍒楄〃鏁版嵁
+ },
+ methods: {
+ preview(row) {
+ let list = row.fileUrl.split('.')
+ let suffix = list[list.length - 1]
+ if(suffix.toLowerCase().includes("pdf")) {
+ let link = document.createElement('a')
+ let url = this.javaApi + 'word' + row.fileUrl
+ console.log(url);
+ link.href = url
+ link.target= '_blank'
+ document.body.appendChild(link)
+ link.click()
+ document.body.removeChild(link)
+ }else{
+ let url = ''
+ if(suffix.toLowerCase().includes('docx')) {
+ url = this.javaApi + 'word' + row.fileUrl
+ }else if(suffix.toLowerCase().includes('xls')) {
+ url = this.javaApi + 'excel' + row.fileUrl
+ }else{
+ url = this.javaApi + 'img' + row.fileUrl
+ }
+ this.previewFile = url
+ this.$nextTick(() => {
+ this.lookDialogVisible = true
+ })
+ }
+ },
+ download(row) {
+ downLoadDeviceCalibrationFile({id: row.id}).then(res => {
+ const blob = new Blob([res],{type: row.mime})
+ this.$download.saveAs(blob, row.fileName)
+ })
+ },
+ delFile(row) {
+ this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ枃浠�, 鏄惁缁х画?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ delDeviceCalibrationFile({id: row.id}).then(res => {
+ this.$message({
+ type: 'success',
+ message: '鍒犻櫎鎴愬姛!'
+ });
+ this.getFileData(this.recordId);
+ })
+ })
+ },
+ handleAttachmentClick(row) {
+ // 妯℃嫙涓嬭浇闄勪欢
+ // const imageUrl = this.javaApi + '/img/' + row.systemFileName; // 鍥剧墖 URL
+ // file.downloadIamge(imageUrl,row.fileName)
+ this.recordId = row.id
+ this.dialogVisibleFile = true
+ this.getFileData(row.id)
+ },
+ getFileData(id) {
+ getDeviceCalibrationFile({id: id}).then(res =>{
+ this.fileData = res.data
+ })
+ },
+ //鐘舵�佸垽瀹�
+ checkRadio() {
+ let resultList = this.calibrateParams.map(ele => ele.result)
+ if (resultList && resultList.filter(ele => ele == '1no').length > 0) {
+ this.calibrationRecord.status = '1no'
+ } else if (resultList && resultList.filter(ele => ele == '2other').length == resultList.length) {
+ this.calibrationRecord.status = '2other'
+ } else if (resultList && resultList.filter(ele => ele == '0yes').length == resultList.length) {
+ this.calibrationRecord.status = '0yes'
+ }
+ },
+ getNextCalibrationDate(val) {
+ let oneYearLaterDate = new Date(val)
+ oneYearLaterDate.setFullYear(oneYearLaterDate.getFullYear() + 1);
+ oneYearLaterDate.setDate(oneYearLaterDate.getDate() - 1);
+ // let obj = oneYearLaterDate.toISOString().split('T')[0];
+ this.calibrationRecord.nextCalibrationDate = oneYearLaterDate
+ },
+ handleSizeChange(val) {
+ this.search.size = val
+ this.getTableList(this.clickNodeVal.value);
+ },
+ handleCurrentChange(val) {
+ this.search.current = val
+ this.getTableList(this.clickNodeVal.value);
+ },
+ getTableList(deviceId) {
+ deviceMetricRecordPage({ deviceId, type: 'calibrate', ...this.search }).then(res => {
+ this.tableData = res.data.records
+ this.search.total = res.data.total
+ })
+ },
+ // 娣诲姞鏍告煡璁板綍
+ add(type) {
+ this.operationType = type
+ this.dialogVisible1 = true
+ this.getXmsg()
+ },
+ // 鏌ョ湅缂栬緫璇︽儏
+ handleViewClick(type, row) {
+ showDeviceMetricsCopy({ id: row.id, type: 'calibrate' }).then(res => {
+ this.calibrateParams = res.data
+ })
+ this.calibrationRecord = { ...row }
+ this.operationType = type
+ this.dialogVisible1 = true
+ },
+ // 琛ㄦ牸鍒犻櫎鎿嶄綔
+ handleDeleteClick(row) {
+ this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ deleteDeviceMetricRecord({ id: row.id }).then(res => {
+ this.getTableList(this.clickNodeVal.value) // 鑾峰彇璁惧鏍″噯鍒楄〃鏁版嵁
+ this.$message.success('鍒犻櫎鎴愬姛锛�')
+ })
+ }).catch(() => {
+ this.$message({
+ type: 'info',
+ message: '宸插彇娑堝垹闄�'
+ });
+ })
+ },
+ //瀵煎嚭
+ handleDown() {
+ this.outLoading = true
+ deviceMetricRecordExport({
+ deviceId: this.clickNodeVal.value,
+ type: 'calibrate'
+ }).then(res => {
+ this.outLoading = false
+ const blob = new Blob([res], { type: 'application/octet-stream' });
+ this.$download.saveAs(blob, '璁惧鏍″噯.xlsx')
+ })
+ },
+ // 鏍″噯椤圭洰缁存姢
+ calibrationMaintenance() {
+ this.dialogVisible0 = true
+ this.getXmsg();
+ },
+ // 鑾峰彇璁惧鏍″噯鍙傛暟table淇℃伅
+ async getXmsg() {
+ this.calibrateParamsLoading = true
+ try {
+ await selectDeviceMetric({ deviceId: this.clickNodeVal.value, type: 'calibrate' }).then(res => {
+ if (res.code == 200) {
+ this.calibrateParams = res.data
+ }
+ this.calibrateParamsLoading = false
+ })
+ } catch (e) {
+ console.log('getXmsg---', e)
+ this.calibrateParamsLoading = false
+ }
+ },
+ // 鏍″噯椤圭洰缁存姢-鍒犻櫎璁惧鏍″噯鍙傛暟
+ handleDelete(row) {
+ this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ deleteDeviceMetrics({ id: row.id }).then(res => {
+ if (res.code === 200) {
+ this.$message.success('鍒犻櫎鎴愬姛!');
+ this.getXmsg();
+ }
+ })
+ }).catch(() => {
+ this.$message.info('宸插彇娑堝垹闄�');
+ })
+ },
+ // 鎻愪氦椤圭洰鏍″噯缁存姢
+ addCalibrate() {
+ this.$refs['form0'].validate((valid) => {
+ if (valid) {
+ // 淇濆瓨
+ this.calibrateParamsLoading = true
+ this.addCalibrateLoading = true
+ this.form0.deviceId = this.clickNodeVal.value;
+ this.form0.createdBy = this.nickName;
+ this.form0.type = 'calibrate'
+ saveOrUpdateDeviceMetric(this.form0).then(res => {
+ if (res.code == 200) {
+ this.$message.success('淇濆瓨鎴愬姛')
+ this.$refs['form0'].resetFields()
+ this.getXmsg() // 鍒锋柊璁惧鏍″噯鍙傛暟琛ㄦ牸
+ }
+ this.calibrateParamsLoading = false
+ this.addCalibrateLoading = false
+ }).catch(() => {
+ this.addCalibrateLoading = false
+ })
+ } else {
+ this.addCalibrateLoading = false
+ this.$message.warning('鏈夊繀濉」鏈~');
+ }
+ })
+ },
+ // 鎻愪氦鏍″噯璁板綍
+ addRecord() {
+ this.$refs['calibrationRecord'].validate((valid) => {
+ if (valid) {
+ try {
+ if (this.calibrateParams.some(m => m.isCalibration === undefined)) {
+ this.$message.error('璇烽�夋嫨鏄惁鏍″噯')
+ return
+ }
+ if (!this.calibrateParams.every(m => m.result !== undefined)) {
+ this.$message.error('璇烽�夋嫨鍒ゅ畾缁撴灉')
+ return
+ }
+ this.addRecordLoading = true
+ this.calibrationRecord.deviceId = this.clickNodeVal.value;
+ this.calibrationRecord.createUser = this.nickName
+ this.calibrationRecord.type = 'calibrate'
+ this.calibrationRecord.deviceMetricsCopyList = this.calibrateParams
+ this.calibrationRecord.deviceMetricsCopyList.forEach(m => {
+ delete m.creationTime
+ })
+ delete this.calibrationRecord.createTime
+ addOrUpdateDeviceMetricRecord(this.calibrationRecord).then(res => {
+ if (res.code == 200) {
+ this.$message.success('娣诲姞鎴愬姛')
+ this.dialogVisible1 = false
+ this.getTableList(this.clickNodeVal.value)
+ }
+ this.addRecordLoading = false
+ }).catch((err) => {
+ this.addRecordLoading = false
+ })
+ } catch (e) {
+ console.log('addRecord---', e)
+ this.addRecordLoading = false
+ }
+ } else {
+ this.$message.warning('鏈夊繀濉」鏈~');
+ }
+ })
+ },
+ resetCalibrationRecord() {
+ this.$refs.calibrationRecord.resetFields()
+ },
+ // 涓婁紶闄勪欢
+ handleSuccessUp(response, file) {
+ if (response.code == 200) {
+ // 鍦ㄤ繚瀛樿祴鍊兼柊鏂囦欢
+ this.calibrationRecord.fileName = file.name
+ this.calibrationRecord.systemFileName = response.data
+ this.upLoading = false;
+ } else {
+ this.upLoading = false;
+ this.$message.error(response.message)
+ }
+ },
+ beforeUpload(file) {
+ let list = file.name.split('.')
+ let suffix = list[list.length - 1]
+
+ console.log(suffix);
+ if (file.size > 1024 * 1024 * 10) {
+ this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M');
+ this.$refs.upload.clearFiles()
+ return false;
+ } else {
+ this.upLoading = true;
+ this.$set(this.uploadData,'id',this.recordId)
+ this.$set(this.uploadData,'suffix',suffix)
+ return true;
+ }
+ },
+ onSuccess(response,file,fileList) {
+ if(response.code == 200) {
+ this.$message.success("涓婁紶鎴愬姛")
+ this.upLoading = false
+ this.$refs.upload.clearFiles()
+ this.getFileData(this.recordId)
+ } else {
+ this.$message.error(response.msg)
+ }
+ },
+ onError(err, file, fileList) {
+ this.$message.error('涓婁紶澶辫触')
+ this.$refs.upload.clearFiles()
+ },
+ // end
+ },
+ watch: {
+ // 鐩戝惉鐐瑰嚮el-tree鐨勬暟鎹紝杩涜鏁版嵁鍒锋柊
+ clickNodeVal(newVal) {
+ if (newVal.value) {
+ this.getTableList(newVal.value);
+ }
+ },
+ dialogVisible1(newVal) {
+ if (newVal === false) {
+ this.calibrateParams = []
+ this.calibrationRecord = {
+ unitOfMeasure: '', // 璁¢噺鍗曚綅
+ calibrationDate: null, // 鏍″噯鏃ユ湡
+ nextCalibrationDate: null, // 涓嬫鏍″噯鏃ユ湡
+ calculatingApparatus: '', // 璁$畻鍣ㄥ叿
+ standardRange: '', // 璁$畻鏍囧噯閲忕▼
+ calibrationStandardUncertainty: '', // 璁¢噺鏍囧噯涓嶇‘瀹氬害
+ byDocument: '', // 渚濇嵁鏂囦欢
+ certificateSerialNumber: '', // 璇佷功缂栧彿
+ status: '', // 鐘舵��
+ remark: '', // 澶囨敞
+ }
+ }
+ }
+ }
+}
+
+</script>
+<style scoped>
+.tables {
+ width: 100%;
+ height: calc(100vh - 230px);
+}
+
+.search {
+ background-color: #fff;
+ height: 40px;
+ display: flex;
+ align-items: center;
+ position: relative;
+}
+
+.search_thing {
+ display: flex;
+ align-items: center;
+ height: 40px;
+}
+
+.search_label {
+ width: 70px;
+ font-size: 14px;
+ text-align: right;
+ margin-right: 10px;
+}
+
+.search_input {
+ width: calc(100% - 110px);
+}
+
+.btnS {
+ text-align: right;
+ margin-top: 10px;
+}
+
+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;
+}
+
+.check {
+ background-color: #fff;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+}
+
+.check_thing {
+ flex: 0 0 calc(20% - 10px);
+ margin-bottom: 20px;
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+}
+
+.check_label {
+ font-size: 14px;
+ margin-bottom: 5px;
+}
+
+.check_data .check_input {
+ width: 100%;
+}
+
+.el-table {
+ font-size: 14px;
+ color: #333;
+}
+
+.el-table thead {
+ background-color: #f5f5f5;
+}
+</style>
--
Gitblit v1.9.3