From 2c38eea08bc6060c3371885e9f7fe79473968223 Mon Sep 17 00:00:00 2001 From: zouyu <2723363702@qq.com> Date: 星期五, 08 九月 2023 17:28:57 +0800 Subject: [PATCH] modified: .env.development modified: src/api/experiment/planAssignments.js deleted: src/styles/fonts/element-icons.ttf deleted: src/styles/fonts/element-icons.woff deleted: src/styles/icon.css modified: src/views/experiment/checkTheReport/index.vue modified: src/views/experiment/inspectionApplication/index.vue modified: src/views/experiment/reportAuditing/index.vue modified: src/views/inspectionManagement/commissionInspection/addCommision.vue modified: src/views/laboratory/ledger/index.vue --- src/views/inspectionManagement/commissionInspection/addCommision.vue | 348 +++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 262 insertions(+), 86 deletions(-) diff --git a/src/views/inspectionManagement/commissionInspection/addCommision.vue b/src/views/inspectionManagement/commissionInspection/addCommision.vue index ddcf3bc..cd2ced4 100644 --- a/src/views/inspectionManagement/commissionInspection/addCommision.vue +++ b/src/views/inspectionManagement/commissionInspection/addCommision.vue @@ -2,6 +2,81 @@ <div class="add_commision"> <div class="content-main"> <div class="firstBox"> + <div class="printCommision" > + <table height="30px" id="printCommision"> + <tr> + <td colspan="8"> + <img :src="imgSrc" style="position: absolute;left: 50px;top:26px"> + <h1 style="display: inline;">濮旀墭妫�楠岀敵璇峰崟</h1> + </td> + </tr> + <tr> + <td colspan="2">濮旀墭缂栧彿</td> + <td colspan="2">{{infoForm.commisioncode}}</td> + <td colspan="2">濮旀墭鍗曚綅</td> + <td colspan="2">{{infoForm.department}}</td> + </tr> + <tr> + <td colspan="2">鑱旂郴浜�</td> + <td colspan="2">{{infoForm.contacter}}</td> + <td colspan="2">鑱旂郴鐢佃瘽</td> + <td colspan="2">{{infoForm.tel}}</td> + </tr> + <tr> + <td colspan="2">鑱旂郴鍦板潃</td> + <td colspan="2">{{infoForm.address}}</td> + <td colspan="2">瀹屾垚鏈熼檺</td> + <td colspan="2">{{infoForm.deadline}}</td> + </tr> + <tr> + <td colspan="2">閫佹牱鏃堕棿</td> + <td colspan="2">{{infoForm.time}}</td> + <td colspan="2">閫佹牱浜�</td> + <td colspan="2">{{infoForm.sender}}</td> + </tr> + <tr> + <td colspan="2">閫佹牱浜虹數璇�</td> + <td colspan="2">{{infoForm.sendertel}}</td> + <td colspan="2">鎶ュ憡鏁伴噺</td> + <td colspan="2">{{infoForm.num}}</td> + </tr> + <tr> + <td colspan="2">閫佹牱鏂瑰紡</td> + <td colspan="6"> + <ul> + <li> + <span class="success-icon">{{infoForm.way == 1 ? '鈭�' : ''}}</span> + <span>鈻� 閫佹牱</span> + </li> + <li> + <span class="success-icon">{{infoForm.way == 2 ? '鈭�' : ''}}</span> + <span>鈻� 涓婇棬</span> + </li> + </ul> + </td> + </tr> + <tbody colspan="8" v-for="(item,index) in sampleNameList" :key="index"> + <tr> + <td colspan="2">鏍峰搧</td> + <td colspan="2">{{item}}</td> + <td colspan="2">璇勫畾鏍囧噯</td> + <td colspan="2">{{standardList[index]}}</td> + </tr> + <tr> + <td colspan="2">璇曢獙椤圭洰</td> + <td colspan="6"> + <p style="text-align:left;margin-left:20px" v-for="(data,index) in testProjectList[index]" :key="index"> + {{index+1 + "銆�" + data}} + </p> + </td> + </tr> + </tbody> + <tr> + <td colspan="2">澶囨敞</td> + <td colspan="6">{{infoForm.other}}</td> + </tr> + </table> + </div> <div class="title">濮旀墭淇℃伅</div> <div class="tableBox"> <div class="tableBox-header"> @@ -21,13 +96,12 @@ :data="detectionInfo" style="width: 100%;margin-bottom: 20px;"> <el-table-column type="index" label="搴忓彿" min-width="10%" /> <el-table-column prop="sampleNumber" label="鏍峰搧缂栧彿" min-width="8%" /> - <el-table-column prop="sampleName" label="鏍峰搧鍚嶇О" min-width="10%" /> - - <el-table-column prop="specificationsModels" label="瑙勬牸鍨嬪彿" min-width="10%" /> + <el-table-column prop="speName" label="瑙勬牸鍨嬪彿" min-width="10%"> + </el-table-column> <el-table-column prop="unit" label="鍗曚綅" min-width="8%" /> <el-table-column prop="samplesNumber" label="鏁伴噺" min-width="8%" /> - <el-table-column prop="addway" label="娣诲姞鏂瑰紡" min-width="8%"> + <!-- <el-table-column prop="addway" label="娣诲姞鏂瑰紡" min-width="8%"> <template slot-scope="scope"> <div v-if="scope.row.addway === 0"> <el-tag type="success" disable-transitions>鎵弿</el-tag> @@ -37,11 +111,12 @@ </div> <div v-else></div> </template> - </el-table-column> + </el-table-column> --> <el-table-column prop="remarks" label="澶囨敞" min-width="8%" /> <el-table-column label="鎿嶄綔" min-width="8%"> <template slot-scope="scope"> - <el-button type="text" size="small" @click="deleteRow(scope.row)">鍒犻櫎</el-button> + <el-button type="text" size="small" + @click.native.prevent="deleteRow(scope.$index, detectionInfo)">鍒犻櫎</el-button> </template> </el-table-column> </el-table> @@ -69,7 +144,7 @@ </el-col> <el-col :span="5"> <el-form-item label="鑱旂郴浜猴細"> - <el-input style="width: 200px" v-model="infoForm.contacter" placeholder="璇疯緭鍏ュ鎵樺崟浣�" size="small" /> + <el-input style="width: 200px" v-model="infoForm.contacter" placeholder="璇疯緭鍏ヨ仈绯讳汉" size="small" /> </el-form-item> </el-col> <el-col :span="5"> @@ -87,22 +162,22 @@ </el-col> <el-col :span="5"> <el-form-item label="瀹屾垚鏈熼檺锛�"> - <el-date-picker v-model="infoForm.deadline" type="date" placeholder="閫夋嫨鏃ユ湡" style="width: 200px;" + <el-date-picker value-format="yyyy-MM-dd" v-model="infoForm.deadline" type="date" placeholder="閫夋嫨鏃ユ湡" style="width: 200px;" size="small"> </el-date-picker> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="閫佹牱鏃堕棿锛�"> - <el-date-picker v-model="infoForm.time" type="date" placeholder="閫夋嫨鏃ユ湡" style="width: 200px;"> + <el-date-picker value-format="yyyy-MM-dd" v-model="infoForm.time" type="date" placeholder="閫夋嫨鏃ユ湡" style="width: 200px;"> </el-date-picker> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="閫佹牱鏂瑰紡锛�"> <el-select style="width: 200px;" v-model="infoForm.way" size="small" placeholder="閫佹牱"> - <el-option v-for="options in sampleDeliveryMode" :key="options.key" - :value="options.value">{{ options.value }}</el-option> + <el-option v-for="options in sampleDeliveryMode" :key="options.key" :value="options.key" + :label="options.value">{{ options.value }}</el-option> </el-select> </el-form-item> </el-col> @@ -122,7 +197,7 @@ </el-col> <el-col :span="5"> <el-form-item label="鎶ュ憡鏁帮細"> - <el-input style="width: 200px;" v-model="infoForm.num" placeholder="璇疯緭鍏ユ姤鍛婃暟" autocomplete="off" + <el-input type="number" min="0" style="width: 200px;" v-model="infoForm.num" placeholder="璇疯緭鍏ユ姤鍛婃暟" autocomplete="off" size="small" /> </el-form-item> </el-col> @@ -138,7 +213,7 @@ <el-button type="primary" size="small" @click="submitInspection" style="background-color: rgb(1, 102, 226);">鎻愪氦</el-button> <!-- 鐐瑰嚮杩斿洖锛屽綋鍓嶉〉闈㈠�间负false --> - <el-button type="primary" size="mini" style="background-color: rgb(1, 102, 226); ">鎵撳嵃濮旀墭鍗�</el-button> + <el-button type="primary" size="mini" style="background-color: rgb(1, 102, 226); " @click="printCommision">鎵撳嵃濮旀墭鍗�</el-button> </div> </el-form> </div> @@ -149,23 +224,23 @@ label-width="100px" size="mini"> <el-row :gutter="50"> <el-col :span="11"> - <el-form-item label="鏍峰搧缂栧彿锛�"> + <el-form-item label="鏍峰搧缂栧彿锛�" prop="sampleNumber"> <el-input v-model="addPointerForm.sampleNumber" size="small" disabled> </el-input> </el-form-item> </el-col> <el-col :span="11"> - <el-form-item label="鏍峰搧鍚嶇О锛�"> + <el-form-item label="鏍峰搧鍚嶇О锛�" prop="sampleName"> <el-select v-model="addPointerForm.sampleName" size="small" placeholder="璇烽�夋嫨鏍峰搧鍚嶇О" @change="upMaterialName"> - <el-option v-for="options in sampleoptions" :value="options.key" :label="options.value"></el-option> + <el-option v-for="(options,index) in sampleoptions" :key="index" :value="options.key" :label="options.value"></el-option> </el-select> </el-form-item> </el-col> </el-row> <el-row :gutter="50"> <el-col :span="11"> - <el-form-item label="璇勫畾鏍囧噯锛�"> + <el-form-item label="璇勫畾鏍囧噯锛�" prop="addway"> <el-select v-model="addPointerForm.addway" size="small" placeholder="璇烽�夋嫨璇勫畾鏍囧噯"> <el-option v-for="options in model_spe_options" :value="options.value" :key="options.key">{{ options.value }}</el-option> @@ -173,8 +248,9 @@ </el-form-item> </el-col> <el-col :span="11"> - <el-form-item label="瑙勬牸鍨嬪彿锛�"> - <el-select v-model="addPointerForm.specificationsModels" size="small" placeholder="璇峰厛閫夋嫨鏍峰搧鍚嶇О" @change="getProductList"> + <el-form-item label="瑙勬牸鍨嬪彿锛�" prop="specificationsModels"> + <el-select v-model="addPointerForm.specificationsModels" size="small" placeholder="璇峰厛閫夋嫨鏍峰搧鍚嶇О" + @change="getProductList"> <el-option v-for="options in model_sta_options" :value="options.key" :label="options.value" :key="options.key">{{ options.value }}</el-option> </el-select> @@ -183,27 +259,27 @@ </el-row> <el-row :gutter="50"> <el-col :span="11"> - <el-form-item label="鏍峰搧鍗曚綅锛�"> + <el-form-item label="鏍峰搧鍗曚綅锛�" prop="unit"> <el-input type="text" v-model="addPointerForm.unit" placeholder="璇疯緭鍏ュ崟浣�" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="11"> - <el-form-item label="鏍峰搧鏁伴噺锛�"> + <el-form-item label="鏍峰搧鏁伴噺锛�" prop="samplesNumber"> <el-input type="text" v-model="addPointerForm.samplesNumber" placeholder="璇疯緭鍏ユ暟閲�" autocomplete="off" /> </el-form-item> </el-col> </el-row> <el-row :gutter="50"> - <el-col :span="9"> - <el-form-item label="娣诲姞椤圭洰锛�"> + <el-col :span="11"> + <el-form-item label="娣诲姞椤圭洰锛�" prop="experiment" :rules="[{required: true,message:'椤圭洰涓嶈兘涓虹┖',trigger:'blur'}]"> <el-checkbox-group v-model="addPointerForm.experiment" style="display: flex; flex-direction: column;"> <el-checkbox v-for="(expers, ai) in productList" :label="expers" :key="ai">{{ expers }}</el-checkbox> </el-checkbox-group> </el-form-item> </el-col> - <el-col :span="41"> - <el-form-item label="澶囨敞锛�"> + <el-col :span="11"> + <el-form-item label="澶囨敞锛�" prop="remarks"> <el-input type="textarea" :autosize="{ minRows: 4, maxRows: 20}" style="width: 200px;" v-model="addPointerForm.remarks" placeholder="璇疯緭鍏ュ娉�" autocomplete="off" /> </el-form-item> @@ -211,7 +287,7 @@ </el-row> </el-form> <span slot="footer" class="dialog-footer"> - <el-button type="primary" @click="addInspection">娣诲姞</el-button> + <el-button type="primary" @click="addInspection('addPointerForm')">娣诲姞</el-button> <el-button @click="dialogueFormVisible = false">鍙� 娑�</el-button> </span> </el-dialog> @@ -221,17 +297,24 @@ </template> <script> + import PrintJS from 'print-js' import { getSampleName, getModelSpecification, getlink, addInspection, isIfViewUUID, - getProductList + getProductList, + getContractsSampleInfo, + getSpecificationsName } from '@/api/inspection/commisioninspection' export default { data() { return { + sampleNameList:[], + standardList:[], + testProjectList:[], + imgSrc: require("@/assets/404_images/logo.png"), currentPage: 0, searchData: '', infoForm: { @@ -259,30 +342,9 @@ experiment: [], addway: '' }, - experList: [{ - key: '1', - label: '澶栬妫�鏌�' - }, { - key: '2', - label: '鍔ㄤ綔鐢靛帇璇曢獙' - }, { - key: '3', - label: '鐢甸樆绠℃硠婕忕數娴佽瘯楠�' - }, { - key: '4', - label: '缁濈紭閮ㄥ垎浜ゆ祦鑰愬帇璇曢獙' - }], - sampleoptions: [{ - key: '1', - value: '閫夐」1' - }, { - key: '2', - value: '閫夐」2' - }], - samplecodeoptions: [{ - key: '1', - value: '' - }], + experList: [], + sampleoptions: [], + samplecodeoptions: [], model_spe_options: [], model_sta_options: [], model_options: [], @@ -300,14 +362,31 @@ } }, watch: { + dialogueFormVisible(val){ + if(val == false){ + this.addPointerForm = { + sampleNumber: '', + sampleName: '', + specificationsModels: '', + unit: '', + samplesNumber: '', + remarks: '', + experiment: [], + addway: '', + speName: '' + } + this.productList = []; + this.$refs['addPointerForm'].clearValidate(); + } + }, addPointerForm: { handler: function(val) { - if(val.addway!=""){ + if (val.addway != "") { this.model_sta_options = [] - this.model_options.forEach(a=>{ - if(a.specificationsName==val.addway){ - this.model_sta_options = a.children.map(item=>{ - return{ + this.model_options.forEach(a => { + if (a.specificationsName == val.addway) { + this.model_sta_options = a.children.map(item => { + return { key: item.modelId, value: item.modelName } @@ -323,11 +402,25 @@ this.viewId = this.$route.params.viewId this.$store.commit('settings/SAVE_LINK', this.viewId) this.getlink(this.$route.params.viewId) + this.getContractsSampleInfo(this.$route.params.viewId) }, mounted() { this.getSampleName() }, methods: { + printCommision(){ + if(this.detectionInfo.length < 1){ + this.$message.error("璇峰厛娣诲姞涓�鏉℃牱鍝佹暟鎹�!"); + return + } + console.log(this.infoForm); + PrintJS({ + printable: "printCommision", + type: "html", + targetStyles: ["*"], + ignoreElements: ["no-ignore"], + }); + }, getlink(viewId) { if (viewId == null) { this.$message.error('褰撳墠閾炬帴涓嶅湪鏈夋晥鏈熷唴,绯荤粺鑷姩鍏抽棴') @@ -340,7 +433,14 @@ if (!res.data) { this.$message.error('褰撳墠閾炬帴涓嶅湪鏈夋晥鏈熷唴,绯荤粺鑷姩鍏抽棴') this.$router.push('/404') + } else { + this.getContractsSampleInfo() } + }) + }, + async getContractsSampleInfo(viewId) { + let res = await getContractsSampleInfo({ + viewId }) }, async getSampleName() { @@ -365,30 +465,36 @@ } }) }, - addInspection() { - let exper = this.addPointerForm.experiment[0] - this.addPointerForm.addway = 1 - for (let i = 1; i < this.addPointerForm.experiment.length; i++) { - exper += ',' + this.addPointerForm.experiment[i] - } - - // console.log(exper) - this.addPointerForm.experiment = exper - let tmp = this.addPointerForm - this.detectionInfo.push(tmp) - this.dialogueFormVisible = false - this.addPointerForm = { - sampleNumber: '', - sampleName: '', - specificationsModels: '', - unit: '', - samplesNumber: '', - remarks: '', - experiment: [], - addway: '' - } + addInspection(formName) { + this.$refs[formName].validate((valid)=>{ + if(valid){ + let sName = this.addPointerForm.sampleName; + this.sampleoptions.forEach(a=>{ + if(a.key == sName) this.sampleNameList.push(a.value); + }) + this.standardList.push(this.addPointerForm.addway); + this.testProjectList.push(this.addPointerForm.experiment); + let exper = this.addPointerForm.experiment[0] + for (let i = 1; i < this.addPointerForm.experiment.length; i++) { + exper += ',' + this.addPointerForm.experiment[i] + } + this.addPointerForm.experiment = exper + let tmp = this.addPointerForm + this.sampleoptions.forEach(a => { + if (a.key == tmp.sampleName) tmp.sampleName = a.value + }) + tmp.speName = tmp.addway + '-' + tmp.speName + tmp.addway = 1 + this.detectionInfo.push(tmp) + this.dialogueFormVisible = false + } + }); }, async submitInspection() { + if(this.detectionInfo.length < 1){ + this.$message.error("璇峰厛娣诲姞涓�鏉℃牱鍝佹暟鎹�!"); + return + } let sampledeliveryway if (this.infoForm.way === '閫佹牱') { sampledeliveryway = 1 @@ -407,12 +513,13 @@ reportNumber: parseInt(this.infoForm.num), sampleDeliveryMode: sampledeliveryway, sampleDeliveryPhone: this.infoForm.sendertel, - sampleSender: this.infoForm.sender + sampleSender: this.infoForm.sender, + speName: this.infoForm.speName }) this.infoForm.commisioncode = res.data if (res.data) { this.$message({ - message: '鎭枩浣�!', + message: '娣诲姞鎴愬姛!', type: 'success' }) this.showDetail = true @@ -426,8 +533,8 @@ handleCurrentChange(pageNo) { this.pageParams.pageNo = pageNo }, - deleteRow(row) { - + deleteRow(index, rows) { + rows.splice(index, 1); }, upMaterialName(val) { this.sampleoptions.forEach(a => { @@ -437,18 +544,87 @@ }) this.getModelSpecification(val) }, - getProductList(val){ - getProductList({modelId: val}).then(res=>{ - this.productList = res.data.map(item=>{ + getProductList(val) { + getProductList({ + modelId: val + }).then(res => { + this.productList = res.data.map(item => { return item.name }) }) - } + this.model_sta_options.forEach(a => { + if (a.key == val) { + this.addPointerForm.speName = a.value + } + }) + }, + getContractsSampleInfo() { + getContractsSampleInfo({ + viewId: this.viewId + }).then(res => { + if (res.data == null) return + this.infoForm = { + commisioncode: res.data.entrustCoding, + deadline: res.data.completionDeadline, + address: res.data.contactAddress, + tel: res.data.contactNumber, + contacter: res.data.contacts, + other: res.data.entrustRemarks, + department: res.data.entrusted, + time: res.data.inspectionTime, + detectionInfo: res.data.linkDetectionList, + num: res.data.reportNumber, + way: '' + res.data.sampleDeliveryMode, + sendertel: res.data.sampleDeliveryPhone, + sender: res.data.sampleSender + } + this.detectionInfo = res.data.linkDetectionList + }) + }, } } </script> <style lang="scss" scoped> + .printCommision{ + display: none; + width: 90%; + height:100px; + table { + width: 100%; + border-collapse: collapse; + font-size: 18px; + } + + table, + tr, + th, + td { + border: 2px solid black; + text-align: center; + font-family: '寰蒋闆呴粦'; + ul{ + list-style: none; + width: 500px; + } + ul li{ + display: inline; + width:100px; + margin: 0 25px; + .success-icon{ + position: relative; + left: 15px; + bottom: 3px; + } + } + } + + tr, + td, + th { + padding: 20px 10px; + } + } .content-main { padding: 20px 40px; background-color: #f0f2f5; -- Gitblit v1.9.3