123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356 |
- <template>
- <div class="charge-box">
- <div class="charge-tools">
- <el-form :inline="true" :model="queryParams">
- <el-form-item label="日志范围:" style="margin-left: 35px">
- <el-select
- multiple
- v-model="robotValue"
- clearable
- placeholder="请选择"
- @change="changeSelect"
- collapse-tags
- @remove-tag="removeTag"
- >
- <el-option label="全选" value="全选" @click.native="selectAll"></el-option>
- <el-option
- v-for="item in logOptions"
- :key="item.alarmCode"
- :label="item.alarmName"
- :value="item.alarmCode"
- />
- </el-select>
- </el-form-item>
- <el-form-item label="充电机ID:" style="margin-left: 35px">
- <el-select v-model="queryParams.deviceNo" clearable placeholder="请选择">
- <el-option
- v-for="item in chargerArr"
- :key="item.value"
- :label="item+'号充电机'"
- :value="item"
- />
- </el-select>
- </el-form-item>
- <el-form-item label="电池编号:" style="margin-left: 50px;">
- <el-input v-model.trim="queryParams.sn" placeholder="请输入电池编号" clearable />
- </el-form-item>
- <el-form-item label="时间范围:" style="margin-left: 50px">
- <el-date-picker
- v-model="dateTime"
- class="times"
- type="datetimerange"
- range-separator="至"
- start-placeholder="开始时间"
- end-placeholder="结束时间"
- format="yyyy-MM-dd HH:mm:ss"
- />
- </el-form-item>
-
- <el-form-item>
- <el-button type="primary" class="serch actve" @click="handleQuery">查询</el-button>
- <el-button type="primary" class="serch" @click="resetForm">重置</el-button>
- </el-form-item>
-
- </el-form>
- </div>
-
- <div class="charge-table">
- <div class="charge-table-top">
- <el-button type="primary" class="daochu" @click="chargeExport">导出结果</el-button>
- </div>
- <div class="charge-table-bottom">
- <el-table
- :data="datalist"
- :header-cell-style="{
- background: '#1d283e',
- borderColor: '#2f3c86',
- height: '36px',
- lineHeight: '36px',
- color:'white',
- fontSize: '15px',
- }"
- stripe
- fit
- :height="tableheight"
- style="width: 100%"
- ref="tblist"
- >
- <el-table-column
- prop="time"
- label="发生时间"
- fixed
- width="150">
- </el-table-column>
- <el-table-column
- prop="deviceNo"
- label="充电机ID"
- fixed
- width="150"
- v-if="logheader.length"
- >
- </el-table-column>
- <el-table-column
- prop="sn"
- label="电池编号"
- fixed
- width="150">
- </el-table-column>
- <el-table-column v-for="log in logheader" :key="log.alarmCode" :label="log.alarmName" :render-header="labelHead">
- <template slot-scope="scope">
- {{ scope.row[log.alarmCode] }}
- </template>
- </el-table-column>
- </el-table>
- </div>
- <div class="pageblock">
- <el-pagination
- :current-page="queryParams.page"
- :page-sizes="[10, 20, 30, 40]"
- :page-size="queryParams.pageSize"
- layout="total, sizes, prev, pager, next, jumper"
- :total="total"
- @size-change="handleSizeChange"
- @current-change="handleCurrentChange"
- />
- </div>
- </div>
- <!--导出弹窗-->
- <div class="rolemanage chargeshow">
- <el-dialog
- title="生成导出任务"
- :visible.sync="dialogExportVisible"
- :destroy-on-close="true"
- >
- <div class="setExport">
- <el-form :model="ruleForm" :rules="rules" ref="ExportForm">
- <el-form-item label="任务名称" prop="exportName">
- <el-input v-model="ruleForm.exportName" placeholder="请输入任务名称"></el-input>
- </el-form-item>
- <el-form-item>
- <el-button type="primary" @click="AddExport">生成</el-button>
- </el-form-item>
- </el-form>
- <div class="descript">说明:导出任务生成后,你可以在数据导出列表中进行查询和下载</div>
- </div>
- </el-dialog>
- </div>
- <!--导出弹窗结束-->
- </div>
- </template>
-
- <script>
- import './log.scss'
- import { BmsModel,bmsList,exportFile } from '@/api/log'
- import { getChargeCode } from '@/api/records'
- export default {
- name: 'Bms',
- components: {},
- data() {
- return {
- // 查询时间数组
- dateTime: '',
- // 充电机ID下拉列表
- chargerArr: null,
- // 数据列表
- datalist: [],
- // 查询参数
- queryParams: {
- page: 1, // 当前页
- pageSize: 10, // 每页条数
- deviceNo: undefined,
- endTime: undefined, // 电池编号
- signals: undefined, // 排序字段
- startTime: undefined, // 排序方式
- sn: undefined,
- sort: 1,
- },
- total: 0, // 总条数,
- tableheight: 0, // 表格高度设置
- dialogExportVisible: false, // 弹窗显示
- checked: false,
- indeterminate: false,
- robotValue:'',
- logOptions: [],
- logheader:[],
- heightTimer:false,
- loading: false,
- ruleForm:{
- exportName:undefined,
- },
- rules:{
- exportName: [
- { required: true, message: '请输入任务名称', trigger: 'blur' },
- { min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' }
- ],
- }
- }
- },
- mounted() {
- this.getChargeCode()
- this.onLoadHeight()
- this.changeWindow()
- this.getLogModel()
- this.getrobotList()
- },
- methods: {
- labelHead(h,{column,index}){
- let l = column.label.length
- let f = 20
- if(l <= 3){
- f = 30
- }else if(l >= 14){
- f = 15
- }
- column.minWidth = f*l
- return h('div',{class:'table-head',style:{minWidth:'100%'}},[column.label])
- },
- selectAll() {
- if (this.robotValue.length < this.logOptions.length) {
- this.robotValue = [];
- this.logOptions.map((item) => {
- this.robotValue.push(item.alarmCode);
- });
- this.robotValue.unshift("全选");
- } else {
- this.robotValue = [];
- }
- },
- changeSelect(val) {
- if (!val.includes("全选") && val.length === this.logOptions.length) {
- this.robotValue.unshift("全选");
- } else if (val.includes("全选") && val.length - 1 < this.logOptions.length) {
- this.robotValue = this.robotValue.filter((item) => {
- return item !== "全选";
- });
- }
- },
- removeTag(val) {
- if (val === "全选") {
- this.robotValue = [];
- }
- },
- // 获取充电机ID
- getChargeCode() {
- getChargeCode().then(res => {
- this.chargerArr = res.data
- })
- },
- //获取BMS日志列表
- getrobotList(){
- this.loading=true;
- bmsList(this.queryParams).then( res =>{
- this.datalist= res.data.list
- this.total=res.data.total
- this.$nextTick(()=>{
- this.$refs.tblist.doLayout();
- })
- this.loading=false
- })
- },
- //获取日志数据字典
- getLogModel(){
- BmsModel().then( res =>{
- this.logOptions= res.data
- this.logheader=res.data
- this.$nextTick(()=>{
- this.$refs.tblist.doLayout();
- })
- })
- },
- /** 分页下一页 */
- handleSizeChange(val) {
- this.queryParams.pageSize = val
- this.getrobotList()
- },
- /** 分页选择页数 */
- handleCurrentChange(val) {
- this.queryParams.page = val
- this.getrobotList()
- },
- // 搜索
- handleQuery() {
- console.log(this.queryParams.sn)
- if (this.dateTime || this.robotValue.length > 0 || this.queryParams.sn || this.queryParams.deviceNo != undefined) {
- if (this.dateTime) {
- this.queryParams.startTime = this.$moment(this.dateTime[0]).format(
- "YYYY-MM-DD HH:mm:ss"
- );
- this.queryParams.endTime = this.$moment(this.dateTime[1]).format(
- "YYYY-MM-DD HH:mm:ss"
- );
- }
- if (this.robotValue.length > 0) {
- this.queryParams.signals = this.robotValue;
- let differenceABSet = Array.from(
- new Set(
- [...this.logOptions].filter((x) =>
- this.robotValue.includes(x.alarmCode)
- )
- )
- );
- this.logheader = differenceABSet;
- }
- this.getrobotList();
- }else{
- this.$message({
- message: "请选择查询条件!",
- type: "warning",
- duration: 1000,
- offset: 20,
- });
- }
- },
- // 搜索重置
- resetForm() {
- this.queryParams.startTime = undefined;
- this.queryParams.endTime = undefined;
- this.queryParams.signals = undefined;
- this.queryParams.batteryNum = undefined;
- this.queryParams.deviceNo = undefined;
- this.queryParams.sn = "";
- this.robotValue = "";
- this.dateTime = "";
- this.queryParams.page = 1;
- this.queryParams.pageSize = 10;
- this.getrobotList();
- this.getLogModel();
- },
- // 导出结果
- chargeExport() {
- this.dialogExportVisible=true
- },
- //生成报表
- AddExport(){
- this.$refs.ExportForm.validate((valid) => {
- if (valid) {
- let addParams={
- exportName:this.ruleForm.exportName,
- signals:this.robotValue,
- sn:this.queryParams.sn,
- startTime:this.queryParams.startTime,
- endTime:this.queryParams.endTime,
- exportLogType:3
- }
- exportFile(addParams).then( res =>{
- console.log(res)
- if(res.code === 0){
- this.dialogExportVisible = false;
- this.$router.push({path:"/manage-log/data-export"})
- }else{
- this.$message({
- message: res.msg,
- type: "warning",
- duration: 1000,
- offset: 20,
- });
- }
- })
- } else {
- return false;
- }
- });
- }
- }
- }
- </script>
-
|