From 2e9370979f871bf47f6dc145c49d7bf32ffa4b51 Mon Sep 17 00:00:00 2001
From: value <z1292839451@163.com>
Date: 星期一, 03 六月 2024 09:08:02 +0800
Subject: [PATCH] 完成光纤配置进行检验

---
 src/components/view/a5-laboratory-management.vue |  280 ++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 250 insertions(+), 30 deletions(-)

diff --git a/src/components/view/a5-laboratory-management.vue b/src/components/view/a5-laboratory-management.vue
index 7e5a5a4..8a3ad69 100644
--- a/src/components/view/a5-laboratory-management.vue
+++ b/src/components/view/a5-laboratory-management.vue
@@ -34,46 +34,113 @@
 		height: calc(100% - 60px - 80px - 10px - 40px);
 		padding: 20px;
 	}
+  .el-upload {
+    border: 1px dashed #d9d9d9;
+    border-radius: 6px;
+    cursor: pointer;
+    position: relative;
+    overflow: hidden;
+  }
+  .el-upload:hover {
+    border-color: #409EFF;
+  }
+  .avatar-uploader-icon {
+    border: 1px dashed #d9d9d9;
+    font-size: 28px;
+    color: #8c939d;
+    width: 120px;
+    height: 120px;
+    line-height: 120px;
+    text-align: center;
+  }
+  .avatar {
+    width: 120px;
+    height: 120px;
+    display: block;
+  }
+  .btns{
+    position: absolute;
+    right: 80px;
+    top: 13px;
+  }
 </style>
 
 <template>
 	<div class="role_manage">
 		<div>
 			<el-row class="title">
-				<el-col :span="12" style="padding-left: 20px;">璁惧宸ュ叿鏄庣粏锛�</el-col>
+				<el-col :span="12" style="padding-left: 20px;">鍦烘墍鎴栬鏂斤細</el-col>
 				<el-col :span="12" style="text-align: right;">
+					<el-button size="medium" type="primary" @click="openAdd" v-if="addPower">鏂板</el-button>
 				</el-col>
 			</el-row>
 		</div>
 		<div class="search">
 			<div class="search_thing">
-				<div class="search_label">鐘舵�侊細</div>
-				<div class="search_input"><el-input size="small" placeholder="鍏ㄩ儴" clearable
+				<div class="search_label">瀹為獙瀹ゅ悕绉帮細</div>
+				<div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable
 						v-model="componentData.entity.laboratoryName" @keyup.enter.native="refreshTable()"></el-input></div>
 			</div>
 			<div class="search_thing">
-				<div class="search_label">璁惧鍚嶇О锛�</div>
+				<div class="search_label">瀹為獙瀹ょ紪鐮侊細</div>
 				<div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable
 						v-model="componentData.entity.laboratoryNumber" @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="componentData.entity.head" @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="componentData.entity.head" @keyup.enter.native="refreshTable()"></el-input></div>
-			</div>
 			<div class="search_thing" style="padding-left: 30px;">
-                <el-button size="small" @click="refresh()">閲� 缃�</el-button>
+				<el-button size="small" @click="refresh()">閲� 缃�</el-button>
 				<el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
 			</div>
 		</div>
 		<div class="table">
-			<ValueTable ref="ValueTable" :url="$api.laboratoryScope.selectItemParameter" :upUrl="$api.laboratoryScope.upParameter" :delUrl="$api.laboratoryScope.delParameter" :componentData="componentData" :key="upIndex"/>
+			<ValueTable ref="ValueTable" :url="$api.laboratoryScope.selectItemParameter"
+				:upUrl="$api.laboratoryScope.upParameter" :delUrl="$api.laboratoryScope.delParameter"
+				:componentData="componentData" :key="upIndex" />
 		</div>
+    <el-dialog title="鍗扮珷绠$悊" :visible.sync="fileVisible" width="60vw">
+      <div class="btns">
+        <el-button size="medium" type="primary" @click="openUpload">鏇存柊鍗扮珷</el-button>
+      </div>
+      <ValueTable ref="ValueTable0" :url="$api.sealScope.selectSeal"
+				:componentData="fileComponentData" :key="upIndex" style="height: 400px;" />
+		</el-dialog>
+    <el-dialog title="鏇存柊鍗扮珷" :visible.sync="upFileVisible" width="400px">
+			<div class="search_thing" style="margin-bottom: 16px;">
+        <div class="search_label" style="width:90px">鍗扮珷绫诲瀷锛�</div>
+        <div class="search_input">
+          <el-cascader
+          v-model="dataForm.type"
+          :options="options"
+          :show-all-levels="false"
+          :props="props"
+          placeholder="璇烽�夋嫨" size="small"
+          style="width:100%"
+          collapse-tags
+          clearable></el-cascader>
+        </div>
+      </div>
+      <div class="search_thing">
+        <div class="search_label" style="width:90px">鍗扮珷鍥剧墖锛�</div>
+        <div class="search_input">
+          <el-upload
+            :action="action"
+            :headers="headers"
+            accept='image/jpg,image/jpeg,image/png'
+            :show-file-list="false"
+            :on-success="handleSuccess"
+            :on-change="beforeUpload"
+            ref="upload"
+            :on-error="onError"
+            >
+            <img v-if="dataForm.address" :src="javaApi+'/img/'+dataForm.address" style="width: 110px;height: 110px;" >
+            <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+          </el-upload>
+        </div>
+      </div>
+			<span slot="footer" class="dialog-footer">
+				<el-button @click="upFileVisible = false">鍙� 娑�</el-button>
+				<el-button type="primary" @click="confirmConnect" :loading="loading">纭� 瀹�</el-button>
+			</span>
+		</el-dialog>
 	</div>
 </template>
 
@@ -82,6 +149,16 @@
 	export default {
 		components: {
 			ValueTable
+		},
+    computed: {
+			headers() {
+				return {
+					'token': sessionStorage.getItem('token')
+				}
+			},
+			action() {
+				return this.javaApi + this.$api.deviceScope.uploadFile
+			}
 		},
 		data() {
 			return {
@@ -103,38 +180,174 @@
 						font: '缂栬緫',
 						type: 'text',
 						method: 'doDiy',
-						field:['createUserName']
-					},{
+						field: ['createUserName']
+					}, {
 						id: 'delete',
 						font: '鍒犻櫎',
 						type: 'text',
 						method: 'doDiy'
+					}, {
+						id: '',
+						font: '鍗扮珷绠$悊',
+						type: 'text',
+						method: 'fileManagement'
 					}],
-					tagField: {},
+					tagField: {
+						type:{
+              select:[]
+            }
+					},
 					selectField: {},
-					requiredAdd:['laboratoryName','laboratoryNumber','head','phoneNumber'],
-					requiredUp:['laboratoryName','laboratoryNumber','head','phoneNumber']
+					requiredAdd: ['laboratoryName', 'laboratoryNumber', 'head', 'phoneNumber'],
+					requiredUp: ['laboratoryName', 'laboratoryNumber', 'head', 'phoneNumber']
+				},
+        fileComponentData: {
+					entity: {
+            labId:null,
+						orderBy: {
+							field: 'id',
+							order: 'asc'
+						}
+					},
+          isPage:false,
+          init:false,
+					isIndex: true,
+					showSelect: false,
+					select: false,
+					do: [],
+					tagField: {},
+					selectField: {
+            type:{
+              select:[]
+            }
+          },
+					requiredAdd: [],
+					requiredUp: [],
+          addUpload:['address'],
 				},
 				entityCopy: {},
 				upIndex: 0,
 				addDia: true,
-				addPower: true
+				addPower: true,
+        fileVisible:false,
+        upFileVisible:false,
+        loading:false,
+        dataForm:{
+          type:'',
+          address:'',
+        },
+        props: { multiple: false,emitPath:false,},
+        options:[
+          {
+            value:'瀹為獙瀹よ祫璐�',
+            label:'瀹為獙瀹よ祫璐�',
+            children:[]
+          },
+          {
+            value:'鎶ュ憡绫诲瀷',
+            label:'鎶ュ憡绫诲瀷',
+            children:null
+          },
+        ],
 			}
 		},
 		mounted() {
 			this.entityCopy = this.HaveJson(this.componentData.entity)
 			this.getPower()
+      this.getCertificationDetail()
 		},
 		methods: {
 			refreshTable() {
 				this.$refs['ValueTable'].selectList()
 			},
+      getCertificationDetail(){
+        this.$axios.post(this.$api.certification.getCertificationDetail, {
+					page: {
+            current: -1,
+            size: -1,
+          },
+					entity: {
+            name: null,
+          }
+				}, {
+					headers: {
+						'Content-Type': 'application/json'
+					}
+				}).then(res => {
+					if (res.code === 201) {
+						return
+					}
+          let arr = res.data.body.records.map(m=>{
+            m.value = m.name;
+            m.label = m.name;
+            return m
+          })
+          this.options[0].children = arr;
+          this.fileComponentData.selectField.type.select = arr;
+        })
+      },
 			refresh() {
 				this.componentData.entity = this.HaveJson(this.entityCopy)
 				this.upIndex++
 			},
-			openAdd(){
-                this.$refs.ValueTable.openAddDia(this.$api.laboratoryScope.addParameter);
+			openAdd() {
+				this.$refs.ValueTable.openAddDia(this.$api.laboratoryScope.addParameter);
+			},
+      openUpload(){
+        this.dataForm.type = '';
+        this.dataForm.address = '';
+        this.upFileVisible = true;
+      },
+      fileManagement(row){
+        this.fileVisible = true;
+        this.fileComponentData.entity.labId = row.id;
+        this.$nextTick(function () {
+          this.$refs['ValueTable0'].selectList()
+        })
+      },
+      confirmConnect(){
+        if(!this.dataForm.type){
+          this.$message.error('鏈笂閫夋嫨鍗扮珷绫诲瀷');
+          return
+        }
+        if(!this.dataForm.address){
+          this.$message.error('鏈笂浼犲嵃绔�');
+          return
+        }
+        this.loading = true;
+        this.$axios.post(this.$api.sealScope.addSeal, {
+          labId:this.fileComponentData.entity.labId,
+					...this.dataForm
+				}, {
+					headers: {
+						'Content-Type': 'application/json'
+					}
+				}).then(res => {
+          this.loading = false;
+					if (res.code === 201) {
+						return
+					}
+          this.$refs['ValueTable0'].selectList()
+          this.upFileVisible = false;
+        })
+      },
+      handleSuccess(response,){
+        if (response.code == 200) {
+          this.dataForm.address = response.data.url
+				}
+      },
+      beforeUpload(file,type) {
+				if (file.size > 1024 * 1024 * 10) {
+					this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M');
+          this.$refs.upload.clearFiles()
+					return false;
+				} else {
+					return true;
+				}
+			},
+			onError(err, file, fileList,type) {
+				this.$message.error('涓婁紶澶辫触')
+				this.$refs.upload.clearFiles()
 			},
 			// 鏉冮檺鍒嗛厤
 			getPower(radio) {
@@ -142,25 +355,32 @@
 				let up = false
 				let del = false
 				let add = false
+                let file = false
 				for (var i = 0; i < power.length; i++) {
-					if(power[i].menuMethod=='upParameter'){
+					if (power[i].menuMethod == 'upParameter') {
 						up = true
 					}
-					if(power[i].menuMethod=='delParameter'){
+					if (power[i].menuMethod == 'delParameter') {
 						del = true
 					}
-					if(power[i].menuMethod=='addParameter'){
+					if (power[i].menuMethod == 'addParameter') {
 						add = true
 					}
+          if (power[i].menuMethod == 'addSeal') {
+						file = true
+					}
 				}
-				if(!del){
+        if (!file) {
+					this.componentData.do.splice(2, 1)
+				}
+				if (!del) {
 					this.componentData.do.splice(1, 1)
 				}
-				if(!up){
+				if (!up) {
 					this.componentData.do.splice(0, 1)
 				}
 				this.addPower = add
 			}
 		}
 	}
-</script>
\ No newline at end of file
+</script>

--
Gitblit v1.9.3