From e09b848b65d7fda7264e9e536e37ad8e45f65e9c Mon Sep 17 00:00:00 2001
From: Fixiaobai <fixiaobai@163.com>
Date: 星期三, 06 九月 2023 17:42:47 +0800
Subject: [PATCH] 	modified:   src/views/inspectionManagement/commissionInspection/index.vue 	modified:   src/views/standardLibrary/index.vue

---
 src/views/inspectionManagement/commissionInspection/index.vue |  399 +++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 344 insertions(+), 55 deletions(-)

diff --git a/src/views/inspectionManagement/commissionInspection/index.vue b/src/views/inspectionManagement/commissionInspection/index.vue
index a10086e..2bf4083 100644
--- a/src/views/inspectionManagement/commissionInspection/index.vue
+++ b/src/views/inspectionManagement/commissionInspection/index.vue
@@ -1,36 +1,45 @@
 <template>
 	<div>
-		<div v-if="!showDetail">
+		<div>
 			<div class="content-main">
 				<div class="top-bar">
 					<el-form ref="form" :inline="true" :model="searchData">
 						<el-form-item label="濮旀墭缂栧彿:" class="sermargin">
-							<el-input v-model="searchData.code" class="input-form" placeholder="璇疯緭鍏�">
+							<el-input size="small" v-model="searchData.code" class="input-form" placeholder="璇疯緭鍏�">
 							</el-input>
 						</el-form-item>
 						<el-form-item label="鏍峰搧鍚嶇О:" class="sermargin">
-							<el-input v-model="searchData.name" class="input-form" placeholder="璇疯緭鍏�">
+							<el-input size="small" v-model="searchData.name" class="input-form" placeholder="璇疯緭鍏�">
 							</el-input>
 						</el-form-item>
 						<el-form-item label="濮旀墭鍗曚綅:" style="margin-right: 20px;">
-							<el-select v-model="searchData.department" placeholder="鍏ㄩ儴">
+							<el-select v-model="searchData.department" placeholder="鍏ㄩ儴" size="small">
 								<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
 								</el-option>
 							</el-select>
 						</el-form-item>
 						<el-form-item>
-							<el-button type="primary" @click="search">鏌ヨ</el-button>
-							<el-button type="primary" plain @click="reset">閲嶇疆</el-button>
+							<el-button type="primary" size="small" @click="search">鏌ヨ</el-button>
+							<el-button type="primary" size="small" plain @click="reset">閲嶇疆</el-button>
 						</el-form-item>
 					</el-form>
 					<el-form>
-						<el-popover placement="left" width="130" trigger="click">
+						<el-popover placement="left" width="400" trigger="click">
 							<div class="vue_qr_div">
-								<span style="color: #0078ff;">鎵弿浜岀淮鐮�<br />鑾峰彇濮旀墭鍗�</span>
-								<vue-qr :text="viewId" :size="100" :margin="0" style="margin-top: 10px;">
-								</vue-qr>
+								<el-row>
+									<el-col>
+										<el-input v-model="view" readonly size="medium" style="width: 250px;margin-right: 10px;"></el-input>
+										<el-button size="small" type="primary" @click="viewDia=true">鐢熸垚</el-button>
+										<el-button size="small" type="primary" @click="copy">澶嶅埗</el-button>
+									</el-col>
+								</el-row>
+								<el-row style="margin-top: 10px;">
+									<el-col v-if="viewId==null">褰撳墠閾炬帴宸茶繃鏈燂紝璇风偣鍑荤敓鎴愭寜閽噸鏂扮敓鎴�</el-col>
+									<el-col
+										v-else-if="viewId!=null">褰撳墠閾炬帴灏嗗湪{{(parseInt(viewTime2)/60/60)>1?(parseInt(viewTime2)/60/60).toFixed(1)+'灏忔椂':Math.round(parseInt(viewTime2)/60)+'鍒嗛挓'}}鍚庤繃鏈�</el-col>
+								</el-row>
 							</div>
-							<el-button slot="reference" class="rightBtn" type="primary" @click="goToaddCommision">鏂板濮旀墭</el-button>
+							<el-button size="small" slot="reference" class="rightBtn" type="primary" @click="goToaddCommision">鏂板濮旀墭</el-button>
 						</el-popover>
 					</el-form>
 				</div>
@@ -44,32 +53,31 @@
 							</el-radio-group>
 						</div>
 						<div class="generateInsp">
-							<el-button type="primary" size="mini" icon="el-icon-document"
+							<el-button @click="addReportBtn" type="primary" size="mini" icon="el-icon-document"
 								style="background-color: rgb(1, 102, 226);">鐢熸垚鎶ユ鍗�</el-button>
 						</div>
 					</div>
 					<div class="table-box">
-						<el-table ref="commisionTable" :max-height="800" :cell-style="{textAlign: 'center'}"
-							:header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}"
-							:data="commisionTable" style="width: 100%">
-							<el-table-column type="selection" min-width="10%" />
+						<el-table ref="commisionTable" :max-height="800" :cell-style="{textAlign: 'left'}"
+							:header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'left'}"
+							:data="commisionTable" @selection-change="handleSelectionChange" style="width: 100%">
+							<el-table-column type="selection" :selectable="checkSelect" min-width="10%" />
 							<el-table-column type="index" label="搴忓彿" min-width="10%" />
 							<el-table-column prop="entrust_coding" label="濮旀墭缂栧彿" min-width="10%" />
 							<el-table-column prop="entrusted" label="濮旀墭鍗曚綅" min-width="12%" />
-							<el-table-column prop="samples_number" label="鏍峰搧缂栧彿" min-width="8%" />
+							<el-table-column prop="samples_number" label="鏍峰搧鏁伴噺" min-width="8%" />
 							<el-table-column prop="sample_name" label="鏍峰搧鍚嶇О" min-width="8%" />
-							<el-table-column prop="specifications_models" label="瑙勬牸鍨嬪彿" min-width="12%" />
-							<el-table-column prop="dateSurvey" label="閫佽揪鏃堕棿" min-width="8%" />
+							<el-table-column prop="speName" label="瑙勬牸鍨嬪彿" min-width="12%" />
+							<el-table-column prop="inspectionTime" label="閫佹牱鏃堕棿" min-width="8%" />
 							<el-table-column prop="completionDeadline" label="瀹屾垚鏈熼檺" min-width="8%" />
 							<el-table-column prop="contacts" label="濮旀墭缂栧埗浜�" min-width="8%" />
-							<el-table-column prop="inspectionTime" label="妫�楠屾棩鏈�" min-width="8%" />
 							<el-table-column prop="inspection_status" label="鐘舵��" min-width="8%">
 								<template slot-scope="scope">
-									<div v-if="scope.row.inspection_status === 1">
-										<span style="color: green;">宸叉娴�</span>
+									<div v-if="scope.row.inspection_status === 2">
+										<span style="color: green;">宸叉姤妫�</span>
 									</div>
 									<div v-else>
-										<span style="color: red;">寰呮娴�</span>
+										<span style="color: red;">鏈姤妫�</span>
 									</div>
 								</template>
 							</el-table-column>
@@ -90,9 +98,57 @@
 				</div>
 			</div>
 		</div>
-		<div v-else>
-			<router-view />
-		</div>
+		<el-dialog title="閾炬帴鏃堕暱璁剧疆" :visible.sync="viewDia" width="30%">
+			<div>
+				<el-row style="line-height: 46px;">
+					<el-col :span="6" style="font-size: 14px;text-align: right;">鏃堕暱璁剧疆锛�</el-col>
+					<el-col :span="14" :offset="1">
+						<el-select v-model="viewTime" size="medium">
+							<el-option label="1 澶�" :value="1"></el-option>
+							<el-option label="2 澶�" :value="2"></el-option>
+							<el-option label="3 澶�" :value="3"></el-option>
+							<el-option label="4 澶�" :value="4"></el-option>
+							<el-option label="5 澶�" :value="5"></el-option>
+							<el-option label="6 澶�" :value="6"></el-option>
+							<el-option label="1 鍛�" :value="7"></el-option>
+						</el-select>
+					</el-col>
+				</el-row>
+			</div>
+			<span slot="footer" class="dialog-footer">
+				<el-button type="primary" @click="getViewId()">鎻� 浜�</el-button>
+				<el-button @click="viewDia = false">鍙� 娑�</el-button>
+			</span>
+		</el-dialog>
+		<!-- 闅愯棌鍩熻緭鍏ユ鐢ㄦ潵澶嶅埗 -->
+		<input id="copyContext" style="position: absolute;top: 0;left: 0;opacity: 0;z-index: -10;" />
+		<el-dialog title="閫夋嫨鏃ユ湡" :visible.sync="addReportDialog" width="60%">
+			<el-form :model="addInspectionForm" :rules="addInspectionFormRules" ref="addInspectionForm">
+				<el-form-item label="妫�楠屾棩鏈�" label-width="100px" prop="inspectionDate">
+					<el-date-picker v-model="addInspectionForm.inspectionDate" type="daterange" value-format="yyyy-MM-dd"
+						range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡">
+					</el-date-picker>
+				</el-form-item>
+				<el-form-item label="褰撳墠鐗堟湰" label-width="100px" prop="version">
+					<el-select @change="changeVersionFun" v-model="addInspectionForm.version" placeholder="璇烽�夋嫨鐗堟湰">
+						<el-option v-for="item in chooseVersion" :key="item.value" :label="item.label" :value="item.value" ></el-option>
+					</el-select>
+				</el-form-item>
+			</el-form>
+			<el-table
+				style="width:90%;margin-left:5%" :data="standardLibraryData" row-key="id" border
+				default-expand-all :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
+				<el-table-column type="index" width="50px" label="搴忓彿"></el-table-column>
+				<el-table-column label="椤圭洰鍚嶇О" prop="name" sortable></el-table-column>
+				<el-table-column prop="unit" label="鍗曚綅" sortable></el-table-column>
+				<el-table-column label="鏍囧噯鍊�" prop="required" sortable></el-table-column>
+				<el-table-column prop="internal" label="鍐呮帶鍊�" sortable></el-table-column>
+			</el-table>
+			<div slot="footer" class="dialog-footer">
+				<el-button @click="resetForm('addInspectionForm')">鍙� 娑�</el-button>
+				<el-button type="primary" @click="confirmBtn('addInspectionForm')">纭� 瀹�</el-button>
+			</div>
+		</el-dialog>
 	</div>
 </template>
 
@@ -100,15 +156,30 @@
 	import {
 		getCommisionList,
 		getViewUUID,
-		selectViewUUID
+		selectViewUUID,
+		delLink,
+		chooseVersion,
+		lookProByVer,
+		addInspect
 	} from '@/api/inspection/commisioninspection'
-	import vueQr from 'vue-qr'
 	export default {
-		components: {
-			vueQr
-		},
 		data() {
 			return {
+				standardLibraryData:[],
+        		chooseVersion: [],
+				addInspectionForm: {
+					inspectionDate: [],
+					version: null
+				},
+				addInspectionFormRules: {
+					inspectionDate: [{
+						required: true,
+						message: '璇烽�夋嫨鏃ユ湡鍖洪棿',
+						trigger: 'change'
+					}],
+				},
+				addReportDialog: false,
+				checkData: [],
 				form: [],
 				searchData: {
 					code: '',
@@ -119,7 +190,7 @@
 					value: '1',
 					label: '閮ㄩ棬1'
 				}],
-				radioValue: 0,
+				radioValue: null,
 				commisionTable: [{
 					specifications_models: "GGXH-AAAAA",
 					inspectionTime: "2023-08-03",
@@ -135,15 +206,15 @@
 				}],
 				conditionsOptions: [{
 						label: '鍏ㄩ儴',
-						value: 0
+						value: null
 					},
 					{
-						label: '宸叉楠�',
-						value: 1
-					},
-					{
-						label: '寰呮楠�',
+						label: '宸叉姤妫�',
 						value: 2
+					},
+					{
+						label: '鏈姤妫�',
+						value: 1
 					}
 				],
 				currentPage: 1,
@@ -151,7 +222,18 @@
 				total: 100,
 				showDetail: false,
 				day: 1,
-				viewId: ''
+				view: null,
+				viewId: null,
+				viewTime: 1,
+				viewTime2: 1,
+				viewDia: false
+			}
+		},
+		watch:{
+			addReportDialog(newVal){
+				if(newVal === false){
+					this.resetForm("addInspectionForm");
+				}
 			}
 		},
 		created() {
@@ -159,11 +241,129 @@
 		},
 		updated() {
 			if (this.$router.currentRoute.name === 'AddCommision') {
-				// console.log(this.$router.currentRoute.name)
 				this.showDetail = true
 			}
 		},
 		methods: {
+			resetForm(formName) {
+				this.addInspectionForm.inspectionDate = [],
+				this.$refs[formName].resetFields();
+				this.addReportDialog = false
+			},
+			checkSelect(row) {
+				if (row.type === 1) {
+					return false;
+				} else {
+					return true;
+				}
+			},
+			handleSelectionChange(val) {
+				if (val.length > 1) {
+					let data = val.pop();
+					this.$refs.commisionTable.clearSelection();
+					this.$refs.commisionTable.toggleRowSelection(data);
+					this.checkData = data;
+				}else{
+					this.checkData = val;
+				}
+			},
+			//鐢熸垚鎶ユ鍗曠‘璁ゆ寜閽�
+			confirmBtn(formName) {
+				this.$refs[formName].validate((valid)=>{
+					if(valid){
+					let dateArr = this.addInspectionForm.inspectionDate;
+					//娣诲姞鎶ユ鍗�
+					let val = this.checkData[0];
+					let obj = {
+						"endTime": dateArr[1],
+						"mcode":"mcode",
+						"formTime": val.inspectionTime,
+						"id": val.id,
+						"name": val.sample_name,
+						"num": val.samples_number,
+						"specifications": val.speName,
+						"startTime": dateArr[0],
+						"supplier": val.entrusted,
+						"type": 2,
+						// "unit": "mm",
+						"version": this.addInspectionForm.version
+					}
+					this.createReport(obj);
+					this.addReportDialog = false;
+					}
+				});
+			},
+			//鐢熸垚鎶ユ鍗曡姹�
+			async createReport(param) {
+				await addInspect(param).then(res =>{
+					this.search();
+					this.$message.success('鎶ユ鎴愬姛')
+					this.$router.push(`/experiment/Viewdetails/${res.data}`)
+				}).catch(()=>{
+					this.$message.error('鎶ユ澶辫触')
+				});
+			},
+			//鐢熸垚鎶ユ鍗曟寜閽�
+			addReportBtn() {
+				if (this.checkData.length < 1) {
+					this.$message.error("璇烽�夋嫨涓�鏉℃暟鎹�!");
+				} else {
+					if (this.checkData.length > 1) {
+						this.$message.error("鏈�澶氶�夋嫨涓�鏉℃暟鎹�!");
+					} else {
+						let mcode = this.checkData[0].entrust_coding;
+						let name = this.checkData[0].sample_name;
+						let specifications = this.checkData[0].speName;
+						let id = this.checkData[0].id;
+						this.getChooseVersionFun(mcode,name,specifications,id);
+						this.addReportDialog = true;
+					}
+				}
+			},
+			changeVersionFun(){
+				let mCode = this.checkData[0].entrust_coding;
+				let name = this.checkData[0].sample_name;
+				let specifications = this.checkData[0].speName;
+				let version = this.addInspectionForm.version;
+				let id = this.checkData[0].id;
+				this.getProByVersion(mCode,name,specifications,version,id);
+			},
+			//鑾峰彇鐗堟湰涓嬬殑鏍囧噯搴撴暟鎹�
+			async getProByVersion(mCode,name,specifications,version,id){
+				var vm = this;
+				await lookProByVer({
+					id : id,
+					mcode : mCode,
+					name : name,
+					specifications : specifications,
+					version: version
+				}).then((res)=>{
+					var data = res.data;
+					for(var i=0;i<data.length;i++){
+						data[i].id = "0" + i;
+					}
+					vm.standardLibraryData = res.data;
+				})
+			},
+			//鑾峰彇鐗堟湰鍒楄〃
+			async getChooseVersionFun(mCode,name,specifications,id){
+				var vm = this;
+				this.chooseVersion = [];
+				await chooseVersion({
+				id : id,
+				name : name,
+				specifications : specifications
+				}).then((res)=>{
+					vm.getProByVersion(mCode,name,specifications,res.data[0],id);
+					for(let i=0;i<res.data.length;i++){
+						vm.chooseVersion.push({
+						value: res.data[i],
+						label: "V"+res.data[i]
+						});
+					}
+					vm.addInspectionForm.version = res.data[0];
+				});
+			},
 			async getCommisionList() {
 				const res = await getCommisionList({
 					pageNo: this.currentPage,
@@ -171,7 +371,6 @@
 				})
 				this.commisionTable = res.data.row
 				this.total = res.data.total
-				// console.log(res)
 				// 鑾峰彇鎵�鏈夌殑濮旀墭鍗曚綅鍚嶇О
 				const allDepartmentNames = [...new Set(this.commisionTable.map(item => item.entrusted))]
 				// 灏哸llDepartmentNames杞崲涓簅ptions闇�瑕佺殑鏍煎紡
@@ -203,11 +402,9 @@
 						inspectionStatus: this.radioValue
 					})
 				}
-				// console.log(res)
 				this.commisionTable = res.data.row
 				this.total = res.data.total
 			},
-
 			// 閲嶇疆鏂规硶
 			reset() {
 				// 閲嶇疆鎼滅储鏉′欢
@@ -220,24 +417,29 @@
 			},
 			async radioclick() {
 				// 澶勭悊鐐瑰嚮radio鐨勬椂闂�
-				console.log('radioValue', this.radioValue)
 				if (this.radioValue === 0) {
-					this.getCommisionList()
-				} else {
 					const res = await getCommisionList({
 						pageNo: this.currentPage,
 						pageSize: this.pageSize,
 						inspectionStatus: this.radioValue
 					})
-					// console.log(res)
 					this.commisionTable = res.data.row
 					this.total = res.data.total
+				} else if(this.radioValue === 1) {
+					const res = await getCommisionList({
+						pageNo: this.currentPage,
+						pageSize: this.pageSize,
+						inspectionStatus: this.radioValue
+					})
+					this.commisionTable = res.data.row
+					this.total = res.data.total
+				}else{
+					this.getCommisionList();
 				}
 
 			},
 			// 姣忛〉鏉℃暟鏀瑰彉鏃惰Е鍙� 閫夋嫨涓�椤垫樉绀哄灏戣
 			async handleSizeChange(val) {
-				// console.log(`姣忛〉 ${val} 鏉)
 				this.currentPage = 1
 				this.pageSize = val
 				if (this.radioValue === 0) {
@@ -254,7 +456,6 @@
 			},
 			// 褰撳墠椤垫敼鍙樻椂瑙﹀彂 璺宠浆鍏朵粬椤�
 			async handleCurrentChange(val) {
-				// console.log(`褰撳墠椤�: ${val}`)
 				this.currentPage = val
 				if (this.radioValue === 0) {
 					this.getCommisionList()
@@ -269,28 +470,115 @@
 				}
 			},
 			goToaddCommision() {
-				// this.$router.push('/inspectionManagement/commissionInspection/addCommision')
 				// this.showDetail = true
 				selectViewUUID({
 					day: this.day
 				}).then(res => {
+					this.view = `${this.vueIp}addCommision/${res.data.id}`
+					this.viewId = res.data.id
+					this.viewTime2 = res.data.time
+				})
+			},
+			getViewId() {
+				getViewUUID({
+					day: this.viewTime == null ? 1 : this.viewTime
+				}).then(res => {
 					this.viewId = res.data
+					this.view = `${this.vueIp}addCommision/${res.data.id}`
+					this.viewDia = false
+					this.$message.success('閾炬帴宸茬敓鎴愶紝鐐瑰嚮澶嶅埗鎸夐挳杩涜澶嶅埗')
+				})
+			},
+			copy() {
+				document.getElementById('copyContext').value = this.view
+				const input = document.querySelector('#copyContext');
+				input.select()
+				if (document.execCommand('copy')) {
+					this.$message.success('宸插鍒跺埌鍓创鏉�')
+				}
+			},
+			handleClick(row){
+				delLink({
+					id: row.id
+				}).then(res=>{
+					this.$message.success('鍒犻櫎鎴愬姛')
+					this.getCommisionList()
 				})
 			}
 		}
 	}
 </script>
 
-<style scoped>
+<style scoped lang="scss">
 	.top-bar {
 		margin: -25px -15px;
 		background: #fff;
 		display: flex;
 		justify-content: space-between;
-		padding: 5px 24px 0px 24px;
+		padding: 24px 24px 0px 24px;
 
 		.sermargin {
 			margin-right: 60px;
+		}
+
+		.rightForm {
+			display: flex;
+			justify-content: space-between;
+			/* background-color: #bfa; */
+			height: 40px;
+			line-height: 40px;
+
+			>div {
+				padding: 0px 10px;
+				padding-bottom: 10px;
+				border: 1px solid rgb(8, 156, 230);
+				margin-right: 10px;
+				/* height: 40px;
+        line-height: 40px; */
+			}
+
+			.rightBtn {
+				background-color: rgb(1, 102, 226);
+			}
+		}
+	}
+
+	.library-table {
+		background-color: #fff;
+		flex: 1;
+		margin: 0px -15px;
+		margin-top: 40px;
+		display: flex;
+		flex-direction: column;
+
+		.table-header {
+			padding: 20px;
+			display: flex;
+			justify-content: space-between;
+
+			.el-form-item {
+				margin-bottom: 30px !important;
+			}
+		}
+
+		.table-box {
+			padding: 0px 20px;
+			margin-top: 0px;
+			flex: 1;
+			background: #fff;
+			/* padding: 20px 20px 10px 20px; */
+			display: flex;
+			flex-direction: column;
+
+			.el-table {
+				flex: 1;
+			}
+
+			>div:nth-child(2) {
+				display: flex;
+				justify-content: end;
+				margin: 10px 0;
+			}
 		}
 	}
 
@@ -336,8 +624,9 @@
 			}
 		}
 	}
-	
-	.vue_qr_div{
+
+	.vue_qr_div {
 		text-align: center;
+		color: #0166e2;
 	}
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.9.3