From 2f5d64825dbc81f9732893ee9f3de1a38725ae25 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 10 三月 2025 17:12:44 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 src/views/CNAS/resourceDemand/device/component/management.vue | 1012 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 1,012 insertions(+), 0 deletions(-)

diff --git a/src/views/CNAS/resourceDemand/device/component/management.vue b/src/views/CNAS/resourceDemand/device/component/management.vue
new file mode 100644
index 0000000..739ac7f
--- /dev/null
+++ b/src/views/CNAS/resourceDemand/device/component/management.vue
@@ -0,0 +1,1012 @@
+<!-- 璁惧宸ュ叿鏄庣粏 -->
+<template>
+	<div class="role_manage">
+		<div class="search" v-show="!showData">
+			<div class="search_thing">
+				<div class="search_label">鐘舵�侊細</div>
+				<el-select v-model="queryParams.deviceStatus" placeholder="鍏ㄩ儴" size="small">
+					<el-option v-for="item in deviceStatusList" :key="item.value" :label="item.label" :value="item.value">
+					</el-option>
+				</el-select>
+			</div>
+			<div class="search_thing">
+				<div class="search_label">璁惧鍚嶇О锛�</div>
+				<div class="search_input">
+					<el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="queryParams.deviceName"
+						@keyup.enter.native="refreshTable()">
+					</el-input>
+				</div>
+			</div>
+			<div class="search_thing">
+				<div class="search_label">瑙勬牸鍨嬪彿锛�</div>
+				<div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable
+						v-model="queryParams.specificationModel" @keyup.enter.native="refreshTable()"></el-input>
+				</div>
+			</div>
+			<div style="padding-left: 30px;">
+				<el-button size="small" @click="refresh()">閲� 缃�</el-button>
+				<el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
+				<el-button size="small" type="primary" @click="dialogVisible2 = true">鏂� 澧�</el-button>
+				<el-button size="small" type="primary" @click="handleDownOne">瀵� 鍑�</el-button>
+			</div>
+		</div>
+		<div class="table" v-show="!showData">
+			<lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading" :height="'calc(100vh - 320px)'"
+				:page="page" @pagination="pagination"></lims-table>
+		</div>
+    <el-dialog :title="isUp ? '璁惧璇︽儏' : '妗f淇'" :visible.sync="dialogVisible" width="70%"
+               top="5vh"
+               :before-close="handleClose">
+      <el-row style="display:flex;justify-content: space-around;">
+        <!-- 宸﹁竟甯冨眬 -->
+        <el-col :span="7">
+          <el-col>
+            <!-- 鍥剧墖 -->
+            <el-image class="img" style="width:100%;height: 320px;marginBottom:16px"
+                      :src="javaApi + '/img/' + formData.imageUpload">
+              <div slot="error" class="image-error" style="width: calc(100% -2px);
+            height: 318px;
+            border-radius: 16px;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            border: 1px solid #EEEEEE;">
+                <i class="el-icon-picture-outline" style="font-size:60px;color:#666666;"></i>
+              </div>
+            </el-image>
+            <!-- 琛ㄥ崟 -->
+            <el-form :label-position="labelPosition" :model="formData" label-width="120px">
+              <el-form-item label="浠櫒鍚嶇О:" required>
+                <el-input :disabled="isUp" v-model="formData.deviceName" size="small"></el-input>
+              </el-form-item>
+              <el-form-item label="浠櫒鍚嶇ОEN:" required>
+                <el-input :disabled="isUp" v-model="formData.enDeviceName" size="small"></el-input>
+              </el-form-item>
+              <el-form-item label="瑙勬牸鍨嬪彿:" required>
+                <el-input :disabled="isUp" v-model="formData.specificationModel"
+                          size="small"></el-input>
+              </el-form-item>
+              <el-form-item label="鐢熶骇鍘傚:">
+                <el-input :disabled="isUp" v-model="formData.manufacturer" size="small"></el-input>
+              </el-form-item>
+            </el-form>
+          </el-col>
+        </el-col>
+        <!-- 涓棿甯冨眬 -->
+        <el-col :span="7">
+          <el-form :label-position="labelPosition" :model="formData" label-width="116px">
+            <el-form-item label="鏍″噯鏈嶅姟鏈烘瀯:">
+              <el-input disabled v-model="formData.calibrationServices" size="small"></el-input>
+            </el-form-item>
+            <el-form-item label="鍑哄巶缂栧彿:">
+              <el-input :disabled="isUp" v-model="formData.factoryNo" size="small"></el-input>
+            </el-form-item>
+            <el-form-item label="绠$悊缂栧彿:" required>
+              <el-input :disabled="isUp" v-model="formData.managementNumber" size="small"></el-input>
+            </el-form-item>
+            <el-form-item label="璐疆鏃ユ湡:">
+              <el-date-picker :disabled="isUp" 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 :disabled="isUp" 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 :disabled="isUp" 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 :disabled="isUp" v-model="formData.storagePoint" size="small"></el-input>
+            </el-form-item>
+            <el-form-item label="鎶�鏈寚鏍�:">
+              <el-input :disabled="isUp" 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 :label-position="labelPosition" :model="formData" label-width="140px" ref="ruleForm">
+            <!-- 瀹為獙瀹ゅ垪琛� -->
+            <el-form-item label="鎵�灞為儴闂�:">
+              <el-select :disabled="isUp" v-model="formData.subordinateDepartmentsId" placeholder="璇烽�夋嫨"
+                         size="small" style="width:100%">
+                <el-option v-for="item in subordinateDepartmentsList" :key="item.value"
+                           :label="item.label" :value="item.value">
+                </el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="妫�娴嬮」鐩�:">
+              <el-cascader :disabled="isUp" v-model="formData.insProductIds" :options="options"
+                           :show-all-levels="false" :props="props" placeholder="璇烽�夋嫨" size="small"
+                           style="width:100%;" :collapse-tags="!isUp" separator="," filterable
+                           clearable></el-cascader>
+            </el-form-item>
+            <el-form-item label="鏈�杩戞牎鍑嗘棩鏈�:" v-if="isUp">
+              <el-date-picker :disabled="isUp" 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="涓嬫鏍″噯鏃ユ湡:" v-if="isUp">
+              <el-date-picker :disabled="isUp" style="width:100%" v-model="formData.latestTraceability"
+                              format="yyyy-MM-dd" value-format="yyyy-MM-dd" type="date" size="small"
+                              placeholder="閫夋嫨鏃ユ湡">
+              </el-date-picker>
+            </el-form-item>
+            <el-form-item label="璁惧绫诲瀷:">
+              <el-select :disabled="isUp" v-model="formData.largeCategory" placeholder="璇烽�夋嫨" size="small"
+                         style="width:100%">
+                <el-option v-for="item in equipmentList" :key="item.value" :label="item.label"
+                           :value="item.value">
+                </el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="鍗曚环(涓囧厓):">
+              <el-input :disabled="isUp" v-model="formData.unitPrice" size="small"></el-input>
+            </el-form-item>
+            <el-form-item label="褰撳墠鐘舵��:" required>
+              <el-select :disabled="isUp" 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 :disabled="isUp" v-model="formData.calibrationDate" size="small"></el-input>
+            </el-form-item>
+            <el-form-item label="鍥剧墖:">
+              <div
+                style="border: 1px solid #DCDFE6;border-radius:4px;height:32px;lineHeight:32px;display:flex;justify-content: space-around;font-size: 13px;">
+                <div v-show="formData.imageName" class="picName">{{ formData.imageName }}</div>
+                <el-upload :disabled="isUp" :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 v-if="!isUp">
+					<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" :visible.sync="dialogVisible2" width="70%" :before-close="handleClose2">
+      <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/' + formData2.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 :label-position="labelPosition" :model="formData2" label-width="120px">
+              <el-form-item label="浠櫒鍚嶇О:" required>
+                <el-input v-model="formData2.deviceName" size="small"></el-input>
+              </el-form-item>
+              <el-form-item label="浠櫒鍚嶇ОEN:" required>
+                <el-input v-model="formData2.enDeviceName" size="small"></el-input>
+              </el-form-item>
+              <el-form-item label="瑙勬牸鍨嬪彿:" required>
+                <el-input v-model="formData2.specificationModel" size="small"></el-input>
+              </el-form-item>
+              <el-form-item label="鐢熶骇鍘傚:">
+                <el-input v-model="formData2.manufacturer" size="small"></el-input>
+              </el-form-item>
+            </el-form>
+          </el-col>
+        </el-col>
+        <!-- 涓棿甯冨眬 -->
+        <el-col :span="7">
+          <el-form :label-position="labelPosition" :model="formData2" label-width="110px">
+            <!-- <el-form-item label="鐢熶骇鍘傚EN:">
+              <el-input v-model="formData2.factoryNo" size="small"></el-input>
+            </el-form-item> -->
+            <el-form-item label="鏍″噯鏈嶅姟鏈烘瀯:">
+              <el-input v-model="formData2.calibrationServices" size="small"></el-input>
+            </el-form-item>
+            <el-form-item label="鍑哄巶缂栧彿:">
+              <el-input v-model="formData2.factoryNo" size="small"></el-input>
+            </el-form-item>
+            <el-form-item label="绠$悊缂栧彿:" required>
+              <el-input v-model="formData2.managementNumber" size="small"></el-input>
+            </el-form-item>
+            <el-form-item label="璐疆鏃ユ湡:">
+              <el-date-picker style="width:100%" v-model="formData2.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="formData2.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="formData2.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="formData2.storagePoint" size="small"></el-input>
+            </el-form-item>
+            <el-form-item label="鎶�鏈寚鏍�:">
+              <el-input v-model="formData2.technicalIndicators" :rows="7" type="textarea"
+                        size="small"></el-input>
+            </el-form-item>
+          </el-form>
+        </el-col>
+        <!-- 鍙宠竟甯冨眬 -->
+        <el-col :span="7">
+          <el-form :label-position="labelPosition" :model="formData2" label-width="120px" ref="ruleForm">
+            <!-- 瀹為獙瀹ゅ垪琛� -->
+            <el-form-item label="鎵�灞為儴闂�:">
+              <el-select v-model="formData2.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="formData2.insProductIds" :options="options" :show-all-levels="false"
+                           :props="props" placeholder="璇烽�夋嫨" size="small" style="width:100%" collapse-tags
+                           separator="," filterable clearable></el-cascader>
+            </el-form-item>
+            <el-form-item label="璁惧绫诲瀷:">
+              <el-select v-model="formData2.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="formData2.unitPrice" size="small"></el-input>
+            </el-form-item>
+            <el-form-item label="褰撳墠鐘舵��:" required>
+              <el-select v-model="formData2.deviceStatus" placeholder="璇烽�夋嫨" size="small"
+                         style="width:100%">
+                <el-option v-for="item in deviceStatusList" :key="item.id" :label="item.label"
+                           :value="item.value">
+                </el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="鏍″噯鍛ㄦ湡锛堟湀锛�:" required>
+              <el-input v-model="formData2.calibrationDate" size="small"></el-input>
+            </el-form-item>
+            <el-form-item label="鍥剧墖:">
+              <div
+                style="border: 1px solid #DCDFE6;border-radius:4px;height:32px;line-height:32px;display:flex;justify-content: space-around;font-size: 13px;">
+                <div v-show="formData2.imageName" class="picName">{{ formData2.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="handleClose2">鍙� 娑�</el-button>
+					<el-button type="primary" @click="submitForm2" :loading="upLoad2">纭� 瀹�</el-button>
+				</el-row>
+			</span>
+    </el-dialog>
+    <el-dialog title="鏁伴噰閰嶇疆" :visible.sync="dialogVisible3" width="400px">
+      <div class="search_thing" style="margin-bottom: 14px;">
+        <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>IP锛�</div>
+        <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="configForm.ip"></el-input>
+      </div>
+      <div class="search_thing" style="margin-bottom: 14px;">
+        <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>閲囬泦鍦板潃锛�</div>
+        <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="configForm.collectUrl"></el-input>
+      </div>
+      <div class="search_thing" style="margin-bottom: 14px;">
+        <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>鍌ㄥ瓨鍦板潃锛�</div>
+        <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="configForm.storageUrl"></el-input>
+      </div>
+      <div class="search_thing" style="margin-bottom: 14px;">
+        <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>鍙傜収锛�</div>
+        <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="configForm.refer"></el-input>
+      </div>
+      <div class="search_thing" style="margin-bottom: 14px;">
+        <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>X锛�</div>
+        <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="configForm.x"></el-input>
+      </div>
+      <div class="search_thing" style="margin-bottom: 14px;">
+        <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>Y锛�</div>
+        <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="configForm.y"></el-input>
+      </div>
+      <div class="search_thing">
+        <div class="search_label">鍏紡锛�</div>
+        <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="configForm.formula"></el-input>
+      </div>
+      <span slot="footer" class="dialog-footer">
+				<el-row>
+					<el-button @click="dialogVisible3 = false">鍙� 娑�</el-button>
+					<el-button type="primary" @click="submitForm3" :loading="upLoad3">纭� 瀹�</el-button>
+				</el-row>
+			</span>
+    </el-dialog>
+		<dataAcquisitionConfig v-if="showData" :deviceId="deviceId" />
+	</div>
+</template>
+
+<script>
+import limsTable from "@/components/Table/lims-table.vue";
+import dataAcquisitionConfig from './acquisitionConfig.vue'
+import {
+	obtainItemParameterList,
+	exportEquipmentDetails,
+	getInsProduction,
+	upDeviceParameter,
+	addDeviceParameter,
+	numberCollect,
+	getDeviceParameter,
+	delDeviceParameter,
+} from '@/api/cnas/resourceDemand/device.js'
+import { selectUserCondition } from "@/api/system/user";
+export default {
+	props: {
+		clickNodeVal: {
+			type: Object,
+			default: () => {
+				return {};
+			}
+		}
+	},
+	components: {
+		limsTable,
+		dataAcquisitionConfig,
+	},
+	data() {
+		return {
+			dateFormat: 'yyyy-MM-dd',
+			deviceId: '',
+			fileTypeOptions: [
+				{ label: 'csv', value: '.csv' },
+				{ label: 'db', value: '.db' },
+				{ label: 'mdb', value: '.mdb' },
+				{ label: 'word', value: '.docx' },
+				{ label: 'excel', value: '.xlsx' },
+				{ label: 'txt', value: '.txt' },
+				{ label: 'png', value: '.png' },
+			],
+			//鏄惁鏄。妗堜慨璁�  true涓嶆槸 false鏄�
+			isUp: true,
+			formData: {
+				authorizedPerson: []
+			},
+			formData2: {
+				imageUpload: '',
+				imageName: '',
+				deviceStatus: '',
+				authorizedPerson: []
+			},
+			value: '',
+			props: { multiple: true, emitPath: false, value: 'id', label: 'name' },
+			options: [],
+			labelPosition: 'right',
+			dialogVisible: false,
+			dialogVisible2: false,
+			addPower: false,
+			showData: false, // 鏁伴噰閰嶇疆椤甸潰
+			tableList: [],
+			addDia: true,
+			addPower: true,
+			//璁惧绫诲瀷鍒楄〃
+			equipmentList: [],
+			// 璐熻矗浜哄垪琛�
+			responsiblePersonList: [],
+			// 鎺堟潈浜哄垪琛�
+			authorizerList: [],
+			// 褰撳墠鐘舵�佸垪琛�
+			deviceStatusList: [],
+			// 鎵�灞為儴闂�
+			subordinateDepartmentsList: [],
+			upLoad: false,
+			upLoad2: false,
+			dialogVisible3: false,
+			upLoad3: false,
+			configForm: {},
+			laboratoryNameIsNull: false,
+			queryParams: {},
+			tableData: [],
+			column: [
+				{ label: "璁惧鍚嶇О", prop: "deviceName", dataType: 'link', linkMethod: 'selectAllByOne' },
+				{ label: "璁惧鍚嶇ОEN", prop: "enDeviceName" },
+				{
+					label: "瑙勬牸鍨嬪彿",
+					prop: "specificationModel",
+				},
+				{ label: "鐢熶骇鍘傚", prop: "manufacturer" },
+				{ label: "鍑哄巶缂栧彿", prop: "factoryNo" },
+				{ label: "绠$悊缂栧彿", prop: "managementNumber" },
+				{ label: "鎶�鏈寚鏍�", prop: "technicalIndicators" },
+				{ label: "璐疆鏃ユ湡", prop: "acquisitionDate" },
+				{ label: "鍚敤鏃ユ湡", prop: "activationDate" },
+				{ label: "绠$悊浜�", prop: "equipmentManagerUser" },
+				{ label: "瀛樻斁鐐�", prop: "storagePoint" },
+				{ label: "鎵�灞為儴闂�", prop: "laboratoryName" },
+				{ label: "妫�楠岄」鐩�", prop: "insProductItem" },
+				{ label: "鏍″噯鏈嶅姟鏈烘瀯", prop: "calibrationServices" },
+				{ label: "鏈�杩戞牎鍑嗘棩鏈�", prop: "lastCalibrationDateTwo" },
+				{ label: "鏈�杩戞牳鏌ユ棩鏈�", prop: "lastCalibrationDate" },
+				{ label: "涓嬫鏍″噯鏃ユ湡", prop: "nextCalibrationDateTwo" },
+				{ label: "涓嬫鏍告煡鏃ユ湡", prop: "nextCalibrationDate" },
+				{
+					label: "璁惧鍒嗙被", prop: "largeCategory", dataType: "tag",
+					formatData: (params) => {
+						return this.equipmentList.find(m => m.value == params).label
+					},
+					formatType: (params) => {
+						return this.equipmentList.find(m => m.value == params).type
+					}
+				},
+				{ label: "鍗曚环", prop: "unitPrice" },
+				{
+					label: "璁惧鐘舵��", prop: "deviceStatus", dataType: "tag",
+					formatData: (params) => {
+						return this.deviceStatusList.find(m => m.value == params).label
+					},
+					formatType: (params) => {
+						return this.deviceStatusList.find(m => m.value == params).type
+					}
+				},
+				{ label: "鏍″噯鍛ㄦ湡(鏈�)", prop: "calibrationDate" },
+				{
+					dataType: "action",
+					fixed: "right",
+					label: "鎿嶄綔",
+					operation: [
+						{
+							name: "妗f淇",
+							type: "text",
+							clickFun: (row) => {
+								this.isUpdate(row);
+							},
+						},
+						{
+							name: "鏁伴噰閰嶇疆",
+							type: "text",
+							clickFun: (row) => {
+								this.handleConfig(row);
+							},
+							disabled: (row) => {
+								return row.insProductItem == null || row.insProductItem === ''
+							}
+						},
+						{
+							name: "鍒犻櫎",
+							type: "text",
+							clickFun: (row) => {
+								this.handleDelete(row);
+							},
+						},
+					],
+				},
+			],
+			page: {
+				total: 0,
+				size: 10,
+				current: 0,
+			},
+			tableLoading: false,
+		}
+	},
+	computed: {
+		action() {
+			return this.javaApi + '/deviceScope/uploadFile'
+		}
+	},
+	mounted() {
+		this.selectEnumByCategory()
+		this.selectDevicePrincipal()
+		this.obtainItemParameterList()
+		this.getInsProductIds()
+		// 鍒濆鍖�
+		this.clickSidebar(this.clickNodeVal)
+	},
+	methods: {
+		//鍒嗙被
+		handleNotification(cate) {
+			this.queryParams.largeCategory = cate
+		},
+		obtainItemParameterList() {
+			obtainItemParameterList().then(res => {
+				let data = []
+				res.data.forEach(a => {
+					data.push({
+						label: a.laboratoryName,
+						value: a.id
+					})
+				})
+				this.subordinateDepartmentsList = data
+			})
+		},
+		getList() {
+			this.tableLoading = true;
+			let param = { laboratoryNameIsNull: this.laboratoryNameIsNull, ...this.queryParams, ...this.page };
+			delete param.total;
+			getDeviceParameter({ ...param })
+				.then((res) => {
+					this.tableLoading = false;
+					if (res.code === 200) {
+						this.tableData = res.data.records;
+						this.page.total = res.data.total;
+					}
+				})
+				.catch((err) => {
+					this.tableLoading = false;
+				});
+		},
+		pagination({ page, limit }) {
+			this.page.current = page;
+			this.page.size = limit;
+			this.getList();
+		},
+		refresh() {
+			this.queryParams = {};
+			this.page.current = 1;
+			this.getList();
+		},
+		refreshTable() {
+			this.page.current = 1;
+			this.getList();
+		},
+		// 瀵煎嚭
+		handleDownOne() {
+			this.outLoading = true
+			exportEquipmentDetails().then(res => {
+				this.outLoading = false
+				const blob = new Blob([res], { type: 'application/octet-stream' });
+				this.$download.saveAs(blob, '璁惧浠櫒涓�瑙堣〃.doc')
+			})
+		},
+		// 鑾峰彇瀛楀吀
+		selectEnumByCategory() {
+			// 璁惧鐘舵��
+			this.getDicts("device_status").then((response) => {
+				this.deviceStatusList = this.dictToValue(response.data);
+			});
+			// 璁惧鍒嗙被
+			this.getDicts("device_type").then((response) => {
+				this.equipmentList = this.dictToValue(response.data);
+			});
+		},
+		// 鑾峰彇璐熻矗浜哄垪琛�
+		selectDevicePrincipal() {
+			selectUserCondition().then(res => {
+				let data = [];
+				res.data.forEach((a) => {
+					data.push({
+						label: a.name,
+						value: a.id,
+					});
+				});
+				this.responsiblePersonList = data
+				this.authorizerList = data
+			})
+		},
+		getInsProductIds() {
+			getInsProduction().then(res => {
+				this.options = res.data.map((m, i) => {
+					m.id = m.name;
+					let children = m.children.map(n => {
+						n.label = n.name;
+						n.value = n.id;
+						return n
+					})
+					return m
+				})
+				this.options.forEach(item => {
+					if (item.children.length == 0) {
+						item.children = null;
+					} else {
+						item.children.forEach(m => {
+							if (m.children.length == 0) {
+								m.children = null;
+							} else {
+								m.children.forEach(n => {
+									if (n.children && n.children.length == 0) {
+										n.children = null;
+									}
+								})
+							}
+						})
+					}
+				})
+			})
+		},
+		handleClose() {
+			this.formData = {
+				authorizedPerson: []
+			}
+			this.formData2 = {
+				imageUpload: '',
+				imageName: '',
+				authorizedPerson: []
+			}
+			this.dialogVisible = false;
+			this.upLoad = false;
+		},
+		handleClose2() {
+			this.formData = {
+				authorizedPerson: []
+			}
+			this.formData2 = {
+				imageUpload: '',
+				imageName: '',
+				authorizedPerson: []
+			}
+			this.dialogVisible2 = false;
+			this.upLoad = false;
+		},
+		selectAllByOne(row) {
+			this.isUp = true
+			//鎵撳紑寮规
+			this.dialogVisible = true;
+			//row = 鐐瑰嚮瀵瑰簲琛屽��
+			//澶嶅埗缁檉ormData
+			this.formData = this.HaveJson(row);
+			console.log(row.insProductIds + 'valll');
+			this.formData.insProductIds = row.insProductIds ? row.insProductIds.split(',') : [];
+		},
+		isUpdate(row) {
+			//淇敼  isUp 涓烘。妗堜慨鏀�
+			this.isUp = false
+			//鎵撳紑寮规
+			this.dialogVisible = true;
+			//row = 鐐瑰嚮瀵瑰簲琛屽�间竴琛屽��
+			//澶嶅埗缁檉ormData
+			this.formData = this.HaveJson(row);
+			if (typeof (row.insProductIds) === 'number') {
+				row.insProductIds = row.insProductIds + ''
+			}
+			this.formData.deviceStatus = this.formData.deviceStatus + ''
+			this.formData.insProductIds = row.insProductIds ? row.insProductIds.split(',') : [];
+			// 灏嗘椂闂存牸寮忎负yyyy-MM-dd 杩涜杞崲
+			const dateRegex = /^\d{4}-\d{2}-\d{2}$/
+			Object.keys(this.formData).forEach(key => {
+				if (dateRegex.test(this.formData[key])) {
+					this.formData[key] = `${this.formData[key]} 00:00:00`
+				}
+			})
+		},
+		beforeUpload(file) {
+			if (file.size > 1024 * 1024 * 10) {
+				this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M');
+				this.$refs.upload.clearFiles()
+				return false;
+			} else {
+				return true;
+			}
+		},
+		onError(err, file, fileList) {
+			this.$message.error('涓婁紶澶辫触')
+			this.$refs.upload.clearFiles()
+		},
+		// 涓婁紶鍥剧墖鎴愬姛
+		handleSuccessUpImg(response,) {
+			if (response.code == 200) {
+				this.formData.imageUpload = response.data.url;
+				this.formData.imageName = response.data.name;
+			}
+		},
+		handleSuccessUpImg2(response) {
+			if (response.code == 200) {
+				this.$nextTick(() => {
+					this.formData.imageUpload = response.data.url;
+					this.formData.imageName = response.data.name;
+					this.formData2.imageUpload = response.data.url;
+					this.formData2.imageName = response.data.name;
+				})
+			}
+		},
+		submitForm() {
+			if (!this.formData.deviceName) {
+				this.$message.error('鏈緭鍏ヤ华鍣ㄥ悕绉�')
+				return
+			}
+			if (!this.formData.enDeviceName) {
+				this.$message.error('鏈緭鍏ヤ华鍣ㄥ悕绉癊N')
+				return
+			}
+			if (!this.formData.specificationModel) {
+				this.$message.error('鏈緭鍏ヨ鏍煎瀷鍙�')
+				return
+			}
+			if (!this.formData.managementNumber) {
+				this.$message.error('鏈緭鍏ョ鐞嗙紪鍙�')
+				return
+			}
+			if (!this.formData.activationDate) {
+				this.$message.error('鏈緭鍏ユ牎鍑嗘湁鏁堟湡')
+				return
+			}
+			if (!this.formData.subordinateDepartmentsId) {
+				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
+			const formData = this.HaveJson(this.formData)
+			formData.insProductIds = formData.insProductIds ? formData.insProductIds.join() : ''
+			if (formData.authorizedPerson.length === 0) {
+				formData.authorizedPerson = ''
+			} else {
+				formData.authorizedPerson = JSON.stringify(formData.authorizedPerson)
+			}
+			this.upLoad = true;
+			upDeviceParameter(formData).then(res => {
+				this.$message.success('淇敼鎴愬姛')
+				this.upLoad = false
+				this.refreshTable('page')
+				this.dialogVisible = false
+			}).catch(e => {
+				this.$message.error('淇敼澶辫触')
+				this.dialogVisible = false
+				this.upLoad = false
+			})
+		},
+		// 鎻愪氦妗f淇--鏂板
+		submitForm2() {
+			if (!this.formData2.deviceName) {
+				this.$message.error('鏈緭鍏ヤ华鍣ㄥ悕绉�')
+				return
+			}
+			if (!this.formData2.enDeviceName) {
+				this.$message.error('鏈緭鍏ヤ华鍣ㄥ悕绉癊N')
+				return
+			}
+			if (!this.formData2.specificationModel) {
+				this.$message.error('鏈緭鍏ヨ鏍煎瀷鍙�')
+				return
+			}
+			if (!this.formData2.managementNumber) {
+				this.$message.error('鏈緭鍏ョ鐞嗙紪鍙�')
+				return
+			}
+			if (!this.formData2.activationDate) {
+				this.$message.error('鏈緭鍏ユ牎鍑嗘湁鏁堟湡')
+				return
+			}
+			if (!this.formData2.deviceStatus) {
+				this.$message.error('鏈�夋嫨褰撳墠鐘舵��')
+				return
+			}
+			if (!this.formData2.calibrationDate) {
+				this.$message.error('杈撳叆鏍″噯鍛ㄦ湡锛堟湀锛�')
+				return
+			}
+			const formData = this.HaveJson(this.formData2)
+			formData.insProductIds = formData.insProductIds ? formData.insProductIds.join() : ''
+			if (formData.authorizedPerson.length === 0) {
+				formData.authorizedPerson = ''
+			} else {
+				formData.authorizedPerson = JSON.stringify(formData.authorizedPerson)
+			}
+			this.upLoad2 = true;
+			addDeviceParameter(formData).then(res => {
+				this.$message.success('鎻愪氦鎴愬姛')
+				this.upLoad2 = false
+				this.refreshTable('page')
+				this.dialogVisible2 = false
+				this.formData2 = {
+					imageUpload: '',
+					imageName: '',
+					authorizedPerson: []
+				}
+			}).catch(e => {
+				this.$message.error('鎻愪氦澶辫触')
+				this.dialogVisible2 = false
+				this.upLoad2 = false
+			})
+		},
+		handleConfig(row) {
+			let list = []
+			if (row.insProductItem) {
+				list = row.insProductItem.split(';')
+			}
+			let list2 = []
+			list.map((item) => {
+				const obj = Object.assign({
+					deviceId: row.id,
+					insProductItem: item,
+				})
+				list2.push(obj)
+			})
+			this.tableList = list2
+			this.deviceId = row.id
+			this.$nextTick(() => {
+				this.showData = true
+			})
+		},
+		closeDataVue() {
+			this.clickSidebar(this.clickNodeVal)
+			this.showData = false
+		},
+		submitForm3() {
+			if (!this.configForm.ip) {
+				this.$message.error('璇峰~鍐橧P');
+				return
+			}
+			if (!this.configForm.collectUrl) {
+				this.$message.error('璇峰~鍐欓噰闆嗗湴鍧�');
+				return
+			}
+			if (!this.configForm.storageUrl) {
+				this.$message.error('璇峰~鍐欏偍瀛樺湴鍧�');
+				return
+			}
+			if (!this.configForm.refer) {
+				this.$message.error('璇峰~鍐欏弬鐓�');
+				return
+			}
+			if (!this.configForm.x) {
+				this.$message.error('璇峰~鍐橷');
+				return
+			}
+			if (!this.configForm.y) {
+				this.$message.error('璇峰~鍐橸');
+				return
+			}
+
+			this.upLoad3 = true
+			numberCollect(this.configForm).then(res => {
+				this.upLoad3 = false
+				this.$message.success('鎿嶄綔鎴愬姛')
+				this.refreshTable('page')
+				this.dialogVisible3 = false
+			}).catch(e => {
+				this.$message.error('鎿嶄綔澶辫触')
+				this.dialogVisible3 = false
+				this.upLoad3 = false
+			})
+		},
+		// 鐐瑰嚮渚ц竟鏍忓埛鏂�
+		clickSidebar(clickNodeVal) {
+			this.laboratoryNameIsNull = false
+			// 鏄惁瀛樺湪value锛屽瓨鍦╲alue浠h〃涓轰笁绾�
+			if (!clickNodeVal.value) {
+				this.list = [];
+				this.queryParams.laboratoryName = null
+				this.queryParams.storagePoint = null
+				// 绛変簬1浠h〃涓烘爲鐨勪竴绾э紝label涓洪儴闂�
+				if (clickNodeVal.label == '鍏朵粬') {
+					this.laboratoryNameIsNull = true
+					this.refreshTable('page')
+					return
+				}
+				if (clickNodeVal.level == 1) {
+					this.queryParams.laboratoryName = clickNodeVal.label
+					// 绛変簬浜岀骇銆俵abel涓哄瓨鍌ㄥ湴鐐�
+				} else if (clickNodeVal.level == 2) {
+					// 鍏朵粬琛ㄧず娌℃湁閰嶇疆瀹為獙瀹わ紝鍙厤缃簡鍦扮偣
+					if (clickNodeVal.parent.label == '鍏朵粬') {
+						this.laboratoryNameIsNull = true
+					} else {
+						this.queryParams.laboratoryName = clickNodeVal.parent.label
+					}
+					this.queryParams.storagePoint = clickNodeVal.label
+				}
+				this.refreshTable('page')
+			}
+		},
+		handleDelete(row) {
+			this.$confirm("鏄惁鍒犻櫎璇ユ潯鏁版嵁?", "鎻愮ず", {
+				confirmButtonText: "纭畾",
+				cancelButtonText: "鍙栨秷",
+				type: "warning",
+			})
+				.then(() => {
+					delDeviceParameter({ id: row.id }).then((res) => {
+						this.$message.success("鍒犻櫎鎴愬姛");
+						this.refresh();
+					});
+				})
+				.catch(() => { });
+		},
+	},
+	watch: {
+		// 鐩戝惉鐐瑰嚮el-tree鐨勬暟鎹紝杩涜鏁版嵁鍒锋柊
+		clickNodeVal(newVal) {
+			this.clickSidebar(newVal)
+		}
+	}
+}
+</script>
+
+<style scoped>
+.role_manage {
+	width: 100%;
+	height: 100%;
+}
+
+.title {
+	line-height: 15px;
+}
+
+.search {
+	display: flex;
+	align-items: center;
+	justify-content: space-between;
+	margin-top: 10px;
+}
+
+.search_thing {
+	width: 14em;
+	display: flex;
+	align-items: center;
+}
+
+.search_label {
+	width: 80px;
+	font-size: 14px;
+	text-align: right;
+}
+
+.search_input {
+	width: calc(100% - 80px);
+}
+
+.table {
+	margin-top: 12px;
+	background-color: #fff;
+	height: calc(100vh - 17em);
+}
+
+.el-form-item {
+	margin-bottom: 16px;
+}
+
+.picName {
+	overflow: hidden;
+	text-overflow: ellipsis;
+	white-space: nowrap;
+	word-break: break-all;
+	width: 120px;
+}
+</style>

--
Gitblit v1.9.3