|
@@ -22,6 +22,44 @@
|
|
|
<el-button type="primary" :loading="confirmLoading" @click="handleAdd">确 定</el-button>
|
|
|
</span>
|
|
|
</el-dialog>
|
|
|
+ <div class="management_card">
|
|
|
+ <el-dialog :visible.sync="importDialogVisible" width="500px" :close-on-click-modal="false" @close="closeDialogil">
|
|
|
+ <div class="card_import">
|
|
|
+ <div class="card_incubat">
|
|
|
+ <forms ref="incubatorRules" labelPosition="left" :formNewList="stateRuleList" :ruleForm="stateRuleForm"
|
|
|
+ labelWidth="80px"></forms>
|
|
|
+ </div>
|
|
|
+ <div class="card_search_input">
|
|
|
+ <div class="title_search">名称:</div>
|
|
|
+ <el-input v-model="nameTitle" placeholder="请输入内容" @input="incubatorInput"></el-input>
|
|
|
+ </div>
|
|
|
+ <!-- 表单 -->
|
|
|
+ <tables ref="refIncubator" :tableList="incubatorList" :tableData="incubatorData"></tables>
|
|
|
+ <!-- 分页 -->
|
|
|
+ <div v-if="Total">
|
|
|
+ <pagination :total="Total1" :currentPage="Paginationil.PageIndex" :pager-countnum="5"
|
|
|
+ layout="sizes, prev, pager, next" @changeSize="changeSizeil" @changeCurrent="changeCurrentil">
|
|
|
+ </pagination>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <el-button plain @click="importDialogVisible = false">取 消</el-button>
|
|
|
+ <el-button type="primary" :loading="incubatorLoading" @click="incubatorAdd">导 入</el-button>
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+ <el-dialog :visible.sync="dialogVisible" width="80%" @close="temperatureClose">
|
|
|
+ <template slot="title">
|
|
|
+ <div style="display: flex;align-items: center;">
|
|
|
+ <span style="margin-right: 10px;font-size: 20px;">温湿度记录</span>
|
|
|
+ <el-date-picker v-model="timeQuantum" value-format="yyyy-MM-dd HH:mm:ss" type="datetimerange"
|
|
|
+ :picker-options="pickerOptions" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
|
|
|
+ align="center" @change="timeChange">
|
|
|
+ </el-date-picker>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <thermography ref="thermo" :waybillNo="waybillNo" :timeData="timeQuantum"></thermography>
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -30,17 +68,24 @@
|
|
|
getIcelocker,
|
|
|
addIcelocker,
|
|
|
putIcelocker,
|
|
|
- delIcelocker
|
|
|
+ delIcelocker,
|
|
|
+ importIceLocker
|
|
|
} from '@/api/refrigerator'
|
|
|
+ import {
|
|
|
+ getDevice
|
|
|
+ } from '@/api/incubator'
|
|
|
import actionBar from '@/components/actionBar'
|
|
|
import tables from '@/components/tables'
|
|
|
import pagination from '@/components/pagination'
|
|
|
import forms from '@/components/forms'
|
|
|
+ import thermography from '@/components/thermography'
|
|
|
import {
|
|
|
formRules,
|
|
|
employee,
|
|
|
+ incubator
|
|
|
} from "./refrigerator.js";
|
|
|
import {
|
|
|
+ startStatus,
|
|
|
iceraftStatus
|
|
|
} from '@/assets/js/blockSort'
|
|
|
export default {
|
|
@@ -49,14 +94,48 @@
|
|
|
actionBar,
|
|
|
tables,
|
|
|
pagination,
|
|
|
- forms
|
|
|
+ forms,
|
|
|
+ thermography
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
+ pickerOptions: {
|
|
|
+ shortcuts: [{
|
|
|
+ text: '最近一周',
|
|
|
+ onClick(picker) {
|
|
|
+ const end = new Date();
|
|
|
+ const start = new Date();
|
|
|
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
|
|
|
+ picker.$emit('pick', [start, end]);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ text: '最近一个月',
|
|
|
+ onClick(picker) {
|
|
|
+ const end = new Date();
|
|
|
+ const start = new Date();
|
|
|
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
|
|
|
+ picker.$emit('pick', [start, end]);
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ text: '最近三个月',
|
|
|
+ onClick(picker) {
|
|
|
+ const end = new Date();
|
|
|
+ const start = new Date();
|
|
|
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
|
|
|
+ picker.$emit('pick', [start, end]);
|
|
|
+ }
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ timeQuantum: [this.getTime(new Date(new Date().toLocaleDateString())), this.getTime(new Date())],
|
|
|
+
|
|
|
operateList: [{
|
|
|
type: 'add',
|
|
|
title: '添加',
|
|
|
icon: 'el-icon-plus',
|
|
|
+ }, {
|
|
|
+ type: 'import',
|
|
|
+ title: '冷链平台导入',
|
|
|
+ icon: 'el-icon-upload',
|
|
|
}],
|
|
|
formList: [{
|
|
|
type: 'input',
|
|
@@ -64,6 +143,11 @@
|
|
|
field: 'name',
|
|
|
placeholder: '请输入名称',
|
|
|
}, {
|
|
|
+ type: 'input',
|
|
|
+ label: 'SN',
|
|
|
+ field: 'sn',
|
|
|
+ placeholder: 'SN',
|
|
|
+ }, {
|
|
|
type: 'select',
|
|
|
label: '状态',
|
|
|
field: 'status',
|
|
@@ -72,6 +156,7 @@
|
|
|
}],
|
|
|
searchRuleForm: {
|
|
|
name: '',
|
|
|
+ sn: '',
|
|
|
status: '',
|
|
|
},
|
|
|
searchValue: {},
|
|
@@ -87,17 +172,68 @@
|
|
|
staffDialogVisible: false,
|
|
|
formRuleList: [],
|
|
|
ruleForm: {
|
|
|
+ sn: '',
|
|
|
name: '',
|
|
|
status: '2',
|
|
|
},
|
|
|
confirmLoading: false,
|
|
|
selectingData: {},
|
|
|
+
|
|
|
+ importDialogVisible: false,
|
|
|
+ incubatorList: incubator(),
|
|
|
+ incubatorData: [],
|
|
|
+ Total1: 0,
|
|
|
+ Paginationil: {
|
|
|
+ PageIndex: 1,
|
|
|
+ PageSize: 10,
|
|
|
+ },
|
|
|
+ stateRuleList: [{
|
|
|
+ field: 'status',
|
|
|
+ label: '状态',
|
|
|
+ placeholder: '状态',
|
|
|
+ type: 'radio',
|
|
|
+ colWidth: 24,
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ message: '选择状态',
|
|
|
+ trigger: 'change'
|
|
|
+ }],
|
|
|
+ options: startStatus()
|
|
|
+ }],
|
|
|
+ stateRuleForm: {
|
|
|
+ status: '2',
|
|
|
+ },
|
|
|
+ nameTitle: '',
|
|
|
+ incubatorLoading: false,
|
|
|
+
|
|
|
+ timer: null, //定时器名称
|
|
|
+ dialogVisible: false,
|
|
|
+ waybillNo: '',
|
|
|
}
|
|
|
},
|
|
|
+ beforeDestroy() {
|
|
|
+ clearInterval(this.timer); // 清除定时器
|
|
|
+ this.timer = null;
|
|
|
+ },
|
|
|
mounted() {
|
|
|
this.getList()
|
|
|
},
|
|
|
methods: {
|
|
|
+ getTime(time) {
|
|
|
+ var date = new Date(time)
|
|
|
+ var y = date.getFullYear()
|
|
|
+ var m = date.getMonth() + 1
|
|
|
+ m = m < 10 ? '0' + m : m
|
|
|
+ var d = date.getDate()
|
|
|
+ d = d < 10 ? '0' + d : d
|
|
|
+ var h = date.getHours()
|
|
|
+ h = h < 10 ? '0' + h : h
|
|
|
+ var minute = date.getMinutes()
|
|
|
+ minute = minute < 10 ? '0' + minute : minute
|
|
|
+ var s = date.getSeconds()
|
|
|
+ s = s < 10 ? '0' + s : s
|
|
|
+ return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + s
|
|
|
+ },
|
|
|
// 搜索
|
|
|
searchProtocol(value) {
|
|
|
this.Pagination.PageIndex = 1
|
|
@@ -109,12 +245,16 @@
|
|
|
var params = {
|
|
|
page: this.Pagination.PageIndex,
|
|
|
pageSize: this.Pagination.PageSize,
|
|
|
+ showTemp: true,
|
|
|
...this.searchValue
|
|
|
}
|
|
|
getIcelocker(params).then(res => {
|
|
|
if (res.code == 200) {
|
|
|
this.tableData = res.data.list
|
|
|
this.Total = res.data.count
|
|
|
+ this.timer = setTimeout(() => {
|
|
|
+ this.getList();
|
|
|
+ }, 60000)
|
|
|
}
|
|
|
})
|
|
|
},
|
|
@@ -146,6 +286,7 @@
|
|
|
id: this.selectingData.id,
|
|
|
name: this.ruleForm.name,
|
|
|
status: this.ruleForm.status,
|
|
|
+ sn: this.ruleForm.sn,
|
|
|
}
|
|
|
putIcelocker(params).then(res => {
|
|
|
if (res.code == 200) {
|
|
@@ -175,6 +316,7 @@
|
|
|
this.staffDialogVisible = true
|
|
|
setTimeout(() => {
|
|
|
this.$nextTick(() => {
|
|
|
+ this.ruleForm.sn = row.sn
|
|
|
this.ruleForm.name = row.name
|
|
|
this.ruleForm.status = row.status
|
|
|
})
|
|
@@ -188,14 +330,89 @@
|
|
|
this.ruleForm = JSON.parse(JSON.stringify(row))
|
|
|
} else if (type == 'del') {
|
|
|
this.deleteUser(row.id)
|
|
|
+ } else if (type == 'record') {
|
|
|
+ this.dialogVisible = true
|
|
|
+ this.waybillNo = row.sn
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs.thermo.getProbe()
|
|
|
+ })
|
|
|
}
|
|
|
},
|
|
|
+ // 选择时间
|
|
|
+ timeChange() {
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs.thermo.getTemperature()
|
|
|
+ })
|
|
|
+ },
|
|
|
openModel(type) {
|
|
|
- const dataList = formRules();
|
|
|
- this.formRuleList = dataList;
|
|
|
- this.staffTitle = '添加'
|
|
|
- this.staffDialogVisible = true
|
|
|
- this.operationType = type
|
|
|
+ if (type == 'add') {
|
|
|
+ const dataList = formRules();
|
|
|
+ this.formRuleList = dataList;
|
|
|
+ this.staffTitle = '添加'
|
|
|
+ this.staffDialogVisible = true
|
|
|
+ this.operationType = type
|
|
|
+ } else if (type == 'import') {
|
|
|
+ this.importDialogVisible = true
|
|
|
+ this.getDeviceList()
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 获取设备列表
|
|
|
+ getDeviceList() {
|
|
|
+ var params = {
|
|
|
+ page: this.Paginationil.PageIndex,
|
|
|
+ pageSize: this.Paginationil.PageSize,
|
|
|
+ name: this.nameTitle,
|
|
|
+ }
|
|
|
+ getDevice(params).then(res => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ if (res.data) {
|
|
|
+ this.incubatorData = res.data.list
|
|
|
+ this.Total1 = res.data.count
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 搜索保温箱
|
|
|
+ incubatorInput(value) {
|
|
|
+ this.nameTitle = value
|
|
|
+ this.getDeviceList()
|
|
|
+ },
|
|
|
+ // 批量导入保温箱
|
|
|
+ incubatorAdd() {
|
|
|
+ const arrID = this.$refs.refIncubator.waybillIds
|
|
|
+ let arr1 = []
|
|
|
+ arrID.forEach(item => {
|
|
|
+ let arr2 = {
|
|
|
+ sn: item.T_sn,
|
|
|
+ name: item.T_devName,
|
|
|
+ }
|
|
|
+ arr1.push(arr2)
|
|
|
+ })
|
|
|
+ let flag = this.$refs['incubatorRules'].validateForm();
|
|
|
+ if (flag) {
|
|
|
+ if (arr1.length > 0) {
|
|
|
+ this.incubatorLoading = true
|
|
|
+ let params = {
|
|
|
+ list: arr1,
|
|
|
+ ...this.stateRuleForm,
|
|
|
+ }
|
|
|
+ importIceLocker(params).then(res => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ this.$message({
|
|
|
+ message: '操作成功',
|
|
|
+ type: 'success'
|
|
|
+ });
|
|
|
+ this.getList()
|
|
|
+ this.importDialogVisible = false
|
|
|
+ }
|
|
|
+ this.incubatorLoading = false
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.$message.warning('请选择需要导入的保温箱');
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.$message.error('表单信息不完整,请继续填写完整');
|
|
|
+ }
|
|
|
},
|
|
|
// 删除冷冻柜
|
|
|
deleteUser(id) {
|
|
@@ -212,6 +429,10 @@
|
|
|
message: '操作成功',
|
|
|
type: 'success'
|
|
|
});
|
|
|
+ const precisePage = Math.ceil((this.Total - 1) / this.Pagination.PageSize)
|
|
|
+ this.Pagination.PageIndex = this.Pagination.PageIndex > precisePage ? precisePage : this
|
|
|
+ .Pagination.PageIndex
|
|
|
+ this.Pagination.PageIndex = this.Pagination.PageIndex < 1 ? 1 : this.Pagination.PageIndex
|
|
|
this.getList()
|
|
|
}
|
|
|
})
|
|
@@ -225,13 +446,58 @@
|
|
|
this.Pagination.PageIndex = val
|
|
|
this.getList()
|
|
|
},
|
|
|
+ changeSizeil(val) {
|
|
|
+ this.Paginationil.PageSize = val
|
|
|
+ this.getDeviceList()
|
|
|
+ },
|
|
|
+ changeCurrentil(val) {
|
|
|
+ this.Paginationil.PageIndex = val
|
|
|
+ this.getDeviceList()
|
|
|
+ },
|
|
|
// 清空表单
|
|
|
closeDialog() {
|
|
|
this.$refs.childRules.resetCheck();
|
|
|
+ },
|
|
|
+ // 关闭温湿度记录
|
|
|
+ temperatureClose() {
|
|
|
+ this.timeQuantum = [this.getTime(new Date(new Date().toLocaleDateString())), this.getTime(new Date())]
|
|
|
+ },
|
|
|
+ closeDialogil() {
|
|
|
+ this.$refs.incubatorRules.resetCheck();
|
|
|
+ this.$refs.refIncubator.clearSelected();
|
|
|
}
|
|
|
},
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
-<style>
|
|
|
+<style lang="scss" scoped>
|
|
|
+ .card_import {
|
|
|
+ margin-top: 15px;
|
|
|
+ box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
|
|
|
+ margin-bottom: 20px;
|
|
|
+ border-radius: 10px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .management_card ::v-deep .el-dialog__body {
|
|
|
+ padding: 0px 20px !important;
|
|
|
+ }
|
|
|
+
|
|
|
+ .card_incubat {
|
|
|
+ padding-left: 15px;
|
|
|
+ border-bottom: 1px solid #EBEEF5;
|
|
|
+ padding-top: 15px;
|
|
|
+ margin-bottom: 15px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .card_search_input {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ padding: 15px 20px 15px 20px;
|
|
|
+ border-bottom: 1px solid #EBEEF5;
|
|
|
+ }
|
|
|
+
|
|
|
+ .title_search {
|
|
|
+ flex: none;
|
|
|
+ margin-right: 5px;
|
|
|
+ }
|
|
|
</style>
|