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/files.vue | 1478 ++++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 1,004 insertions(+), 474 deletions(-) diff --git a/src/components/do/a6-device/files.vue b/src/components/do/a6-device/files.vue index 247d503..bd95c1b 100644 --- a/src/components/do/a6-device/files.vue +++ b/src/components/do/a6-device/files.vue @@ -1,416 +1,577 @@ +<!-- 璁惧妗f --> <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> + <el-button type="primary" size="small" @click="openEditForm" + style="">淇妗f</el-button> + <el-button type="primary" size="small" @click="dialogVisible1 = true" + style="">娣诲姞闄勪欢</el-button> + <el-button type="primary" v-if="isPermission('showDeviceQrCodeButton')" size="small" @click="deviceDialog = true" + style="">鏌ョ湅璁惧浜岀淮鐮�</el-button> + <el-button type="primary" size="small" @click="handleDownOne" + style="">瀵煎嚭</el-button> </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 class="main_div"> + <el-row :gutter="20"> + <el-col :span="6"> + <!-- 鍔犳椂闂存埑閬垮厤娴忚鍣ㄧ紦瀛橀棶棰� --> + <el-image :src="`${javaApi}/img/${Mdata.imageUpload}`" fit="fill" :key="'personalPicture' + timeStamp" + 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>{{ Mdata.deviceName }}</p> --> + <el-tooltip + class="item" + :content="Mdata.deviceName" + > + <span class="text-ellipsis" >{{ Mdata.deviceName }}</span> + </el-tooltip> </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"> + <div class="form-item"> + <label>璁惧绫诲瀷</label> + <p>{{ Mdata.largeCategory }}</p> + </div> + + <div class="form-item"> + <label>绠$悊缂栧彿</label> + <p>{{ Mdata.managementNumber }}</p> + </div> + <div class="form-item"> + <label>鎵�灞為儴闂�</label> + <p>{{ Mdata.laboratoryName }}</p> + </div> + <div class="form-item"> + <label>鐢熶骇鍘傚</label> + <!-- <p>{{ Mdata.manufacturer }}</p> --> + <el-tooltip + class="item" + :content="Mdata.manufacturer" + > + <span class="text-ellipsis" >{{ Mdata.manufacturer }}</span> + </el-tooltip> + </div> + <div class="form-item"> + <label>璧勪骇缂栫爜</label> + <p class="text-ellipsis">{{ Mdata.assetCode }}</p> + </div> + + <div class="form-item"> + <label>鍑哄巶鏃ユ湡</label> + <p>{{ Mdata.acquisitionDate | formaterDateTime }}</p> + </div> + <div class="form-item"> + <label>鍚敤鏃ユ湡</label> + <p>{{ Mdata.activationDate | formaterDateTime }}</p> + </div> + <div class="form-item"> + <label>鏍稿噯鍛ㄦ湡(鏈�)</label> + <p>{{ Mdata.calibrationDate }}</p> + </div> + + <div class="form-item"> + <label>鎶ュ簾鏃堕棿</label> + <p>{{ handleData() }}</p> + </div> + <div class="form-item"> + <label>鍑嗙‘搴﹂噺鍊�</label> + <el-tooltip + class="item" + :content="Mdata.technicalIndicators" + > + <span class="text-ellipsis">{{ Mdata.technicalIndicators }}</span> + </el-tooltip> + <!-- <p>{{ Mdata.technicalIndicators }}</p> --> + </div> + <div class="form-item"> + <label>缁翠慨璁板綍</label> + <p>{{ handleData() }}</p> + </div> + <div class="form-item"> + <label>琚巿鏉冧汉</label> + <p>{{ Mdata.authorizedPersonName }}</p> + </div> + + </el-col> + <el-col :span="10"> + <div class="form-item"> + <label>瑙勬牸鍨嬪彿</label> + <p>{{ Mdata.specificationModel }}</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> --> + <div class="form-item"> + <label>鍑哄巶缂栧彿</label> + <p>{{ Mdata.factoryNo }}</p> + </div> + <div class="form-items"> + <label>璁惧鐘舵��</label> + <el-radio-group v-model="Mdata.deviceStatus" style="margin-left: 10px;"> + <el-radio :label="0" :disabled="Mdata.deviceStatus != 0">姝e父</el-radio> + <el-radio :label="1" :disabled="Mdata.deviceStatus != 1">缁翠慨</el-radio> + <el-radio :label="2" :disabled="Mdata.deviceStatus != 2">鍋滅敤</el-radio> + <el-radio :label="3" :disabled="Mdata.deviceStatus != 3">鎶ュ簾</el-radio> + </el-radio-group> + </div> + <div class="form-item"> + <label>瀛樻斁鐐�</label> + <p>{{ Mdata.storagePoint }}</p> + </div> + <div class="form-item"> + <label>浜у湴</label> + <p>{{ Mdata.origin }}</p> + </div> + <div class="form-item"> + <label>妫�楠岄」</label> + <el-tooltip + class="item" + effect="dark" + :content="Mdata.insProductItem" + placement="top" + > + <span class="text-ellipsis" >{{ Mdata.insProductItem }}</span> + </el-tooltip> + </div> + <div class="form-item"> + <label>璐疆鏃ユ湡</label> + <p>{{ Mdata.acquisitionDate | formaterDateTime }}</p> + </div> + + <div class="form-item"> + <label>鏈�杩戞函婧愭棩鏈�</label> + <p>{{ Mdata.lastCalibrationDate | formaterDateTime }}</p> + </div> + <div class="form-item"> + <label>閲囪喘璐圭敤(鍏�)</label> + <p>{{ Mdata.unitPrice }}</p> + </div> + <div class="form-item"> + <label>鍋滅敤鏃堕棿</label> + <p>{{ Mdata.nextCalibrationDate | formaterDateTime }}</p> + </div> + <div class="form-item"> + <label>璁惧璐熻矗浜�</label> + <p>{{ Mdata.equipmentManagerName }}</p> + </div> + <div class="form-item"> + <label>楠屾敹璁板綍</label> + <p>{{ handleData() }}</p> + </div> + <div class="form-item"> + <label>鏍稿噯璇佷功</label> + <p>{{ Mdata.calibrateNo }}</p> + </div> + </el-col> + </el-row> + <h4 style="margin-bottom: 10px;margin-top: 10px;"><span class="line"></span><span>闄勪欢鍜岀浉鍏虫枃妗�</span></h4> + <el-table height="200px" :data="tableDataA"> + <el-table-column header-align="center" align="center" prop="prop" label="搴忓彿" type="index" width="60" /> + <el-table-column prop="documentType" label="绫诲瀷" min-width="100"> + <template v-slot="scope"> + {{ scope.row.documentType === '0' ? '闄勪欢' : scope.row.documentType === '1' ? '鏂囨。' : '' }} + </template> + </el-table-column> + <el-table-column prop="name" label="鍚嶇О" min-width="150" /> + <el-table-column prop="number" label="缂栧彿" min-width="150" /> + <el-table-column prop="version" label="鐗堟湰" min-width="80" /> + <el-table-column prop="quantity" label="浠芥暟" min-width="80" /> + <el-table-column prop="pageCount" label="椤电爜" min-width="80" /> + <el-table-column prop="provider" label="鎻愪緵鑰�" min-width="150" /> + <el-table-column prop="provideDate" label="鎻愪緵鏃ユ湡" min-width="150" /> + <el-table-column prop="comments" label="澶囨敞" min-width="150" /> + <el-table-column fixed="right" label="鎿嶄綔" min-width="180"> + <template slot-scope="scope"> + <el-button type="text" size="small" @click="handleAttachmentClick(scope.row)">涓嬭浇闄勪欢</el-button> + <el-button type="text" size="small" @click="handleViewClick(scope.row)">鏌ョ湅</el-button> + <el-button type="text" size="small" @click="handleDeleteClick(scope.row)">鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> </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); + <!-- 淇 --> + <el-dialog title="淇妗f" top="5vh" :visible.sync="dialogVisible" width="70%" @open="openFileRevisionDialog" + :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;margin-bottom:16px" + :src="javaApi + '/img/' + editData.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"> + <i class="el-icon-picture-outline" style="font-size:60px;color:#666666;"></i> + </div> + </el-image> + <!-- 琛ㄥ崟 --> + <el-form :model="editData" label-width="120px" ref="rules1" :rules="rules1"> + <el-form-item label="浠櫒鍚嶇О:" prop="deviceName"> + <el-input v-model="editData.deviceName" size="small"></el-input> + </el-form-item> + <el-form-item label="浠櫒鍚嶇ОEN:" prop="enDeviceName"> + <el-input v-model="editData.enDeviceName" size="small"></el-input> + </el-form-item> + <el-form-item label="瑙勬牸鍨嬪彿:" prop="specificationModel"> + <el-input v-model="editData.specificationModel" size="small"></el-input> + </el-form-item> + <el-form-item label="鐢熶骇鍘傚:"> + <el-input v-model="editData.manufacturer" size="small"></el-input> + </el-form-item> + </el-form> + </el-col> + </el-col> + <!-- 涓棿甯冨眬 --> + <el-col :span="7"> + <el-form :model="editData" label-width="116px" ref="rules2" :rules="rules1"> + <el-form-item label="鏍″噯鏈嶅姟鏈烘瀯:"> + <el-input v-model="editData.calibrationServices" disabled size="small"></el-input> + </el-form-item> + <el-form-item label="璧勪骇缂栫爜:"> + <el-input v-model="editData.assetCode" size="small"></el-input> + </el-form-item> + <el-form-item label="浜у湴:"> + <el-input v-model="editData.origin" size="small"></el-input> + </el-form-item> + <el-form-item label="鍑哄巶缂栧彿:"> + <el-input v-model="editData.factoryNo" size="small"></el-input> + </el-form-item> + <el-form-item label="绠$悊缂栧彿:" prop="managementNumber"> + <el-input v-model="editData.managementNumber" size="small"></el-input> + </el-form-item> + <el-form-item label="璐疆鏃ユ湡:"> + <el-date-picker style="width:100%" v-model="editData.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="鍚敤鏃ユ湡:" prop="activationDate"> + <el-date-picker style="width:100%" v-model="editData.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="editData.equipmentManager" placeholder="璇烽�夋嫨" size="small" style="width:100%"> + <el-option v-for="item in responsiblePersonList" :key="item.name" :label="item.name" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="瀛樻斁鐐�:"> + <el-input v-model="editData.storagePoint" size="small"></el-input> + </el-form-item> + <el-form-item label="鎶�鏈寚鏍�:"> + <el-input v-model="editData.technicalIndicators" :rows="7" type="textarea" size="small"></el-input> + </el-form-item> + </el-form> + </el-col> + <!-- 鍙宠竟甯冨眬 --> + <el-col :span="7"> + <el-form :model="editData" label-width="140px" ref="ruleForm" :rules="rules1"> <!-- 瀹為獙瀹ゅ垪琛� --> <el-form-item label="鎵�灞為儴闂�:"> - <el-select v-model="formData.subordinateDepartmentsId" placeholder="璇烽�夋嫨" size="small" style="width:100%"> + <el-select v-model="editData.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-cascader v-model="editData.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-date-picker style="width:100%" v-model="Mdata.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="Mdata.nextCalibrationDate" format="yyyy-MM-dd" + value-format="yyyy-MM-dd HH:mm:ss" 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-select v-model="editData.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-input v-model="editData.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 label="褰撳墠鐘舵��:" prop="deviceStatus"> + <el-select v-model="editData.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="鍥剧墖:"> - <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> + <el-form-item label="鏍″噯鍛ㄦ湡锛堟湀锛�:" prop="calibrationDate"> + <el-input v-model="editData.calibrationDate" size="small"></el-input> + </el-form-item> + <el-form-item label="琚巿鏉冧汉:"> + <el-select v-model="editData.authorizedPerson" multiple placeholder="璇烽�夋嫨" size="small" style="width:100%"> + <el-option v-for="item in responsiblePersonList" :key="item.name" :label="item.name" :value="item.id"> + </el-option> + </el-select> + </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="Mdata.imageName" class="picName">{{ Mdata.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"><span v-if="Mdata.imageName"></span></el-button> + </el-upload> + </div> --> + + <div> + <div v-show="editData.imageName" class="picName">{{ editData.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' class="avatar-uploader" + > + <img v-if="editData.imageUpload" :src="javaApi + '/img/' + editData.imageUpload" class="avatar"> + <i v-else class="el-icon-plus avatar-uploader-icon"></i> + </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> + <el-dialog title="娣诲姞璁惧闄勪欢" top="5vh" v-if="dialogVisible1" :visible.sync="dialogVisible1" width="40%"> + <el-form ref="form" :model="addFile" label-width="120px"> + <el-row :gutter="20"> + <el-col :span="12"> + <el-form-item label="缁存姢绫诲瀷锛�"> + <el-radio-group v-model="addFile.documentType"> + <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 label="妗f鍚嶇О锛�"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="addFile.name"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="搴撳彿/璧勪骇缂栧彿:"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="addFile.number"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鐗堟湰锛�"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="addFile.version"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="浠芥暟锛�"> + <el-input-number v-model="addFile.quantity" controls-position="right" style="width: 100%;" size="small" + :min="0" :max="10"></el-input-number> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="椤电爜锛�"> + <el-input-number v-model="addFile.pageCount" controls-position="right" style="width: 100%;" size="small" + :min="0" :max="10"></el-input-number> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鎻愪緵鑰咃細"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="addFile.provider"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="褰掓。鏃ユ湡锛�"> + <el-date-picker type="date" style="width:100%" placeholder="璇烽�夋嫨鏃ユ湡" size="small" v-model="addFile.archiveDate" + format="yyyy-MM-dd" 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 type="textarea" :rows="2" size="small" v-model="addFile.comments"></el-input> + </el-form-item> + </el-col> + <el-col :span="24"> + <el-form-item label="闄勪欢锛�" style="float: left;"> + <el-upload class="upload-demo" :action="action" :headers="headers" ref="uploadFile" :on-error="onError" + :on-remove="handleRemove" :on-success="onSuccess" :before-remove="beforeRemove" multiple :limit="1" + :on-exceed="handleExceed" :file-list="fileList"> + <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button> + </el-upload> + </el-form-item> + </el-col> + </el-row> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-row> + <el-button @click="dialogVisible1 = false" size="small">鍙� 娑�</el-button> + <el-button type="primary" @click="saveRecord" size="small" :loading="isLoading">{{ isAddFileUpdate == true ? + '鏇存柊' : + '纭� 瀹�' }}</el-button> + </el-row> + </span> + </el-dialog> + <el-dialog + title="璁惧浜岀淮鐮�" + :visible.sync="deviceDialog" + top="5vh" + width="30%"> + <div style="width:90%;text-align: right;"> + <el-button type="primary" size="mini" @click="clickGeneratePicture">涓嬭浇鍥剧墖</el-button> + <el-button type="primary" size="mini" @click="labelPrint">鏍囩鎵撳嵃</el-button> + </div> + <div class="device-main" ref="deviceQrCode" id="deviceCode"> + <div class="device-center" > + <p class="device-title">{{Mdata.deviceName}}</p> + <div class="device-footer"> + <div> + <vueQr class="qr-code" :text="'https://zttx-lims.ztt.cn:8021/lims/qr/qrScan?code='+Mdata.managementNumber+'&type=device'" :size="200" :margin="10"></vueQr> + </div> + <div class="device-number"> + <span class="device-text">璁惧缂栫爜:</span> + <span class="device-text">{{Mdata.managementNumber}}</span> + </div> + <div class="device-name"> + <span class="device-text">璁惧鍨嬪彿:</span> + <span class="device-text">{{Mdata.specificationModel}}</span> + </div> + </div> + </div> + </div> + </el-dialog> </div> </template> <script> +import { MessageBox } from 'element-ui' import ValueTable from '../../tool/value-table.vue' +import fileDownload from '../../../util/file' +import vueQr from 'vue-qr' +import PrintJS from 'print-js' +import domtoimage from 'dom-to-image'; +import {isPermission} from '../../../util/auth' export default { - components: { - ValueTable + filters:{ + formaterDateTime(dateTime){ + if(dateTime === undefined || dateTime === null || dateTime === ''){ + return dateTime + } + return dateTime.split(" ")[0] + } }, - 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:'' + props: { + clickNodeVal: { + type: Object, + default: () => { + return {}; + } + } + }, + components: { + ValueTable, + vueQr + }, + data() { + return { + isPermission:isPermission, + deviceDialog: false,//鏌ョ湅璁惧浜岀淮鐮佸脊妗� + rules1: { + deviceName: [ + { required: true, message: '璇疯緭鍏ヤ华鍣ㄥ悕绉�', trigger: 'blur' }, + ], + enDeviceName: [ + { required: true, message: '璇疯緭鍏ヤ华鍣ㄥ悕绉癊N', trigger: 'blur' }, + ], + specificationModel: [ + { required: true, message: '璇疯緭鍏ヨ鏍煎瀷鍙�', trigger: 'blur' }, + ], + managementNumber: [ + { required: true, message: '璇疯緭鍏ョ鐞嗙紪鍙�', trigger: 'blur' }, + ], + activationDate: [ + { required: true, message: '璇疯緭鍏ュ惎鐢ㄦ棩鏈�', trigger: 'blur' }, + ], + deviceStatus: [ + { required: true, message: '璇疯緭鍏ュ綋鍓嶇姸鎬�', trigger: 'blur' }, + ], + calibrationDate: [ + { required: true, message: '璇疯緭鍏ユ牎鍑嗗懆鏈�(鏈�)', trigger: 'blur' }, + ], }, - upLoad:false, - formData:{}, - responsiblePersonList:[], - subordinateDepartmentsList:[], - options:[], - equipmentList:[], - deviceStatusList:[], - props: { multiple: true,emitPath:false,value:'id',label:'name' }, + // dateForm: { + + // }, + fileList: [], // 娣诲姞闄勪欢涓婁紶鏂囦欢鍒楄〃 + timeStamp: '', // 缁欏浘鐗囨坊鍔爇ey锛屽湪姣忔鍔犺浇椤甸潰鐨勬椂鍊欐柊寤烘椂闂存埑 + equipmentManager: [], + formLabelWidth: '100px', + dialogVisible1: false, + recordNumber: '', + inLoading: false, // 鎺у埗涓婁紶鎸夐挳鍔犺浇鐘舵�� + isLoading: false, // 鎺у埗纭畾鎸夐挳鍔犺浇鐘舵�� + formData: {}, + tableDataA: [], + num: 1, + //娣诲姞闄勪欢鏁版嵁鏀堕泦 + addFile: { + documentType: '', // 缁存姢绫诲瀷 + archiveDate: null, // 褰掓。鏃ユ湡 + name: '', // 妗f鍚嶇О + number: '', // 搴撳彿/璧勪骇缂栧彿 + version: '', // 鐗堟湰 + quantity: 1, // 浠芥暟 + pageCount: 1, // 椤电爜 + provider: '', // 鎻愪緵鑰� + comments: "", // 澶囨敞 + fileName: "", // 鏂囦欢鍘熷悕绉� + systemFileName: "", // 绯荤粺鐢熸垚鍚嶇О + }, + componentData: { + entity: { name: "", orderBy: { field: "id", order: "asc" } }, + page: { current: "1", size: "80" } + }, + upIndex: 0, + dialogVisible: false, + dialogVisible1: false, + inLoading: false, + upLoad: false, + responsiblePersonList: [], + subordinateDepartmentsList: [], + options: [], + equipmentList: [], + deviceStatusList: [], + props: { multiple: true, emitPath: false, value: 'id', label: 'name' }, + // 鏀堕泦璁惧妗f鏁版嵁 + Mdata: { + deviceName: null + }, + isAddFileUpdate: false, + editData: { + authorizedPerson: [], + }, } }, computed: { @@ -423,90 +584,288 @@ return this.javaApi + this.$api.deviceScope.uploadFile } }, - mounted(){ - this.selectDevicePrincipal() - this.obtainItemParameterList() - this.getInsProductIds() - this.selectEnumByCategory() + mounted() { + // 鏀堕泦鏁版嵁 + this.getList(this.clickNodeVal.value) + // 鑾峰彇鐩稿叧鏂囨。鐨勬暟鎹� + this.getPage() + this.timeStamp = Date.now() }, methods: { - handleData(m){ - if(m){ + /** + * 灏嗛〉闈㈡寚瀹氳妭鐐瑰唴瀹硅浆涓哄浘鐗� + * 1.鎷垮埌鎯宠杞崲涓哄浘鐗囩殑鍐呭鑺傜偣DOM锛� + * 2.杞崲锛屾嬁鍒拌浆鎹㈠悗鐨刢anvas + * 3.杞崲涓哄浘鐗� + */ + clickGeneratePicture() { + const _than = this + domtoimage.toPng(_than.$refs.deviceQrCode,{ quality: 1,width:440,}).then(function (dataUrl) { + // 灏嗚浆鎹㈠悗鐨勫浘鍍忔暟鎹瓨鍌ㄤ负 data URL + fileDownload.downloadIamge(dataUrl,_than.Mdata.deviceName) + }); + }, + //鎵撳嵃璁惧浜岀淮鐮� + labelPrint(){ + PrintJS({ + printable: 'deviceCode',//椤甸潰 + type: "html",//鏂囨。绫诲瀷 + maxWidth:360, + css: ['/static/css/device-print.css'], + style: '@page { size: auto; margin: 0mm;}', + targetStyles: ["*"], // 浣跨敤dom鐨勬墍鏈夋牱寮忥紝寰堥噸瑕� + }); + }, + openFileRevisionDialog() { + // 鑾峰彇妗f淇璐熻矗浜轰笅鎷夋鏁版嵁 + this.selectDevicePrincipal() + // 鑾峰彇妗f淇鎵�灞為儴闂ㄤ笅鎷夋鏁版嵁 + this.obtainItemParameterList() + // 鑾峰彇妗f淇璁惧鐘舵�佷笅鎷夋鏁版嵁 + this.selectEnumByCategory() + // 鑾峰彇妗f淇妫�楠岄」鐩骇鑱斿脊妗嗘暟鎹� + this.getInsProductIds() + }, + //闄勪欢鍜岀浉鍏虫枃妗d簨浠� + handleAttachmentClick(row) { + console.log(row) + if (row.fileName && row.documentType == 0) { + const fileUrl = this.javaApi + '/img/' + row.fileName; + fileDownload.downloadIamge(fileUrl, row.systemFileName) + } else if (row.fileName && row.documentType == 1) { + const url = this.javaApi+'/word/'+ row.fileName + const link = document.createElement('a'); + link.href = url; + link.download = row.fileName; + link.click(); + this.$message.success('涓嬭浇鎴愬姛') + } else { + this.$message.warning('鏈笂浼犳枃浠讹紒') + } + }, + handleViewClick(row) { + this.isAddFileUpdate = true + this.addFile = { ...row } + this.dialogVisible1 = true + if (row.fileName) { + const obj = Object.assign({ + name: row.fileName, + url: row.fileName, + status: 'success', + uid: Date.now(), + }) + this.fileList.push(obj) + } + }, + handleDeleteClick(row) { + // 鍒犻櫎閫昏緫 + MessageBox.confirm('纭畾瑕佸垹闄よ璁板綍鍚楋紵', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning', + }).then(() => { + this.$axios.delete(this.$api.getDocuments.list + "/" + row.id).then(res => { + if (res.code == 200) { + this.$message.success('鍒犻櫎鎴愬姛') + this.getPage() + } + }) + }).catch(() => { + this.$message.info('宸插彇娑堝垹闄�') + }) + }, + saveRecord() { + //杞崲鏁版嵁 + this.addFile.deviceId = this.clickNodeVal.value + let obj= this.addFile.systemFileName + this.addFile.systemFileName = obj.name + this.addFile.fileName = obj.url + + // 鏇存柊 + if (this.isAddFileUpdate) { + this.$axios.put(this.$api.getDocuments.updateDocument, this.addFile, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + if (res.code == 200) { + this.$message.success('鏇存柊鎴愬姛') + this.dialogVisible1 = false; + this.getPage() + } + }) + } else { + // 鏂板 + this.$axios.post(this.$api.getDocuments.list, this.addFile).then(res => { + if (res.code == 200) { + this.$message.success('淇濆瓨鎴愬姛') + this.dialogVisible1 = false; + this.getPage() + } + }) + } + }, + onSuccess(response, file, fileList) { + if (response.code == 200) { + this.addFile.systemFileName = response.data + this.addFile.fileName = file.name + } else { + this.$refs.uploadFile.clearFiles() + this.$message.error('涓婁紶澶辫触锛�' + response.message) + } + }, + handleRemove(file, fileList) { + this.deleteFile(this.addFile.systemFileName) + }, + deleteFile(fileName) { + this.$axios.delete(this.$api.personnel.deleteCNASFile + "?fileName=" + fileName).then(res => { + this.$message.success('鍒犻櫎鎴愬姛锛�') + }) + }, + handleExceed(files, fileList) { + this.$message.warning(`褰撳墠闄愬埗閫夋嫨 1 涓枃浠讹紝鏈閫夋嫨浜� ${files.length} 涓枃浠讹紝鍏遍�夋嫨浜� ${files.length + fileList.length} 涓枃浠禶); + }, + beforeRemove(file, fileList) { + return this.$confirm(`纭畾绉婚櫎 ${file.name}锛焋); + }, + // 鑾峰彇鐩稿叧鏂囨。鏁版嵁鐨刟pi + getPage() { + this.$axios.get(this.$api.getDocuments.get + "/" + this.clickNodeVal.value).then(res => { + if (res.code == 200) + this.tableDataA = res.data + }) + }, + // 鏀堕泦鏁版嵁 + getList(id) { + this.$axios + .get( + this.$api.deviceScope.selectDeviceByCode + "?id=" + id) + .then(res => { + // 灏嗗垎绫诲垪琛ㄧ殑淇℃伅瀛樿捣鏉� + if (res.code == 200) { + this.Mdata = res.data; + this.Mdata.insProductIds = this.Mdata.insProductIds.split(',') + this.Mdata.authorizedPerson = JSON.parse(this.Mdata.authorizedPerson) + } + }); + }, + handleData(m) { + if (m) { return m - }else{ + } else { return '-' } }, - handleClose(){ + handleClose() { this.dialogVisible = false }, - handleSuccess(response,){ - this.inLoading = false; - if (response.code == 200) { - this.$message.success('涓婁紶鎴愬姛') - // 鏇存柊椤甸潰 - }else{ - this.$message.error(response.message) - } + //鎵撳紑淇妗f寮规 + openEditForm(){ + this.editData = JSON.parse(JSON.stringify(this.Mdata)) + this.$nextTick(()=>{ + this.dialogVisible = true + }) }, - submitForm(){ - if(!this.formData.deviceName){ - this.$message.error('鏈緭鍏ヤ华鍣ㄥ悕绉�') + //淇妗f + submitForm() { + let flag = true + this.$refs['rules1'].validate((valid) => { + if (!valid) { + flag = false; + return false; + } + }); + this.$refs['rules2'].validate((valid) => { + if (!valid) { + flag = false; + return false; + } + }); + this.$refs['ruleForm'].validate((valid) => { + if (!valid) { + flag = false; + return false; + } + }); + if(!flag) { + return; + } + delete this.editData.nextCalibrationDate + delete this.editData.createTime + delete this.editData.updateTime + delete this.editData.createUser + delete this.editData.updateUser + delete this.editData.orderBy + // this.Mdata.equipmentManager = 1; + + this.editData.userAllow = this.equipmentManager.toString(); + this.editData.insProductIds = Array.isArray(this.editData.insProductIds) + ? this.editData.insProductIds.join(',') + : ''; + this.upLoad = true; + this.editData.authorizedPerson = JSON.stringify(this.editData.authorizedPerson) + this.$axios.post(this.$api.deviceScope.upDeviceParameter, this.editData, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + if (res.code === 201) { + this.upLoad = false return } - if(!this.formData.enDeviceName){ - this.$message.error('鏈緭鍏ヤ华鍣ㄥ悕绉癊N') - return + this.$message.success('淇敼鎴愬姛') + this.upLoad = false + this.getList(this.clickNodeVal.value) + this.dialogVisible = false + }).catch(e => { + this.$message.error('淇敼澶辫触') + this.dialogVisible = false + this.upLoad = false + }) + }, + // 瀵煎嚭 + handleDownOne(row) { + this.outLoading = true + this.$axios.get(this.$api.deviceCheck.exportDeviceFile + '?deviceId=' + this.clickNodeVal.value, { + 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 = '璁惧妗f鍗�.doc'; + 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 = '璁惧妗f鍗�.doc'; + link.click(); + this.$message.success('瀵煎嚭鎴愬姛') + } } - 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; + this.editData.imageUpload = response.data.url; + this.editData.imageName = response.data.name; + console.log(this.javaApi + 'img/' + this.editData.imageUpload); + }) } }, @@ -525,21 +884,18 @@ }, // 鑾峰彇璐熻矗浜哄垪琛� 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 + this.$axios.post(this.$api.user.selectUserList, this.componentData, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + this.responsiblePersonList = res.data.body.records; }) }, obtainItemParameterList() { this.$axios.get(this.$api.laboratoryScope.obtainItemParameterList).then(res => { let data = [] - res.data.forEach(a=>{ + res.data.forEach(a => { data.push({ label: a.laboratoryName, value: a.id @@ -548,22 +904,22 @@ this.subordinateDepartmentsList = data }) }, - getInsProductIds(){ + getInsProductIds() { this.$axios.post(this.$api.capacityScope.getInsProduction).then(res => { - this.options = res.data.map((m,i)=>{ + this.options = res.data.map((m, i) => { m.id = m.name; return m }) - this.options.forEach(item=>{ - if(item.children.length==0){ + this.options.forEach(item => { + if (item.children.length == 0) { item.children = null; - }else{ - item.children.forEach(m=>{ - if(m.children.length==0){ + } 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){ + } else { + m.children.forEach(n => { + if (n.children && n.children.length == 0) { n.children = null; } }) @@ -579,8 +935,8 @@ category: "璁惧鐘舵��" }).then(res => { this.deviceStatusList = res.data - this.deviceStatusList.forEach(a=>{ - if(!isNaN(a.value)){ + this.deviceStatusList.forEach(a => { + if (!isNaN(a.value)) { a.value = parseInt(a.value) } }) @@ -591,59 +947,233 @@ this.equipmentList = res.data }) }, + }, + watch: { + // 鐩戝惉鐐瑰嚮el-tree鐨勬暟鎹紝杩涜鏁版嵁鍒锋柊 + clickNodeVal(newVal) { + if (newVal.value) { + this.getList(newVal.value) + this.getPage() + } + }, + dialogVisible1(newVal) { + if (newVal == false) { + this.isAddFileUpdate = false + this.addFile = {} + this.fileList = [] + } + } } } </script> <style scoped> -.page{ - width: 100%; - height: 100%; +.main_div { + height: calc(100vh - 15em); overflow-y: auto; overflow-x: hidden; } -.page-header{ + +.page { + width: 100%; + height: 100%; +} + +.page-header { display: flex; justify-content: space-between; + margin-top: 10px; } -h4{ + +h4 { display: flex; align-items: center; } -h4 .line{ + +h4 .line { display: inline-block; width: 3px; height: 16px; background: #3A7BFA; margin-right: 4px; } -.tables{ - width: calc(100vw - 390px); + +.tables { + width: 100%; } + .el-image { position: relative; } -.el-icon-picture-outline{ + +.el-icon-picture-outline { position: absolute; left: 50%; top: 50%; - transform: translate(-50%,-50%); + transform: translate(-50%, -50%); } -.form-item{ + +.form-item { line-height: 34px; display: flex; align-items: center; font-size: 14px; } -.form-item label{ - width: 110px; + +.text-ellipsis { + display: inline-block; + width: 200px; /* 鎴栬�呮偍鍙互璁剧疆涓�涓叿浣撶殑瀹藉害鍊� */ + box-sizing: border-box; /* 纭繚padding鍜宐order涓嶅奖鍝嶅厓绱犵殑鎬诲搴� */ + white-space: nowrap; /* 绂佹鏂囨湰鎹㈣ */ + text-overflow: ellipsis; /* 浣跨敤鐪佺暐鍙疯〃绀鸿鎴柇鐨勬枃鏈� */ + overflow: hidden; /* 闅愯棌瓒呭嚭瀹瑰櫒鐨勫唴瀹� */ +} + +.form-items { + line-height: 34px; + /* display: flex; */ + /* align-items: center; */ + margin-left: 15%; + font-size: 14px; +} + + +.form-item label { + min-width: 130px; display: inline-block; text-align: right; margin-right: 20px; color: #999; } + +.form-item p { + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 3; + /* 杩欓噷璁剧疆浣犳兂瑕佺殑琛屾暟 */ + -webkit-box-orient: vertical; +} + .btns { display: flex; align-items: center; } + +.search_thing, +.check_thing { + display: flex; + justify-content: space-between; + align-items: center; + gap: 1rem; +} + +.search_label, +.check_label { + width: 120px; +} + +.search_input, +.check_data, +.check_input { + flex-grow: 1; +} + +.avatar-uploader .el-upload { + border: 1px dashed #190505; + border-radius: 6px; + cursor: pointer; + position: relative; + overflow: hidden; + } + .avatar-uploader .el-upload:hover { + border-color: #409EFF; + } + .avatar-uploader-icon { + font-size: 28px; + color: #8c939d; + width: 178px; + height: 178px; + line-height: 178px; + text-align: center; + } + .avatar { + width: 178px; + height: 178px; + display: block; + } + +.device-main{ + width:90%; + margin:0px 5%; + height:460px; + padding:25px 0px; + background-color: #fff; +} +.device-center{ + width:90%; + height:460px; + margin:0px 5%; + border-radius: 15px; + background-color: #fff; + overflow: hidden; + /* box-shadow: 3px 3px 8px 0 rgba(0, 0, 0, 0.3); */ + filter: drop-shadow(0px 5px 5px rgba(0,0,0,0.3)) +} +.device-title{ + position: relative; + top:20px; + z-index: 2; + font-size: clamp(1rem, 0.582rem + 1.59vw, 1.475rem); + font-weight: bold; + color: #4f6ab2; + width: 100%; + height:90px; + line-height: 100px; + text-align: center; +} +.device-footer{ + width:100%; + height:420px; + background-color: #3361d0; + position: relative +} +.device-footer::after{ + content: ""; + width: 100%; + height: 70px; + position: absolute; + top:-30px; + border-radius: 0 0 50% 50%; + background-color: #fff; +} +.device-footer .qr-code{ + width: 55%; + height: 200px; + position: relative; + top: 60px; + left:22.5%; + background-color: #fff; + border-radius: 15px; + overflow: hidden; +} +.device-number{ + width:80%; + height: 20px; + margin-left:20%; + position: relative; + top: 80px; +} +.device-text{ + color:#fff; + font-weight: bold; + font-size:100%; +} +.device-name{ + width:80%; + margin-left:20%; + height: 20px; + position: relative; + top: 90px; +} </style> -- Gitblit v1.9.3