From 996e3e343760bcfa23b55138f85abd62d6ebfb22 Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期三, 25 十二月 2024 09:02:07 +0800 Subject: [PATCH] 报告预览调试 --- src/components/do/a6-device/files.vue | 657 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 649 insertions(+), 8 deletions(-) diff --git a/src/components/do/a6-device/files.vue b/src/components/do/a6-device/files.vue index 96e1efa..247d503 100644 --- a/src/components/do/a6-device/files.vue +++ b/src/components/do/a6-device/files.vue @@ -1,8 +1,649 @@ -<!-- - * @Author: licp lichunping@guanfang.com.cn - * @Date: 2024-07-29 15:43:42 - * @LastEditors: licp lichunping@guanfang.com.cn - * @LastEditTime: 2024-07-29 15:43:48 - * @FilePath: \center-lims-before\src\components\do\a6-device\files.vue - * @Description: 杩欐槸榛樿璁剧疆,璇疯缃甡customMade`, 鎵撳紑koroFileHeader鏌ョ湅閰嶇疆 杩涜璁剧疆: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE ---> +<template> + <div class="page"> + <div class="page-header"> + <h4><span class="line"></span><span>璁惧妗f</span></h4> + <div class="btns"> + <el-button type="primary" size="small" @click="dialogVisible=true" style="margin-right: 16px;">淇妗f</el-button> + <!-- <el-button type="primary" size="small">娣诲姞闄勪欢</el-button> --> + <el-upload + class="upload-demo" + :action="action" + :headers="headers" + :show-file-list="false" + :limit="1" + :before-upload="beforeUpload" + :on-success="handleSuccess" + ref="upload" + :on-error="onError"> + <el-button size="small" type="primary" :loading="inLoading">娣诲姞闄勪欢</el-button> + </el-upload> + </div> + </div> + <el-divider></el-divider> + <el-row :gutter="20"> + <el-col :span="6"> + <el-image src="" fit="fill" style="width: 200px;height: 300px;border: 1px solid #000;border-radius: 10px;margin-left: 30px;margin-top: 20px;"> + <div slot="error" class="image-slot"> + <i class="el-icon-picture-outline" style="font-size: 40px;"></i> + </div> + </el-image> + </el-col> + <el-col :span="8"> + <div class="form-item"> + <label>璁惧鍚嶇О</label> + <p>{{ handleData('鎵弿鐢甸暅(甯﹁兘璋�)') }}</p> + </div> + <div class="form-item"> + <label>澶х被</label> + <p>{{ handleData('鍒嗘瀽浠櫒') }}</p> + </div> + <div class="form-item"> + <label>鍐呴儴缂栧彿</label> + <p>{{ handleData('鎵弿鐢甸暅(甯﹁兘璋�)') }}</p> + </div> + <div class="form-item"> + <label>鐢熶骇鍘傚</label> + <p>{{ handleData('鎵弿鐢甸暅(甯﹁兘璋�)') }}</p> + </div> + <div class="form-item"> + <label>璧勪骇缂栫爜</label> + <p>{{ handleData('鎵弿鐢甸暅(甯﹁兘璋�)') }}</p> + </div> + <div class="form-item"> + <label>鍑哄巶鏃ユ湡</label> + <p>{{ handleData('2024-7-20') }}</p> + </div> + <div class="form-item"> + <label>鍚敤鏃ユ湡</label> + <p>{{ handleData('2024-7-20') }}</p> + </div> + <div class="form-item"> + <label>鏍稿噯鍛ㄦ湡(鏈�)</label> + <p>{{ handleData('12') }}</p> + </div> + <div class="form-item"> + <label>妫�娴嬬被鍨�</label> + <p>{{ handleData('12') }}</p> + </div> + <div class="form-item"> + <label>鎶ュ簾鏃堕棿</label> + <p>{{ handleData('12') }}</p> + </div> + <div class="form-item"> + <label>鍑嗙‘搴﹂噺鍊�</label> + <p>{{ handleData('12') }}</p> + </div> + <div class="form-item"> + <label>琚巿鏉冧汉</label> + <p>{{ handleData('12') }}</p> + </div> + <div class="form-item"> + <label>缁翠慨璁板綍</label> + <p>{{ handleData('12') }}</p> + </div> + </el-col> + <el-col :span="10"> + <div class="form-item"> + <label>瑙勬牸鍨嬪彿</label> + <p>{{ handleData('JSM-6010LA') }}</p> + </div> + <div class="form-item"> + <label>缁嗙被</label> + <p>{{ handleData('鍒嗘瀽浠櫒') }}</p> + </div> + <div class="form-item"> + <label>璁惧鐘舵��</label> + <el-radio-group v-model="form.value1" disabled> + <el-radio :label="0" style="width: 40px;">鍚堟牸</el-radio> + <el-radio :label="1" style="width: 40px;">缁翠慨</el-radio> + <el-radio :label="2" style="width: 40px;">鍋滅敤</el-radio> + <el-radio :label="3" style="width: 40px;">鎶ュ簾</el-radio> + </el-radio-group> + </div> + <div class="form-item"> + <label>鍑哄巶缂栧彿</label> + <p>{{ handleData() }}</p> + </div> + <div class="form-item"> + <label>瀛樻斁鐐�</label> + <p>{{ handleData() }}</p> + </div> + <div class="form-item"> + <label>璐疆鏃ユ湡</label> + <p>{{ handleData() }}</p> + </div> + <div class="form-item"> + <label>浜у湴</label> + <p>{{ handleData() }}</p> + </div> + <div class="form-item"> + <label>鏈�杩戞函婧愭棩鏈�</label> + <p>{{ handleData() }}</p> + </div> + <div class="form-item"> + <label>閲囪喘璐圭敤(鍏�)</label> + <p>{{ handleData() }}</p> + </div> + <div class="form-item"> + <label>鍋滅敤鏃堕棿</label> + <p>{{ handleData() }}</p> + </div> + <div class="form-item"> + <label>璁惧璐熻矗浜�</label> + <p>{{ handleData() }}</p> + </div> + <div class="form-item"> + <label>楠屾敹璁板綍</label> + <p>{{ handleData() }}</p> + </div> + <div class="form-item"> + <label>鏍稿噯璇佷功</label> + <p>{{ handleData() }}</p> + </div> + </el-col> + </el-row> + <h4 style="margin-bottom: 10px;margin-top: 10px;"><span class="line"></span><span>闄勪欢鍜岀浉鍏虫枃妗�</span></h4> + <div class="tables"> + <ValueTable ref="ValueTable" + :url="$api.auxiliaryWorkingHoursDay.selectAuxiliaryWorkingHoursDay" + :delUrl="$api.auxiliaryWorkingHoursDay.deleteAuxiliaryWorkingHoursDay" :componentData="componentData" :key="upIndex" style="min-height: 400px;"/> + </div> + <el-dialog title="妗f淇" :visible.sync="dialogVisible" width="70%" :before-close="handleClose"> + <el-row style="display:flex;justify-content: space-around;"> + <!-- 宸﹁竟甯冨眬 --> + <el-col :span="7"> + <el-col> + <!-- 鍥剧墖 --> + <el-image class="img" style="width:100%;height: 320px;marginBottom:16px" + :src="javaApi+'/img/'+formData.imageUpload"> + <div slot="error" class="image-error" style="width: calc(100% -2px); + height: 318px; + border-radius: 16px; + display: flex; + align-items: center; + justify-content: center; + border: 1px solid #EEEEEE;"> + <i class="el-icon-picture-outline" style="font-size:60px;color:#666666;"></i> + </div> + </el-image> + <!-- 琛ㄥ崟 --> + <el-form :model="formData" label-width="120px"> + <el-form-item label="浠櫒鍚嶇О:" required> + <el-input v-model="formData.deviceName" size="small"></el-input> + </el-form-item> + <el-form-item label="浠櫒鍚嶇ОEN:" required> + <el-input v-model="formData.enDeviceName" size="small"></el-input> + </el-form-item> + <el-form-item label="瑙勬牸鍨嬪彿:" required> + <el-input v-model="formData.specificationModel" size="small"></el-input> + </el-form-item> + <el-form-item label="鐢熶骇鍘傚:"> + <el-input v-model="formData.manufacturer" size="small"></el-input> + </el-form-item> + </el-form> + </el-col> + </el-col> + <!-- 涓棿甯冨眬 --> + <el-col :span="7"> + <el-form :model="formData" label-width="116px"> + <el-form-item label="鏍″噯鏈嶅姟鏈烘瀯:"> + <el-input v-model="formData.calibrationServices" size="small"></el-input> + </el-form-item> + <el-form-item label="鍑哄巶缂栧彿:"> + <el-input v-model="formData.factoryNo" size="small"></el-input> + </el-form-item> + <el-form-item label="绠$悊缂栧彿:" required> + <el-input v-model="formData.managementNumber" size="small"></el-input> + </el-form-item> + <el-form-item label="璐疆鏃ユ湡:"> + <el-date-picker style="width:100%" v-model="formData.acquisitionDate" type="date" + format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" size="small" placeholder="閫夋嫨鏃ユ湡"> + </el-date-picker> + </el-form-item> + <el-form-item label="鍚敤鏃ユ湡:" required> + <el-date-picker style="width:100%" v-model="formData.activationDate" type="date" + format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" size="small" placeholder="閫夋嫨鏃ユ湡"> + </el-date-picker> + </el-form-item> + <el-form-item label="绠$悊浜�:"> + <el-select v-model="formData.equipmentManager" placeholder="璇烽�夋嫨" size="small" style="width:100%"> + <el-option v-for="item in responsiblePersonList" :key="item.value" :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="瀛樻斁鐐�:"> + <el-input v-model="formData.storagePoint" size="small"></el-input> + </el-form-item> + <el-form-item label="鎶�鏈寚鏍�:"> + <el-input v-model="formData.technicalIndicators" :rows="7" type="textarea" size="small"></el-input> + </el-form-item> + </el-form> + </el-col> + <!-- 鍙宠竟甯冨眬 --> + <el-col :span="7"> + <el-form :model="formData" label-width="140px" ref="ruleForm"> + <!-- 瀹為獙瀹ゅ垪琛� --> + <el-form-item label="鎵�灞為儴闂�:"> + <el-select v-model="formData.subordinateDepartmentsId" placeholder="璇烽�夋嫨" size="small" style="width:100%"> + <el-option v-for="item in subordinateDepartmentsList" :key="item.value" :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="妫�娴嬮」鐩�:"> + <el-cascader + v-model="formData.insProductIds" + :options="options" + :show-all-levels="false" + :props="props" + placeholder="璇烽�夋嫨" size="small" + style="width:100%;" + :collapse-tags="true" + separator="," + filterable + clearable></el-cascader> + </el-form-item> + <el-form-item label="鏈�杩戞牎鍑嗘棩鏈�:"> + <el-date-picker style="width:100%" v-model="formData.latestTraceability" format="yyyy-MM-dd" + value-format="yyyy-MM-dd" type="date" size="small" placeholder="閫夋嫨鏃ユ湡"> + </el-date-picker> + </el-form-item> + <el-form-item label="涓嬫鏍″噯鏃ユ湡:"> + <el-date-picker style="width:100%" v-model="formData.latestTraceability" format="yyyy-MM-dd" + value-format="yyyy-MM-dd" type="date" size="small" placeholder="閫夋嫨鏃ユ湡"> + </el-date-picker> + </el-form-item> + <el-form-item label="璁惧绫诲瀷:"> + <el-select v-model="formData.largeCategory" placeholder="璇烽�夋嫨" size="small" style="width:100%"> + <el-option v-for="item in equipmentList" :key="item.value" :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="鍗曚环(涓囧厓):"> + <el-input v-model="formData.unitPrice" size="small"></el-input> + </el-form-item> + <el-form-item label="褰撳墠鐘舵��:" required> + <el-select v-model="formData.deviceStatus" placeholder="璇烽�夋嫨" size="small" style="width:100%"> + <el-option v-for="item in deviceStatusList" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="鏍″噯鍛ㄦ湡锛堟湀锛�:" required> + <el-input v-model="formData.calibrationDate" size="small"></el-input> + </el-form-item> + <el-form-item label="鍥剧墖:"> + <div + style="border: 1px solid #DCDFE6;border-radius:4px;height:32px;lineHeight:32px;display:flex;justify-content: space-around;font-size: 13px;"> + <div v-show="formData.imageName" class="picName">{{formData.imageName}}</div> + <el-upload :action="action" :on-success="handleSuccessUpImg2" :show-file-list="false" + accept='image/jpg,image/jpeg,image/png' :headers="headers" :on-change="beforeUpload" + :on-error="onError" ref='upload'> + <el-button type="text" style="height:30px;padding-top:8px">涓婁紶</el-button> + </el-upload> + </div> + </el-form-item> + </el-form> + </el-col> + </el-row> + <span slot="footer" class="dialog-footer"> + <el-row> + <el-button @click="handleClose">鍙� 娑�</el-button> + <el-button type="primary" @click="submitForm" :loading="upLoad">纭� 瀹�</el-button> + </el-row> + </span> + </el-dialog> + </div> +</template> + +<script> +import ValueTable from '../../tool/value-table.vue' +export default { + components: { + ValueTable + }, + data(){ + return{ + componentData: { + entity: { + week: null, + weekDay: null, + dateTime: null, + name:null, + orderBy: { + field: 'id', + order: 'desc' + } + }, + isIndex: true, + showSelect: false, + select: false, + isPage:false, + do: [{ + id: 'getFile', + font: '闄勪欢', + type: 'text', + method: 'getFile' + }, { + id: 'handleLook', + font: '鏌ョ湅', + type: 'text', + method: 'handleLook' + },{ + id: 'delete', + font: '鍒犻櫎', + type: 'text', + method: 'doDiy', + disabFun: (row, index) => { + return row.state === '宸插鏍�' || row.state === '宸叉壒鍑�' + } + }], + tagField: { + shift:{ + select:[] + }, + state:{ + select:[ + { + label:'宸叉彁浜�', + value:'宸叉彁浜�', + type:'primary' + }, + { + label:'宸插鏍�', + value:'宸插鏍�', + type:'warning' + }, + { + label:'宸叉壒鍑�', + value:'宸叉壒鍑�', + type:'success' + }, + ] + }, + weekDay:{ + select:[] + } + }, + linkEvent: {}, + selectField: { + shift:{ + select:[] + }, + state:{ + select:[ + { + label:'宸叉彁浜�', + value:'宸叉彁浜�', + type:'primary' + }, + { + label:'宸插鏍�', + value:'宸插鏍�', + type:'warning' + }, + { + label:'宸叉壒鍑�', + value:'宸叉壒鍑�', + type:'success' + }, + ] + }, + weekDay:{ + select:[] + } + }, + requiredAdd: [], + requiredUp: [] + }, + upIndex:0, + dialogVisible:false, + inLoading:false, + form: { + value1:'' + }, + upLoad:false, + formData:{}, + responsiblePersonList:[], + subordinateDepartmentsList:[], + options:[], + equipmentList:[], + deviceStatusList:[], + props: { multiple: true,emitPath:false,value:'id',label:'name' }, + } + }, + computed: { + headers() { + return { + 'token': sessionStorage.getItem('token') + } + }, + action() { + return this.javaApi + this.$api.deviceScope.uploadFile + } + }, + mounted(){ + this.selectDevicePrincipal() + this.obtainItemParameterList() + this.getInsProductIds() + this.selectEnumByCategory() + }, + methods: { + handleData(m){ + if(m){ + return m + }else{ + return '-' + } + }, + handleClose(){ + this.dialogVisible = false + }, + handleSuccess(response,){ + this.inLoading = false; + if (response.code == 200) { + this.$message.success('涓婁紶鎴愬姛') + // 鏇存柊椤甸潰 + }else{ + this.$message.error(response.message) + } + }, + submitForm(){ + if(!this.formData.deviceName){ + this.$message.error('鏈緭鍏ヤ华鍣ㄥ悕绉�') + return + } + if(!this.formData.enDeviceName){ + this.$message.error('鏈緭鍏ヤ华鍣ㄥ悕绉癊N') + return + } + if(!this.formData.specificationModel){ + this.$message.error('鏈緭鍏ヨ鏍煎瀷鍙�') + return + } + if(!this.formData.managementNumber){ + this.$message.error('鏈緭鍏ョ鐞嗙紪鍙�') + return + } + if(!this.formData.activationDate){ + this.$message.error('鏈緭鍏ュ惎鐢ㄦ棩鏈�') + return + } + if(this.formData.deviceStatus==='' || this.formData.deviceStatus===null){ + this.$message.error('鏈�夋嫨褰撳墠鐘舵��') + return + } + if(!this.formData.calibrationDate){ + this.$message.error('鏈緭鍏ユ牎鍑嗗懆鏈燂紙鏈堬級') + return + } + delete this.formData.createTime + delete this.formData.updateTime + delete this.formData.createUser + delete this.formData.updateUser + this.formData.insProductIds = this.formData.insProductIds?this.formData.insProductIds.join():'' + this.upLoad = true; + this.$axios.post(this.$api.deviceScope.upDeviceParameter, this.formData, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + if (res.code === 201) { + this.upLoad = false + return + } + this.$message.success('淇敼鎴愬姛') + this.upLoad = false + this.dialogVisible = false + }).catch(e => { + this.$message.error('淇敼澶辫触') + this.dialogVisible = false + this.upLoad = false + }) + }, + handleSuccessUpImg2(response) { + if (response.code == 200) { + this.$nextTick(() => { + this.formData.imageUpload = response.data.url; + this.formData.imageName = response.data.name; + }) + } + }, + beforeUpload(file) { + if (file.size > 1024 * 1024 * 10) { + this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M'); + this.$refs.upload.clearFiles() + return false; + } else { + return true; + } + }, + onError(err, file, fileList) { + this.$message.error('涓婁紶澶辫触') + this.$refs.upload.clearFiles() + }, + // 鑾峰彇璐熻矗浜哄垪琛� + selectDevicePrincipal() { + this.$axios.get(this.$api.deviceScope.selectDevicePrincipal).then(res => { + let data = [] + res.data.forEach(a => { + data.push({ + label: a.name, + value: a.id + }) + }) + this.responsiblePersonList = data + }) + }, + obtainItemParameterList() { + this.$axios.get(this.$api.laboratoryScope.obtainItemParameterList).then(res => { + let data = [] + res.data.forEach(a=>{ + data.push({ + label: a.laboratoryName, + value: a.id + }) + }) + this.subordinateDepartmentsList = data + }) + }, + getInsProductIds(){ + this.$axios.post(this.$api.capacityScope.getInsProduction).then(res => { + this.options = res.data.map((m,i)=>{ + m.id = m.name; + return m + }) + this.options.forEach(item=>{ + if(item.children.length==0){ + item.children = null; + }else{ + item.children.forEach(m=>{ + if(m.children.length==0){ + m.children = null; + }else{ + m.children.forEach(n=>{ + if(n.children&&n.children.length==0){ + n.children = null; + } + }) + } + }) + } + }) + }) + }, + // 鑾峰彇瀛楀吀 + selectEnumByCategory() { + this.$axios.post(this.$api.enums.selectEnumByCategory, { + category: "璁惧鐘舵��" + }).then(res => { + this.deviceStatusList = res.data + this.deviceStatusList.forEach(a=>{ + if(!isNaN(a.value)){ + a.value = parseInt(a.value) + } + }) + }) + this.$axios.post(this.$api.enums.selectEnumByCategory, { + category: "璁惧鍒嗙被" + }).then(res => { + this.equipmentList = res.data + }) + }, + } +} +</script> + +<style scoped> +.page{ + width: 100%; + height: 100%; + overflow-y: auto; + overflow-x: hidden; +} +.page-header{ + display: flex; + justify-content: space-between; +} +h4{ + display: flex; + align-items: center; +} +h4 .line{ + display: inline-block; + width: 3px; + height: 16px; + background: #3A7BFA; + margin-right: 4px; +} +.tables{ + width: calc(100vw - 390px); +} +.el-image { + position: relative; +} +.el-icon-picture-outline{ + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%,-50%); +} +.form-item{ + line-height: 34px; + display: flex; + align-items: center; + font-size: 14px; +} +.form-item label{ + width: 110px; + display: inline-block; + text-align: right; + margin-right: 20px; + color: #999; +} +.btns { + display: flex; + align-items: center; +} +</style> -- Gitblit v1.9.3