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