From f2245cb7f6dfc7cd83ae257b235fc41e3c5cabab Mon Sep 17 00:00:00 2001 From: zouyu <2723363702@qq.com> Date: 星期六, 09 九月 2023 11:54:28 +0800 Subject: [PATCH] modified: src/views/CNAS/reviewAnnualPlan/index.vue modified: src/views/experiment/checkTheReport/index.vue modified: src/views/experiment/inspectionApplication/index.vue modified: src/views/experiment/nonConformingFeedback/index.vue modified: src/views/experiment/reportAuditing/index.vue modified: src/views/laboratory/measure/index.vue modified: src/views/laboratory/personnel/index.vue --- src/views/laboratory/measure/index.vue | 268 +++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 215 insertions(+), 53 deletions(-) diff --git a/src/views/laboratory/measure/index.vue b/src/views/laboratory/measure/index.vue index d133f34..e6f2e0d 100644 --- a/src/views/laboratory/measure/index.vue +++ b/src/views/laboratory/measure/index.vue @@ -2,29 +2,32 @@ <div> <div class="content-main"> <div class="top-bar"> - <el-form :hidden="lookVisible" ref="form" :inline="true" :model="searchData"> + <el-form style="margin-top: 10px;" :hidden="lookVisible" ref="form" :inline="true" :model="searchData"> <el-form-item :label="this.radioValue === 0 ? '浠櫒璁惧缂栧彿:' : '璁″垝缂栧彿:'" class="sermargin"> - <el-input v-model="searchData.code" @blur="blurSearch()" class="input-form" placeholder="璇疯緭鍏�"> + <el-input size="small" v-model="searchData.code" @blur="blurSearch()" class="input-form" placeholder="璇疯緭鍏�"> </el-input> + </el-form-item> + <el-form-item v-if="this.radioValue === 1"> + <el-button size="small" type="primary" @click="searchPlan">鏌ヨ</el-button> </el-form-item> <el-form-item v-if="this.radioValue === 0" :label="this.radioValue === 0 ? '浠櫒璁惧鍚嶇О:' : '璁惧鍚嶇О'" 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 v-if="this.radioValue === 0" :label="this.radioValue === 0 ? '璁¢噺鍗曚綅:' : '璁¢噺鍗曚綅锛�'" style="margin-right: 20px;"> - <el-input v-model="searchData.measureunit" class="input-form" placeholder="璇疯緭鍏�"> + <el-input size="small" v-model="searchData.measureunit" class="input-form" placeholder="璇疯緭鍏�"> </el-input> </el-form-item> </el-form> - <el-form :hidden="lookVisible"> + <el-form :hidden="lookVisible" style="margin-top: 10px;"> <el-form-item v-if="this.radioValue === 0" class="rightBtn"> - <el-button type="primary" @click="search">鏌ヨ</el-button> - <el-button type="primary" plain @click="reset()">閲嶇疆</el-button> + <el-button size="small" type="primary" @click="search">鏌ヨ</el-button> + <el-button size="small" type="primary" plain @click="reset()">閲嶇疆</el-button> </el-form-item> <el-form-item v-if="this.radioValue === 1" class="rightBtn"> - <el-button type="primary" @click="addPlan()" icon="el-icon-plus">鏂板璁″垝</el-button> + <el-button size="small" type="primary" @click="addPlan()" icon="el-icon-plus">鏂板璁″垝</el-button> </el-form-item> </el-form> </div> @@ -39,8 +42,8 @@ </div> </div> <div class="table-box"> - <el-table v-if="this.radioValue == 0" :max-height="800" :cell-style="{ textAlign: 'center' }" - :header-cell-style="{ border: '0px', background: '#f5f7fa', color: '#606266', boxShadow: 'inset 0 1px 0 #ebeef5', textAlign: 'center' }" + <el-table v-if="this.radioValue == 0" :max-height="600" :cell-style="{ textAlign: 'left' }" + :header-cell-style="{ border: '0px', background: '#f5f7fa', color: '#606266', boxShadow: 'inset 0 1px 0 #ebeef5', textAlign: 'left' }" :data="measureLedgerTable" style="width: 100%"> <el-table-column type="index" min-width="10%" /> <el-table-column prop="equipmentCode" label="浠櫒璁惧缂栧彿" min-width="10%" /> @@ -70,15 +73,15 @@ <el-table-column prop="name" label="璐熻矗浜�" min-width="10%" /> <el-table-column prop="createTime" label="鍒涘缓鏃ユ湡" min-width="10%" /> <el-table-column prop="name" label="鍒涘缓浜�" min-width="8%" /> - <el-table-column prop="code" label="璁¢噺缂栧彿" min-width="8%" /> + <el-table-column prop="code" label="璁¢噺缂栧彿" min-width="12%" /> <el-table-column label="鎿嶄綔" min-width="15%"> <template slot-scope="scope"> - <el-button type="text" @click="lookMeasurement(scope.row.equipmentCode)" size="small">鏌ョ湅璁¢噺灞ュ巻</el-button> + <!-- <el-button type="text" @click="lookMeasurement(scope.row.equipmentCode)" size="small">鏌ョ湅璁¢噺灞ュ巻</el-button> --> <el-button type="text" size="small">鏌ョ湅闄勪欢</el-button> </template> </el-table-column> </el-table> - <el-table v-show="this.radioValue == 1" :max-height="800" :cell-style="{ textAlign: 'center' }" + <el-table v-show="this.radioValue == 1" :max-height="500" :cell-style="{ textAlign: 'center' }" :header-cell-style="{ border: '0px', background: '#f5f7fa', color: '#606266', boxShadow: 'inset 0 1px 0 #ebeef5', textAlign: 'center' }" :data="measurePlanTable" style="width: 100%"> <el-table-column type="index" min-width="10%" /> @@ -109,19 +112,30 @@ </el-table-column> </el-table> <!-- 鍒嗛〉鍣� --> - <div style="display: flex;justify-content: end;"> + <div style="display: flex;justify-content: end;padding: 10px 0;"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" - :current-page="currentPage" :page-sizes="[5, 10, 20]" :page-size="pageSize" + :current-page="currentPage" :page-sizes="[10, 20, 30]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"> </el-pagination> </div> </div> </div> - <div style="position: absolute;top:14px;left: 9px;transition: 1s;width: 99%;height: 82vh;background-color: #fff;z-index: 21;"> - <Add/> + <div> + <el-button v-if="selectInfoBtn" @click="combackLookPlan" + style="position: fixed;top: 43px;right: 14px; z-index: 1000;" type="primary" icon="el-icon-refresh-left" + size="mini" plain>杩斿洖</el-button> + <div v-if="addBtn" + style="display: flex;justify-content: center;width: 10%;position: fixed;top: 43px;right: 14px; z-index: 1000;"> + <el-button @click="addTop = -82; addBtn = false;lookVisible= false" size="mini" style="width: 60px;">杩斿洖</el-button> + <el-button size="mini" @click="measureAdd" style="width: 60px;" type="primary">淇濆瓨</el-button> + </div> + </div> + <div + :style="`position: absolute;top:${addTop}vh;left: 9px;transition: 1s;width: 99%;height: 82vh;background-color: #fff;z-index: 21;`"> + <Add ref="add" /> </div> <div id="myMOdel" - :style="`position: absolute;transition: 1s;top:${mymodelTop}px; left: 9px; width: 99%; height: 65vh; background-color: #fff;z-index: 20;`"> + :style="`position: absolute;transition: 1s;top:${mymodelTop}px; left: 9px; width: 99%; height: 100vh; background-color: #fff;z-index: 20;`"> <el-col :span="10"> <p style="font-size: 13px;padding-left: 40px;">璁″垝淇℃伅</p> </el-col> @@ -149,7 +163,7 @@ </el-col> </el-col> <el-col style="width:93%;height: 20vh;margin-top: 30px; margin-left: 40px;"> - <el-table :data="measureData"> + <el-table max-height="300" :data="measureData"> <el-table-column type="index" label="搴忓彿" /> <el-table-column prop="equipmentCode" label="浠櫒璁惧缂栧彿" /> <el-table-column prop="equipmentName" label="浠櫒璁惧鍚嶇О" /> @@ -188,22 +202,84 @@ <el-table-column prop="imCreateTime" label="鍒涘缓鏃ユ湡" /> <el-table-column prop="measurementName" label="鍒涘缓浜�" /> <el-table-column prop="measurementUnit" label="璁¢噺鍗曚綅" /> - <el-table-column prop="equipmentCode" label="璁¢噺缂栧彿" /> + <el-table-column prop="code" label="璁¢噺缂栧彿" /> + <el-table-column prop="equipmentCode" label="鎿嶄綔"> + <template slot-scope="scope"> + <a @click="measureUp(scope)" style="color: deepskyblue;">璁¢噺</a> + </template> + </el-table-column> </el-table> </el-col> - <el-col style="width: 93%;margin-left: 40px; margin-top: 90px;display: flex;justify-content: end;"> + <el-col style="width: 93%;margin-left: 40px; margin-top: 250px;display: flex;justify-content: end;"> <el-pagination @size-change="handleSizeChangePlan" @current-change="handleCurrentChangePllan" - :current-page="currentPagePlan" :page-sizes="[5, 10, 20]" :page-size="pageSizePlan" + :current-page="currentPagePlan" :page-sizes="[5, 10]" :page-size="pageSizePlan" layout="total, sizes, prev, pager, next, jumper" :total="totalPlan"> </el-pagination> </el-col> </div> + <el-dialog class="measureForm" title="璁¢噺" :visible.sync="dialogVisible"> + <el-form label-position="top" ref="upmeasureForm" :model="measureUpInfo"> + <el-row :gutter="20"> + <el-col :span="24"> + <el-form-item label="妫�瀹氭湁鏁堟湡" prop="date" + :rules="[{ required: true, message: '璇烽�夋嫨妫�瀹氭湁鏁堟湡', trigger: 'change' }]"> + <el-date-picker v-model="measureUpInfo.date" type="date" placeholder="閫夋嫨鏃ユ湡"> + </el-date-picker> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20"> + <el-col :span="12"> + <el-form-item label="涓嶇‘瀹氬害" prop="uncertainty" + :rules="[{ required: true, message: '璇峰~鍐欎笉纭畾搴�', trigger: 'blur' }]"> + <el-input placeholder="璇峰~鍐欎笉纭畾搴�" v-model="measureUpInfo.uncertainty" /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="缁撴灉" prop="result" :rules="[{ required: true, message: '璇烽�夋嫨缁撴灉', trigger: 'change' }]"> + <el-select v-model="measureUpInfo.result" clearable filterable :allow-create="true" placeholder="璇烽�夋嫨缁撴灉" + style="width:100%"> + <el-option v-for="item in result" :key="item.id" :label="item.label" :value="item.value" /> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20"> + <el-col :span="24"> + <el-form-item label="鎬ц兘鎸囨爣"> + <el-input v-model="measureUpInfo.performanceIndex" type="textarea" :rows="2" placeholder="璇疯緭鍏ュ唴瀹�" /> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20"> + <el-col :span="24"> + <el-form-item label="澶囨敞"> + <el-input v-model="measureUpInfo.remarks" type="textarea" :rows="2" placeholder="璇疯緭鍏ュ唴瀹�" /> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20"> + <el-col :span="24"> + <el-form-item label=""> + <el-upload class="upload-demo" action="#" :on-change="handleUploadupdated" :auto-upload="false"> + <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button> + </el-upload> + </el-form-item> + </el-col> + </el-row> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button type="primary" @click="upMeasure">纭� 瀹�</el-button> + + <el-button @click="dialogVisible = false">鍙� 娑�</el-button> + </span> + </el-dialog> </div> </div> </template> <script> -import { getPlanPageList, getStandingPageList, getPlanMeasureInstrument, limitGetPlanMeasureRequest } from '@/api/laboratory/measure' +import { getPlanPageList, getStandingPageList, getPlanMeasureInstrument, limitGetPlanMeasureRequest, updateMetricalInformationInfo } from '@/api/laboratory/measure' import { default as Add } from "./Add.vue"; export default { components: { @@ -211,6 +287,31 @@ }, data() { return { + dialogVisible: false, + tableIndex: null, + selectInfoBtn: false, + addBtn: false, + measureUpInfo: { + id: null, + code: null, + result: null, + date: null, + uncertainty: null, + performanceIndex: null, + remarks: null, + file: null, + termValidity: null + }, + result: [{ + label: '鍚堟牸', + value: 1 + }, { + label: '鐭鍚庡彲鐢�', + value: 2 + }, { + label: '涓嶅悎鏍�', + value: 3 + }], searchData: { code: '', name: '', @@ -227,14 +328,13 @@ measureLedgerTable: [], measurePlanTable: [], currentPage: 1, - pageSize: 5, + pageSize: 10, total: 0, currentPagePlan: 1, - pageSizePlan: 5, + pageSizePlan: 10, totalPlan: 0, - drawer: false, direction: 'rtl', - lookVisible: true, + lookVisible: false, measureData: [], planInfo: { plannedOrderNumber: 7897897987, @@ -244,7 +344,8 @@ createPerson: '鏌愭煇璐熻矗浜�', createTime: '2021-09-08' }, - mymodelTop: -600,//14 + mymodelTop: -1000,//14 + addTop: -85, planId: 0 } }, @@ -253,36 +354,88 @@ // this.getPlanPageList() }, methods: { + upResult() { + this.measureData[this.tableIndex].result = this.resultUp + + }, + async upMeasure() { + let res = await updateMetricalInformationInfo(this.measureUpInfo) + if (res) { + this.$message({ + message: '鎿嶄綔鎴愬姛锛�', + type: 'success' + }); + this.limitGetPlanMeasureInstrument() + this.dialogVisible = false + } + }, + handleUploadupdated() { + + }, + measureUp(scope) { + this.dialogVisible = true + this.tableIndex = scope.$index + this.measureUpInfo.result = scope.row.result + this.measureUpInfo.code = scope.row.code + this.measureUpInfo.date = scope.row.endDate + this.measureUpInfo.id = scope.row.imId + this.measureUpInfo.uncertainty = scope.row.uncertainty + this.measureUpInfo.performanceIndex = scope.row.performanceIndex + this.measureUpInfo.remarks = scope.row.remarks + this.measureUpInfo.termValidity = scope.row.termValidity + }, + async measureAdd() { + let res = await this.$refs.add.add() + if (!res) { + return + } + this.addTop = -82 + this.$message({ + message: '鎿嶄綔鎴愬姛锛�', + type: 'success' + }); + this.lookVisible = false + this.addBtn = false + // this.limitGetPlanMeasureInstrument() + this.getPlanPageList() + }, async handleSizeChangePlan(num) { this.pageSizePlan = num + this.currentPage await this.limitGetPlanMeasureInstrument() }, - async handleCurrentChangePllan(num) { - this.currentPagePlan = num - await this.limitGetPlanMeasureInstrument() + handleCurrentChangePllan(num) { + this.currentPagePlan = num; + this.limitGetPlanMeasureInstrument(); }, addPlan() { - this.drawer = true + this.addTop = 2 + this.lookVisible = true + this.$parent.mainShowAdd() + this.addBtn = true }, async limitGetPlanMeasureInstrument() { - let res = await limitGetPlanMeasureRequest({ + let param = { id: this.planId, currentPage: this.currentPagePlan, - pageSize: this.pageSize - }) - this.totalPlan = res.data.taotal - this.measureData = res.data.list + pageSize: this.pageSizePlan + } + const res = await limitGetPlanMeasureRequest(param); + console.log(res.data.total); + // this.totalPlan = res.data.taotal; + this.measureData = res.data.list; + console.log(this.totalPlan); }, lookPalan(id) { this.planId = id this.getPlanAndInfoAndIns(id) this.lookVisible = true - this.mymodelTop = 10 + this.mymodelTop = 2 + this.selectInfoBtn = true this.$parent.triggerMainBtnPlan() }, async getPlanAndInfoAndIns(id) { let res = await getPlanMeasureInstrument({ "id": id, "currentPage": this.currentPagePlan, "pageSize": this.pageSize }); - console.log(res); for (const key in res.data.list) { this.planInfo[key] = res.data.list[key] } @@ -299,27 +452,30 @@ }, combackLookPlan() { this.lookVisible = false - this.mymodelTop = -600 + this.mymodelTop = -1000 + this.selectInfoBtn = false }, blurSearch() { if (this.radioValue === 1) { - console.log("璁″垝"); } }, handleClose() { this.drawer = false }, - handleCurrentChange() { - this.getStandingPageList() + handleCurrentChange(num) { + this.currentPage = num + this.radioValue ? this.getPlanPageList() : this.getStandingPageList() }, - handleSizeChange() { - this.getStandingPageList() + handleSizeChange(num) { + this.pageSize = num + this.radioValue ? this.getPlanPageList() : this.getStandingPageList() }, async getStandingPageList() { - const res = await getStandingPageList({ + let param = { currentPage: this.currentPage, pageSize: this.pageSize, code: this.searchData.code, name: this.searchData.name, unit: this.searchData.measureunit - }) + } + const res = await getStandingPageList(param) this.measureLedgerTable = res.data.records this.total = res.data.total this.measureLedgerTable.forEach(item => { @@ -352,6 +508,9 @@ search() { this.getStandingPageList() }, + searchPlan(){ + this.getPlanPageList() + }, reset(formName) { this.searchData.name = '' this.searchData.code = '' @@ -362,24 +521,27 @@ this.reset() }, async getPlanPageList() { - const res = await getPlanPageList({ - currentPage: this.currentPage, pageSize: this.pageSize, - code: this.searchData.code, name: this.searchData.name, unit: this.searchData.measureunit - }) + // console.log(111); + let param = { + currentPage: this.currentPage, + pageSize: this.pageSize, + plannedOrderNumber: this.searchData.code + } + const res = await getPlanPageList(param) res.data.list.forEach(item => { item.palanDate = item.beginTime + " ~ " + item.endTime }) this.measurePlanTable = res.data.list this.total = res.data.total + console.log(333); }, async lookMeasurement(code) { - console.log(code); }, } } </script> -<style scoped> +<style scoped lang="scss"> .top-bar { margin: -25px -15px; background: #fff; -- Gitblit v1.9.3