<template>
|
<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);">正常</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);">正常</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 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>
|