From efad6058c9c9ee6ba754dc9cc61c8d744cd199b8 Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期一, 06 一月 2025 10:30:31 +0800 Subject: [PATCH] 完成设备模块搬迁 --- src/components/do/a6-device/calibration.vue | 771 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 768 insertions(+), 3 deletions(-) diff --git a/src/components/do/a6-device/calibration.vue b/src/components/do/a6-device/calibration.vue index 8e0ff62..b1aa45b 100644 --- a/src/components/do/a6-device/calibration.vue +++ b/src/components/do/a6-device/calibration.vue @@ -1,13 +1,778 @@ +<!-- 璁惧鏍″噯 --> <template> - <div>璁惧鏍″噯</div> + <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: 10px;"> + <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="180" align="center"> + <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="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 :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="17"> + <el-form-item label="闄勪欢锛�" prop="fileName"> + <el-input v-model="calibrationRecord.fileName" :style="`width: ${operationType === 'add' ? '85%' : '100%'};}`" disabled + size="small"> + <el-button v-if="operationType === 'add'" slot="append" icon="el-icon-delete-solid" + @click="deleteFile"></el-button> + </el-input> + <el-upload v-if="operationType === 'add'" ref="upload" :action="action" + :before-upload="beforeUpload" + :headers="headers" + :limit="1" :on-error="onError" :on-success="handleSuccessUp" + :show-file-list="false" + style="float: right;"> + <el-button :loading="upLoading" size="small" style="position: relative; top: -4px;" + type="primary">闄勪欢涓婁紶 + </el-button> + </el-upload> + </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> + <!-- 鎿嶄綔鏃ュ織 --> + <!-- <h4>--> + <!-- <div style="display: flex;--> + <!-- align-items: center;">--> + <!-- <span class="line"></span><span>鏈褰曠姸鎬佸拰鎿嶄綔鏃ュ織</span>--> + <!-- </div>--> + <!-- </h4>--> + <!-- <el-table :data="tableDataOperate" style="width: 100%">--> + <!-- <el-table-column type="index" label="搴忓彿" width="100"></el-table-column>--> + <!-- <el-table-column prop="operator" label="鎿嶄綔浜�" width="120"></el-table-column>--> + <!-- <el-table-column prop="operationTime" label="鎿嶄綔鏃堕棿" width="180"></el-table-column>--> + <!-- <el-table-column prop="operationType" label="鎿嶄綔绫诲瀷" width="120"></el-table-column>--> + <!-- <el-table-column prop="operationContent" label="鎿嶄綔鍐呭"></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 file from '../../../util/file'; +import fileDownload from "../../../util/file"; + export default { - + props: { + clickNodeVal: { + type: Object, + default: () => { + return {}; + } + } + }, + data() { + return { + value: "", + calibrateParams: [], + calibrateParamsLoading: false, + addCalibrateLoading: 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, + tableDataOperate: [], // 鏈褰曠姸鎬佸拰鎿嶄綔鏃ュ織 + upLoading: false, + operationType: '', + search: { + size: 20, + current: 1, + total: 0 + }, + } + }, + // 鐢ㄤ簬涓婁紶鏂囦欢鐨勪俊鎭� + computed: { + headers() { + return { + 'token': sessionStorage.getItem('token') + } + }, + action() { + return this.javaApi + this.$api.personnel.saveCNASFile + } + }, + mounted() { + //鑾峰彇鎿嶄綔璁板綍淇℃伅 + this.getOperateMsg(); + this.getTableList(this.clickNodeVal.value) // 鑾峰彇璁惧鏍″噯鍒楄〃鏁版嵁 + }, + methods: { + //鐘舵�佸垽瀹� + 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) { + this.$axios.get(this.$api.deviceCheck.deviceMetricRecordPage + '?deviceId=' + deviceId + "&size=" + this.search.size + "¤t=" + this.search.current + "&type=calibrate").then(res => { + this.tableData = res.data.records + this.search.total = res.data.total + }) + }, + getOperateMsg() { + this.$axios.get(this.$api.deviceOperate.list + "/" + this.clickNodeVal.value).then(res => { + this.tableDataOperate = res.data + }) + }, + // 娣诲姞鏍告煡璁板綍 + add(type) { + this.operationType = type + this.dialogVisible1 = true + this.getXmsg() + }, + // 鏌ョ湅璇︽儏 + handleViewClick(type, row) { + this.$axios.get(this.$api.deviceCheck.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(() => { + this.$axios.delete(this.$api.deviceCheck.deleteDeviceMetricRecord + "?id=" + row.id).then(res => { + this.getTableList(this.clickNodeVal.value) // 鑾峰彇璁惧鏍″噯鍒楄〃鏁版嵁 + this.$message.success('鍒犻櫎鎴愬姛锛�') + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }) + }, + handleAttachmentClick(row) { + let state = /\.(jpg|jpeg|png|gif)$/i.test(row.systemFileName) + if (state) { + let url = this.javaApi + '/img/' + row.systemFileName; + fileDownload.downloadIamge(url, row.systemFileName) + } else { + const url = this.javaApi+'/word/'+ row.systemFileName + const link = document.createElement('a'); + link.href = url; + link.download = row.systemFileName; + link.click(); + this.$message.success('涓嬭浇鎴愬姛') + } + }, + //瀵煎嚭 + handleDown() { + this.outLoading = true + this.$axios.get(this.$api.deviceCheck.deviceMetricRecordExport + '?deviceId=' + this.clickNodeVal.value + "&type=calibrate", { + responseType: "blob" + }).then(res => { + this.outLoading = false + const blob = new Blob([res], {type: 'application/octet-stream'}); + //灏咮lob 瀵硅薄杞崲鎴愬瓧绗︿覆 + let reader = new FileReader(); + reader.readAsText(blob, 'utf-8'); + reader.onload = () => { + try { + let result = JSON.parse(reader.result); + if (result.message) { + this.$message.error(result.message); + } else { + const url = URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = url; + link.download = '璁惧鏍″噯.xlsx'; + link.click(); + this.$message.success('瀵煎嚭鎴愬姛') + } + } catch (err) { + console.log(err); + const url = URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = url; + link.download = '璁惧鏍″噯.xlsx'; + link.click(); + this.$message.success('瀵煎嚭鎴愬姛') + } + } + }) + }, + deleteFile() { + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎鏂囦欢, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + this.$axios.delete(this.$api.personnel.deleteCNASFile + "?fileName=" + this.calibrationRecord.systemFileName).then(res => { + this.calibrationRecord.fileName = '' + this.$refs.upload.clearFiles() + if (res.code == 200) { + this.$message.success('鍒犻櫎鎴愬姛锛�') + } + }) + }).catch((err) => { + console.log('err----', err) + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + // 鏍″噯椤圭洰缁存姢 + calibrationMaintenance() { + this.dialogVisible0 = true + this.getXmsg(); + }, + // 鑾峰彇璁惧鏍″噯鍙傛暟table淇℃伅 + async getXmsg() { + this.calibrateParamsLoading = true + try { + await this.$axios.get(this.$api.deviceCheck.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(() => { + this.$axios.delete(this.$api.deviceCheck.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; + const user = JSON.parse(localStorage.getItem('user')) + this.form0.createdBy = user.name; + this.form0.type = 'calibrate' + this.$axios.post(this.$api.deviceCheck.saveOrUpdateDeviceMetric, this.form0, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + if (res.code == 200) { + this.$message.success('淇濆瓨鎴愬姛') + this.$refs['form0'].resetFields() + this.getXmsg() // 鍒锋柊璁惧鏍″噯鍙傛暟琛ㄦ牸 + } + this.calibrateParamsLoading = false + 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; + let user = JSON.parse(localStorage.getItem('user')) + this.calibrationRecord.createUser = user.name + this.calibrationRecord.type = 'calibrate' + this.calibrationRecord.deviceMetricsCopyList = this.calibrateParams + this.$axios.post(this.$api.deviceCheck.addOrUpdateDeviceMetricRecord, this.calibrationRecord, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + if (res.code == 200) { + this.$message.success('娣诲姞鎴愬姛') + this.dialogVisible1 = false + this.getTableList(this.clickNodeVal.value) + } + 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) { + if (file.size > 1024 * 1024 * 10) { + this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M'); + this.$refs.upload.clearFiles() + return false; + } else { + this.upLoading = true; + return true; + } + }, + 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: '', // 澶囨敞 + } + } + } + } } + +function downloadImage(url) { + const link = document.createElement('a'); + link.href = url; + link.target="_blank" + link.download = 'attachment.jpg'; // 鏂囦欢鍚� + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); +} + </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