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