From cd6e23073fcda76f9852e883aacf1315ee4b9a67 Mon Sep 17 00:00:00 2001
From: value <z1292839451@163.com>
Date: 星期四, 31 八月 2023 11:46:06 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 .env.staging                                                 |    2 
 .env.development                                             |    2 
 package.json                                                 |    1 
 .env.production                                              |    2 
 src/views/inspectionManagement/reportForInspection/index.vue |   84 ++++++++++++++++++++++++----
 src/views/experiment/checkTheReport/index.vue                |   44 ++++++++++++++
 src/api/inspection/rawmaterial.js                            |   18 ++++++
 src/layout/components/Sidebar/SidebarItem.vue                |    2 
 8 files changed, 137 insertions(+), 18 deletions(-)

diff --git a/.env.development b/.env.development
index ab9be2d..b0631dd 100644
--- a/.env.development
+++ b/.env.development
@@ -2,4 +2,4 @@
 ENV = 'development'
 
 # base api
-VUE_APP_BASE_API =  'http://localhost:1234/'
+VUE_APP_BASE_API =  'http://192.168.110.254:1234/'
diff --git a/.env.production b/.env.production
index dd72fa5..b1d6aa4 100644
--- a/.env.production
+++ b/.env.production
@@ -3,5 +3,5 @@
 
 # base api
 # VUE_APP_BASE_API = '/prod-api'
-VUE_APP_BASE_API = 'http://localhost:1234/'
+VUE_APP_BASE_API = 'http://192.168.137.138:1234/'
 
diff --git a/.env.staging b/.env.staging
index 92fbe73..d975095 100644
--- a/.env.staging
+++ b/.env.staging
@@ -5,6 +5,6 @@
 
 # base api
 # VUE_APP_BASE_API = '/stage-api'
-VUE_APP_BASE_API = 'http://localhost:1234/'
+VUE_APP_BASE_API = 'http://192.168.137.138:1234/'
 
 
diff --git a/package.json b/package.json
index 0b19172..4767215 100644
--- a/package.json
+++ b/package.json
@@ -20,6 +20,7 @@
     "core-js": "3.6.5",
     "echarts": "^5.4.3",
     "element-ui": "2.13.2",
+    "html2pdf.js": "^0.10.1",
     "js-cookie": "2.2.0",
     "normalize.css": "7.0.0",
     "nprogress": "0.2.0",
diff --git a/src/api/inspection/rawmaterial.js b/src/api/inspection/rawmaterial.js
index 2bbf039..d21c70b 100644
--- a/src/api/inspection/rawmaterial.js
+++ b/src/api/inspection/rawmaterial.js
@@ -77,4 +77,22 @@
     method: 'get',
     params
   })
+}
+
+//鑾峰彇閫夋嫨鐨勭増鏈�
+export function getChooseVersion(params){
+  return request({
+    url: '/raw-material/chooseVer',
+    method: 'get',
+    params
+  })
+}
+
+//鑾峰彇閫夋嫨鐗堟湰涓嬬殑鏍囧噯搴撴暟鎹�
+export function lookProByVer(params){
+  return request({
+    url: '/raw-material/lookProByVer',
+    method: 'get',
+    params
+  })
 }
\ No newline at end of file
diff --git a/src/layout/components/Sidebar/SidebarItem.vue b/src/layout/components/Sidebar/SidebarItem.vue
index ca1bccd..cf9ad14 100644
--- a/src/layout/components/Sidebar/SidebarItem.vue
+++ b/src/layout/components/Sidebar/SidebarItem.vue
@@ -5,7 +5,7 @@
         <el-menu-item v-if="onlyOneChild.meta.show==false ?onlyOneChild.meta.show: true" :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
           <item :show="onlyOneChild.meta.show" :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />
           <span v-if="onlyOneChild.meta.title==='涓婚〉'">涓婚〉</span>
-					<span v-if="onlyOneChild.meta.title==='鍩虹鏁版嵁'">鍩虹鏁版嵁</span>
+          <span v-if="onlyOneChild.meta.title==='鍩虹鏁版嵁'">鍩虹鏁版嵁</span>
         </el-menu-item>
       </app-link>
     </template>
diff --git a/src/views/experiment/checkTheReport/index.vue b/src/views/experiment/checkTheReport/index.vue
index b4efda6..253340f 100644
--- a/src/views/experiment/checkTheReport/index.vue
+++ b/src/views/experiment/checkTheReport/index.vue
@@ -30,7 +30,7 @@
         </el-form-item>
       </el-form>
       <el-form>
-        <el-button class="rightBtn" type="primary" icon="el-icon-document"
+        <el-button @click="exportToPDF" class="rightBtn" type="primary" icon="el-icon-document"
           >瀵煎嚭鎶ュ憡</el-button
         >
       </el-form>
@@ -61,7 +61,7 @@
         </span>
         <div class="printStyle">
           <Preview id="printRaw" :reportData="reportData" v-if="reportType===0"></Preview>
-          <TestReport id="printFinished" :reportData="reportData" v-else></TestReport>
+          <TestReport ref="testreport" id="printFinished" :reportData="reportData" v-else></TestReport>
         </div>
       </el-dialog>
       <div class="table-box">
@@ -77,6 +77,7 @@
             textAlign: 'center',
           }"
           :data="reportTable"
+          @selection-change="handleSelectionChange"
           style="width: 100%"
         >
           <el-table-column type="selection" label="" min-width="5%" />
@@ -176,6 +177,19 @@
         </div>
       </div>
     </div>
+    <Preview ref="preview" id="printRaw" :reportData="reportData" v-show="false"></Preview>
+    <TestReport ref="testreport" id="printFinished" :reportData="reportData" v-show="false"></TestReport>
+    <el-dialog
+      title="瀵煎嚭pdf"
+      :visible.sync="dialogPdfVisible"
+      width="30%"
+      :before-close="handleClose">
+      <span>纭畾寮�濮嬪鍑哄悧锛�</span>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogPdfVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="confirmExport">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 
@@ -184,6 +198,8 @@
 import Preview from "@/components/experiment/checkTheReport/index.vue";
 import TestReport from "@/components/experiment/template_testReport/index.vue"
 import PrintJS from 'print-js'
+import html2pdf from 'html2pdf.js'
+
 export default {
   data() {
     return {
@@ -220,6 +236,8 @@
       pageSize: 10,
       checked: true,
       dialogVisible: false,
+      dialogPdfVisible: false,
+      selectedRows: []
     };
   },
   created() {
@@ -244,6 +262,28 @@
       this.reportType = row.type;
       this.queryReportByRCode(row.reportCode);
     },
+    handleSelectionChange(selection){
+      this.selectedRows = selection;
+    },
+    // 鎵归噺瀵煎嚭鎶ュ憡
+    exportToPDF() {
+      this.dialogPdfVisible = true;
+    },
+    // 纭瀵煎嚭妯℃�佹
+    confirmExport(){
+      this.selectedRows.forEach(async row => {
+        const element = document.getElementById('printFinished');
+        console.log(element)
+        // 璁剧疆TestReport缁勪欢鐨剅eportData灞炴�т负褰撳墠琛岀殑鎶ュ憡鏁版嵁
+        const resp = await getReportData({code:row.reportCode});
+        this.$nextTick(() => {
+          this.$refs.testreport.reportData = resp.data;
+          html2pdf().from(element).save(`exported_${row.reportCode}.pdf`);
+        });
+      });
+      this.dialogPdfVisible = false;
+      this.selectedRows = [];
+    },
     //鎵撳嵃鎸夐挳
     printFun(){
       this.dialogVisible = false;
diff --git a/src/views/inspectionManagement/reportForInspection/index.vue b/src/views/inspectionManagement/reportForInspection/index.vue
index c2cbe46..6dbbd6f 100644
--- a/src/views/inspectionManagement/reportForInspection/index.vue
+++ b/src/views/inspectionManagement/reportForInspection/index.vue
@@ -30,7 +30,7 @@
 			</div>
 			<el-dialog title="鏂板鍘熸潗鏂欐姤妫�" :visible.sync="addReportVisible" width="40%">
 				<el-form ref="addMaterialForm" :rules="insertRule" :model="insertData" :inline="true" label-position="right"
-					label-width="80px">
+					label-width="100px">
 					<el-form-item label="鏉ユ枡鏃ユ湡:" prop="fromDate">
 						<el-date-picker v-model="insertData.fromDate" type="date" value-format="yyyy-MM-dd"></el-date-picker>
 					</el-form-item>
@@ -115,19 +115,30 @@
 				</div>
 			</div>
 		</div>
-		<el-dialog title="閫夋嫨鏃ユ湡" :visible.sync="addReportDialog" width="30%">
+		<el-dialog title="閫夋嫨鏃ユ湡" :visible.sync="addReportDialog" width="60%">
 			<el-form :model="addInspectionForm" :rules="addInspectionFormRules" rule="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 v-model="addInspectionForm.version" placeholder="璇烽�夋嫨鐗堟湰">
-						<el-option v-for="(item,index) in 5" :key="index" :value="item" :label="item"></el-option>
+				<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 ref="multipleTable"
+        :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>
@@ -245,16 +256,20 @@
 		deleteMaterial,
 		addMaterial,
 		getMaterielName,
-		getSpecification
+		getSpecification,
+    getChooseVersion,
+    lookProByVer
 	} from '@/api/inspection/rawmaterial'
 	export default {
 		data() {
 			return {
+        standardLibraryData:[],
+        chooseVersion: [],
 				userName: "",
 				devices: "",
 				addInspectionForm: {
-					inspectionDate: ['2023-08-01', '2023-08-31'],
-					version: 5
+					inspectionDate: [],
+					version: null
 				},
 				addInspectionFormRules: {
 					inspectionDate: [{
@@ -405,7 +420,7 @@
 			this.getRawMaterialList()
 		},
 		mounted() {
-			this.getMaterielName()
+			this.getMaterielName();
 		},
 		methods: {
 			handleChange() {
@@ -454,6 +469,7 @@
 			},
 			handleSelectionChange(val) {
 				this.checkData = val;
+        console.log(val);
 			},
 			//鐢熸垚鎶ユ鍗曟寜閽�
 			addReportBtn() {
@@ -463,10 +479,55 @@
 					if (this.checkData.length > 1) {
 						this.$message.error("鏈�澶氶�夋嫨涓�鏉℃暟鎹�!");
 					} else {
+            let mcode = this.checkData[0].materialCoding;
+            let name = this.checkData[0].materialName;
+            let specifications = this.checkData[0].specificationsModels;
+            this.getChooseVersionFun(mcode,name,specifications);
+            console.log(this.standardLibraryData);
 						this.addReportDialog = true;
 					}
 				}
 			},
+      changeVersionFun(){
+        let mCode = this.checkData[0].materialCoding;
+        let name = this.checkData[0].materialName;
+        let specifications = this.checkData[0].specificationsModels;
+        let version = this.addInspectionForm.version;
+        this.getProByVersion(mCode,name,specifications,version);
+      },
+      //鑾峰彇鐗堟湰涓嬬殑鏍囧噯搴撴暟鎹�
+      async getProByVersion(mCode,name,specifications,version){
+          var vm = this;
+          await lookProByVer({
+              mcode : mCode,
+              name : name,
+              specifications : specifications,
+              version: version
+          }).then((res)=>{
+            console.log(res);
+            vm.standardLibraryData = res.data;
+          })
+          
+      },
+      //鑾峰彇鐗堟湰鍒楄〃
+      async getChooseVersionFun(mCode,name,specifications){
+        var vm = this;
+        this.chooseVersion = [];
+        await getChooseVersion({
+          mcode : mCode,
+          name : name,
+          specifications : specifications
+        }).then((res)=>{
+              vm.getProByVersion(mCode,name,specifications,res.data[0])
+              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];
+        });
+      },
 			//鐢熸垚鎶ユ鍗曠‘璁ゆ寜閽�
 			confirmBtn(formName) {
 				let dateArr = this.addInspectionForm.inspectionDate;
@@ -485,14 +546,14 @@
 					"supplier": val.supplierName,
 					"type": val.type,
 					"unit": val.unit,
-					"version": val.version
+					"version": this.addInspectionForm.version
 				}
 				// this.createReport(obj);
 				this.addReportDialog = false;
 				this.initNewSelection();
 				this.showNewPage = true;
 			},
-			//鐢熸垚鎶ヤ环鍗�
+			//鐢熸垚鎶ユ鍗�
 			async createReport(param) {
 				let res = await addInspect(param);
 				const res2 = await selectInspectsListById({
@@ -501,7 +562,6 @@
 				this.resultData = res2.data;
 				this.inspectionForm = res2.data;
 				this.inspectionItems = res2.data.insProducts;
-
 			},
 			// 鑾峰彇鍒嗛〉鍒楄〃鏁版嵁
 			async getRawMaterialList() {

--
Gitblit v1.9.3