From db582914c36d92de14098fff2274811a2696114d Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期四, 07 九月 2023 10:54:48 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.218.113:9001/r/lims-before

---
 src/views/inspectionManagement/commissionInspection/index.vue |  267 ++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 222 insertions(+), 45 deletions(-)

diff --git a/src/views/inspectionManagement/commissionInspection/index.vue b/src/views/inspectionManagement/commissionInspection/index.vue
index 2cf97f8..707c3b1 100644
--- a/src/views/inspectionManagement/commissionInspection/index.vue
+++ b/src/views/inspectionManagement/commissionInspection/index.vue
@@ -1,45 +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="350" trigger="click">
+						<el-popover placement="left" width="410" trigger="click">
 							<div class="vue_qr_div">
 								<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" v-if="viewId==null" @click="viewDia=true">鐢熸垚</el-button>
-										<el-button size="small" type="primary" v-else-if="viewId!=null" @click="copy">澶嶅埗</el-button>
+										<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(viewTime)/60/60)>1?(parseInt(viewTime)/60/60).toFixed(1)+'灏忔椂':Math.round(parseInt(viewTime)/60)+'鍒嗛挓'}}鍚庤繃鏈�</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>
@@ -53,28 +53,27 @@
 							</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="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 === 0">
+									<div v-if="scope.row.inspection_status === 2">
 										<span style="color: green;">宸叉姤妫�</span>
 									</div>
 									<div v-else>
@@ -98,9 +97,6 @@
 					</div>
 				</div>
 			</div>
-		</div>
-		<div v-else>
-			<router-view />
 		</div>
 		<el-dialog title="閾炬帴鏃堕暱璁剧疆" :visible.sync="viewDia" width="30%">
 			<div>
@@ -126,6 +122,33 @@
 		</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>
 
@@ -133,11 +156,30 @@
 	import {
 		getCommisionList,
 		getViewUUID,
-		selectViewUUID
+		selectViewUUID,
+		delLink,
+		chooseVersion,
+		lookProByVer,
+		addInspect
 	} from '@/api/inspection/commisioninspection'
 	export default {
 		data() {
 			return {
+				standardLibraryData:[],
+        		chooseVersion: [],
+				addInspectionForm: {
+					inspectionDate: [],
+					version: null
+				},
+				addInspectionFormRules: {
+					inspectionDate: [{
+						required: true,
+						message: '璇烽�夋嫨鏃ユ湡鍖洪棿',
+						trigger: 'change'
+					}],
+				},
+				addReportDialog: false,
+				checkData: [],
 				form: [],
 				searchData: {
 					code: '',
@@ -148,7 +190,7 @@
 					value: '1',
 					label: '閮ㄩ棬1'
 				}],
-				radioValue: 0,
+				radioValue: null,
 				commisionTable: [{
 					specifications_models: "GGXH-AAAAA",
 					inspectionTime: "2023-08-03",
@@ -164,15 +206,15 @@
 				}],
 				conditionsOptions: [{
 						label: '鍏ㄩ儴',
-						value: 0
+						value: null
 					},
 					{
-						label: '宸叉楠�',
-						value: 1
-					},
-					{
-						label: '寰呮楠�',
+						label: '宸叉姤妫�',
 						value: 2
+					},
+					{
+						label: '鏈姤妫�',
+						value: 1
 					}
 				],
 				currentPage: 1,
@@ -183,7 +225,15 @@
 				view: null,
 				viewId: null,
 				viewTime: 1,
+				viewTime2: 1,
 				viewDia: false
+			}
+		},
+		watch:{
+			addReportDialog(newVal){
+				if(newVal === false){
+					this.resetForm("addInspectionForm");
+				}
 			}
 		},
 		created() {
@@ -191,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.inspection_status === 2) {
+					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,
@@ -203,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闇�瑕佺殑鏍煎紡
@@ -235,11 +402,9 @@
 						inspectionStatus: this.radioValue
 					})
 				}
-				// console.log(res)
 				this.commisionTable = res.data.row
 				this.total = res.data.total
 			},
-
 			// 閲嶇疆鏂规硶
 			reset() {
 				// 閲嶇疆鎼滅储鏉′欢
@@ -252,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) {
@@ -286,7 +456,6 @@
 			},
 			// 褰撳墠椤垫敼鍙樻椂瑙﹀彂 璺宠浆鍏朵粬椤�
 			async handleCurrentChange(val) {
-				// console.log(`褰撳墠椤�: ${val}`)
 				this.currentPage = val
 				if (this.radioValue === 0) {
 					this.getCommisionList()
@@ -305,9 +474,9 @@
 				selectViewUUID({
 					day: this.day
 				}).then(res => {
-					this.view = `${this.vueIp}addCommision/${res.data.id}`
+					this.view = `${this.vueIp}/#/addCommision/${res.data.id}`
 					this.viewId = res.data.id
-					this.viewTime = res.data.time
+					this.viewTime2 = res.data.time
 				})
 			},
 			getViewId() {
@@ -315,7 +484,7 @@
 					day: this.viewTime == null ? 1 : this.viewTime
 				}).then(res => {
 					this.viewId = res.data
-					this.view = `${this.vueIp}addCommision/${res.data.id}`
+					this.view = `${this.vueIp}/#/addCommision/${res.data.id}`
 					this.viewDia = false
 					this.$message.success('閾炬帴宸茬敓鎴愶紝鐐瑰嚮澶嶅埗鎸夐挳杩涜澶嶅埗')
 				})
@@ -327,12 +496,20 @@
 				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;

--
Gitblit v1.9.3