From a42bb6f81ac140f191d4fb3980d5564bb0eb063b Mon Sep 17 00:00:00 2001 From: Fixiaobai <fixiaobai@163.com> Date: 星期五, 18 八月 2023 18:07:38 +0800 Subject: [PATCH] modified: .env.development modified: .env.production modified: .env.staging modified: src/views/laboratory/measure/Add.vue modified: src/views/laboratory/measure/index.vue --- src/views/laboratory/measure/index.vue | 430 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 427 insertions(+), 3 deletions(-) diff --git a/src/views/laboratory/measure/index.vue b/src/views/laboratory/measure/index.vue index 5462379..d133f34 100644 --- a/src/views/laboratory/measure/index.vue +++ b/src/views/laboratory/measure/index.vue @@ -1,13 +1,437 @@ <template> - <div>璁¢噺绠$悊</div> + <div> + <div class="content-main"> + <div class="top-bar"> + <el-form :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> + </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> + </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> + </el-form-item> + </el-form> + <el-form :hidden="lookVisible"> + <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-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-form-item> + </el-form> + </div> + <div class="library-table"> + <div class="table-header"> + <div class="search-bar"> + <el-radio-group v-model="radioValue" @change="radioclick"> + <el-radio-button v-for="item in options" :key="item.value" :label="item.value"> + {{ item.label }} + </el-radio-button> + </el-radio-group> + </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' }" + :data="measureLedgerTable" style="width: 100%"> + <el-table-column type="index" min-width="10%" /> + <el-table-column prop="equipmentCode" label="浠櫒璁惧缂栧彿" min-width="10%" /> + <el-table-column label="璁¢噺鍗曚綅" prop="measurementUnit" min-width="10%"></el-table-column> + <el-table-column prop="equipmentName" label="浠櫒璁惧鍚嶇О" min-width="10%" /> + <el-table-column prop="measuringRange" label="娴嬮噺鑼冨洿" min-width="10%" /> + <el-table-column prop="termValidity" label="璁¢噺鍛ㄦ湡" min-width="10%"> + <template slot-scope="scope"> + {{ scope.row.termValidity }}鏈� + </template> + </el-table-column> + <el-table-column prop="result" label="璁¢噺缁撴灉" min-width="10%"> + <template slot-scope="scope"> + <div v-if="scope.row.result === 1"> + <span style="color: rgb(78, 210, 16);">姝e父</span> + </div> + <div v-else-if="scope.row.result === 2"> + <span style="color: rgb(27, 202, 233);">鐭鍚庡彲鐢�</span> + </div> + <div v-else> + <span style="color: red;">澶卞噯</span> + </div> + </template> + </el-table-column> + <el-table-column prop="endDate" label="璁¢噺鏃ユ湡" min-width="12%" /> + <el-table-column prop="validit" label="璁¢噺鏈夋晥鏈�" min-width="10%" /> + <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 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" size="small">鏌ョ湅闄勪欢</el-button> + </template> + </el-table-column> + </el-table> + <el-table v-show="this.radioValue == 1" :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="measurePlanTable" style="width: 100%"> + <el-table-column type="index" min-width="10%" /> + <el-table-column prop="plannedOrderNumber" label="璁″垝缂栧彿" min-width="10%" /> + <el-table-column prop="palanDate" label="璁″垝鏃ユ湡" min-width="10%"> + <template lot-scope="scope"> + <!-- {{ scope.row.palanDate }} --> + </template> + </el-table-column> + <el-table-column prop="status" label="璁″垝鐘舵��" min-width="6%"> + <template slot-scope="scope"> + <div v-if="scope.row.status == 1"> + <span style="color: green;">宸插畬鎴�</span> + </div> + <div v-else> + <span style="color: red;">鏈畬鎴�</span> + </div> + </template> + </el-table-column> + <el-table-column prop="measurePerson" label="璁″垝璐熻矗浜�" min-width="12%" /> + <el-table-column prop="createPerson" label="鍒涘缓浜�" min-width="10%" /> + <el-table-column label="鍒涘缓鏃堕棿" prop="createTime" min-width="10%" /> + <el-table-column prop="id" label="鎿嶄綔" min-width="15%"> + <template slot-scope="scope"> + <el-button type="text" size="small" @click="lookPalan(scope.row.id)">鏌ョ湅璁¢噺灞ュ巻</el-button> + <el-button type="text" size="small">鏌ョ湅闄勪欢</el-button> + </template> + </el-table-column> + </el-table> + <!-- 鍒嗛〉鍣� --> + <div style="display: flex;justify-content: end;"> + <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" + :current-page="currentPage" :page-sizes="[5, 10, 20]" :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> + <div id="myMOdel" + :style="`position: absolute;transition: 1s;top:${mymodelTop}px; left: 9px; width: 99%; height: 65vh; background-color: #fff;z-index: 20;`"> + <el-col :span="10"> + <p style="font-size: 13px;padding-left: 40px;">璁″垝淇℃伅</p> + </el-col> + <el-col> + <el-form :model="planInfo" style="padding-left: 150px;color: #9b9898;"> + <el-form-item> + <el-col :span="8">璁″垝缂栧彿锛�<span style="color: black;">{{ planInfo.plannedOrderNumber }}</span></el-col> + <el-col :span="8">璐熻矗浜猴細<span style="color: black;">{{ planInfo.measurePerson }}</span></el-col> + <el-col :span="8">璁″垝鏃堕棿锛�<span style="color: black;">{{ planInfo.planDate }}</span></el-col> + </el-form-item> + <el-form-item> + <el-col :span="8">璁¢噺鍗曚綅锛�<span style="color: black;">{{ planInfo.unit }}</span></el-col> + <el-col :span="8">鍒涘缓浜猴細<span style="color: black;">{{ planInfo.createPerson }}</span></el-col> + <el-col :span="8">鍒涘缓鏃堕棿锛�<span style="color: black;">{{ planInfo.createTime }}</span></el-col> + </el-form-item> + </el-form> + </el-col> + <el-col> + <el-col style="font-size: 13px;padding-left: 55px;"> + 璁¢噺淇℃伅 + </el-col> + <el-col> + <el-progress style="width: 95%;padding-left: 40px;margin-top: 20px;" :percentage="6" :stroke-width="2" + :show-text="false"></el-progress> + </el-col> + </el-col> + <el-col style="width:93%;height: 20vh;margin-top: 30px; margin-left: 40px;"> + <el-table :data="measureData"> + <el-table-column type="index" label="搴忓彿" /> + <el-table-column prop="equipmentCode" label="浠櫒璁惧缂栧彿" /> + <el-table-column prop="equipmentName" label="浠櫒璁惧鍚嶇О" /> + <el-table-column prop="measuringRange" label="娴嬮噺鑼冨洿" /> + <el-table-column prop="termValidity" label="璁$畻鍛ㄦ湡"> + <template slot-scope="scope"> + {{ scope.row.termValidity }}鏈� + </template> + </el-table-column> + <el-table-column prop="result" label="璁$畻缁撴灉"> + <template slot-scope="scopeResult"> + <div v-if="scopeResult.row.result === 1"> + <span style="color: rgb(78, 210, 16);">姝e父</span> + </div> + <div v-else-if="scopeResult.row.result === 2"> + <span style="color: rgb(27, 202, 233);">鐭鍚庡彲鐢�</span> + </div> + <div v-else-if="scopeResult.row.result == '' || scopeResult.row.result == null"> + <span style="color: #424744;">鏆傛湭璁¢噺</span> + </div> + <div v-else> + <span style="color: red;">澶卞噯</span> + </div> + </template> + </el-table-column> + <el-table-column label="璁$畻鏃ユ湡"> + <template slot-scope="scopeEndDate"> + <span v-if="scopeEndDate.row.endDate != '' && scopeEndDate.row.endDate != null">{{ + scopeEndDate.row.endDate + }}</span> + <span v-else>鏃�</span> + </template> + </el-table-column> + <el-table-column prop="validit" label="璁$畻鏈夋晥鏈�" /> + <el-table-column prop="measurementName" label="璐熻矗浜�" /> + <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> + </el-col> + <el-col style="width: 93%;margin-left: 40px; margin-top: 90px;display: flex;justify-content: end;"> + <el-pagination @size-change="handleSizeChangePlan" @current-change="handleCurrentChangePllan" + :current-page="currentPagePlan" :page-sizes="[5, 10, 20]" :page-size="pageSizePlan" + layout="total, sizes, prev, pager, next, jumper" :total="totalPlan"> + </el-pagination> + </el-col> + </div> + </div> + </div> </template> <script> +import { getPlanPageList, getStandingPageList, getPlanMeasureInstrument, limitGetPlanMeasureRequest } from '@/api/laboratory/measure' +import { default as Add } from "./Add.vue"; export default { - + components: { + Add: () => import('./Add.vue') + }, + data() { + return { + searchData: { + code: '', + name: '', + measureunit: '' + }, + radioValue: 0, + options: [{ + value: 0, + label: '璁¢噺鍙拌处' + }, { + value: 1, + label: '璁¢噺璁″垝' + }], + measureLedgerTable: [], + measurePlanTable: [], + currentPage: 1, + pageSize: 5, + total: 0, + currentPagePlan: 1, + pageSizePlan: 5, + totalPlan: 0, + drawer: false, + direction: 'rtl', + lookVisible: true, + measureData: [], + planInfo: { + plannedOrderNumber: 7897897987, + measurePerson: '鏌愭煇浜�', + planDate: "2021-09-08 ~ 2024-08-09", + unit: '鏌愭煇妫�娴嬪眬', + createPerson: '鏌愭煇璐熻矗浜�', + createTime: '2021-09-08' + }, + mymodelTop: -600,//14 + planId: 0 + } + }, + created() { + this.getStandingPageList() + // this.getPlanPageList() + }, + methods: { + async handleSizeChangePlan(num) { + this.pageSizePlan = num + await this.limitGetPlanMeasureInstrument() + }, + async handleCurrentChangePllan(num) { + this.currentPagePlan = num + await this.limitGetPlanMeasureInstrument() + }, + addPlan() { + this.drawer = true + }, + async limitGetPlanMeasureInstrument() { + let res = await limitGetPlanMeasureRequest({ + id: this.planId, + currentPage: this.currentPagePlan, + pageSize: this.pageSize + }) + this.totalPlan = res.data.taotal + this.measureData = res.data.list + }, + lookPalan(id) { + this.planId = id + this.getPlanAndInfoAndIns(id) + this.lookVisible = true + this.mymodelTop = 10 + 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] + } + this.planInfo.planDate = this.planInfo.beginTime + " ~ " + this.planInfo.endTime + this.planInfo.metricalInfoAndInsList.forEach(item => { + if (item.endDate != '' && item.endDate != null) { + item.validit = this.addMonths(item.endDate, item.termValidity) + } else { + item.validit = '鏃�' + } + }) + this.measureData = this.planInfo.metricalInfoAndInsList + this.totalPlan = res.data.total + }, + combackLookPlan() { + this.lookVisible = false + this.mymodelTop = -600 + }, + blurSearch() { + if (this.radioValue === 1) { + console.log("璁″垝"); + } + }, + handleClose() { + this.drawer = false + }, + handleCurrentChange() { + this.getStandingPageList() + }, + handleSizeChange() { + this.getStandingPageList() + }, + async getStandingPageList() { + const res = await getStandingPageList({ + currentPage: this.currentPage, pageSize: this.pageSize, + code: this.searchData.code, name: this.searchData.name, unit: this.searchData.measureunit + }) + this.measureLedgerTable = res.data.records + this.total = res.data.total + this.measureLedgerTable.forEach(item => { + let dateStr = '' + let dateArr = item.createTime + dateStr = dateArr[0] + "-" + dateArr[1] + "-" + dateArr[2] + item.createTime = dateStr + let endArr = item.endDate + item.endDate = endArr[0] + "-" + endArr[1] + "-" + endArr[2] + item.validit = this.addMonths(item.endDate, item.termValidity) + }) + }, + addMonths(yearMonthDay, monthNum) { + var arr = yearMonthDay.split('-');//2020-08-19鎴�2020-08 + var year = parseInt(arr[0]); + var month = parseInt(arr[1]); + month = month + monthNum; + if (month > 12) {//鏈堜唤鍔� + var yearNum = parseInt((month - 1) / 12); + month = month % 12 == 0 ? 12 : month % 12; + year += yearNum; + } else if (month <= 0) {//鏈堜唤鍑� + month = Math.abs(month); + var yearNum = parseInt((month + 12) / 12); + year -= yearNum; + } + month = month < 10 ? "0" + month : month; + return year + "-" + month + "-" + arr[2]; + }, + search() { + this.getStandingPageList() + }, + reset(formName) { + this.searchData.name = '' + this.searchData.code = '' + this.searchData.measureunit = '' + }, + radioclick() { + this.radioValue ? this.getPlanPageList() : this.getStandingPageList() + 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 + }) + res.data.list.forEach(item => { + item.palanDate = item.beginTime + " ~ " + item.endTime + }) + this.measurePlanTable = res.data.list + this.total = res.data.total + }, + async lookMeasurement(code) { + console.log(code); + }, + } } </script> -<style lang="scss" scoped> +<style scoped> +.top-bar { + margin: -25px -15px; + background: #fff; + display: flex; + justify-content: space-between; + padding: 5px 24px 0px 24px; + .sermargin { + margin-right: 60px; + } +} + +.rightBtn { + margin-right: 50px +} + +.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; + } + } +} </style> -- Gitblit v1.9.3