he wei
2021-10-21 21f2701772c379c7cc87c3bc987f244f0986038b
U 备件添加包机组关联 备件流水
3个文件已修改
1164 ■■■■■ 已修改文件
src/assets/js/apis/dataMager/repairBatts.js 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/apis/userMager/baojiGroup.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/dataMager/repairBattery.vue 1122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/apis/dataMager/repairBatts.js
@@ -31,5 +31,34 @@
           data: 'json=' + JSON.stringify(data)
        });
    },
    /**
     *
     * BattspareAction!spareInOrOut
     * 出库 入库
     * json:{"spareId":"3","operationNum":"5","operationType": -1// -1出库, 1 入库}
     * @param {*} data
     * @returns
     */
    putInOrOut (data) {
        return axios({
           method: 'POST',
           url: 'BattspareAction!spareInOrOut',
           data: 'json=' + JSON.stringify(data)
        });
    },
    /**
     *
     * BattspareAction!getSpareRecord
     * 出入库纪录
     * json:{"spareId":"4"}
     * @param {*} data
     * @returns
     */
    getSparetRecord (data) {
        return axios({
           method: 'POST',
           url: 'BattspareAction!getSpareRecord',
           data: 'json=' + JSON.stringify(data)
        });
    },
}
src/assets/js/apis/userMager/baojiGroup.js
@@ -118,4 +118,15 @@
            data: 'result='+JSON.stringify(data)
        });
    },
    /**
     * User_battgroup_baojigroup_usrAction!getGroupInfo
     * 返回当前用户所有包机组信息列表
     */
    getGroupInfo () {
        return axios({
            method: 'GET',
            url: 'User_battgroup_baojigroup_usrAction!getGroupInfo',
            data: null
        });
    },
}
src/pages/dataMager/repairBattery.vue
@@ -1,400 +1,782 @@
<template>
    <flex-layout>
        <div class="table-layout filter-box-table" slot="header">
            <div class="table-row">
                <div class="table-cell text-right">入库时间: </div>
                <div class="table-cell">
                    <el-date-picker v-model="time_start" size="small" class="time_box" :picker-options="pickerOptions0" type="date"
                        placeholder="选择日期" value-format="yyyy-MM-dd"></el-date-picker>
                    - <el-date-picker v-model="time_end" size="small" class="time_box" :picker-options="pickerOptions1" type="date"
                        placeholder="选择日期" value-format="yyyy-MM-dd"></el-date-picker>
                </div>
                <div class="table-cell text-right">品牌: </div>
                <div class="table-cell">
                    <el-select v-model="batt_Producer"
                        @change="battProducerChange"
                        :filterable="true"
                        size="small"
                        >
                        <el-option
                            label="全部"
                            value=""
                            ></el-option>
                        <el-option
                            v-for="item in battProducerList"
                            :key="item"
                            :label="item"
                            :value="item"
                            ></el-option>
                    </el-select>
                </div>
                <div class="table-cell text-right">型号: </div>
                <div class="table-cell">
                    <el-input
                        v-model="BattModel"
                        size="small"
                        placeholder="请输入型号"
                        ></el-input>
                </div>
            </div>
  <flex-layout>
    <div class="table-layout filter-box-table" slot="header">
      <div class="table-row">
        <div class="table-cell text-right">入库时间:</div>
        <div class="table-cell">
          <el-date-picker
            v-model="time_start"
            size="small"
            class="time_box"
            :picker-options="pickerOptions0"
            type="date"
            placeholder="选择日期"
            value-format="yyyy-MM-dd"
          ></el-date-picker>
          -
          <el-date-picker
            v-model="time_end"
            size="small"
            class="time_box"
            :picker-options="pickerOptions1"
            type="date"
            placeholder="选择日期"
            value-format="yyyy-MM-dd"
          ></el-date-picker>
        </div>
        <div class="flex-page-content">
            <el-table stripe size="mini" header-row-class-name="header-primary" height="100%" :data="table.data">
                <el-table-column
                    v-for="header in table.header"
                    :key="header.prop"
                    :prop="header.prop"
                    :label="header.label"
                    :min-width="header.minWidth"
                    :resizable="false"
                    align="center">
                </el-table-column>
            </el-table>
        <div class="table-cell text-right">品牌:</div>
        <div class="table-cell">
          <el-select
            v-model="batt_Producer"
            :filterable="true"
            size="small"
          >
            <el-option label="全部" value=""></el-option>
            <el-option
              v-for="item in battProducerList"
              :key="item"
              :label="item"
              :value="item"
            ></el-option>
          </el-select>
        </div>
        <div class="flex-page-footer" slot="footer">
            <div class="el-pagination-btns">
                <el-button type="primary" @click="searchData" round size="mini" icon="el-icon-search">查询</el-button>
                <el-button type="primary" round size="mini" icon="el-icon-wallet" @click="exportFile">导出</el-button>
            </div>
            <el-pagination size="mini"
                :current-page="page.pageCurr"
                :page-sizes="[10, 20, 30, 50, 100]"
                :page-size="page.pageSize"
                layout="total, sizes, prev, pager, next, jumper"
                :total="page.pageAll"
                @current-change="currentChange"
                @size-change="sizeChange"></el-pagination>
            <div class="el-pagination-btns">
                <el-button type="primary" @click="addDialog = true" round size="mini" icon="el-icon-plus">新增</el-button>
            </div>
        <div class="table-cell text-right">型号:</div>
        <div class="table-cell">
          <el-input
            v-model="BattModel"
            size="small"
            placeholder="请输入型号"
          ></el-input>
        </div>
        <!-- 添加备件 -->
        <el-dialog
            title="添加备件"
            width="800px"
            :visible.sync="addDialog"
            :close-on-click-modal="false"
            top="0"
            class="dialog-center bg-white"
            :modal-append-to-body="false">
            <div class="dialog_content">
                <el-form
                    size="mini"
                    ref="addForm"
                    :model="params"
                    :rules="rules"
                    label-position="top"
                    class="params-dialog">
                    <el-row :gutter="layout.gutter">
                        <el-col :span="layout.span">
                            <el-form-item label="电池品牌" prop="BattProducer">
                                <el-select v-model="params.BattProducer" placeholder="请选择"
                                    @change="battProducerChange"
                                    :filterable="true">
                                    <el-option v-for="item in linkage.battProducers" :key="item" :label="item" :value="item">
                                    </el-option>
                                    <el-option label="其他" value="其他"></el-option>
                                </el-select>
                            </el-form-item>
                        </el-col>
                        <el-col :span="layout.span">
                            <el-form-item label="电池型号" prop="model">
                                <el-input v-model="params.model"></el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span=layout.span>
                            <el-form-item label="入库日期" prop="date">
                                <el-date-picker v-model="params.date"
                                    type="date"
                                    placeholder="选择日期"
                                    value-format="yyyy-MM-dd"></el-date-picker>
                            </el-form-item>
                        </el-col>
                        <el-col :span=layout.span>
                                <el-form-item label="单体数量" prop="count">
                                    <el-input v-model="params.count"></el-input>
                                </el-form-item>
                        </el-col>
                    </el-row>
                </el-form>
            </div>
            <div class="" slot="footer">
                <el-button type="primary" @click="add" size="mini">添加</el-button>
                <el-button type="warning" @click="addDialog = false" size="mini">取消</el-button>
            </div>
        </el-dialog>
        <!-- 电池品牌 -->
        <el-dialog top="0" class="dialog-center" title='请输入电池品牌'
            :visible.sync="battProducer.dialogVisible"
            width="280px" append-to-body>
            <el-form size="small">
                <el-form-item label="电池品牌">
                    <el-input v-model="battProducer.value"></el-input>
                </el-form-item>
            </el-form>
            <div style="text-align: right;">
                <el-button type="primary" size="mini" @click="battProducerOk">确定</el-button>
                <el-button size="mini" @click="battProducer.dialogVisible = false">取消</el-button>
            </div>
        </el-dialog>
    </flex-layout>
        <div class="table-cell text-right">库存:</div>
        <div class="table-cell">
          <el-select
            v-model="mon_count"
            :filterable="true"
            size="small"
          >
            <!-- <el-option label="全部" value=""></el-option> -->
            <el-option
              v-for="(item, idx) in inventoryTypeList"
              :key="'inventory_' + idx"
              :label="item.label"
              :value="item.id"
            ></el-option>
          </el-select>
        </div>
        <div class="table-cell text-right">包机组:</div>
        <div class="table-cell">
          <el-select
            v-model="batt_baoji"
            :filterable="true"
            size="small"
          >
            <el-option label="全部" value=""></el-option>
            <el-option
              v-for="(item, idx) in baoji_group_list"
              :key="'filter_baoji_' + idx"
              :label="item.baoji_group_name"
              :value="item.baoji_group_id"
            ></el-option>
          </el-select>
        </div>
      </div>
    </div>
    <div class="flex-page-content">
      <el-table
        stripe
        size="mini"
        header-row-class-name="header-primary"
        height="100%"
        :data="table.data"
      >
        <el-table-column
          v-for="header in table.header"
          :key="header.prop"
          :prop="header.prop"
          :label="header.label"
          :min-width="header.minWidth"
          :resizable="false"
          align="center"
        >
        </el-table-column>
        <el-table-column fixed="right" label="操作" width="320" align="center">
          <template slot-scope="scope">
            <el-button
              icon="el-icon-folder-add"
              @click="putIn(scope.row)"
              type="danger"
              size="mini"
              >入库</el-button
            >
            <el-button
              icon="el-icon-folder-remove"
              type="primary"
              size="mini"
              @click="putOut(scope.row)"
              :disabled="scope.row.MonCount == 0"
              >出库</el-button
            >
            <el-button
              icon="el-icon-tickets"
              type="danger"
              size="mini"
              @click="storageHistory(scope.row)"
              >出入库纪录</el-button
            >
          </template>
        </el-table-column>
      </el-table>
    </div>
    <div class="flex-page-footer" slot="footer">
      <div class="el-pagination-btns">
        <el-button
          type="primary"
          @click="searchData"
          round
          size="mini"
          icon="el-icon-search"
          >查询</el-button
        >
        <el-button
          type="primary"
          round
          size="mini"
          icon="el-icon-wallet"
          @click="exportFile"
          >导出</el-button
        >
      </div>
      <el-pagination
        size="mini"
        :current-page="page.pageCurr"
        :page-sizes="[10, 20, 30, 50, 100]"
        :page-size="page.pageSize"
        layout="total, sizes, prev, pager, next, jumper"
        :total="page.pageAll"
        @current-change="currentChange"
        @size-change="sizeChange"
      ></el-pagination>
      <div class="el-pagination-btns">
        <el-button
          type="primary"
          @click="addDialog = true"
          round
          size="mini"
          icon="el-icon-plus"
          >新增</el-button
        >
      </div>
    </div>
    <!-- 添加备件 -->
    <el-dialog
      title="添加备件"
      width="800px"
      :visible.sync="addDialog"
      :close-on-click-modal="false"
      top="0"
      class="dialog-center bg-white"
      :modal-append-to-body="false"
    >
      <div class="dialog_content">
        <el-form
          size="mini"
          ref="addForm"
          :model="params"
          :rules="rules"
          label-position="top"
          class="params-dialog"
        >
          <el-row :gutter="layout.gutter">
            <el-col :span="layout.span">
              <el-form-item label="电池品牌" prop="BattProducer">
                <el-select
                  v-model="params.BattProducer"
                  placeholder="请选择"
                  @change="battProducerChange"
                  :filterable="true"
                >
                  <el-option
                    v-for="item in linkage.battProducers"
                    :key="item"
                    :label="item"
                    :value="item"
                  >
                  </el-option>
                  <el-option label="其他" value="其他"></el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="layout.span">
              <el-form-item label="电池型号" prop="model">
                <el-input v-model="params.model"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="layout.span">
              <el-form-item label="入库日期" prop="date">
                <el-date-picker
                  v-model="params.date"
                  type="date"
                  placeholder="选择日期"
                  value-format="yyyy-MM-dd"
                ></el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="layout.span">
              <el-form-item label="单体数量" prop="count">
                <el-input v-model="params.count"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="layout.span">
              <el-form-item label="包机组" prop="baoji_group_id">
                <el-select
                  v-model="params.baoji_group_id"
                  placeholder="请选择"
                  @change="battProducerChange"
                >
                  <el-option
                    v-for="(item, idx) in baoji_group_list"
                    :key="'baoji_' + idx"
                    :label="item.baoji_group_name"
                    :value="item.baoji_group_id"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
        </el-form>
      </div>
      <div class="" slot="footer">
        <el-button type="primary" @click="add" size="mini">添加</el-button>
        <el-button type="warning" @click="addDialog = false" size="mini"
          >取消</el-button
        >
      </div>
    </el-dialog>
    <!-- 电池品牌 -->
    <el-dialog
      top="0"
      class="dialog-center"
      title="请输入电池品牌"
      :visible.sync="battProducer.dialogVisible"
      width="280px"
      append-to-body
    >
      <el-form size="small">
        <el-form-item label="电池品牌">
          <el-input v-model="battProducer.value"></el-input>
        </el-form-item>
      </el-form>
      <div style="text-align: right">
        <el-button type="primary" size="mini" @click="battProducerOk"
          >确定</el-button
        >
        <el-button size="mini" @click="battProducer.dialogVisible = false"
          >取消</el-button
        >
      </div>
    </el-dialog>
    <!-- 入库 -->
    <el-dialog
      top="0"
      class="dialog-center"
      title="请输入入库数量"
      :visible.sync="putInStorage.show"
      width="280px"
      append-to-body
    >
      <el-form size="small" ref="putIn" :model="putInStorage" :rules="rules_storage">
        <el-form-item label="单体数量" prop="putIn">
          <el-input v-model="putInStorage.putIn"></el-input>
        </el-form-item>
      </el-form>
      <div style="text-align: right">
        <el-button type="primary" size="mini" @click="putInStorageOk"
          >确定</el-button
        >
        <el-button size="mini" @click="putInStorage.show = false"
          >取消</el-button
        >
      </div>
    </el-dialog>
    <!-- 出库 -->
    <el-dialog
      top="0"
      class="dialog-center"
      title="请输入出库数量"
      :visible.sync="putOutStorage.show"
      width="280px"
      append-to-body
    >
      <el-form size="small" ref="putOut" :model="putOutStorage" :rules="rules_storage">
        <el-form-item :label="'单体数量 (当前库存:' + cur_obj.MonCount + ')'" prop="putOut">
          <el-input v-model.number="putOutStorage.putOut"></el-input>
        </el-form-item>
      </el-form>
      <div style="text-align: right">
        <el-button type="primary" size="mini" @click="putOutStorageOk"
          >确定</el-button
        >
        <el-button size="mini" @click="putOutStorage.show = false"
          >取消</el-button
        >
      </div>
    </el-dialog>
    <!-- 出入库纪录 -->
    <el-dialog
      title="备件出入库纪录"
      width="800px"
      :visible.sync="storageHis.show"
      :close-on-click-modal="false"
      top="0"
      class="dialog-center bg-white storage_his"
      :modal-append-to-body="false"
    >
      <div class="dialog_content">
        <el-timeline>
          <el-timeline-item
            v-for="(item, idx) in storageRecord"
            :key="'record_' + idx"
            :timestamp="item.operationTime"
            placement="top">
            <el-card>
              <el-tag effect="dark" :type="item.operationType != -1 ? '' : 'warning'">{{item.operationType != -1 ? '入库' : '出库'}}</el-tag>
              <em>{{item.eventInfo}}</em>
            </el-card>
          </el-timeline-item>
        </el-timeline>
      </div>
      <div class="" slot="footer">
        <el-button type="warning" @click="storageHis.show = false" size="mini"
          >关闭</el-button
        >
      </div>
    </el-dialog>
  </flex-layout>
</template>
<script>
import {
    testVal
} from "@/assets/js/tools";
import { testVal } from "@/assets/js/tools";
// 引入导出表格
import {
    export_json_to_excel
} from '../../assets/js/excel/Export2Excel.js';
import { export_json_to_excel } from "../../assets/js/excel/Export2Excel.js";
import Timeout from '@/assets/js/tools/Timeout';
import Timeout from "@/assets/js/tools/Timeout";
let rules = {
    // 单体节数
    MonCount: {
        pattern: /^[0-9]{1,3}$/,
        regVal: true,
        min: 1,
        max: 240,
        msg: '取值范围1~240'
    }
  // 单体节数
  MonCount: {
    pattern: /^[0-9]{1,3}$/,
    regVal: true,
    min: 1,
    max: 240,
    msg: "取值范围1~240",
  },
};
// TODO
const inventoryTypeList = [
  {
    label: '库存为0',
    id: 0
  },
  {
    label: '库存大于0',
    id: 1
  }
];
export default {
    name: "repairBattery",
    data () {
        return {
            time_start: "2000-01-01",
            time_end: new Date(Date.now()).format('yyyy-MM-dd'),
            BattModel: '',
            batt_Producer: '',
            timer: new Timeout(),
            addDialog: false,
            table: {
                header: [
                    {
                        prop: 'battProducer',
                        label: '电池品牌',
                        minWidth: 200
                    }
                    ,{
                        prop: 'BattModel',
                        label: '电池型号',
                        minWidth: 200
                    }
                    ,{
                        prop: 'battspare_date',
                        label: '入库时间',
                        minWidth: 200
                    }
                    ,{
                        prop: 'MonCount',
                        label: '单体数量',
                        minWidth: 200
                    }
                ],
                data: []
  name: "repairBattery",
  data() {
    let self = this;
    return {
      time_start: "2000-01-01",
      time_end: new Date(Date.now()).format("yyyy-MM-dd"),
      BattModel: "",
      batt_baoji: '',
      mon_count: 1,
      batt_Producer: "",
      timer: new Timeout(),
      addDialog: false,
      table: {
        header: [
          {
            prop: "battProducer",
            label: "电池品牌",
            minWidth: 200,
          },
          {
            prop: "BattModel",
            label: "电池型号",
            minWidth: 200,
          },
          {
            prop: "battspare_date",
            label: "入库时间",
            minWidth: 200,
          },
          {
            prop: "MonCount",
            label: "单体数量",
            minWidth: 200,
          },
        ],
        data: [],
      },
      page: {
        pageCurr: 1,
        pageSize: 10,
        pageAll: 0,
      },
      pickerOptions0: {
        disabledDate: (time) => {
          if (this.time_end) {
            return new Date(time.getTime()) > new Date(this.time_end);
          }
        },
      },
      pickerOptions1: {
        disabledDate: (time) => {
          return (
            new Date(time.getTime() + 24 * 60 * 60 * 1000) <
            new Date(this.time_start)
          );
        },
      },
      params: {
        BattProducer: "",
        model: "",
        date: "",
        count: 0,
        baoji_group_id: ''
      },
      rules: {
        BattProducer: [
          { required: true, message: "电池品牌不能为空", trigger: "blur" },
        ],
        model: [
          { required: true, message: "电池型号不能为空", trigger: "blur" },
        ],
        date: [{ required: true, message: "请选择入库日期", trigger: "blur" }],
        count: [
          { required: true, message: "请输入单体数量", trigger: "blur" },
          {
            validator(rule, value, callback) {
              testVal(rule, value, callback, rules.MonCount);
            },
            page: {
                pageCurr: 1,
                pageSize: 10,
                pageAll: 0
            trigger: ["change", "blur"],
          },
        ],
        baoji_group_id: [
          { required: true, message: "包机组不能为空", trigger: "blur" },
        ]
      },
      rules_storage: {
        putIn: [
          { required: true, message: "入库单体数量不能为空", trigger: "blur" },
          {
            validator(rule, value, callback) {
              testVal(rule, value, callback, rules.MonCount);
            },
            pickerOptions0: {
                disabledDate: (time) => {
                    if (this.time_end) {
                        return new Date(time.getTime()) > new Date(this.time_end);
                    }
                },
            },
            pickerOptions1: {
                disabledDate: (time) => {
                    return (
                        new Date(time.getTime() + 24 * 60 * 60 * 1000) <
                        new Date(this.time_start)
                    );
                },
            },
            params: {
                BattProducer: '',
                model: '',
                date: '',
                count: 0
            trigger: ["change", "blur"],
          },
        ],
        putOut: [
          { required: true, message: "出库单体数量不能为空", trigger: "blur" },
          {
            validator(rule, value, callback) {
              if (value < 1) {
                callback(new Error('出库单体数量须大于0'));
              } else if (value > self.cur_obj.MonCount) {
                callback(new Error('出库单体数量应小于' + self.cur_obj.MonCount));
              } else {
                callback();
              }
            },
            rules: {
                BattProducer: [
                    { required: true, message: '电池品牌不能为空', trigger: 'blur' }
                ],
                model: [
                    { required: true, message: '电池型号不能为空', trigger: 'blur' }
                ],
                date: [
                    { required: true, message: '请选择入库日期', trigger: 'blur' }
                ],
                count: [
                    { required: true, message: '请输入单体数量', trigger: 'blur' },
                    {
                        validator (rule, value, callback) {
                            testVal(rule, value, callback, rules.MonCount);
                        },
                        trigger: ['change', 'blur']
                    }
                ]
            },
            layout: {
                gutter: 16,
                span: 12
            },
            battProducerList: [],
            linkage: {
                battProducer: '',
                battProducers: []
            },
            battProducer: {
                dialogVisible: false,
                value: ''
            },
            trigger: ["change", "blur"],
          },
        ]
      },
      layout: {
        gutter: 16,
        span: 12,
      },
      battProducerList: [],
      linkage: {
        battProducer: "",
        battProducers: [],
      },
      battProducer: {
        dialogVisible: false,
        value: "",
      },
      putInStorage: {
        show: false,
        putIn: ''
      },
      putOutStorage: {
        show: false,
        putOut: ''
      },
      storageHis: {
        show: false
      },
      baoji_group_list: [],
      inventoryTypeList: inventoryTypeList,
      // 当前操作的对象 出库 入库 查纪录
      cur_obj: {
        MonCount: 0
      },
      storageRecord: []
    };
  },
  methods: {
    currentChange(value) {
      this.page.pageCurr = value;
      this.searchData();
    },
    sizeChange(value) {
      this.page.pageCurr = 1;
      this.page.pageSize = value;
      this.searchData();
    },
    // 导出表格
    exportFile() {
      let tHeader = [];
      let filterVal = [];
      let list = this.table.data;
      this.table.header.map((item) => {
        tHeader.push(item.label);
        filterVal.push(item.prop);
      });
      let excelData = this.formatJson(filterVal, list);
      export_json_to_excel(tHeader, excelData, "备件电池信息管理数据");
    },
    formatJson(filterVal, jsonData) {
      return jsonData.map((v) => filterVal.map((j) => v[j]));
    },
    searchData() {
      let param = {
        battspare_time: this.time_start,
        battspare_time1: this.time_end,
        battProducer: this.batt_Producer,
        BattModel: this.BattModel,
        MonCount: this.mon_count,
        page: {
          pageCurr: this.page.pageCurr,
          pageSize: this.page.pageSize,
        },
      };
      // baojiGroupId 所属包机组 选全部则不传此参数
      if (this.batt_baoji) {
        param['baojiGroupId'] = this.batt_baoji;
      }
      this.$apis.dataMager.repairBatts
        .getList(param)
        .then((res) => {
          res = JSON.parse(res.data.result);
          // console.log('list', res);
          let list = [];
          if (res.code) {
            list = res.data;
            this.page.pageAll = list[list.length - 1].page.pageAll;
          }
          list.forEach((v) => {
            v["battspare_date"] = new Date(v.battspare_time).format(
              "yyyy-MM-dd"
            );
          });
          this.table.data = list;
        })
        .catch((err) => {
          console.error(err);
        });
    },
    add() {
      this.$refs.addForm.validate((valid) => {
        if (valid) {
          let params = {
            battProducer: this.params.BattProducer,
            BattModel: this.params.model,
            battspare_time: this.params.date,
            MonCount: this.params.count,
          };
          this.$apis.dataMager.repairBatts
            .add(params)
            .then((res) => {
              res = JSON.parse(res.data.result);
              // console.log(res);
              if (res.code) {
                this.addDialog = false;
              }
              this.$layer.msg(res.msg);
            })
            .catch((err) => {
              console.error(err);
            });
        } else {
          this.$layer.msg("存在校验未通过的数据!");
        }
      });
    },
    methods: {
        currentChange (value) {
            this.page.pageCurr = value;
            this.searchData();
        },
        sizeChange (value) {
            this.page.pageCurr = 1;
            this.page.pageSize = value;
            this.searchData();
        },
        // 导出表格
        exportFile() {
            let tHeader  = [];
            let filterVal = [];
            let list = this.table.data;
            this.table.header.map((item) => {
                tHeader.push(item.label);
                filterVal.push(item.prop);
    searchBattProducer() {
      // 查询后台
      this.$apis.dataMager.battGroupMager
        .searchBattProducer()
        .then((res) => {
          let rs = JSON.parse(res.data.result);
          let data = [];
          if (rs.code == 1) {
            data = rs.data.map((item) => {
              return item.BattProducer;
            });
            let excelData = this.formatJson(filterVal, list);
            export_json_to_excel(tHeader, excelData, "备件电池信息管理数据");
        },
        formatJson(filterVal, jsonData) {
            return jsonData.map((v) => filterVal.map((j) => v[j]));
        },
        searchData () {
            let param = {
                battspare_time: this.time_start,
                battspare_time1: this.time_end,
                battProducer: this.batt_Producer,
                BattModel: this.BattModel,
                page: {
                    pageCurr: this.page.pageCurr,
                    pageSize: this.page.pageSize
                }
            };
            this.$apis.dataMager.repairBatts.getList(param).then((res) => {
                res = JSON.parse(res.data.result);
                // console.log('list', res);
                let list = [];
                if (res.code) {
                    list = res.data;
                    this.page.pageAll = list[list.length - 1].page.pageAll;
                }
                list.forEach((v) => {
                    v['battspare_date'] = new Date(v.battspare_time).format('yyyy-MM-dd');
                });
                this.table.data = list;
            }).catch((err) => {
                console.error(err);
            });
        },
        add () {
            this.$refs.addForm.validate((valid) => {
                if (valid) {
                    let params = {
                        battProducer: this.params.BattProducer,
                        BattModel: this.params.model,
                        battspare_time: this.params.date,
                        MonCount: this.params.count
                    };
                    this.$apis.dataMager.repairBatts.add(params).then((res) => {
                        res = JSON.parse(res.data.result);
                        // console.log(res);
                        if (res.code) {
                            this.addDialog = false;
                        }
                        this.$layer.msg(res.msg);
                    }).catch((err) => {
                        console.error(err);
                    });
                } else {
                    this.$layer.msg('存在校验未通过的数据!');
                }
            });
        },
        searchBattProducer() {
            // 查询后台
            this.$apis.dataMager.battGroupMager.searchBattProducer().then(res => {
                let rs = JSON.parse(res.data.result);
                let data = [];
                if (rs.code == 1) {
                    data = rs.data.map(item => {
                        return item.BattProducer
                    });
                }
                this.linkage.battProducers = data;
                this.battProducerList = data;
            }).catch(error => {
                console.log(error);
            });
        },
        battProducerChange(value) {
            // 点击其他
            if (value == '其他') {
                // 恢复上一次选择的内容
                this.params.BattProducer = this.linkage.battProducer;
                this.battProducer.dialogVisible = true;
                this.battProducer.value = "";
            } else {
                this.linkage.battProducer = value;
            }
        },
        battProducerOk() {
            var value = this.battProducer.value;
            // 获取选择的值
            this.params.BattProducer = value;
            // 记录选择的内容
            this.linkage.battProducer = value;
            if (this.linkage.battProducers.indexOf(value) == -1) {
                this.linkage.battProducers.push(value);
            }
            // 修改面板显示状态为关闭
            this.battProducer.dialogVisible = false;
          }
          this.linkage.battProducers = data;
          this.battProducerList = data;
        })
        .catch((error) => {
          console.log(error);
        });
    },
    battProducerChange(value) {
      // 点击其他
      if (value == "其他") {
        // 恢复上一次选择的内容
        this.params.BattProducer = this.linkage.battProducer;
        this.battProducer.dialogVisible = true;
        this.battProducer.value = "";
      } else {
        this.linkage.battProducer = value;
      }
    },
    battProducerOk() {
      var value = this.battProducer.value;
      // 获取选择的值
      this.params.BattProducer = value;
      // 记录选择的内容
      this.linkage.battProducer = value;
      if (this.linkage.battProducers.indexOf(value) == -1) {
        this.linkage.battProducers.push(value);
      }
      // 修改面板显示状态为关闭
      this.battProducer.dialogVisible = false;
    },
    // 查询当前用户所有包机组列表
    getGroupInfo () {
      this.$apis.userMager.baojiGroup.getGroupInfo().then((res) => {
        res = JSON.parse(res.data.result);
        let data = [];
        if (res.code) {
          // console.log(res);
          // baoji_group_id: 100011
          // baoji_group_name: "默认包机组"
          data = res.data;
        }
    },
    mounted () {
        this.timer.start(() => {
            this.searchData();
            this.timer.open();
        }, 1000);
        // 查询已存在的电池品牌
        this.searchBattProducer();
        console.dir(window.frameElement.contentWindow);
    },
    beforeDestroy () {
        this.timer.stop();
        this.baoji_group_list = data;
      }).catch((err) => {
        console.error(err);
      });
    }
}
    // 入库
    ,putIn (obj) {
      this.cur_obj = obj;
      this.putInStorage.show = true;
      this.$nextTick(() => {
        this.$refs.putIn.resetFields();
      });
    }
    ,putOut (obj) {
      this.cur_obj = obj;
      this.putOutStorage.show = true;
      this.$nextTick(() => {
        this.$refs.putOut.resetFields();
      });
    }
    ,storageHistory (obj) {
      // this.cur_obj = obj;
      this.storageHis.show = true;
      this.$apis.dataMager.repairBatts.getSparetRecord({spareId: obj.num}).then((res) => {
        res = JSON.parse(res.data.result);
        let data = [];
        if (res.code) {
          // console.log(res);
          data = res.data;
          // eventInfo: "执行了备件出库操作,出库数量为:5,备件库存数为:42"
          // operationTime: "2021-10-21 16:32:31"
          // operationType: -1
        }
        this.storageRecord = data;
      }).catch((err) => {
        console.error(err);
      });
    }
    ,putInOrOut (param) {
      this.$apis.dataMager.repairBatts.putInOrOut(param).then((res) => {
        res = JSON.parse(res.data.result);
        if (res.code) {
          // console.log(res, 'res');
          if (param.operationType == 1) {
            this.putInStorage.show = false;
          } else {
            this.putOutStorage.show = false;
          }
        } else {
          this.$message({
            type: 'warning',
            message: res.msg
          });
        }
      }).catch((err) => {
        console.error(err);
      });
    }
    ,putInStorageOk () {
      let param = {
        spareId: this.cur_obj.num,
        operationNum: this.putInStorage.putIn,
        operationType: 1
      };
      this.putInOrOut(param);
    }
    ,putOutStorageOk () {
      // console.log('出库');
      let param = {
        spareId: this.cur_obj.num,
        operationNum: this.putOutStorage.putOut,
        operationType: -1
      };
      this.putInOrOut(param);
    }
  },
  mounted() {
    this.timer.start(() => {
      this.searchData();
      this.timer.open();
    }, 1000);
    // 查询已存在的电池品牌
    this.searchBattProducer();
    this.getGroupInfo();
  },
  beforeDestroy() {
    this.timer.stop();
  },
};
</script>
<style scoped>
.time_box {
    width: 48.6%;
  width: 48.6%;
}
.dialog_content {
    padding: 4px 10px;
  padding: 4px 10px;
}
.bg-white >>> .el-dialog {
    background: #fff;
  background: #fff;
}
.storage_his >>> .dialog_content {
  height: 400px;
  overflow-y: auto;
}
.storage_his >>> .dialog_content .el-tag {
  margin-right: 1em;
}
</style>