heyang 2 jaren geleden
bovenliggende
commit
b1ff3cafbe
25 gewijzigde bestanden met toevoegingen van 6271 en 0 verwijderingen
  1. 1 0
      src/views/gasManage3_0/manage/recognizerManage/recognizerManage.vue
  2. 299 0
      src/views/gasManage_syd/RFIDManage/RFIDManage.vue
  3. 195 0
      src/views/gasManage_syd/gasManage/gasManage.vue
  4. 192 0
      src/views/gasManage_syd/gasManage/gasManageAdd.vue
  5. 183 0
      src/views/gasManage_syd/gasManage/gasManageDetail.vue
  6. 188 0
      src/views/gasManage_syd/gasUseManage/gasUseManage.vue
  7. 296 0
      src/views/gasManage_syd/infoRecord/abnormalRecord.vue
  8. 230 0
      src/views/gasManage_syd/infoRecord/abnormalRecordDetail.vue
  9. 279 0
      src/views/gasManage_syd/infoRecord/alarmRecord.vue
  10. 283 0
      src/views/gasManage_syd/infoRecord/applyRecord.vue
  11. 187 0
      src/views/gasManage_syd/infoRecord/applyRecordDetail.vue
  12. 290 0
      src/views/gasManage_syd/infoRecord/enterRecord.vue
  13. 243 0
      src/views/gasManage_syd/infoRecord/enterRecordDetail.vue
  14. 692 0
      src/views/gasManage_syd/infoRecord/infoRecord.vue
  15. 290 0
      src/views/gasManage_syd/infoRecord/outRecord.vue
  16. 176 0
      src/views/gasManage_syd/infoRecord/outRecordDetail.vue
  17. 317 0
      src/views/gasManage_syd/infoRecord/useRecord.vue
  18. 234 0
      src/views/gasManage_syd/infoRecord/useRecordDetail.vue
  19. 181 0
      src/views/gasManage_syd/useGas/useGas.vue
  20. 408 0
      src/views/gasManage_syd/useGas/useGasAdd.vue
  21. 182 0
      src/views/gasManage_syd/useGas/useGasDetail.vue
  22. 187 0
      src/views/gasManage_syd/useGasCheck/useGasCheck.vue
  23. 204 0
      src/views/gasManage_syd/useGasCheck/useGasCheckDetail.vue
  24. 300 0
      src/views/gasManage_syd/useRecord/useRecord.vue
  25. 234 0
      src/views/gasManage_syd/useRecord/useRecordDetail.vue

+ 1 - 0
src/views/gasManage3_0/manage/recognizerManage/recognizerManage.vue

@@ -357,6 +357,7 @@ export default {
       //this.uniformPower=row.uniformPower.split(',')
       this.antennaNum=[];
       this.uniformPower=[];
+      this.detection=[];
       //天线感应距离和检测类型编辑
       let arr=[]
       this.form.uniformPower=row.uniformPower//天线感应距离和检测类型

+ 299 - 0
src/views/gasManage_syd/RFIDManage/RFIDManage.vue

@@ -0,0 +1,299 @@
+<!--RFID管理-->
+<template>
+  <div class="app-container approval_handle">
+    <div class="approval_handle-page" v-if="pageType == 1">
+      <el-form :model="queryParams" ref="queryForm" style="margin-top:20px;" :inline="true">
+        <el-form-item label="关键字" prop="name">
+          <el-input
+            v-model="queryParams.searchValue"
+            placeholder="标签内码"
+            clearable
+            maxLength="30"
+            size="small"
+          />
+        </el-form-item>
+        <el-form-item label="添加时间" prop="dateRange">
+          <el-date-picker
+            :clearable="false"
+            v-model="dateRange"
+            size="small"
+            style="width: 240px"
+            value-format="yyyy-MM-dd"
+            type="daterange"
+            range-separator="-"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <p class="inquire-button-one" @click="handleQuery">查询</p>
+          <p class="reset-button-one" @click="resetQuery">重置</p>
+        </el-form-item>
+        <el-form-item style="float: right;">
+          <el-col :span="1.5">
+            <el-button
+              type="primary"
+              plain
+              icon="el-icon-plus"
+              size="mini"
+              @click="handleClick('','','add')"
+              v-hasPermi="['airbottle:tag:add']"
+            >新增</el-button>
+          </el-col>
+        </el-form-item>
+      </el-form>
+      <el-table border v-loading="loading" :data="tableData">
+        <el-table-column label="标签码" align="left" prop="tagCode"/>
+        <el-table-column label="识别码" align="left" prop=""/>
+        <el-table-column label="是否绑定" align="left" prop="isBind">
+          <template slot-scope="scope">
+            <span v-if="scope.row.isBind == 1">绑定</span>
+            <span v-if="scope.row.isBind == 0">未绑定</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="添加时间" align="left" prop="createTime"></el-table-column>
+        <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="260">
+          <template slot-scope="scope">
+            <div class="button-box">
+              <p class="table-min-button"
+                 style="margin-right: 10px"
+                 @click="handleClick('',scope.row,'reprint')"
+              >标签码补打</p>
+              <p class="table-min-button"
+                 @click="handleClick('',scope.row,'delete')"
+                 v-hasPermi="['airbottle:tag:remove']"
+              >删除</p>
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination :page-sizes="[20, 30, 40, 50]"
+        :total="total"
+        layout="total, prev, pager, next, sizes, jumper"
+        :page.sync="queryParams.pageNum"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
+      />
+    </div>
+    <!-- -->
+    <el-dialog title="RFID标签录入" :visible.sync="dialogVisible " @close="handleClose" width="500px" append-to-body>
+      <div style="text-align: center">
+        <el-form ref="form" :model="form" label-width="80px">
+          <p class="entering_t">请将RFID标签放置在RIFD读写器上进行识别</p>
+          <img class="entering_img" src="@/assets/ZDimages/gasManage3_0/rfid_icon.png"/>
+          <el-input  ref="clickPosition" style="width: 320px;margin: 20px 0;" v-model="form.tagCode" placeholder="rfid标签" />
+        </el-form>
+        <div slot="footer" class="dialog-footer" >
+          <el-button style="width: 120px" type="primary" @click="printQRcode()">打印标签码</el-button>
+        </div>
+<!--        <vue-qr id="form1"  style="display: block;height:200px;width:200px;cursor:pointer;margin:0 auto;" text="12123123123123" :size="200"></vue-qr>-->
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  qualificationApplyAdd,
+  qualificationApplyList,
+  RFIDtagAdd,
+  RFIDtagDelete,
+  RFIDtagList
+} from '@/api/gasManage3_0/gasManage'
+import { getToken } from "@/utils/auth";
+import { getLodop } from "@/utils/LodopFuncs";
+import vueQr from 'vue-qr'
+import { delGroup } from '@/api/laboratory/group'
+export default {
+  name: "Approval",
+  components: {
+    vueQr
+  },
+  data() {
+    return {
+      dialogVisible :false,
+      //页面状态
+      pageType:1,
+      loading:false,
+      headers: {
+        Authorization: "Bearer " + getToken()
+      },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize:20,
+        searchValue:'',
+      },
+      form:{
+        tagCode:'',
+      },
+      total:0,
+      tableData:[],
+      dateRange:[],
+    };
+
+
+  },
+  methods: {
+    //监听弹窗关闭
+    handleClose(){
+      this.getList()
+    },
+    //新增的打印
+    CreateOneFormPage() {
+      LODOP = getLodop()
+
+      LODOP.PRINT_INIT('') //打印初始化
+
+      LODOP.SET_PRINT_STYLE('Bold', 1) //设置对象风格
+      LODOP.ADD_PRINT_TEXT(80,20,300,200,this.form.tagCode,) //增加纯文本项
+      LODOP.SET_PRINT_STYLEA(0,'FontSize', 16) //设置对象风格
+      LODOP.SET_PRINT_PAGESIZE(1, 500, 300, '') //设定纸张大小
+      LODOP.SET_PRINT_MODE('PRINT_PAGE_PERCENT', '60%')//设置缩放
+      LODOP.SET_PREVIEW_WINDOW(2, 2, 0, 0, 0, '')//设置窗口
+
+    },
+
+      handleClick(index,row,doType){
+        let _this=this;
+        if(doType=='add'){//添加
+          _this.form.tagCode='';
+         _this.dialogVisible=true;
+         this.$nextTick(()=>{
+           this.$refs.clickPosition.focus()
+         })
+        }else if(doType=='reprint'){//补打
+          this.$confirm('是否确认补打标签?', '提示', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning'
+          }).then(() => {
+            _this.form.tagCode=row.tagCode
+            setTimeout(function () {
+              _this.CreateOneFormPage()
+              LODOP.PREVIEW() //打印预览
+            },100)
+          }).catch(() => {});
+        }else if(doType=='delete'){//删除
+          this.$confirm('是否确认删除当前数据项?', "警告", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(function() {
+            RFIDtagDelete(row.id).then( response => {
+              if(response.code==200){
+                _this.getList();
+                _this.msgSuccess("删除成功");
+              }
+            });
+          }).then(() => {
+
+          }).catch(() => {});
+        }else if(doType=='back'){//重新申请
+          _this.pageType=1;
+        }
+      },
+      //打印二维码
+      printQRcode(){
+        let _this=this;
+
+        if(_this.form.tagCode==''){
+          _this.msgSuccess("请先录入RFID标签!");
+          return
+        }
+        _this.submitForm();
+        setTimeout(function () {
+          _this.CreateOneFormPage()
+          LODOP.PREVIEW() //打印预览
+        },100)
+
+      },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.queryParams.searchValue = "";
+      this.dateRange=[];
+      this.queryParams.startTime=null;
+      this.queryParams.endTime=null
+      this.handleQuery();
+    },
+    getList(){
+        let _this=this;
+        if(this.dateRange&&this.dateRange.length>0) {
+          this.queryParams.startTime=this.dateRange[0]
+          this.queryParams.endTime=this.dateRange[1]
+        } else {
+          this.queryParams.startTime=null;
+          this.queryParams.endTime=null
+        }
+        RFIDtagList(_this.queryParams).then( response => {
+          let res=response.rows;
+          _this.tableData=res;
+          _this.total=response.total;
+        });
+
+      },
+      submitForm(){
+        let _this = this;
+        RFIDtagAdd(_this.form).then(res => {
+          this.$message({
+            type: 'success',
+            message: '操作成功!',
+            duration:2000,
+            onClose:function(){
+              _this.backPage();
+              _this.loading = false;
+            }
+          });
+        });
+      },
+
+
+  },
+  mounted() {
+    this.getList();
+  }
+};
+</script>
+
+<style scoped lang="scss">
+  .approval_handle {
+    display: flex!important;
+    flex-direction: column;
+    .approval_handle-page{
+      flex:1;
+      display: flex!important;
+      flex-direction: column;
+      box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+      padding:20px 20px 20px!important;
+      border-radius:10px;
+
+      .button-box{
+        width:200px;
+        display: flex;
+      }
+    }
+    .entering_t{
+      font-size: 16px;
+      font-family: Microsoft YaHei;
+      font-weight: 400;
+      color: #333333;
+      line-height: 16px;
+      margin: 36px auto 25px;
+      text-align: center;
+
+    }
+    .entering_img{
+      width: 288px;
+      height: 140px;
+    }
+    .entering_input{
+      width: 288px;
+    }
+
+  }
+</style>

+ 195 - 0
src/views/gasManage_syd/gasManage/gasManage.vue

@@ -0,0 +1,195 @@
+<!--气瓶管理-->
+<template>
+  <div class="app-container approval_handle">
+    <div class="approval_handle-page" v-if="pageType == 1">
+      <el-form :model="queryParams" ref="queryForm" style="margin-top:20px;" :inline="true">
+        <el-form-item label="关键字" prop="name">
+          <el-input
+            v-model="queryParams.searchValue"
+            placeholder="标签码/气瓶编号"
+            clearable
+            maxLength="30"
+            size="small"
+          />
+        </el-form-item>
+        <el-form-item label="最后使用时间" prop="dateRange">
+          <el-date-picker
+            :clearable="false"
+            v-model="dateRange"
+            size="small"
+            style="width: 240px"
+            value-format="yyyy-MM-dd"
+            type="daterange"
+            range-separator="-"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <p class="inquire-button-one" @click="handleQuery">查询</p>
+          <p class="reset-button-one" @click="resetQuery">重置</p>
+        </el-form-item>
+        <el-form-item style="float: right;">
+          <el-col :span="1.5">
+            <el-button
+              type="primary"
+              plain
+              icon="el-icon-plus"
+              size="mini"
+              @click="handleClick('','','add')"
+              v-hasPermi="['airbottle:flowDetail:add']"
+            >气瓶入库</el-button>
+          </el-col>
+        </el-form-item>
+      </el-form>
+      <el-table border v-loading="loading" :data="tableData">
+        <el-table-column label="标签码" align="left" prop="location"/>
+        <el-table-column label="气瓶编号" align="left" prop="createTime"></el-table-column>
+        <el-table-column label="气体名称" align="left" prop="createTime"></el-table-column>
+        <el-table-column label="气瓶规格" align="left" prop="createTime"></el-table-column>
+        <el-table-column label="使用人数" align="left" prop="createTime"></el-table-column>
+        <el-table-column label="当前气压" align="left" prop="createTime"></el-table-column>
+        <el-table-column label="最后使用时间" align="left" prop="createTime"></el-table-column>
+        <el-table-column label="状态" align="left" prop="createTime"></el-table-column>
+        <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="160">
+          <template slot-scope="scope">
+            <div class="button-box">
+              <p class="table-min-button"
+                 v-hasPermi="['airbottle:taskManage:query']"
+                 @click="handleClick('',scope.row,'detail')"
+              >查看</p>
+              <p class="table-min-button"
+                 v-hasPermi="['airbottle:taskManage:query']"
+                 @click="handleClick('',scope.row,'out')"
+              >出库</p>
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination :page-sizes="[20, 30, 40, 50]"
+        :total="total"
+        layout="total, prev, pager, next, sizes, jumper"
+        :page.sync="queryParams.pageNum"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
+      />
+    </div>
+    <!--新增页面-->
+    <add-page v-if="pageType==2" :pageData="pageData"></add-page>
+     <!--详情页面-->
+    <detail-page v-if="pageType==3" :pageData2="pageData2"></detail-page>
+  </div>
+</template>
+
+<script>
+import { gasApplyList, } from '@/api/gasManage3_0/gasManage'
+import { getToken } from "@/utils/auth";
+import addPage from "./gasManageAdd.vue"
+import detailPage from "./gasManageDetail.vue"
+export default {
+  name: "Approval",
+  components: {
+    addPage,
+    detailPage
+  },
+  data() {
+    return {
+      //页面状态
+      pageType:1,
+      loading:false,
+      headers: {
+        Authorization: "Bearer " + getToken()
+      },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize:20,
+        remark:'login',
+        searchValue:'',
+        startTime:'',
+        endTime:'',
+      },
+      total:0,
+      tableData:[{}],
+      dateRange:[],
+      pageData:{},
+      pageData2:{},
+    };
+
+
+  },
+  methods: {
+      handleClick(index,row,doType){
+        let _this=this;
+        if(doType=='add'){//新增
+          _this.pageType=2;
+        }else if(doType=='detail'){//查看
+          _this.pageData2.id=row.id;
+          _this.pageType=3;
+        }else if(doType=='out'){//出库
+          this.$confirm('是否确认出库?', '提示', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning'
+          }).then(() => {
+
+          }).catch(() => {});
+        }else if(doType=='back'){//返回
+          _this.pageType=1;
+        }
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.queryParams.searchValue = "";
+        this.dateRange=[];
+        this.queryParams.startTime=null;
+        this.queryParams.endTime=null
+        this.handleQuery();
+      },
+      getList(){
+        let _this=this;
+        if(this.dateRange&&this.dateRange.length>0) {
+          this.queryParams.startTime=this.dateRange[0]
+          this.queryParams.endTime=this.dateRange[1]
+        } else {
+          this.queryParams.startTime=null;
+          this.queryParams.endTime=null
+        }
+        gasApplyList(_this.queryParams).then( response => {
+          let res=response.rows;
+          _this.tableData=res;
+          _this.total=response.total;
+        });
+      },
+  },
+  mounted() {
+   // this.getList()
+  }
+};
+</script>
+
+<style scoped lang="scss">
+  .approval_handle {
+    display: flex!important;
+    flex-direction: column;
+    .approval_handle-page{
+      flex:1;
+      display: flex!important;
+      flex-direction: column;
+      box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+      padding:20px 20px 20px!important;
+      border-radius:10px;
+
+      .button-box{
+        width:200px;
+        display: flex;
+      }
+    }
+
+  }
+</style>

+ 192 - 0
src/views/gasManage_syd/gasManage/gasManageAdd.vue

@@ -0,0 +1,192 @@
+<!--资格申请-添加-->
+<template>
+  <div class="addPage">
+    <div class="addPage_title">
+      <p>气瓶入库</p>
+      <p  class="reset-button-one" @click="backPage">返回</p>
+    </div>
+    <div class="addPage_b">
+      <el-form class="addPage_b_b" :model="form" ref="form" :rules="rules" label-position="right" label-width="100px">
+        <el-form-item label="气表压力" prop="phone" >
+          <el-input  style="width: 300px" v-model="form.phone"  placeholder="请输入气表压力,精确到小数点后一位" maxlength="50" />
+        </el-form-item>
+        <el-form-item label="检验有效期" prop="dateRange" >
+          <el-date-picker
+            :clearable="false"
+            v-model="form.dateRange"
+            size="small"
+            style="width: 300px"
+            value-format="yyyy-MM-dd"
+            type="daterange"
+            range-separator="-"
+            :picker-options="pickerOptions0"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item label="电子标签" prop="status">
+          <el-select v-model="form.status" clearable placeholder="请选择电子标签" style="width: 300px">
+            <el-option
+              v-for="item in optionsListTwo"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="有无手轮" prop="type">
+          <el-radio-group v-model="form.type">
+            <el-radio :label="1">有</el-radio>
+            <el-radio :label="2">无</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="是否固定" prop="type">
+          <el-radio-group v-model="form.type">
+            <el-radio :label="1">是</el-radio>
+            <el-radio :label="2">否</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="气瓶状态标牌" prop="type">
+          <el-radio-group v-model="form.type">
+            <el-radio :label="1">有</el-radio>
+            <el-radio :label="2">无</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="验收备注" prop="phone" >
+          <el-input type="textarea" style="width: 300px" v-model="form.phone"  placeholder="请输入验收备注" maxlength="200" />
+        </el-form-item>
+        <p class="inquire-button-one" style="width:300px;margin-left: 100px" @click="handleClick('','form','next')">提交申请</p>
+      </el-form>
+
+    </div>
+  </div>
+</template>
+<script>
+
+import { getToken } from "@/utils/auth";
+import { gasApplyDetail, } from '@/api/gasManage3_0/gasManage'
+let Base64 = require('js-base64').Base64;
+export default {
+  name: "addPage",
+  props:{
+    pageData: {},
+  },
+  data() {
+    // 时间的校验
+    const validateTime = (rule, value, callback) => {
+      console.log(value)
+      if(value && value.length>0){
+        this.form.startTime=value[0]
+        this.form.endTime=value[1]
+        callback();
+      }else{
+        this.form.startTime=null;
+        this.form.endTime=null
+        callback(new Error('请选择使用期限'))
+      }
+    }
+    return {
+      pageType:1,
+      uploadImgUrl: window.location.href.split('://')[0]+'://' + process.env.VUE_APP_BASE_API + "/file/upload", // 上传的图片服务器地址
+      headers: {
+        Authorization: "Bearer " + getToken(),
+      },
+      // 设置只能选择当前日期及之后的日期
+      pickerOptions0: {
+        disabledDate(time) {
+          return time.getTime() < Date.now() - 8.64e7;//如果没有后面的-8.64e7就是不可以选择今天的
+        }
+      },
+
+      loading:false,
+      form:{
+      },
+
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize:20,
+      },
+      total:0,
+      tableData:[{
+        num:0,
+      }],
+      optionsListTwo:[],
+      // 表单校验
+      rules: {
+
+        applyCertificate: [
+          { required: true, message: "请上传用气申请表", trigger: "change" }
+        ],
+        dateRange: [
+          {required: true, validator: validateTime, trigger: 'blur' },
+        ],
+      },
+    };
+  },
+  created() {
+
+  },
+  methods: {
+
+    /* 详情 */
+    getInfo(id){
+      let _this=this;
+      gasApplyDetail(id).then( response => {
+        let res=response.data;
+        if(response.code==200){
+          _this.form=res;
+        }
+      });
+
+    },
+    //返回
+    backPage(){
+      this.$parent.handleClick('','','back');
+    },
+
+  },
+  mounted() {
+
+    //this.getInfo(this.pageData2.id);
+  }
+
+};
+</script>
+
+<style scoped lang="scss">
+.addPage {
+  flex:1;
+  display: flex!important;
+  flex-direction: column;
+  box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+  border-radius:10px;
+  /*顶部*/
+  .addPage_title{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    border-bottom: 1px solid #E0E0E0;
+    padding-top:20px;
+    p:nth-child(1){
+      flex: 1;
+      line-height:60px;
+      color: #0045AF;
+      font-size:18px;
+      margin:0 12px 0 20px;
+    }
+    p:nth-child(2){
+      margin-right:20px;
+    }
+    p:nth-child(3){
+      margin-right:20px;
+    }
+  }
+  /*入库*/
+  .addPage_b{
+    display: flex;
+    justify-content: center;
+    padding-top: 60px;
+  }
+}
+</style>

+ 183 - 0
src/views/gasManage_syd/gasManage/gasManageDetail.vue

@@ -0,0 +1,183 @@
+<!--气瓶管理-详情-->
+<template>
+  <div class="addPage">
+    <div class="addPage_title">
+      <p>气瓶详情</p>
+      <p  class="reset-button-one" @click="backPage">返回</p>
+    </div>
+     <!--基本信息-->
+    <div class="info" v-if="form.qpTask">
+      <li><i>标签码:</i><i>{{form.qpTask.userName}}</i></li>
+      <li><i>气瓶编号:</i><i>{{form.qpTask.userName}}</i></li>
+      <li><i>气体名称:</i><i>{{form.qpTask.phone}}</i></li>
+      <li><i>气瓶规格:</i><i>{{form.qpTask.location}}</i></li>
+      <li><i>最低气压值:</i><i>{{form.qpTask.createTime}}</i></li>
+      <li><i>气体组分:</i><i>{{form.qpTask.createTime}}</i></li>
+    </div>
+    <div class="addPage_b">
+      <!--审核记录-->
+      <div  class="addPage_b_t">
+        <div class="addPage_b_t_title">使用人</div>
+        <el-table border v-loading="loading" :data="form.detailList">
+          <el-table-column label="实验人" align="left" prop="airName"/>
+          <el-table-column label="联系方式" align="left" prop="configName"></el-table-column>
+          <el-table-column label="使用次数" align="left" prop="companyName"></el-table-column>
+          <el-table-column label="总使用量" align="left" prop="airConstituents">
+            <template slot-scope="scope">
+              <span>1Mpa</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="最后使用时间" align="left" prop="bottleNumber"></el-table-column>
+        </el-table>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+
+import { getToken } from "@/utils/auth";
+import { gasApplyDetail, } from '@/api/gasManage3_0/gasManage'
+let Base64 = require('js-base64').Base64;
+export default {
+  name: "addPage",
+  props:{
+    pageData2: {},
+  },
+  data() {
+    return {
+      pageType:1,
+      uploadImgUrl: window.location.href.split('://')[0]+'://' + process.env.VUE_APP_BASE_API + "/file/upload", // 上传的图片服务器地址
+      headers: {
+        Authorization: "Bearer " + getToken(),
+      },
+
+      loading:false,
+      form:{
+      },
+
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize:20,
+      },
+      total:0,
+      tableData:[{
+        num:0,
+      }],
+    };
+  },
+  created() {
+
+  },
+  methods: {
+
+    /* 详情 */
+    getInfo(id){
+      let _this=this;
+      gasApplyDetail(id).then( response => {
+        let res=response.data;
+        if(response.code==200){
+          _this.form=res;
+        }
+      });
+
+    },
+    //返回
+    backPage(){
+      this.$parent.handleClick('','','back');
+    },
+
+  },
+  mounted() {
+    console.log(this.pageData2.id)
+    //this.getInfo(this.pageData2.id);
+  }
+
+};
+</script>
+
+<style scoped lang="scss">
+.addPage {
+  flex:1;
+  display: flex!important;
+  flex-direction: column;
+  box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+  border-radius:10px;
+  /*顶部*/
+  .addPage_title{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    border-bottom: 1px solid #E0E0E0;
+    padding-top:20px;
+    p:nth-child(1){
+      flex: 1;
+      line-height:60px;
+      color: #0045AF;
+      font-size:18px;
+      margin:0 12px 0 20px;
+    }
+    p:nth-child(2){
+      margin-right:20px;
+    }
+    p:nth-child(3){
+      margin-right:20px;
+    }
+  }
+  /*基本信息*/
+  .info{
+    display: flex;
+    justify-content: flex-start;
+    flex-wrap: wrap;
+    align-items: center;
+    >li{
+      list-style-type: none;
+      margin: 20px;
+      >i{
+        font-style: normal;
+      }
+      >i:nth-of-type(1){
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #999999;
+        line-height: 16px;
+      }
+      >i:nth-of-type(2){
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #333333;
+        line-height: 16px;
+      }
+    }
+    .look_img{
+      >i:nth-of-type(2){
+        color: #0183FA;
+      }
+    }
+  }
+  .addPage_b{
+    flex:1;
+    display: flex!important;
+    flex-direction: column;
+    /*气瓶信息*/
+    .addPage_b_t{
+      flex:1;
+      display: flex!important;
+      flex-direction: column;
+      padding: 0 20px;
+      box-sizing: border-box;
+      .addPage_b_t_title{
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: bold;
+        color: #333333;
+        line-height: 16px;
+        margin: 40px 0 30px 0;
+      }
+    }
+  }
+
+}
+</style>

+ 188 - 0
src/views/gasManage_syd/gasUseManage/gasUseManage.vue

@@ -0,0 +1,188 @@
+<!--气瓶使用-->
+<template>
+  <div class="app-container approval_handle">
+    <div class="approval_handle-page">
+      <template>
+        <el-tabs v-model="activeName"  @tab-click="handleTabClick">
+          <el-tab-pane label="领用气瓶" name="1"></el-tab-pane>
+          <el-tab-pane label="归还气瓶" name="2"></el-tab-pane>
+        </el-tabs>
+      </template>
+      <el-table border v-loading="loading" :data="tableData">
+        <el-table-column label="标签码" align="left" prop="location"/>
+        <el-table-column label="气瓶编号" align="left" prop="createTime"></el-table-column>
+        <el-table-column label="气体名称" align="left" prop="createTime"></el-table-column>
+        <el-table-column label="气瓶规格" align="left" prop="createTime"></el-table-column>
+        <el-table-column label="当前气压" align="left" prop="createTime"></el-table-column>
+        <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="120">
+          <template slot-scope="scope">
+            <div class="button-box">
+              <p class="table-min-button"
+                 v-if="activeName==1"
+                 v-hasPermi="['airbottle:taskManage:query']"
+                 @click="handleClick('',scope.row,'receive')"
+              >领用</p>
+              <p class="table-min-button"
+                 v-if="activeName==2"
+                 v-hasPermi="['airbottle:taskManage:query']"
+                 @click="handleClick('',scope.row,'return')"
+              >归还</p>
+            </div>
+
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination :page-sizes="[20, 30, 40, 50]"
+                  :total="total"
+                  layout="total, prev, pager, next, sizes, jumper"
+                  :page.sync="queryParams.pageNum"
+                  :limit.sync="queryParams.pageSize"
+                  @pagination="getList"
+      />
+    </div>
+    <!--    弹窗-->
+    <el-dialog :title=dialogTitle :visible.sync="dialogVisible" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <div style="margin-bottom: 20px">您在领用气瓶前需要确认气表压力与系统显示的压力值是否一致,如不一致则需要在下方填写实际气压值。</div>
+        <el-input v-model="form.txt" placeholder="请输入气表实际压力,精确到小数点后一位" />
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="cancel">取消</el-button>
+        <el-button type="primary" @click="submitForm">领用</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { gasApplyList, } from '@/api/gasManage3_0/gasManage'
+import { getToken } from "@/utils/auth";
+import { mangerVoice } from '@/api/laboratory/subject'
+export default {
+  name: "Approval",
+  data() {
+    return {
+      activeName:'1',
+      dialogTitle:'领用气瓶提示',
+      dialogVisible:false,
+      //页面状态
+      pageType:1,
+      loading:false,
+      headers: {
+        Authorization: "Bearer " + getToken()
+      },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize:20,
+        remark:'login',
+        searchValue:'',
+        startTime:'',
+        endTime:'',
+      },
+      total:0,
+      tableData:[{}],
+      dateRange:[],
+      pageData2:{},
+      form:{
+
+      },
+      rules:{
+        txt:[
+          {required: true, message: '请输入播放文字', trigger: 'blur'},
+          { required: true, message: "请输入播放文字", validator: this.spaceJudgment, trigger: "blur" }
+        ],
+      },
+    };
+
+
+  },
+  methods: {
+      handleTabClick(tab, event) {
+        console.log(tab, event);
+      },
+      handleClick(index,row,doType){
+        let _this=this;
+        if(doType=='receive'){//领用
+          this.dialogTitle='领用气瓶提示';
+          this.dialogVisible=true;
+
+        }else if(doType=='return'){//归还
+          this.$confirm('请确认已将气瓶放置在气瓶存放点,您是否确认归还?', '提示', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning'
+          }).then(() => {
+
+          }).catch(() => {});
+        }
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.queryParams.searchValue = "";
+        this.dateRange=[];
+        this.queryParams.startTime=null;
+        this.queryParams.endTime=null
+        this.handleQuery();
+      },
+      // 取消按钮
+      cancel() {
+        this.form = {};
+        this.dialogVisible = false;
+      },
+      /*提交*/
+      submitForm(){
+        this.$refs["form"].validate(valid => {
+          if (valid) {
+            let id = this.subId;
+
+          }
+        });
+      },
+      getList(){
+        let _this=this;
+        if(this.dateRange&&this.dateRange.length>0) {
+          this.queryParams.startTime=this.dateRange[0]
+          this.queryParams.endTime=this.dateRange[1]
+        } else {
+          this.queryParams.startTime=null;
+          this.queryParams.endTime=null
+        }
+        gasApplyList(_this.queryParams).then( response => {
+          let res=response.rows;
+          //_this.tableData=res;
+          _this.total=response.total;
+        });
+      },
+  },
+  mounted() {
+    this.getList()
+  }
+};
+</script>
+
+<style scoped lang="scss">
+  .approval_handle {
+    display: flex!important;
+    flex-direction: column;
+    .approval_handle-page{
+      flex:1;
+      display: flex!important;
+      flex-direction: column;
+      box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+      padding:20px 20px 20px!important;
+      border-radius:10px;
+
+      .button-box{
+        width:200px;
+        display: flex;
+      }
+    }
+
+  }
+</style>

+ 296 - 0
src/views/gasManage_syd/infoRecord/abnormalRecord.vue

@@ -0,0 +1,296 @@
+<!--异常记录-->
+<template>
+  <div class="apply">
+    <div class="apply_page" v-if="pageType == 1">
+      <el-form :model="queryParams" ref="queryForm" style="margin-top:20px;" :inline="true">
+        <el-form-item label="关键字" prop="name">
+          <el-input
+            v-model="queryParams.searchValue"
+            placeholder="操作人/联系方式/实验地点"
+            clearable
+            maxLength="30"
+            size="small"
+          />
+        </el-form-item>
+        <el-form-item label="使用时间" prop="dateRange">
+          <el-date-picker
+            :clearable="false"
+            v-model="dateRange"
+            size="small"
+            style="width: 240px"
+            value-format="yyyy-MM-dd"
+            type="daterange"
+            range-separator="-"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <p class="inquire-button-one" @click="handleQuery">查询</p>
+          <p class="reset-button-one" @click="resetQuery">重置</p>
+        </el-form-item>
+        <el-form-item label="" prop="title" style="float: right">
+          <el-dropdown @command="exportButton" style="float: left"   v-hasPermi="['airbottle:bottle:error:export']">
+            <div class="form-dropdown-box">
+              <img src="@/assets/ZDimages/personnelManagement/icon_jzgxx_sc.png">
+              <p>导出</p>
+              <img src="@/assets/ZDimages/personnelManagement/icon_jzggl_xljt.png">
+            </div>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item style="border-bottom:1px solid #E0E0E0;margin:0 10px;color:#333;" :command="{command:1}">导出全部数据</el-dropdown-item>
+              <el-dropdown-item style="margin:0 10px;color:#666;" :command="{command:2}">导出选中数据</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+          <p class="reset-button-one" style="margin-left: 12px;" @click="backPage">返回</p>
+        </el-form-item>
+      </el-form>
+      <el-table border v-loading="loading" :data="tableData" @selection-change="handleSelectionChange" ref="multipleTable" :row-key="getRowKeys">
+        <el-table-column type="selection" width="50" align="center"/>
+        <el-table-column label="操作人" align="left" prop="createBy"/>
+        <el-table-column label="联系方式" align="left" prop="phone"></el-table-column>
+        <el-table-column label="标签码" align="left" prop=""></el-table-column>
+        <el-table-column label="气瓶编号" align="left" prop=""></el-table-column>
+        <el-table-column label="气体名称" align="left" prop="airName"></el-table-column>
+        <el-table-column label="气瓶规格" align="left" prop=""></el-table-column>
+        <el-table-column label="修改前气压" align="left" prop="beforeEdit">
+          <template slot-scope="scope">
+            <span >{{scope.row.beforeEdit}}Mpa</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="修改后气压" align="left" prop="afterEdit">
+          <template slot-scope="scope">
+            <span >{{scope.row.afterEdit}}Mpa</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作时间" align="left" prop="opTime"></el-table-column>
+        <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="120">
+          <template slot-scope="scope">
+            <div class="button-box">
+              <p class="table-min-button"
+                 v-hasPermi="['airbottle:bottle:error:query']"
+                 @click="handleClick('',scope.row,'detail')"
+              >查看</p>
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div style="display: flex;height:32px;margin-top:15px;">
+        <!--<p style="flex:4;"></p>-->
+        <p style="text-align: left;margin:0;line-height:32px;margin-right:20px;font-size:14px;color:#999;">
+          <i class="el-icon-warning" style="color:#0183FA;"></i>
+          已选择 {{selectedNum}} 项
+        </p>
+        <div style="flex:5;">
+          <pagination :page-sizes="[20, 30, 40, 50]"
+            v-show="total>0"
+            :total="total"
+            style="margin:0;"
+            :page.sync="queryParams.pageNum"
+            :limit.sync="queryParams.pageSize"
+            @pagination="getList"
+          />
+        </div>
+      </div>
+    </div>
+     <!--详情页面-->
+    <detail-page v-if="pageType==2" :pageData2="pageData2"></detail-page>
+  </div>
+</template>
+<script>
+import { abnormalRecordList, useRecordList } from '@/api/gasManage3_0/gasManage'
+import { getToken } from "@/utils/auth";
+import detailPage from "./abnormalRecordDetail.vue"
+export default {
+  name: "Approval",
+  components: {
+    detailPage
+  },
+  data() {
+    return {
+      //页面状态
+      pageType:1,
+      loading:false,
+      headers: {
+        Authorization: "Bearer " + getToken()
+      },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize:20,
+        name:'',
+      },
+      total:0,
+      tableData:[],
+      dateRange:[],
+      pageData2:{},
+      //导出
+      //表格扩展选择器---需要在@selection-change绑定的方法内监控selection数组长度
+      selectedNum:0,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+    };
+
+
+  },
+  methods: {
+    handleClick(index,row,doType){
+      let _this=this;
+      if(doType=='detail'){//查看
+        _this.pageData2.item=row;
+        _this.pageType=2;
+      }else if(doType=='back'){//返回
+        _this.pageType=1;
+      }else if(doType=='export'){//导出
+        this.download('airbottle/bottle/error/export', {
+          ...this.queryParams
+        }, `异常记录导出.xlsx`)
+      }
+
+    },
+    /** 当前时间 */
+    getCurrentTime () {
+      const yy = new Date().getFullYear()
+      const mm = new Date().getMonth() + 1
+      const dd = new Date().getDate()
+      const hh = new Date().getHours()
+      const mf = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes() : new Date().getMinutes()
+      const ss = new Date().getSeconds() < 10 ? '0' + new Date().getSeconds() : new Date().getSeconds()
+      return yy + '-' + mm + '-' + dd
+    },
+    /** 导出按钮操作 */
+    exportButton(item) {
+      let self = this;
+      let currentDate = this.getCurrentTime()
+      if(item.command == 1){
+        self.$confirm(`确认导出全部数据?`, "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(async () => {
+          self.download('/airbottle/bottle/error/export/', {...self.queryParamsData}, '异常记录导出-'+currentDate+'.xlsx')
+        }).catch(() => {})
+      }else if(item.command == 2){
+        if(self.ids.length>0) {
+          self.$confirm(`确认导出选中数据?`, "提示", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(async () => {
+            let ids = self.ids.join(',');
+            let obj = {
+              ids :ids
+            }
+            console.log("obj",obj)
+            self.download(`/airbottle/bottle/error/export/`,obj, '异常记录导出-'+currentDate+'.xlsx')
+          }).catch(() => {})
+        }else {
+          this.msgError('请选择要导出的数据')
+        }
+      }
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.selectedNum = selection.length;
+      this.ids = selection.map(item => item.id);
+      this.single = selection.length != 1;
+      this.multiple = !selection.length;
+    },
+    /*===记录勾选数据===
+      需要再el-table 添加  :row-key="getRowKeys"
+      需要在selection 添加 :reserve-selection="true"
+    */
+    getRowKeys(row) {
+      return row.id
+    },
+      //返回
+      backPage(){
+        this.$parent.handleClick('','','back');
+        this.$parent.outStatistics()
+        this.$parent.gasApplyStatistics()
+        this.$parent.useGasStatistics()
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.queryParams.searchValue = "";
+      this.dateRange=[];
+      this.queryParams.startTime=null;
+      this.queryParams.endTime=null
+      this.handleQuery();
+    },
+    getList(){
+      let _this=this;
+      if(this.dateRange&&this.dateRange.length>0) {
+        this.queryParams.startTime=this.dateRange[0]
+        this.queryParams.endTime=this.dateRange[1]
+      } else {
+        this.queryParams.startTime=null;
+        this.queryParams.endTime=null
+      }
+      abnormalRecordList(_this.queryParams).then( response => {
+        let res=response.rows;
+        _this.tableData=res;
+        _this.total=response.total;
+      });
+    },
+  },
+  mounted() {
+    this.getList();
+  }
+};
+</script>
+
+<style scoped lang="scss">
+  /*导出按钮样式*/
+  .form-dropdown-box{
+    display: flex;
+    margin:0;
+    padding:0 10px;
+    cursor: pointer;
+    height:40px;
+    img:nth-child(1){
+      width:16px;
+      height:16px;
+      margin-top:12px;
+    }
+    p{
+      width:47px;
+      text-align: center;
+      font-size:14px;
+      margin:0;
+      line-height:40px;
+    }
+    img:nth-child(3){
+      width:10px;
+      height:6px;
+      margin-top:17px;
+    }
+  }
+  .apply {
+    flex:1;
+    display: flex!important;
+    flex-direction: column;
+    .apply_page{
+      flex:1;
+      display: flex!important;
+      flex-direction: column;
+      box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+      padding:20px 20px 20px!important;
+      border-radius:10px;
+
+      .button-box{
+        width:200px;
+        display: flex;
+      }
+    }
+
+  }
+</style>

+ 230 - 0
src/views/gasManage_syd/infoRecord/abnormalRecordDetail.vue

@@ -0,0 +1,230 @@
+<!--异常记录-详情-->
+<template>
+  <div class="addPage">
+    <div class="addPage_title">
+      <p>查看气瓶</p>
+      <p  class="reset-button-one" @click="backPage">返回</p>
+    </div>
+    <div class="small_title">气瓶信息</div>
+     <!--基本信息-->
+    <div class="info" v-if="form">
+      <li><i>标签码:</i><i></i></li>
+      <li><i>气瓶编号:</i><i>{{form.airNumber}}</i></li>
+      <li><i>气体名称:</i><i>{{form.airName}}</i></li>
+      <li><i>气瓶规格:</i><i></i></li>
+      <li><i>最低气压值:</i><i></i></li>
+      <li><i>气体组分:</i><i>{{form.airConstituents}}</i></li>
+    </div>
+    <div class="small_title">异常信息</div>
+    <div class="info">
+      <li><i>操作人:</i><i>{{form.createBy}}</i></li>
+      <li><i>联系方式:</i><i>{{form.phone}}</i></li>
+      <li><i>原气压值:</i><i>{{form.beforeEdit}}Mpa</i></li>
+      <li><i>修改后气压值:</i><i>{{form.afterEdit}}Mpa</i></li>
+      <li><i>操作时间:</i><i>{{form.opTime}}</i></li>
+    </div>
+    <div class="small_title">使用记录</div>
+    <div class="addPage_b">
+      <el-table border v-loading="loading" :data="form.recordVos" height="300px">
+        <el-table-column label="使用量" align="left" prop="amount">
+          <template slot-scope="scope">
+            <span>{{scope.row.amount}}Mpa</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="使用前气压" align="left" prop="beforeUsePic">
+          <template slot-scope="scope">
+            <span>{{scope.row.beforeUse}}Mpa</span>
+            <span v-if="scope.row.beforeUse" style="color: #0183FA;margin-left: 10px;cursor: pointer;"   @click="handleClick('',scope.row,'before')">查看图片</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="使用后气压" align="left" prop="afterUse">
+          <template slot-scope="scope">
+            <span>{{scope.row.afterUse}}Mpa</span>
+            <span v-if="scope.row.afterUse" style="color: #0183FA;margin-left: 10px;cursor: pointer;" @click="handleClick('',scope.row,'after')">查看图片</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="使用时间" align="left" prop="useTime">
+          <template slot-scope="scope">
+            <span >{{scope.row.useTime?scope.row.useTime:'-'}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="归还时间" align="left" prop="backTime">
+          <template slot-scope="scope">
+            <span >{{scope.row.backTime?scope.row.backTime:'-'}}</span>
+          </template>
+        </el-table-column>
+      </el-table>
+
+    </div>
+  </div>
+</template>
+<script>
+
+import { getToken } from "@/utils/auth";
+import { abnormalRecordDetail, subjectList, useRecordDetail } from '@/api/gasManage3_0/gasManage'
+let Base64 = require('js-base64').Base64;
+export default {
+  name: "addPage",
+  props:{
+    pageData2:{},
+  },
+  data() {
+    return {
+      pageType:1,
+      uploadImgUrl: window.location.href.split('://')[0]+'://' + process.env.VUE_APP_BASE_API + "/file/upload", // 上传的图片服务器地址
+      headers: {
+        Authorization: "Bearer " + getToken(),
+      },
+      // 设置只能选择当前日期及之后的日期
+      pickerOptions0: {
+        disabledDate(time) {
+          return time.getTime() < Date.now() - 8.64e7;//如果没有后面的-8.64e7就是不可以选择今天的
+        }
+      },
+      loading:false,
+      form:{
+        validTime:12,
+        subjectId:"",
+        subjectName:"",
+        validBegin_time:"",//开始时间
+        validEnd_time:"",//结束时间
+        applyCause:"",//备注
+      },
+      infoParams:{
+        radio:1,
+      },
+      dateRange:[],
+
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize:20,
+      },
+      total:0,
+      tableData:[],
+    };
+  },
+  created() {
+
+  },
+  methods: {
+    //返回
+    backPage(){
+      this.$parent.handleClick('','','back');
+    },
+    handleClick(index,row,doType){
+      let _this=this;
+      if(doType=='before'){
+        _this.lookFile(row.beforeUsePic)
+      }else if(doType=='after'){
+        _this.lookFile(row.afterUsePic)
+      }
+    },
+    /**查看图片  */
+    lookFile(item){
+      let visitUrl=window.location.href.split('://')[0]+'://'+process.env.VUE_APP_BASE_API+'/admin/'+item;
+      console.log(visitUrl)
+      window.open(window.location.href.split('://')[0]+'://'  + process.env.VUE_APP_BASE_FILE_API + '/onlinePreview?url='+encodeURIComponent(Base64.encode(visitUrl)));
+    },
+    /* 详情 */
+    getInfo(id){
+      let _this=this;
+      abnormalRecordDetail(id).then( response => {
+        let res=response.data;
+        if(response.code==200){
+          _this.form=res;
+        }
+      });
+
+    },
+
+  },
+  mounted() {
+    this.formInfo=this.pageData2.item
+    this.getInfo(this.pageData2.item.id);
+  }
+
+};
+</script>
+
+<style scoped lang="scss">
+.addPage {
+  flex:1;
+  display: flex!important;
+  flex-direction: column;
+  box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+  border-radius:10px;
+  /*顶部*/
+  .addPage_title{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    border-bottom: 1px solid #E0E0E0;
+    padding-top:20px;
+    p:nth-child(1){
+      flex: 1;
+      line-height:60px;
+      color: #0045AF;
+      font-size:18px;
+      margin:0 12px 0 20px;
+    }
+    p:nth-child(2){
+      margin-right:20px;
+    }
+    p:nth-child(3){
+      margin-right:20px;
+    }
+  }
+  /*小标题*/
+  .small_title{
+    font-size: 16px;
+    font-family: Microsoft YaHei;
+    font-weight: bold;
+    color: #333333;
+    line-height: 16px;
+    margin: 20px 0 0 20px;
+  }
+  /*基本信息*/
+  .info{
+    display: flex;
+    justify-content: flex-start;
+    flex-wrap: wrap;
+    height: 130px;
+    border: 1px solid #E0E0E0;
+    margin: 20px;
+    padding: 30px 48px;
+    box-sizing: border-box;
+    >li{
+      list-style-type: none;
+      margin-right: 30px;
+      >i{
+        font-style: normal;
+      }
+      >i:nth-of-type(1){
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #999999;
+        line-height: 16px;
+      }
+      >i:nth-of-type(2){
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #333333;
+        line-height: 16px;
+      }
+    }
+    .look_img{
+      >i:nth-of-type(2){
+        color: #0183FA;
+      }
+    }
+  }
+  /*入库信息*/
+  .addPage_b{
+    margin: 20px;
+  }
+
+}
+</style>

+ 279 - 0
src/views/gasManage_syd/infoRecord/alarmRecord.vue

@@ -0,0 +1,279 @@
+<!--报警记录-->
+<template>
+  <div class="apply">
+    <div class="apply_page" v-if="pageType == 1">
+      <el-form :model="queryParams" ref="queryForm" style="margin-top:20px;" :inline="true">
+        <el-form-item label="关键字">
+          <el-input
+            v-model="queryParams.searchValue"
+            placeholder="姓名/联系方式/实验地点"
+            clearable
+            maxLength="30"
+            size="small"
+          />
+        </el-form-item>
+        <el-form-item label="报警时间" prop="dateRange">
+          <el-date-picker
+            :clearable="false"
+            v-model="dateRange"
+            size="small"
+            style="width: 240px"
+            value-format="yyyy-MM-dd"
+            type="daterange"
+            range-separator="-"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <p class="inquire-button-one" @click="handleQuery">查询</p>
+          <p class="reset-button-one" @click="resetQuery">重置</p>
+        </el-form-item>
+        <el-form-item label="" prop="title" style="float: right">
+          <el-dropdown @command="exportButton" style="float: left"    v-hasPermi="['airbottle:alarm:record:export']">
+            <div class="form-dropdown-box">
+              <img src="@/assets/ZDimages/personnelManagement/icon_jzgxx_sc.png">
+              <p>导出</p>
+              <img src="@/assets/ZDimages/personnelManagement/icon_jzggl_xljt.png">
+            </div>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item style="border-bottom:1px solid #E0E0E0;margin:0 10px;color:#333;" :command="{command:1}">导出全部数据</el-dropdown-item>
+              <el-dropdown-item style="margin:0 10px;color:#666;" :command="{command:2}">导出选中数据</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+          <p class="reset-button-one" style="margin-left: 12px;" @click="backPage">返回</p>
+        </el-form-item>
+      </el-form>
+      <el-table border v-loading="loading" :data="tableData" @selection-change="handleSelectionChange" ref="multipleTable" :row-key="getRowKeys">
+        <el-table-column type="selection" width="50" align="center"/>
+        <el-table-column label="标签码" align="left" prop=""></el-table-column>
+        <el-table-column label="气瓶编号" align="left" prop=""></el-table-column>
+        <el-table-column label="气体名称" align="left" prop="airName"></el-table-column>
+        <el-table-column label="气瓶规格" align="left" prop=""></el-table-column>
+        <el-table-column label="气体余量" align="left" prop="currentPressure">
+          <template slot-scope="scope">
+            <span >{{scope.row.currentPressure}}Mpa</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="报警时间" align="left" prop="alarmTime"></el-table-column>
+      </el-table>
+      <div style="display: flex;height:32px;margin-top:15px;">
+        <!--<p style="flex:4;"></p>-->
+        <p style="text-align: left;margin:0;line-height:32px;margin-right:20px;font-size:14px;color:#999;">
+          <i class="el-icon-warning" style="color:#0183FA;"></i>
+          已选择 {{selectedNum}} 项
+        </p>
+        <div style="flex:5;">
+          <pagination :page-sizes="[20, 30, 40, 50]"
+            v-show="total>0"
+            :total="total"
+            style="margin:0;"
+            :page.sync="queryParams.pageNum"
+            :limit.sync="queryParams.pageSize"
+            @pagination="getList"
+          />
+        </div>
+      </div>
+    </div>
+     <!--详情页面-->
+    <detail-page v-if="pageType==2" :pageData2="pageData2"></detail-page>
+  </div>
+</template>
+<script>
+import { alarmRecordList, useRecordList } from '@/api/gasManage3_0/gasManage'
+import { getToken } from "@/utils/auth";
+import detailPage from "./abnormalRecordDetail.vue"
+export default {
+  name: "Approval",
+  components: {
+    detailPage
+  },
+  data() {
+    return {
+      //页面状态
+      pageType:1,
+      loading:false,
+      headers: {
+        Authorization: "Bearer " + getToken()
+      },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize:20,
+        searchValue:'',
+      },
+      total:0,
+      tableData:[],
+      dateRange:[],
+      pageData2:{},
+      //导出
+      //表格扩展选择器---需要在@selection-change绑定的方法内监控selection数组长度
+      selectedNum:0,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+    };
+
+
+  },
+  methods: {
+    handleClick(index,row,doType){
+      let _this=this;
+      if(doType=='detail'){//查看
+        _this.pageData2.item=row;
+        _this.pageType=2;
+      }else if(doType=='back'){//返回
+        _this.pageType=1;
+      }else if(doType=='export'){//导出
+        this.download('airbottle/alarm/record/export', {
+          ...this.queryParams
+        }, `报警记录导出.xlsx`)
+      }
+
+    },
+    /** 当前时间 */
+    getCurrentTime () {
+      const yy = new Date().getFullYear()
+      const mm = new Date().getMonth() + 1
+      const dd = new Date().getDate()
+      const hh = new Date().getHours()
+      const mf = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes() : new Date().getMinutes()
+      const ss = new Date().getSeconds() < 10 ? '0' + new Date().getSeconds() : new Date().getSeconds()
+      return yy + '-' + mm + '-' + dd
+    },
+    /** 导出按钮操作 */
+    exportButton(item) {
+      let self = this;
+      let currentDate = this.getCurrentTime()
+      if(item.command == 1){
+        self.$confirm(`确认导出全部数据?`, "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(async () => {
+          self.download('/airbottle/alarm/record/export/', {...self.queryParamsData}, '报警记录导出-'+currentDate+'.xlsx')
+        }).catch(() => {})
+      }else if(item.command == 2){
+        if(self.ids.length>0) {
+          self.$confirm(`确认导出选中数据?`, "提示", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(async () => {
+            let ids = self.ids.join(',');
+            let obj = {
+              ids :ids
+            }
+            console.log("obj",obj)
+            self.download(`/airbottle/alarm/record/export/`,obj, '报警记录导出-'+currentDate+'.xlsx')
+          }).catch(() => {})
+        }else {
+          this.msgError('请选择要导出的数据')
+        }
+      }
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.selectedNum = selection.length;
+      this.ids = selection.map(item => item.id);
+      this.single = selection.length != 1;
+      this.multiple = !selection.length;
+    },
+    /*===记录勾选数据===
+      需要再el-table 添加  :row-key="getRowKeys"
+      需要在selection 添加 :reserve-selection="true"
+    */
+    getRowKeys(row) {
+      return row.id
+    },
+      //返回
+      backPage(){
+        this.$parent.handleClick('','','back');
+        this.$parent.outStatistics()
+        this.$parent.gasApplyStatistics()
+        this.$parent.useGasStatistics()
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.queryParams.searchValue = "";
+      this.dateRange=[];
+      this.queryParams.startTime=null;
+      this.queryParams.endTime=null
+      this.handleQuery();
+    },
+    getList(){
+      let _this=this;
+      if(this.dateRange&&this.dateRange.length>0) {
+        this.queryParams.startTime=this.dateRange[0]
+        this.queryParams.endTime=this.dateRange[1]
+      } else {
+        this.queryParams.startTime=null;
+        this.queryParams.endTime=null
+      }
+      alarmRecordList(_this.queryParams).then( response => {
+        let res=response.rows;
+        _this.tableData=res;
+        _this.total=response.total;
+      });
+    },
+  },
+  mounted() {
+    this.getList();
+  }
+};
+</script>
+
+<style scoped lang="scss">
+  /*导出按钮样式*/
+  .form-dropdown-box{
+    display: flex;
+    margin:0;
+    padding:0 10px;
+    cursor: pointer;
+    height:40px;
+    img:nth-child(1){
+      width:16px;
+      height:16px;
+      margin-top:12px;
+    }
+    p{
+      width:47px;
+      text-align: center;
+      font-size:14px;
+      margin:0;
+      line-height:40px;
+    }
+    img:nth-child(3){
+      width:10px;
+      height:6px;
+      margin-top:17px;
+    }
+  }
+  .apply {
+    flex:1;
+    display: flex!important;
+    flex-direction: column;
+    .apply_page{
+      flex:1;
+      display: flex!important;
+      flex-direction: column;
+      box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+      padding:20px 20px 20px!important;
+      border-radius:10px;
+
+      .button-box{
+        width:200px;
+        display: flex;
+      }
+    }
+
+  }
+</style>

+ 283 - 0
src/views/gasManage_syd/infoRecord/applyRecord.vue

@@ -0,0 +1,283 @@
+<!--申领记录-->
+<template>
+  <div class="apply">
+    <div class="apply_page" v-if="pageType == 1">
+      <el-form :model="queryParams" ref="queryForm" style="margin-top:20px;" :inline="true">
+        <el-form-item label="关键字" prop="name">
+          <el-input
+            v-model="queryParams.searchValue"
+            placeholder="申请人/联系方式/实验地点"
+            clearable
+            maxLength="30"
+            size="small"
+          />
+        </el-form-item>
+        <el-form-item label="申请时间" prop="dateRange">
+          <el-date-picker
+            :clearable="false"
+            v-model="dateRange"
+            size="small"
+            style="width: 240px"
+            value-format="yyyy-MM-dd"
+            type="daterange"
+            range-separator="-"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <p class="inquire-button-one" @click="handleQuery">查询</p>
+          <p class="reset-button-one" @click="resetQuery">重置</p>
+        </el-form-item>
+        <el-form-item label="" prop="title" style="float: right">
+          <el-dropdown @command="exportButton" style="float: left"   v-hasPermi="['airbottle:informationRecord:taskExport']">
+            <div class="form-dropdown-box">
+              <img src="@/assets/ZDimages/personnelManagement/icon_jzgxx_sc.png">
+              <p>导出</p>
+              <img src="@/assets/ZDimages/personnelManagement/icon_jzggl_xljt.png">
+            </div>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item style="border-bottom:1px solid #E0E0E0;margin:0 10px;color:#333;" :command="{command:1}">导出全部数据</el-dropdown-item>
+              <el-dropdown-item style="margin:0 10px;color:#666;" :command="{command:2}">导出选中数据</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+          <p class="reset-button-one" style="margin-left: 12px;" @click="backPage">返回</p>
+        </el-form-item>
+      </el-form>
+      <el-table border v-loading="loading" :data="tableData" @selection-change="handleSelectionChange" ref="multipleTable" :row-key="getRowKeys">
+        <el-table-column type="selection" width="50" align="center"/>
+        <el-table-column label="申领人" align="left" prop="userName"/>
+        <el-table-column label="联系方式" align="left" prop="phone"></el-table-column>
+        <el-table-column label="实验地点" align="left" prop="location"></el-table-column>
+        <el-table-column label="申领时间" align="left" prop="createTime"></el-table-column>
+        <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="120">
+          <template slot-scope="scope">
+            <div class="button-box">
+              <p class="table-min-button"
+                 v-hasPermi="['airbottle:taskManage:query']"
+                 @click="handleClick('',scope.row,'detail')"
+              >查看</p>
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div style="display: flex;height:32px;margin-top:15px;">
+        <!--<p style="flex:4;"></p>-->
+        <p style="text-align: left;margin:0;line-height:32px;margin-right:20px;font-size:14px;color:#999;">
+          <i class="el-icon-warning" style="color:#0183FA;"></i>
+          已选择 {{selectedNum}} 项
+        </p>
+        <div style="flex:5;">
+          <pagination :page-sizes="[20, 30, 40, 50]"
+            v-show="total>0"
+            :total="total"
+            style="margin:0;"
+            :page.sync="queryParams.pageNum"
+            :limit.sync="queryParams.pageSize"
+            @pagination="getList"
+          />
+        </div>
+      </div>
+    </div>
+     <!--详情页面-->
+    <detail-page v-if="pageType==2" :pageData2="pageData2"></detail-page>
+  </div>
+</template>
+<script>
+import { applyRecordList, enterRecordList, } from '@/api/gasManage3_0/gasManage'
+import { getToken } from "@/utils/auth";
+import detailPage from "./applyRecordDetail.vue"
+export default {
+  name: "Approval",
+  components: {
+    detailPage
+  },
+  data() {
+    return {
+      //页面状态
+      pageType:1,
+      loading:false,
+      headers: {
+        Authorization: "Bearer " + getToken()
+      },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize:20,
+        name:'',
+      },
+      total:0,
+      tableData:[],
+      dateRange:[],
+      pageData2:{},
+      //导出
+      //表格扩展选择器---需要在@selection-change绑定的方法内监控selection数组长度
+      selectedNum:0,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+    };
+
+
+  },
+  methods: {
+    handleClick(index,row,doType){
+      let _this=this;
+      if(doType=='detail'){//查看
+        _this.pageData2.item=row;
+        _this.pageType=2;
+      }else if(doType=='back'){//返回
+        _this.pageType=1;
+      }else if(doType=='export'){//导出
+        this.download('airbottle/taskManage/export', {
+          ...this.queryParams
+        }, `申领记录导出.xlsx`)
+      }
+
+    },
+    /** 当前时间 */
+    getCurrentTime () {
+      const yy = new Date().getFullYear()
+      const mm = new Date().getMonth() + 1
+      const dd = new Date().getDate()
+      const hh = new Date().getHours()
+      const mf = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes() : new Date().getMinutes()
+      const ss = new Date().getSeconds() < 10 ? '0' + new Date().getSeconds() : new Date().getSeconds()
+      return yy + '-' + mm + '-' + dd
+    },
+    /** 导出按钮操作 */
+    exportButton(item) {
+      let self = this;
+      let currentDate = this.getCurrentTime()
+      if(item.command == 1){
+        self.$confirm(`确认导出全部数据?`, "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(async () => {
+          self.download('/airbottle/informationRecord/taskExport/', {...self.queryParamsData}, '申领记录导出-'+currentDate+'.xlsx')
+        }).catch(() => {})
+      }else if(item.command == 2){
+        if(self.ids.length>0) {
+          self.$confirm(`确认导出选中数据?`, "提示", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(async () => {
+            let ids = self.ids.join(',');
+            let obj = {
+              ids :ids
+            }
+            console.log("obj",obj)
+            self.download(`/airbottle/taskManage/export/`,obj, '申领记录导出-'+currentDate+'.xlsx')
+          }).catch(() => {})
+        }else {
+          this.msgError('请选择要导出的数据')
+        }
+      }
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.selectedNum = selection.length;
+      this.ids = selection.map(item => item.id);
+      this.single = selection.length != 1;
+      this.multiple = !selection.length;
+    },
+    /*===记录勾选数据===
+      需要再el-table 添加  :row-key="getRowKeys"
+      需要在selection 添加 :reserve-selection="true"
+    */
+    getRowKeys(row) {
+      return row.id
+    },
+      //返回
+      backPage(){
+        this.$parent.handleClick('','','back');
+        this.$parent.outStatistics()
+        this.$parent.gasApplyStatistics()
+        this.$parent.useGasStatistics()
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.queryParams.searchValue = "";
+      this.dateRange=[];
+      this.queryParams.startTime=null;
+      this.queryParams.endTime=null
+      this.handleQuery();
+    },
+    getList(){
+      let _this=this;
+      if(this.dateRange&&this.dateRange.length>0) {
+        this.queryParams.startTime=this.dateRange[0]
+        this.queryParams.endTime=this.dateRange[1]
+      } else {
+        this.queryParams.startTime=null;
+        this.queryParams.endTime=null
+      }
+      applyRecordList(_this.queryParams).then( response => {
+        let res=response.rows;
+        _this.tableData=res;
+        _this.total=response.total;
+      });
+    },
+  },
+  mounted() {
+    this.getList()
+  }
+};
+</script>
+
+<style scoped lang="scss">
+  /*导出按钮样式*/
+  .form-dropdown-box{
+    display: flex;
+    margin:0;
+    padding:0 10px;
+    cursor: pointer;
+    height:40px;
+    img:nth-child(1){
+      width:16px;
+      height:16px;
+      margin-top:12px;
+    }
+    p{
+      width:47px;
+      text-align: center;
+      font-size:14px;
+      margin:0;
+      line-height:40px;
+    }
+    img:nth-child(3){
+      width:10px;
+      height:6px;
+      margin-top:17px;
+    }
+  }
+  .apply {
+    flex:1;
+    display: flex!important;
+    flex-direction: column;
+    .apply_page{
+      flex:1;
+      display: flex!important;
+      flex-direction: column;
+      box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+      padding:20px 20px 20px!important;
+      border-radius:10px;
+
+      .button-box{
+        width:200px;
+        display: flex;
+      }
+    }
+
+  }
+</style>

+ 187 - 0
src/views/gasManage_syd/infoRecord/applyRecordDetail.vue

@@ -0,0 +1,187 @@
+<!--申领记录-详情-->
+<template>
+  <div class="addPage">
+    <div class="addPage_title">
+      <p>申气详情</p>
+      <p  class="reset-button-one" @click="backPage">返回</p>
+    </div>
+
+     <!--基本信息-->
+    <div class="info" v-if="form.qpTask">
+      <li><i>申领人:</i><i>{{form.qpTask.userName}}</i></li>
+      <li><i>联系方式:</i><i>{{form.qpTask.phone}}</i></li>
+      <li><i>实验地点:</i><i>{{form.qpTask.location}}</i></li>
+      <li><i>申请时间:</i><i>{{form.qpTask.createTime}}</i></li>
+    </div>
+    <div class="addPage_b">
+      <!--气瓶信息-->
+      <div  class="addPage_b_t">
+        <div class="addPage_b_t_title">气瓶信息</div>
+        <el-table border v-loading="loading" :data="form.detailList">
+          <el-table-column label="气体名称" align="left" prop="airName"/>
+          <el-table-column label="气体级别/规格" align="left" prop="configName"></el-table-column>
+          <el-table-column label="气瓶厂家" align="left" prop="companyName"></el-table-column>
+          <el-table-column label="状态" align="left" prop="qpStatus">
+            <template slot-scope="scope">
+              <p :class="scope.row.qpStatus == 0?'color_warn':'color_14AE10'">{{scope.row.qpStatus == 0?'未派送':'已派送'}}</p>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+
+import { getToken } from "@/utils/auth";
+import { applyRecordDetail, enterRecordDetail, gasApplyDetail, subjectList } from '@/api/gasManage3_0/gasManage'
+let Base64 = require('js-base64').Base64;
+export default {
+  name: "addPage",
+  props:{
+    pageData2:{},
+  },
+  data() {
+    return {
+      pageType:1,
+      uploadImgUrl: window.location.href.split('://')[0]+'://' + process.env.VUE_APP_BASE_API + "/file/upload", // 上传的图片服务器地址
+      headers: {
+        Authorization: "Bearer " + getToken(),
+      },
+      loading:false,
+      form:{
+      },
+      dateRange:[],
+
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize:20,
+      },
+      total:0,
+      tableData:[],
+    };
+  },
+  created() {
+
+  },
+  methods: {
+    handleClick(index,row,doType){
+      let _this=this;
+      if(doType=='again'){//重新申请
+        this.$parent.handleClick('','','again');
+      }
+    },
+    getList(){
+
+    },
+    //返回
+    backPage(){
+      this.$parent.handleClick('','','back');
+    },
+    /* 详情 */
+    getInfo(id){
+      let _this=this;
+      gasApplyDetail(id).then( response => {
+        let res=response.data;
+        if(response.code==200){
+          _this.form=res;
+        }
+      });
+
+    },
+
+  },
+  mounted() {
+    this.formInfo=this.pageData2.item
+    this.getInfo(this.pageData2.item.id);
+  }
+
+};
+</script>
+
+<style scoped lang="scss">
+.addPage {
+  flex:1;
+  display: flex!important;
+  flex-direction: column;
+  box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+  border-radius:10px;
+  /*顶部*/
+  .addPage_title{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    border-bottom: 1px solid #E0E0E0;
+    padding-top:20px;
+    p:nth-child(1){
+      flex: 1;
+      line-height:60px;
+      color: #0045AF;
+      font-size:18px;
+      margin:0 12px 0 20px;
+    }
+    p:nth-child(2){
+      margin-right:20px;
+    }
+    p:nth-child(3){
+      margin-right:20px;
+    }
+  }
+  /*基本信息*/
+  .info{
+    display: flex;
+    justify-content: flex-start;
+    flex-wrap: wrap;
+    align-items: center;
+    >li{
+      list-style-type: none;
+      margin: 20px;
+      >i{
+        font-style: normal;
+      }
+      >i:nth-of-type(1){
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #999999;
+        line-height: 16px;
+      }
+      >i:nth-of-type(2){
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #333333;
+        line-height: 16px;
+      }
+    }
+    .look_img{
+      >i:nth-of-type(2){
+        color: #0183FA;
+      }
+    }
+  }
+  .addPage_b{
+    flex: 1;
+    display: flex!important;
+    flex-direction: column;
+    /*气瓶信息*/
+    .addPage_b_t{
+      flex: 1;
+      display: flex!important;
+      flex-direction: column;
+      padding: 0 20px;
+      box-sizing: border-box;
+      .addPage_b_t_title{
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: bold;
+        color: #333333;
+        line-height: 16px;
+        margin: 40px 0 30px 0;
+      }
+    }
+  }
+
+}
+</style>

+ 290 - 0
src/views/gasManage_syd/infoRecord/enterRecord.vue

@@ -0,0 +1,290 @@
+<!--入库记录-->
+<template>
+  <div class="apply">
+    <div class="apply_page" v-if="pageType == 1">
+      <el-form :model="queryParams" ref="queryForm" style="margin-top:20px;" :inline="true">
+        <el-form-item label="关键字" prop="name">
+          <el-input
+            v-model="queryParams.searchValue"
+            placeholder="操作人/联系方式/气瓶编号"
+            clearable
+            maxLength="30"
+            size="small"
+          />
+        </el-form-item>
+        <el-form-item label="入库时间" prop="dateRange">
+          <el-date-picker
+            :clearable="false"
+            v-model="dateRange"
+            size="small"
+            style="width: 240px"
+            value-format="yyyy-MM-dd"
+            type="daterange"
+            range-separator="-"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <p class="inquire-button-one" @click="handleQuery">查询</p>
+          <p class="reset-button-one" @click="resetQuery">重置</p>
+        </el-form-item>
+        <el-form-item label="" prop="title" style="float: right">
+          <el-dropdown @command="exportButton" style="float: left"     v-hasPermi="['airbottle:informationRecord:storageExport']">
+            <div class="form-dropdown-box">
+              <img src="@/assets/ZDimages/personnelManagement/icon_jzgxx_sc.png">
+              <p>导出</p>
+              <img src="@/assets/ZDimages/personnelManagement/icon_jzggl_xljt.png">
+            </div>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item style="border-bottom:1px solid #E0E0E0;margin:0 10px;color:#333;" :command="{command:1}">导出全部数据</el-dropdown-item>
+              <el-dropdown-item style="margin:0 10px;color:#666;" :command="{command:2}">导出选中数据</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+          <p class="reset-button-one" style="margin-left: 12px;" @click="backPage">返回</p>
+        </el-form-item>
+      </el-form>
+      <el-table border v-loading="loading" :data="tableData" @selection-change="handleSelectionChange" ref="multipleTable" :row-key="getRowKeys">
+        <el-table-column type="selection" width="50" align="center"/>
+        <el-table-column label="操作人" align="left" prop="storageUser"/>
+        <el-table-column label="联系方式" align="left" prop="storageUserPhone"></el-table-column>
+        <el-table-column label="标签码" align="left" prop=""></el-table-column>
+        <el-table-column label="气瓶编号" align="left" prop=""></el-table-column>
+        <el-table-column label="气体名称" align="left" prop="airName"></el-table-column>
+        <el-table-column label="气瓶规格" align="left" prop=""></el-table-column>
+        <el-table-column label="入库时间" align="left" prop="createTime"></el-table-column>
+        <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="120">
+          <template slot-scope="scope">
+            <div class="button-box">
+              <p class="table-min-button"
+                 v-hasPermi="['airbottle:storageManage:query']"
+                 @click="handleClick('',scope.row,'detail')"
+              >查看</p>
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div style="display: flex;height:32px;margin-top:15px;">
+        <!--<p style="flex:4;"></p>-->
+        <p style="text-align: left;margin:0;line-height:32px;margin-right:20px;font-size:14px;color:#999;">
+          <i class="el-icon-warning" style="color:#0183FA;"></i>
+          已选择 {{selectedNum}} 项
+        </p>
+        <div style="flex:5;">
+          <pagination :page-sizes="[20, 30, 40, 50]"
+            v-show="total>0"
+            :total="total"
+            style="margin:0;"
+            :page.sync="queryParams.pageNum"
+            :limit.sync="queryParams.pageSize"
+            @pagination="getList"
+          />
+        </div>
+      </div>
+    </div>
+     <!--详情页面-->
+    <detail-page v-if="pageType==2" :pageData2="pageData2"></detail-page>
+  </div>
+</template>
+<script>
+import { enterRecordList, gasApplyList } from '@/api/gasManage3_0/gasManage'
+import { getToken } from "@/utils/auth";
+import detailPage from "./enterRecordDetail.vue"
+export default {
+  name: "Approval",
+  components: {
+    detailPage
+  },
+  data() {
+    return {
+      //页面状态
+      pageType:1,
+      loading:false,
+      headers: {
+        Authorization: "Bearer " + getToken()
+      },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize:20,
+        searchValue:'',
+        startTime:'',
+        endTime:'',
+        airStatus:0,
+      },
+      total:0,
+      tableData:[],
+      dateRange:[],
+      pageData2:{},
+      //导出
+      //表格扩展选择器---需要在@selection-change绑定的方法内监控selection数组长度
+      selectedNum:0,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+    };
+
+
+  },
+  methods: {
+      handleClick(index,row,doType){
+        let _this=this;
+        if(doType=='detail'){//查看
+          _this.pageData2.item=row;
+          _this.pageType=2;
+        }else if(doType=='back'){//返回
+          _this.pageType=1;
+        }else if(doType=='export'){//导出
+          this.download('airbottle/storageManage/export', {
+            ...this.queryParams
+          }, `入库记录导出.xlsx`)
+        }
+
+      },
+    /** 当前时间 */
+    getCurrentTime () {
+      const yy = new Date().getFullYear()
+      const mm = new Date().getMonth() + 1
+      const dd = new Date().getDate()
+      const hh = new Date().getHours()
+      const mf = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes() : new Date().getMinutes()
+      const ss = new Date().getSeconds() < 10 ? '0' + new Date().getSeconds() : new Date().getSeconds()
+      return yy + '-' + mm + '-' + dd
+    },
+    /** 导出按钮操作 */
+    exportButton(item) {
+      let self = this;
+      let currentDate = this.getCurrentTime()
+      if(item.command == 1){
+        self.$confirm(`确认导出全部数据?`, "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(async () => {
+          self.download('/airbottle/informationRecord/storageExport/', {...self.queryParams}, '入库记录导出-'+currentDate+'.xlsx')
+        }).catch(() => {})
+      }else if(item.command == 2){
+        if(self.ids.length>0) {
+          self.$confirm(`确认导出选中数据?`, "提示", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(async () => {
+            let ids = self.ids.join(',');
+            let obj = {
+              ids :ids,
+              airStatus:0,
+            }
+            console.log("obj",obj)
+            self.download(`/airbottle/storageManage/export/`,obj, '入库记录导出-'+currentDate+'.xlsx')
+          }).catch(() => {})
+        }else {
+          this.msgError('请选择要导出的数据')
+        }
+      }
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.selectedNum = selection.length;
+      this.ids = selection.map(item => item.id);
+      this.single = selection.length != 1;
+      this.multiple = !selection.length;
+    },
+    /*===记录勾选数据===
+      需要再el-table 添加  :row-key="getRowKeys"
+      需要在selection 添加 :reserve-selection="true"
+    */
+    getRowKeys(row) {
+      return row.id
+    },
+      //返回
+      backPage(){
+        this.$parent.handleClick('','','back');
+        this.$parent.outStatistics()
+        this.$parent.gasApplyStatistics()
+        this.$parent.useGasStatistics()
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.queryParams.searchValue = "";
+        this.dateRange=[];
+        this.queryParams.startTime=null;
+        this.queryParams.endTime=null
+        this.handleQuery();
+      },
+      getList(){
+        let _this=this;
+        if(this.dateRange&&this.dateRange.length>0) {
+          this.queryParams.startTime=this.dateRange[0]
+          this.queryParams.endTime=this.dateRange[1]
+        } else {
+          this.queryParams.startTime=null;
+          this.queryParams.endTime=null
+        }
+        enterRecordList(_this.queryParams).then( response => {
+          let res=response.rows;
+          _this.tableData=res;
+          _this.total=response.total;
+        });
+      },
+  },
+  mounted() {
+    this.getList()
+  }
+};
+</script>
+
+<style scoped lang="scss">
+  /*导出按钮样式*/
+  .form-dropdown-box{
+    display: flex;
+    margin:0;
+    padding:0 10px;
+    cursor: pointer;
+    height:40px;
+    img:nth-child(1){
+      width:16px;
+      height:16px;
+      margin-top:12px;
+    }
+    p{
+      width:47px;
+      text-align: center;
+      font-size:14px;
+      margin:0;
+      line-height:40px;
+    }
+    img:nth-child(3){
+      width:10px;
+      height:6px;
+      margin-top:17px;
+    }
+  }
+  .apply {
+    flex:1;
+    display: flex!important;
+    flex-direction: column;
+    .apply_page{
+      flex:1;
+      display: flex!important;
+      flex-direction: column;
+      box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+      padding:20px 20px 20px!important;
+      border-radius:10px;
+
+      .button-box{
+        width:200px;
+        display: flex;
+      }
+    }
+
+  }
+</style>

+ 243 - 0
src/views/gasManage_syd/infoRecord/enterRecordDetail.vue

@@ -0,0 +1,243 @@
+<!--入库记录-详情-->
+<template>
+  <div class="addPage">
+    <div class="addPage_title">
+      <p>入库详情</p>
+      <p  class="reset-button-one" @click="backPage">返回</p>
+    </div>
+    <div class="small_title">气瓶信息</div>
+     <!--基本信息-->
+    <div class="info" v-if="formInfo">
+      <li><i>标签码:</i><i></i></li>
+      <li><i>气瓶编号:</i><i>{{formInfo.airNumber}}</i></li>
+      <li><i>气体名称:</i><i>{{formInfo.airName}}</i></li>
+      <li><i>气瓶规格:</i><i></i></li>
+      <li><i>最低气压值:</i><i></i></li>
+      <li><i>气体组分:</i><i>{{formInfo.airConstituents}}</i></li>
+    </div>
+    <div class="small_title">入库信息</div>
+    <div class="addPage_b" v-if="form.bottleStorage">
+      <div class="addPage_b_t">
+        <li><i>入库时间:</i><i>{{form.bottleStorage.createTime}}</i></li>
+        <li><i>检验有效期:</i><i>{{form.bottleStorage.validateStartTime}}-{{form.bottleStorage.validateEndTime}}</i></li>
+        <li><i>入库气压值:</i><i></i></li>
+        <li><i>验收备注</i><i>{{form.bottleStorage.validateRemark}}</i></li>
+      </div>
+      <div class="addPage_b_b">
+        <el-form :model="form"   :inline="true">
+          <el-form-item label="有无手轮" prop="name">
+            <el-radio-group disabled v-model="form.bottleStorage.isHandwheel">
+              <el-radio :label="1">有</el-radio>
+              <el-radio :label="0">无</el-radio>
+            </el-radio-group>
+          </el-form-item>
+          <el-form-item label="是否固定" prop="name">
+            <el-radio-group disabled v-model="form.bottleStorage.isFixed">
+              <el-radio :label="1">是</el-radio>
+              <el-radio :label="0">否</el-radio>
+            </el-radio-group>
+          </el-form-item>
+          <el-form-item label="气瓶状态标牌" prop="name">
+            <el-radio-group disabled v-model="form.bottleStorage.isStatusSign">
+              <el-radio :label="1">有</el-radio>
+              <el-radio :label="0">无</el-radio>
+            </el-radio-group>
+          </el-form-item>
+        </el-form>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+
+import { getToken } from "@/utils/auth";
+import { enterRecordDetail, } from '@/api/gasManage3_0/gasManage'
+let Base64 = require('js-base64').Base64;
+export default {
+  name: "addPage",
+  props:{
+    pageData2: {},
+  },
+  data() {
+    return {
+      pageType:1,
+      uploadImgUrl: window.location.href.split('://')[0]+'://' + process.env.VUE_APP_BASE_API + "/file/upload", // 上传的图片服务器地址
+      headers: {
+        Authorization: "Bearer " + getToken(),
+      },
+
+      loading:false,
+      form:{
+
+      },
+      formInfo:{},
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize:20,
+      },
+      total:0,
+      tableData:[{
+        num:0,
+      }],
+    };
+  },
+  created() {
+
+  },
+  methods: {
+    handleClick(index,row,doType){
+      let _this=this;
+      if(doType=='again'){//重新申请
+        this.$parent.handleClick('','','again');
+      }
+    },
+    /**查看图片  */
+    lookFile(item){
+      let visitUrl=window.location.href.split('://')[0]+'://'+process.env.VUE_APP_BASE_API+'/admin/'+item;
+      console.log(visitUrl)
+      window.open(window.location.href.split('://')[0]+'://'  + process.env.VUE_APP_BASE_FILE_API + '/onlinePreview?url='+encodeURIComponent(Base64.encode(visitUrl)));
+    },
+    //返回
+    backPage(){
+      this.$parent.handleClick('','','back');
+    },
+    /* 详情 */
+    getInfo(id){
+      let _this=this;
+      enterRecordDetail({id:id}).then( response => {
+        let res=response.data;
+        if(response.code==200){
+          _this.form=res;
+        }
+      });
+
+    },
+
+  },
+  mounted() {
+
+    this.formInfo=this.pageData2.item
+    this.getInfo(this.pageData2.item.id);
+    console.log(this.formInfo)
+  }
+
+};
+</script>
+
+<style scoped lang="scss">
+.addPage {
+  flex:1;
+  display: flex!important;
+  flex-direction: column;
+  box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+  border-radius:10px;
+  /*顶部*/
+  .addPage_title{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    border-bottom: 1px solid #E0E0E0;
+    padding-top:20px;
+    p:nth-child(1){
+      flex: 1;
+      line-height:60px;
+      color: #0045AF;
+      font-size:18px;
+      margin:0 12px 0 20px;
+    }
+    p:nth-child(2){
+      margin-right:20px;
+    }
+    p:nth-child(3){
+      margin-right:20px;
+    }
+  }
+  /*小标题*/
+  .small_title{
+    font-size: 16px;
+    font-family: Microsoft YaHei;
+    font-weight: bold;
+    color: #333333;
+    line-height: 16px;
+    margin: 20px 0 0 20px;
+  }
+  /*基本信息*/
+  .info{
+    display: flex;
+    justify-content: flex-start;
+    flex-wrap: wrap;
+    height: 130px;
+    border: 1px solid #E0E0E0;
+    margin: 20px;
+    padding: 30px 48px;
+    box-sizing: border-box;
+    >li{
+      list-style-type: none;
+      margin-right: 30px;
+      >i{
+        font-style: normal;
+      }
+      >i:nth-of-type(1){
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #999999;
+        line-height: 16px;
+      }
+      >i:nth-of-type(2){
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #333333;
+        line-height: 16px;
+      }
+    }
+    .look_img{
+      >i:nth-of-type(2){
+        color: #0183FA;
+      }
+    }
+  }
+  /*入库信息*/
+  .addPage_b{
+    border: 1px solid #E0E0E0;
+    margin: 20px;
+    padding: 30px 48px;
+    box-sizing: border-box;
+    .addPage_b_t{
+      display: flex;
+      justify-content: flex-start;
+      flex-wrap: wrap;
+      >li{
+        list-style-type: none;
+        margin-right: 30px;
+        margin-bottom: 12px;
+        >i{
+          font-style: normal;
+        }
+        >i:nth-of-type(1){
+          font-size: 16px;
+          font-family: Microsoft YaHei;
+          font-weight: 400;
+          color: #999999;
+          line-height: 16px;
+        }
+        >i:nth-of-type(2){
+          font-size: 16px;
+          font-family: Microsoft YaHei;
+          font-weight: 400;
+          color: #333333;
+          line-height: 16px;
+        }
+      }
+    }
+    .addPage_b_b{
+      .el-form-item{
+        margin-right: 60px;
+      }
+    }
+  }
+
+}
+</style>

+ 692 - 0
src/views/gasManage_syd/infoRecord/infoRecord.vue

@@ -0,0 +1,692 @@
+<!--信息记录-->
+<template>
+  <div class="app-container approval_handle">
+    <div class="approval_handle-page" v-if="pageType==1">
+      <div class="info_title">
+        <li @click="handleClick('','','enter')">
+          <img class="title-img" src="@/assets/ZDimages/gasManage3_0/icon_xxjl_rkjl.png">
+          <i>入库记录</i>
+        </li>
+        <i></i>
+        <li @click="handleClick('','','use')">
+          <img class="title-img" src="@/assets/ZDimages/gasManage3_0/icon_xxjl_syjl.png">
+          <i>使用记录</i>
+        </li>
+        <i></i>
+        <li @click="handleClick('','','out')">
+          <img class="title-img" src="@/assets/ZDimages/gasManage3_0/icon_xxjl_ckjl.png">
+          <i>出库记录</i>
+        </li>
+        <i></i>
+        <li @click="handleClick('','','abnormal')">
+          <img class="title-img" src="@/assets/ZDimages/gasManage3_0/icon_xxjl_ycjl.png">
+          <i>异常记录</i>
+        </li>
+        <i></i>
+        <li @click="handleClick('','','alarm')">
+          <img class="title-img" src="@/assets/ZDimages/gasManage3_0/icon_xxjl_bjjl.png">
+          <i>报警记录</i>
+        </li>
+      </div>
+      <!-- 出库信息统计 -->
+      <div class="out_stock" >
+        <div id="out_stock"></div>
+        <div class="select_border">
+          <el-form :model="queryParams" ref="queryForm" :inline="true">
+            <el-select v-model="queryParams.category" placeholder="请选择">
+              <el-option :label="item.dictLabel" :value="item.dictLabel" v-for="(item,index) in materialTypeList" :key="index"></el-option>
+            </el-select>
+          </el-form>
+        </div>
+      </div>
+
+      <div class="statistics">
+        <!-- 申领统计 -->
+        <div class="statistics_l">
+          <div id="apply"></div>
+          <div class="select_border">
+            <el-form :model="queryParams2" ref="queryForm" :inline="true">
+              <el-select v-model="queryParams2.category" placeholder="请选择">
+                <el-option :label="item.dictLabel" :value="item.dictLabel" v-for="(item,index) in materialTypeList" :key="index"></el-option>
+              </el-select>
+            </el-form>
+          </div>
+        </div>
+        <!-- 用气量统计 -->
+        <div class="statistics_r">
+          <div id="gas"></div>
+          <div class="select_border">
+            <el-form :model="queryParams3" ref="queryForm" :inline="true">
+              <el-select v-model="queryParams3.category" placeholder="请选择">
+                <el-option :label="item.dictLabel" :value="item.dictLabel" v-for="(item,index) in materialTypeList" :key="index"></el-option>
+              </el-select>
+            </el-form>
+          </div>
+        </div>
+      </div>
+    </div>
+    <!--申领记录 -->
+    <apply-record v-if="pageType==2"></apply-record>
+    <!--入库记录 -->
+    <enter-record v-if="pageType==3"></enter-record>
+    <!--使用记录 -->
+    <use-record v-if="pageType==4"></use-record>
+    <!--出库记录 -->
+    <out-record v-if="pageType==5"></out-record>
+    <!--异常记录 -->
+    <abnormal-record v-if="pageType==6"></abnormal-record>
+    <!--报警记录 -->
+    <alarm-record v-if="pageType==7"></alarm-record>
+  </div>
+</template>
+
+<script>
+
+import {
+  gasApplyStatistics,
+  gasCategoryList,
+  outStatistics,
+  supplierList,
+  useGasStatistics
+} from '@/api/gasManage3_0/gasManage'
+import { getToken } from "@/utils/auth";
+import echarts from 'echarts'
+import applyRecord from "./applyRecord.vue"
+import enterRecord from "./enterRecord.vue"
+import useRecord from "./useRecord.vue"
+import outRecord from "./outRecord.vue"
+import abnormalRecord from "./abnormalRecord.vue"
+import alarmRecord from "./alarmRecord.vue"
+
+export default {
+  name: "info",
+  components: {
+    applyRecord,
+    enterRecord,
+    useRecord,
+    outRecord,
+    abnormalRecord,
+    alarmRecord
+  },
+  data() {
+    return {
+      pageType:1,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize:20,
+        category:'气瓶',
+      },
+      queryParams2: {
+        pageNum: 1,
+        pageSize:20,
+        category:'气瓶',
+      },
+      queryParams3: {
+        pageNum: 1,
+        pageSize:20,
+        category:'气瓶',
+      },
+      materialTypeList:[],
+    };
+  },
+  created() {
+
+  },
+
+  methods: {
+    handleClick(index,row,doType){
+      let _this=this;
+      if(doType=='apply'){//申请记录
+        _this.pageType=2;
+      }else if(doType=='enter'){//入库记录
+        _this.pageType=3;
+      }else if(doType=='use'){//使用记录
+        _this.pageType=4;
+      }else if(doType=='out'){//出库记录
+        _this.pageType=5;
+      }else if(doType=='abnormal'){//异常
+        _this.pageType=6;
+      }else if(doType=='alarm'){//报警记录
+        _this.pageType=7;
+      }else if(doType=='back'){//返回
+        _this.pageType=1;
+      }
+
+    },
+    //气瓶类目
+    gasCategoryList(){
+      let _this=this;
+      gasCategoryList().then( response => {
+        let res=response.rows;
+        _this.materialTypeList=res;
+      });
+    },
+    //出库
+    outStockFun:function(dataX,dataY,dataY2){
+      var option = {
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: { // 坐标轴指示器,坐标轴触发有效
+            type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
+          }
+        },
+        title: {
+          left:'1%',
+          top:12,
+          text: '出入库信息统计',
+          textStyle: {
+            color: "#333333",
+            fontSize:16,
+          },
+        },
+        grid: {
+          left: '1%',
+          right: '4%',
+          bottom: '14%',
+          top:'24%',
+          containLabel: true
+        },
+        legend: {
+          data: ['入库(个)', '出库(个)'],
+          left:'12%',
+          top:12,
+          textStyle: {
+            color: "#333333"
+          },
+          itemWidth: 12,
+          itemHeight: 10,
+          // itemGap: 35
+        },
+        xAxis: {
+          type: 'category',
+          data:dataX,
+          axisLine: {
+            lineStyle: {
+              color: '#ccc'
+
+            }
+          },
+          axisTick: {
+            show: false,
+            length: 9,
+            alignWithLabel: true,
+            lineStyle: {
+              color: '#7DFFFD'
+            }
+          },
+          axisLabel: {
+            // interval: 0,
+            // rotate: 40,
+            textStyle: {
+              fontFamily: 'Microsoft YaHei',
+              color: '#666666',
+              fontSize:16,
+            }
+          },
+        },
+
+        yAxis: {
+
+          nameTextStyle:{
+            color:'#ccc',
+            align:'center',
+
+            fontSize:18,
+          },
+          type: 'value',
+          axisLine: {
+            show: true,
+            lineStyle: {
+              color: '#ccc'
+            }
+          },
+          splitLine: {
+            show: false,
+            lineStyle: {
+              color: 'rgba(255,255,255,0.3)'
+            }
+          },
+          axisTick: {
+            show: false,
+            length: 9,
+            alignWithLabel: true,
+            lineStyle: {
+              color: '#7DFFFD'
+            }
+          },
+          axisLabel: {
+            // interval: 0,
+            // rotate: 40,
+            textStyle: {
+              fontFamily: 'Microsoft YaHei',
+              color: '#666666',
+              fontSize:16,
+            }
+          },
+        },
+
+        series: [{
+          name: '入库(个)',
+          type: 'bar',
+          barWidth: '14',
+          itemStyle: {
+            normal: {
+              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                offset: 0,
+                color: '#88C8FF'
+              }, {
+                offset: 1,
+                color: '#0183FA'
+              }]),
+              barBorderRadius:[12,12,0,0],
+            },
+          },
+          data: dataY
+        },
+          {
+            name: '出库(个)',
+            type: 'bar',
+            barWidth: '14',
+            itemStyle: {
+              normal: {
+                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                  offset: 0,
+                  color: '#F28E26'
+                }, {
+                  offset: 1,
+                  color: '#FFDEBC'
+                }]),
+                barBorderRadius:[12,12,0,0],
+              }
+
+            },
+            data: dataY2
+          }]
+      };
+      var out_stock = echarts.init(document.getElementById('out_stock'));
+      out_stock.setOption(option);
+
+    },
+    //申领统计
+    applyFun:function(dataX,dataY){
+      var option = {
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: { // 坐标轴指示器,坐标轴触发有效
+            type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
+          }
+        },
+        title: {
+          left:'2%',
+          top:12,
+          text: '气瓶申请统计',
+          textStyle: {
+            color: "#333333",
+            fontSize:16,
+          },
+        },
+        grid: {
+          left: '2%',
+          right: '4%',
+          bottom: '14%',
+          top:'24%',
+          containLabel: true
+        },
+        xAxis: {
+          type: 'category',
+          data: dataX,
+          axisLine: {
+            lineStyle: {
+              color: '#ccc'
+
+            }
+          },
+          axisTick: {
+            show: false,
+            length: 9,
+            alignWithLabel: true,
+            lineStyle: {
+              color: '#7DFFFD'
+            }
+          },
+          axisLabel: {
+            // interval: 0,
+            // rotate: 40,
+            textStyle: {
+              fontFamily: 'Microsoft YaHei',
+              color: '#666666',
+              fontSize:16,
+            }
+          },
+        },
+
+        yAxis: {
+          nameTextStyle:{
+            color:'#ccc',
+            align:'center',
+
+            fontSize:18,
+          },
+          type: 'value',
+          axisLine: {
+            show: true,
+            lineStyle: {
+              color: '#ccc'
+            }
+          },
+          splitLine: {
+            show: false,
+            lineStyle: {
+              color: 'rgba(255,255,255,0.3)'
+            }
+          },
+          axisTick: {
+            show: false,
+            length: 9,
+            alignWithLabel: true,
+            lineStyle: {
+              color: '#7DFFFD'
+            }
+          },
+          axisLabel: {
+            // interval: 0,
+            // rotate: 40,
+            textStyle: {
+              fontFamily: 'Microsoft YaHei',
+              color: '#666666',
+              fontSize:16,
+            }
+          },
+        },
+
+        series: [{
+          name: '入库',
+          type: 'bar',
+          barWidth: '14',
+          itemStyle: {
+            normal: {
+              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                offset: 0,
+                color: '#88C8FF'
+              }, {
+                offset: 1,
+                color: '#0183FA'
+              }]),
+              barBorderRadius:[12,12,0,0],
+            },
+          },
+          showBackground:true,
+          data: dataY
+        }]
+      };
+      var apply = echarts.init(document.getElementById('apply'));
+      apply.setOption(option);
+    },
+    //用气量统计
+    gasFun:function(dataX,dataY){
+      var option = {
+        title: {
+          left:'2%',
+          top:12,
+          text: '用气量统计',
+          textStyle: {
+            color: "#333333",
+            fontSize:16,
+          },
+        },
+        grid: {
+          left: '2%',
+          right: '4%',
+          bottom: '14%',
+          top:'24%',
+          containLabel: true
+        },
+        xAxis: {
+          type: 'category',
+          boundaryGap: false,
+          axisLine: {
+            lineStyle: {
+              color: '#ccc'
+
+            }
+          },
+          axisTick: {
+            show: false,
+            length: 9,
+            alignWithLabel: true,
+            lineStyle: {
+              color: '#7DFFFD'
+            }
+          },
+          axisLabel: {
+            // interval: 0,
+            // rotate: 40,
+            textStyle: {
+              fontFamily: 'Microsoft YaHei',
+              color: '#666666',
+              fontSize:16,
+            }
+          },
+          data: dataX,
+        },
+        yAxis: {
+          type: 'value',
+          axisLine: {
+            lineStyle: {
+              color: '#ccc'
+
+            }
+          },
+          axisTick: {
+            show: false,
+            length: 9,
+            alignWithLabel: true,
+            lineStyle: {
+              color: '#7DFFFD'
+            }
+          },
+          axisLabel: {
+            // interval: 0,
+            // rotate: 40,
+            textStyle: {
+              fontFamily: 'Microsoft YaHei',
+              color: '#666666',
+              fontSize:16,
+            }
+          },
+        },
+        series: [{
+          data: dataY,
+          label:{
+            show:true,
+            color:'#fff',
+            formatter:function(data){
+              return data.value;
+            }
+          },
+          type: 'line',
+          smooth: false,//让折线平滑
+          symbolSize:0,   //拐点圆的大小
+          itemStyle: {
+            normal: {
+              color: "#917FFF",
+              lineStyle:{
+                width:2,
+                type:'solid'  //'dotted'虚线 'solid'实线
+              }
+            },
+          },
+          areaStyle: {
+            normal: {
+              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                offset: 0,
+                color: '#917FFF'
+              }, {
+                offset: 1,
+                color: 'rgba(63,187,254, 0.2)'
+              }])
+            }
+          },
+        }]
+      };
+      var gas = echarts.init(document.getElementById('gas'));
+      gas.setOption(option);
+    },
+    //出入库信息统计
+    outStatistics(){
+      let _this=this;
+      outStatistics().then( response => {
+        let res=response.data;
+        let dataX=[];
+        let dataY=[];
+        let dataY2=[];
+        if(response.code==200){
+          res.forEach(function(item){
+            dataX.push(item.date)
+            dataY.push(item.inNum)
+            dataY2.push(item.outNum)
+          })
+          this.outStockFun(dataX,dataY,dataY2);
+        }
+      });
+    },
+    //气瓶申请统计
+    gasApplyStatistics(){
+      let _this=this;
+      gasApplyStatistics().then( response => {
+        let res=response.data;
+        let dataX=[];
+        let dataY=[];
+        if(response.code==200){
+          res.forEach(function(item){
+            dataX.push(item.date)
+            dataY.push(item.amount)
+          })
+          this.applyFun(dataX,dataY);
+        }
+      });
+    },
+    //用气量统计
+    useGasStatistics(){
+      let _this=this;
+      useGasStatistics().then( response => {
+        let res=response.data;
+        let dataX=[];
+        let dataY=[];
+        if(response.code==200){
+          res.forEach(function(item){
+            dataX.push(item.date)
+            dataY.push(item.amount)
+          })
+          this.gasFun(dataX,dataY);
+        }
+      });
+    },
+  },
+
+  mounted(){
+
+
+
+    this.gasCategoryList()
+    this.outStatistics()
+    this.gasApplyStatistics()
+    this.useGasStatistics()
+
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.approval_handle {
+  display: flex!important;
+  flex-direction: column;
+  .approval_handle-page{
+    flex:1;
+    display: flex!important;
+    flex-direction: column;
+    box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+    padding:20px 20px 20px!important;
+    border-radius:10px;
+    .info_title{
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      margin-top: 40px;
+      padding-bottom: 36px;
+      border-bottom: 2px solid #E0E0E0;
+      >li{
+        list-style-type: none;
+        text-align: center;
+        cursor: pointer;
+        >img{
+          width: 80px;
+          height: 80px;
+        }
+        >i{
+          font-style: normal;
+          display: block;
+          font-size: 16px;
+          font-family: Microsoft YaHei;
+          font-weight: bold;
+          color: #333333;
+          line-height: 24px;
+        }
+      }
+      >i{
+        display: inline-block;
+        font-style: normal;
+        width: 208px;
+        border-bottom: 1px dotted #0183FA;
+        position: relative;
+        top: -10px;
+      }
+    }
+    .select_border{
+      position: absolute;
+      top: 12px;
+      right: 20px;
+    }
+    .out_stock{
+      width: 100%;
+      height: 300px;
+      position: relative;
+      #out_stock{
+        width: 100%;
+        height: 300px;
+      }
+    }
+    .statistics{
+      display: flex;
+      justify-content: flex-start;
+      width: 100%;
+      height: 320px;
+      .statistics_l{
+        width: 50%;
+        height: 320px;
+        position: relative;
+        #apply{
+          width: 100%;
+          height: 320px;
+        }
+      }
+      .statistics_r{
+        width: 50%;
+        height: 330px;
+        position: relative;
+        #gas{
+          width: 100%;
+          height: 320px;
+        }
+      }
+    }
+
+    .button-box{
+      width:200px;
+      display: flex;
+    }
+  }
+
+}
+</style>

+ 290 - 0
src/views/gasManage_syd/infoRecord/outRecord.vue

@@ -0,0 +1,290 @@
+<!--出库记录-->
+<template>
+  <div class="apply">
+    <div class="apply_page" v-if="pageType == 1">
+      <el-form :model="queryParams" ref="queryForm" style="margin-top:20px;" :inline="true">
+        <el-form-item label="关键字" prop="name">
+          <el-input
+            v-model="queryParams.searchValue"
+            placeholder="操作人/联系方式/实验地点"
+            clearable
+            maxLength="30"
+            size="small"
+          />
+        </el-form-item>
+        <el-form-item label="申请时间" prop="dateRange">
+          <el-date-picker
+            :clearable="false"
+            v-model="dateRange"
+            size="small"
+            style="width: 240px"
+            value-format="yyyy-MM-dd"
+            type="daterange"
+            range-separator="-"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <p class="inquire-button-one" @click="handleQuery">查询</p>
+          <p class="reset-button-one" @click="resetQuery">重置</p>
+        </el-form-item>
+        <el-form-item label="" prop="title" style="float: right">
+          <el-dropdown @command="exportButton" style="float: left"    v-hasPermi="['airbottle:informationRecord:storageOutexport']">
+            <div class="form-dropdown-box">
+              <img src="@/assets/ZDimages/personnelManagement/icon_jzgxx_sc.png">
+              <p>导出</p>
+              <img src="@/assets/ZDimages/personnelManagement/icon_jzggl_xljt.png">
+            </div>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item style="border-bottom:1px solid #E0E0E0;margin:0 10px;color:#333;" :command="{command:1}">导出全部数据</el-dropdown-item>
+              <el-dropdown-item style="margin:0 10px;color:#666;" :command="{command:2}">导出选中数据</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+          <p class="reset-button-one" style="margin-left: 12px;" @click="backPage">返回</p>
+        </el-form-item>
+      </el-form>
+      <el-table border v-loading="loading" :data="tableData" @selection-change="handleSelectionChange" ref="multipleTable" :row-key="getRowKeys">
+        <el-table-column type="selection" width="50" align="center"/>
+        <el-table-column label="操作人" align="left" prop="applyUserName"/>
+        <el-table-column label="联系方式" align="left" prop="phone"></el-table-column>
+        <el-table-column label="标签码" align="left" prop=""></el-table-column>
+        <el-table-column label="气瓶编号" align="left" prop=""></el-table-column>
+        <el-table-column label="气体名称" align="left" prop="airName"></el-table-column>
+        <el-table-column label="气瓶规格" align="left" prop=""></el-table-column>
+        <el-table-column label="出库时间" align="left" prop=""></el-table-column>
+        <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="120">
+          <template slot-scope="scope">
+            <div class="button-box">
+              <p class="table-min-button"
+                 v-hasPermi="['airbottle:storageOutManage:query']"
+                 @click="handleClick('',scope.row,'detail')"
+              >查看</p>
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div style="display: flex;height:32px;margin-top:15px;">
+        <!--<p style="flex:4;"></p>-->
+        <p style="text-align: left;margin:0;line-height:32px;margin-right:20px;font-size:14px;color:#999;">
+          <i class="el-icon-warning" style="color:#0183FA;"></i>
+          已选择 {{selectedNum}} 项
+        </p>
+        <div style="flex:5;">
+          <pagination :page-sizes="[20, 30, 40, 50]"
+            v-show="total>0"
+            :total="total"
+            style="margin:0;"
+            :page.sync="queryParams.pageNum"
+            :limit.sync="queryParams.pageSize"
+            @pagination="getList"
+          />
+        </div>
+      </div>
+    </div>
+     <!--详情页面-->
+    <detail-page v-if="pageType==2" :pageData2="pageData2"></detail-page>
+  </div>
+</template>
+<script>
+import { enterRecordList, outRecordList } from '@/api/gasManage3_0/gasManage'
+import { getToken } from "@/utils/auth";
+import detailPage from "./outRecordDetail.vue"
+export default {
+  name: "Approval",
+  components: {
+    detailPage
+  },
+  data() {
+    return {
+      //页面状态
+      pageType:1,
+      loading:false,
+      headers: {
+        Authorization: "Bearer " + getToken()
+      },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize:20,
+        searchValue:'',
+        startTime:'',
+        endTime:'',
+        airStatus:0,
+      },
+      total:0,
+      tableData:[],
+      dateRange:[],
+      pageData2:{},
+      //导出
+      //表格扩展选择器---需要在@selection-change绑定的方法内监控selection数组长度
+      selectedNum:0,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+    };
+
+
+  },
+  methods: {
+    handleClick(index,row,doType){
+      let _this=this;
+      if(doType=='detail'){//查看
+        _this.pageData2.item=row;
+        _this.pageType=2;
+      }else if(doType=='back'){//返回
+        _this.pageType=1;
+      }else if(doType=='export'){//导出
+        this.download('airbottle/storageOutManage/export', {
+          ...this.queryParams
+        }, `出库记录导出.xlsx`)
+      }
+
+    },
+    /** 当前时间 */
+    getCurrentTime () {
+      const yy = new Date().getFullYear()
+      const mm = new Date().getMonth() + 1
+      const dd = new Date().getDate()
+      const hh = new Date().getHours()
+      const mf = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes() : new Date().getMinutes()
+      const ss = new Date().getSeconds() < 10 ? '0' + new Date().getSeconds() : new Date().getSeconds()
+      return yy + '-' + mm + '-' + dd
+    },
+    /** 导出按钮操作 */
+    exportButton(item) {
+      let self = this;
+      let currentDate = this.getCurrentTime()
+      if(item.command == 1){
+        self.$confirm(`确认导出全部数据?`, "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(async () => {
+          self.download('/airbottle/informationRecord/storageOutexport/', {...self.queryParamsData}, '出库记录导出-'+currentDate+'.xlsx')
+        }).catch(() => {})
+      }else if(item.command == 2){
+        if(self.ids.length>0) {
+          self.$confirm(`确认导出选中数据?`, "提示", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(async () => {
+            let ids = self.ids.join(',');
+            let obj = {
+              ids :ids
+            }
+            console.log("obj",obj)
+            self.download(`/airbottle/storageOutManage/export/`,obj, '出库记录导出-'+currentDate+'.xlsx')
+          }).catch(() => {})
+        }else {
+          this.msgError('请选择要导出的数据')
+        }
+      }
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.selectedNum = selection.length;
+      this.ids = selection.map(item => item.id);
+      this.single = selection.length != 1;
+      this.multiple = !selection.length;
+    },
+    /*===记录勾选数据===
+      需要再el-table 添加  :row-key="getRowKeys"
+      需要在selection 添加 :reserve-selection="true"
+    */
+    getRowKeys(row) {
+      return row.id
+    },
+      //返回
+      backPage(){
+        this.$parent.handleClick('','','back');
+        this.$parent.outStatistics()
+        this.$parent.gasApplyStatistics()
+        this.$parent.useGasStatistics()
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.queryParams.searchValue = "";
+        this.dateRange=[];
+        this.queryParams.startTime=null;
+        this.queryParams.endTime=null
+        this.handleQuery();
+      },
+    getList(){
+      let _this=this;
+      if(this.dateRange&&this.dateRange.length>0) {
+        this.queryParams.startTime=this.dateRange[0]
+        this.queryParams.endTime=this.dateRange[1]
+      } else {
+        this.queryParams.startTime=null;
+        this.queryParams.endTime=null
+      }
+      outRecordList(_this.queryParams).then( response => {
+        let res=response.rows;
+        _this.tableData=res;
+        _this.total=response.total;
+      });
+    },
+  },
+  mounted() {
+    this.getList()
+  }
+
+};
+</script>
+
+<style scoped lang="scss">
+  /*导出按钮样式*/
+  .form-dropdown-box{
+    display: flex;
+    margin:0;
+    padding:0 10px;
+    cursor: pointer;
+    height:40px;
+    img:nth-child(1){
+      width:16px;
+      height:16px;
+      margin-top:12px;
+    }
+    p{
+      width:47px;
+      text-align: center;
+      font-size:14px;
+      margin:0;
+      line-height:40px;
+    }
+    img:nth-child(3){
+      width:10px;
+      height:6px;
+      margin-top:17px;
+    }
+  }
+  .apply {
+    flex:1;
+    display: flex!important;
+    flex-direction: column;
+    .apply_page{
+      flex:1;
+      display: flex!important;
+      flex-direction: column;
+      box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+      padding:20px 20px 20px!important;
+      border-radius:10px;
+
+      .button-box{
+        width:200px;
+        display: flex;
+      }
+    }
+
+  }
+</style>

+ 176 - 0
src/views/gasManage_syd/infoRecord/outRecordDetail.vue

@@ -0,0 +1,176 @@
+<!--出库记录-详情-->
+<template>
+  <div class="addPage">
+    <div class="addPage_title">
+      <p>查看气瓶</p>
+      <p  class="reset-button-one" @click="backPage">返回</p>
+    </div>
+    <div class="small_title">气瓶信息</div>
+     <!--基本信息-->
+    <div class="info" v-if="formInfo">
+      <li><i>标签码:</i><i></i></li>
+      <li><i>气瓶编号:</i><i>{{formInfo.airNumber}}</i></li>
+      <li><i>气体名称:</i><i>{{formInfo.airName}}</i></li>
+      <li><i>气瓶规格:</i><i></i></li>
+      <li><i>最低气压值:</i><i></i></li>
+      <li><i>气体组分:</i><i>{{formInfo.airConstituents}}</i></li>
+    </div>
+    <div class="small_title">出库信息</div>
+    <div class="info" v-if="form.bottleStorageOut">
+      <li><i>出库人:</i><i></i></li>
+      <li><i>出库时间:</i><i></i></li>
+    </div>
+  </div>
+</template>
+<script>
+
+import { getToken } from "@/utils/auth";
+import { enterRecordDetail, outRecordDetail, subjectList } from '@/api/gasManage3_0/gasManage'
+let Base64 = require('js-base64').Base64;
+export default {
+  name: "addPage",
+  props:{
+    pageData2: {},
+  },
+  data() {
+    return {
+      pageType:1,
+      uploadImgUrl: window.location.href.split('://')[0]+'://' + process.env.VUE_APP_BASE_API + "/file/upload", // 上传的图片服务器地址
+      headers: {
+        Authorization: "Bearer " + getToken(),
+      },
+      loading:false,
+      form:{},
+      formInfo:{},
+      infoParams:{
+        radio:1,
+      },
+      dateRange:[],
+      laboratoryOptions:[],
+
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize:20,
+      },
+      total:0,
+      tableData:[{
+        num:0,
+      }],
+    };
+  },
+  created() {
+
+  },
+  methods: {
+    getList(){
+
+    },
+    //返回
+    backPage(){
+      this.$parent.handleClick('','','back');
+    },
+    /* 详情 */
+    getInfo(id){
+      let _this=this;
+      outRecordDetail({id:id}).then( response => {
+        let res=response.data;
+        if(response.code==200){
+          _this.form=res;
+        }
+      });
+
+    },
+
+  },
+  mounted() {
+
+    this.formInfo=this.pageData2.item
+    this.getInfo(this.pageData2.item.id);
+    console.log(this.formInfo)
+  }
+
+};
+</script>
+
+<style scoped lang="scss">
+.addPage {
+  flex:1;
+  display: flex!important;
+  flex-direction: column;
+  box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+  border-radius:10px;
+  /*顶部*/
+  .addPage_title{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    border-bottom: 1px solid #E0E0E0;
+    padding-top:20px;
+    p:nth-child(1){
+      flex: 1;
+      line-height:60px;
+      color: #0045AF;
+      font-size:18px;
+      margin:0 12px 0 20px;
+    }
+    p:nth-child(2){
+      margin-right:20px;
+    }
+    p:nth-child(3){
+      margin-right:20px;
+    }
+  }
+  /*小标题*/
+  .small_title{
+    font-size: 16px;
+    font-family: Microsoft YaHei;
+    font-weight: bold;
+    color: #333333;
+    line-height: 16px;
+    margin: 20px 0 0 20px;
+  }
+  /*基本信息*/
+  .info{
+    display: flex;
+    justify-content: flex-start;
+    flex-wrap: wrap;
+    height: 130px;
+    border: 1px solid #E0E0E0;
+    margin: 20px;
+    padding: 30px 48px;
+    box-sizing: border-box;
+    >li{
+      list-style-type: none;
+      margin-right: 30px;
+      >i{
+        font-style: normal;
+      }
+      >i:nth-of-type(1){
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #999999;
+        line-height: 16px;
+      }
+      >i:nth-of-type(2){
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #333333;
+        line-height: 16px;
+      }
+    }
+    .look_img{
+      >i:nth-of-type(2){
+        color: #0183FA;
+      }
+    }
+  }
+  /*入库信息*/
+  .addPage_b{
+    margin: 20px;
+  }
+
+}
+</style>

+ 317 - 0
src/views/gasManage_syd/infoRecord/useRecord.vue

@@ -0,0 +1,317 @@
+<!--使用记录-->
+<template>
+  <div class="apply">
+    <div class="apply_page" v-if="pageType == 1">
+      <el-form :model="queryParams" ref="queryForm" style="margin-top:20px;" :inline="true">
+        <el-form-item label="关键字" prop="name">
+          <el-input
+            v-model="queryParams.searchValue"
+            placeholder="使用人/联系方式/实验地点"
+            clearable
+            maxLength="30"
+            size="small"
+          />
+        </el-form-item>
+        <div style="display: inline-block;font-size: 14px;color: #606266;line-height: 40px;margin-right: 12px;cursor: pointer;" @click="tabDateFun()">{{tabDateName}}<i style="font-size: 20px;position: relative;top: 2px;margin-left: 4px;" class="el-icon-arrow-down"></i></div>
+        <el-form-item label="" prop="dateRange" >
+          <el-date-picker
+            :clearable="false"
+            v-model="dateRange"
+            size="small"
+            style="width: 240px"
+            value-format="yyyy-MM-dd"
+            type="daterange"
+            range-separator="-"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <p class="inquire-button-one" @click="handleQuery">查询</p>
+          <p class="reset-button-one" @click="resetQuery">重置</p>
+        </el-form-item>
+        <el-form-item label="" prop="title" style="float: right">
+          <el-dropdown @command="exportButton" style="float: left"    v-hasPermi="['airbottle:use:record:export']">
+            <div class="form-dropdown-box">
+              <img src="@/assets/ZDimages/personnelManagement/icon_jzgxx_sc.png">
+              <p>导出</p>
+              <img src="@/assets/ZDimages/personnelManagement/icon_jzggl_xljt.png">
+            </div>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item style="border-bottom:1px solid #E0E0E0;margin:0 10px;color:#333;" :command="{command:1}">导出全部数据</el-dropdown-item>
+              <el-dropdown-item style="margin:0 10px;color:#666;" :command="{command:2}">导出选中数据</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+          <p class="reset-button-one" style="margin-left: 12px;" @click="backPage">返回</p>
+        </el-form-item>
+      </el-form>
+      <el-table border v-loading="loading" :data="tableData" @selection-change="handleSelectionChange" ref="multipleTable" :row-key="getRowKeys">
+        <el-table-column type="selection" width="50" align="center"/>
+        <el-table-column label="使用人" align="left" prop="contacts"/>
+        <el-table-column label="联系方式" align="left" prop="phone"></el-table-column>
+        <el-table-column label="标签码" align="left" prop=""></el-table-column>
+        <el-table-column label="气瓶编号" align="left" prop=""></el-table-column>
+        <el-table-column label="气瓶名称" align="left" prop="airName"></el-table-column>
+        <el-table-column label="使用前气压" align="left" prop="beforeUse">
+          <template slot-scope="scope">
+            <span >{{scope.row.beforeUse}}Mpa</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="使用后气压" align="left" prop="afterUse">
+          <template slot-scope="scope">
+            <span >{{scope.row.afterUse}}Mpa</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="使用时间" align="left" prop="useTime">
+          <template slot-scope="scope">
+            <span >{{scope.row.useTime?scope.row.useTime:'-'}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="归还时间" align="left" prop="backTime">
+          <template slot-scope="scope">
+            <span >{{scope.row.backTime?scope.row.backTime:'-'}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="120">
+          <template slot-scope="scope">
+            <div class="button-box">
+              <p class="table-min-button"
+                 v-hasPermi="['airbottle:use:record:query']"
+                 @click="handleClick('',scope.row,'detail')"
+              >查看</p>
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div style="display: flex;height:32px;margin-top:15px;">
+        <!--<p style="flex:4;"></p>-->
+        <p style="text-align: left;margin:0;line-height:32px;margin-right:20px;font-size:14px;color:#999;">
+          <i class="el-icon-warning" style="color:#0183FA;"></i>
+          已选择 {{selectedNum}} 项
+        </p>
+        <div style="flex:5;">
+          <pagination :page-sizes="[20, 30, 40, 50]"
+            v-show="total>0"
+            :total="total"
+            style="margin:0;"
+            :page.sync="queryParams.pageNum"
+            :limit.sync="queryParams.pageSize"
+            @pagination="getList"
+          />
+        </div>
+      </div>
+    </div>
+     <!--详情页面-->
+    <detail-page v-if="pageType==2" :pageData2="pageData2"></detail-page>
+  </div>
+</template>
+<script>
+import { gasApplyList, useRecordList } from '@/api/gasManage3_0/gasManage'
+import { getToken } from "@/utils/auth";
+import detailPage from "./useRecordDetail.vue"
+export default {
+  name: "Approval",
+  components: {
+    detailPage
+  },
+  data() {
+    return {
+      //页面状态
+      pageType:1,
+      loading:false,
+      headers: {
+        Authorization: "Bearer " + getToken()
+      },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize:20,
+        searchValue:'',
+        searchType:0,
+      },
+      total:0,
+      tableData:[],
+      dateRange:[],
+      pageData2:{},
+      tabDateName:'使用时间',
+      //导出
+      //表格扩展选择器---需要在@selection-change绑定的方法内监控selection数组长度
+      selectedNum:0,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+    };
+
+
+  },
+  methods: {
+    handleClick(index,row,doType){
+      let _this=this;
+      if(doType=='detail'){//查看
+        _this.pageData2.item=row;
+        _this.pageType=2;
+      }else if(doType=='back'){//返回
+        _this.pageType=1;
+      }else if(doType=='export'){//导出
+        this.download('airbottle/use/record/export', {
+          ...this.queryParams
+        }, `使用记录导出.xlsx`)
+      }
+
+    },
+    /** 当前时间 */
+    getCurrentTime () {
+      const yy = new Date().getFullYear()
+      const mm = new Date().getMonth() + 1
+      const dd = new Date().getDate()
+      const hh = new Date().getHours()
+      const mf = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes() : new Date().getMinutes()
+      const ss = new Date().getSeconds() < 10 ? '0' + new Date().getSeconds() : new Date().getSeconds()
+      return yy + '-' + mm + '-' + dd
+    },
+    /** 导出按钮操作 */
+    exportButton(item) {
+      let self = this;
+      let currentDate = this.getCurrentTime()
+      if(item.command == 1){
+        self.$confirm(`确认导出全部数据?`, "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(async () => {
+          self.download('/airbottle/use/record/export/', {...self.queryParamsData}, '使用记录导出-'+currentDate+'.xlsx')
+        }).catch(() => {})
+      }else if(item.command == 2){
+        if(self.ids.length>0) {
+          self.$confirm(`确认导出选中数据?`, "提示", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(async () => {
+            let ids = self.ids.join(',');
+            let obj = {
+              ids :ids
+            }
+            console.log("obj",obj)
+            self.download(`/airbottle/use/record/export/`,obj, '使用记录导出-'+currentDate+'.xlsx')
+          }).catch(() => {})
+        }else {
+          this.msgError('请选择要导出的数据')
+        }
+      }
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.selectedNum = selection.length;
+      this.ids = selection.map(item => item.id);
+      this.single = selection.length != 1;
+      this.multiple = !selection.length;
+    },
+    /*===记录勾选数据===
+      需要再el-table 添加  :row-key="getRowKeys"
+      需要在selection 添加 :reserve-selection="true"
+    */
+    getRowKeys(row) {
+      return row.id
+    },
+    tabDateFun(){
+      let _this=this;
+      console.log(111)
+      _this.queryParams.searchType==0? _this.queryParams.searchType=1:_this.queryParams.searchType=0
+      if(_this.queryParams.searchType==0){//使用时间
+        _this.tabDateName='使用时间'
+      }else if(_this.queryParams.searchType==1){//归还时间
+        _this.tabDateName='归还时间'
+      }
+    },
+      //返回
+      backPage(){
+        this.$parent.handleClick('','','back');
+        this.$parent.outStatistics()
+        this.$parent.gasApplyStatistics()
+        this.$parent.useGasStatistics()
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.queryParams.searchValue = "";
+      this.dateRange=[];
+      this.queryParams.startTime=null;
+      this.queryParams.endTime=null
+      this.handleQuery();
+    },
+    getList(){
+      let _this=this;
+      if(this.dateRange&&this.dateRange.length>0) {
+        this.queryParams.startTime=this.dateRange[0]
+        this.queryParams.endTime=this.dateRange[1]
+      } else {
+        this.queryParams.startTime=null;
+        this.queryParams.endTime=null
+      }
+      useRecordList(_this.queryParams).then( response => {
+        let res=response.rows;
+        _this.tableData=res;
+        _this.total=response.total;
+      });
+    },
+  },
+  mounted() {
+    this.getList();
+  }
+};
+</script>
+
+<style scoped lang="scss">
+  /*导出按钮样式*/
+  .form-dropdown-box{
+    display: flex;
+    margin:0;
+    padding:0 10px;
+    cursor: pointer;
+    height:40px;
+    img:nth-child(1){
+      width:16px;
+      height:16px;
+      margin-top:12px;
+    }
+    p{
+      width:47px;
+      text-align: center;
+      font-size:14px;
+      margin:0;
+      line-height:40px;
+    }
+    img:nth-child(3){
+      width:10px;
+      height:6px;
+      margin-top:17px;
+    }
+  }
+  .apply {
+    flex:1;
+    display: flex!important;
+    flex-direction: column;
+    .apply_page{
+      flex:1;
+      display: flex!important;
+      flex-direction: column;
+      box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+      padding:20px 20px 20px!important;
+      border-radius:10px;
+
+      .button-box{
+        width:200px;
+        display: flex;
+      }
+    }
+
+  }
+</style>

+ 234 - 0
src/views/gasManage_syd/infoRecord/useRecordDetail.vue

@@ -0,0 +1,234 @@
+<!--使用记录-详情-->
+<template>
+  <div class="addPage">
+    <div class="addPage_title">
+      <p>使用详情</p>
+      <p  class="reset-button-one" @click="backPage">返回</p>
+    </div>
+    <div class="small_title">气瓶信息</div>
+     <!--基本信息-->
+    <div class="info" v-if="form">
+      <li><i>标签码:</i><i></i></li>
+      <li><i>气瓶编号:</i><i>{{form.airNumber}}</i></li>
+      <li><i>气体名称:</i><i>{{form.airName}}</i></li>
+      <li><i>气瓶规格:</i><i></i></li>
+      <li><i>最低气压值:</i><i></i></li>
+      <li><i>气体组分:</i><i>{{form.airConstituents}}</i></li>
+    </div>
+    <div class="small_title">使用记录</div>
+    <div class="addPage_b">
+      <el-table border v-loading="loading" :data="form.recordVos" height="300px" >
+        <el-table-column label="使用量" align="left" prop="amount">
+          <template slot-scope="scope">
+            <span>{{scope.row.amount}}Mpa</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="使用前气压" align="left" prop="beforeUsePic">
+          <template slot-scope="scope">
+            <span>{{scope.row.beforeUse}}Mpa</span>
+            <span style="color: #0183FA;margin-left: 10px;cursor: pointer;"   @click="handleClick('',scope.row,'before')">查看图片</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="使用后气压" align="left" prop="afterUse">
+          <template slot-scope="scope">
+            <span>{{scope.row.afterUse}}Mpa</span>
+            <span style="color: #0183FA;margin-left: 10px;cursor: pointer;" @click="handleClick('',scope.row,'after')">查看图片</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="使用时间" align="left" prop="useTime">
+          <template slot-scope="scope">
+            <span >{{scope.row.useTime?scope.row.useTime:'-'}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="归还时间" align="left" prop="backTime">
+          <template slot-scope="scope">
+            <span >{{scope.row.backTime?scope.row.backTime:'-'}}</span>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+  </div>
+</template>
+<script>
+
+import { getToken } from "@/utils/auth";
+import { gasApplyDetail, subjectList, useRecordDetail } from '@/api/gasManage3_0/gasManage'
+let Base64 = require('js-base64').Base64;
+export default {
+  name: "addPage",
+  props:{
+    pageData2:{},
+  },
+  data() {
+    return {
+      pageType:1,
+      uploadImgUrl: window.location.href.split('://')[0]+'://' + process.env.VUE_APP_BASE_API + "/file/upload", // 上传的图片服务器地址
+      headers: {
+        Authorization: "Bearer " + getToken(),
+      },
+      // 设置只能选择当前日期及之后的日期
+      pickerOptions0: {
+        disabledDate(time) {
+          return time.getTime() < Date.now() - 8.64e7;//如果没有后面的-8.64e7就是不可以选择今天的
+        }
+      },
+      loading:false,
+      form:{
+      },
+      infoParams:{
+        radio:1,
+      },
+      dateRange:[],
+      laboratoryOptions:[],
+
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize:20,
+      },
+      total:0,
+      tableData:[],
+    };
+  },
+  created() {
+
+  },
+  methods: {
+    handleClick(index,row,doType){
+      let _this=this;
+      if(doType=='before'){//重新申请
+        _this.lookFile(row.beforeUsePic)
+      }else if(doType=='after'){
+        _this.lookFile(row.afterUsePic)
+      }
+    },
+    //使用记录当前查看的记录高亮显示
+    tableRowClassName({row, rowIndex}) {
+      if (rowIndex === 0) {
+        return 'warning-row';
+      } else if (rowIndex === 3) {
+        return 'success-row';
+      }
+    },
+    /**查看图片  */
+    lookFile(item){
+      let visitUrl=window.location.href.split('://')[0]+'://'+process.env.VUE_APP_BASE_API+'/admin/'+item;
+      console.log(visitUrl)
+      window.open(window.location.href.split('://')[0]+'://'  + process.env.VUE_APP_BASE_FILE_API + '/onlinePreview?url='+encodeURIComponent(Base64.encode(visitUrl)));
+    },
+    /* 详情 */
+    getInfo(id){
+      let _this=this;
+      useRecordDetail(id).then( response => {
+        let res=response.data;
+        if(response.code==200){
+          _this.form=res;
+        }
+      });
+
+    },
+    //返回
+    backPage(){
+      this.$parent.handleClick('','','back');
+    },
+
+  },
+  mounted() {
+    this.formInfo=this.pageData2.item
+    this.getInfo(this.pageData2.item.id);
+  }
+
+};
+</script>
+
+<style scoped lang="scss">
+.el-table__row .warning-row{
+    background: #333333;
+
+}
+
+.el-table {
+  .success-row {
+    background: #f0f9eb;
+  }
+}
+.addPage {
+  flex:1;
+  display: flex!important;
+  flex-direction: column;
+  box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+  border-radius:10px;
+  /*顶部*/
+  .addPage_title{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    border-bottom: 1px solid #E0E0E0;
+    padding-top:20px;
+    p:nth-child(1){
+      flex: 1;
+      line-height:60px;
+      color: #0045AF;
+      font-size:18px;
+      margin:0 12px 0 20px;
+    }
+    p:nth-child(2){
+      margin-right:20px;
+    }
+    p:nth-child(3){
+      margin-right:20px;
+    }
+  }
+  /*小标题*/
+  .small_title{
+    font-size: 16px;
+    font-family: Microsoft YaHei;
+    font-weight: bold;
+    color: #333333;
+    line-height: 16px;
+    margin: 20px 0 0 20px;
+  }
+  /*基本信息*/
+  .info{
+    display: flex;
+    justify-content: flex-start;
+    flex-wrap: wrap;
+    height: 130px;
+    border: 1px solid #E0E0E0;
+    margin: 20px;
+    padding: 30px 48px;
+    box-sizing: border-box;
+    >li{
+      list-style-type: none;
+      margin-right: 30px;
+      >i{
+        font-style: normal;
+      }
+      >i:nth-of-type(1){
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #999999;
+        line-height: 16px;
+      }
+      >i:nth-of-type(2){
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #333333;
+        line-height: 16px;
+      }
+    }
+    .look_img{
+      >i:nth-of-type(2){
+        color: #0183FA;
+      }
+    }
+  }
+  /*入库信息*/
+  .addPage_b{
+    margin: 20px;
+  }
+
+}
+</style>

+ 181 - 0
src/views/gasManage_syd/useGas/useGas.vue

@@ -0,0 +1,181 @@
+<!--用气申请-学生端和管理端-->
+<template>
+  <div class="app-container approval_handle">
+    <div class="approval_handle-page" v-if="pageType == 1">
+      <div class="top-click-img-box">
+        <img src="@/assets/ZDimages/icon_banner_yqsq.png" alt="">
+          <p v-hasPermi="['airbottle:useAgsApplyManage:add']" @click="handleClick('','','apply')">开始申请</p>
+      </div>
+      <el-form :model="queryParams" ref="queryForm" style="margin-top:20px;" :inline="true">
+        <el-form-item label="状态" prop="zgType" label-width="80px">
+          <el-select v-model="queryParams.auditStatus" placeholder="请选择" clearable size="small">
+            <el-option label="待审核" value="0" />
+            <el-option label="已通过" value="1" />
+            <el-option label="未通过" value="2" />
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <p class="inquire-button-one" @click="handleQuery">查询</p>
+          <p class="reset-button-one" @click="resetQuery">重置</p>
+        </el-form-item>
+      </el-form>
+      <el-table border v-loading="loading" :data="tableData">
+        <el-table-column label="申请时间" align="left" prop="createTime"></el-table-column>
+        <el-table-column label="使用气体" align="left" prop="useGasName"></el-table-column>
+        <el-table-column label="使用期限" align="left" prop="startTime">
+          <template slot-scope="scope">
+            {{scope.row.startTime}}至{{scope.row.endTime}}
+          </template>
+        </el-table-column>
+        <el-table-column label="状态" align="left" prop="auditStatus">
+          <template slot-scope="scope">
+            <p :class="scope.row.remark == 0?'color_warn':(scope.row.remark == 1?'color_14AE10':(scope.row.remark == 2?'color_red':''))">{{scope.row.remark == 0?'待审核':(scope.row.remark == 1?'通过':(scope.row.remark == 2?'驳回':''))}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="120">
+          <template slot-scope="scope">
+            <div class="button-box">
+              <p class="table-min-button"
+                 v-hasPermi="['airbottle:useAgsApplyManage:query']"
+                 @click="handleClick('',scope.row,'detail')"
+              >查看</p>
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination :page-sizes="[20, 30, 40, 50]"
+        :total="total"
+        layout="total, prev, pager, next, sizes, jumper"
+        :page.sync="queryParams.pageNum"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
+      />
+    </div>
+    <!--添加页面-->
+    <add-page v-if="pageType==2" :pageData="pageData"></add-page>
+     <!--详情页面-->
+    <detail-page v-if="pageType==3" :pageData2="pageData2"></detail-page>
+  </div>
+</template>
+
+<script>
+import { useAgsApplyList,} from '@/api/gasManage3_0/gasManage'
+import { getToken } from "@/utils/auth";
+import addPage from "./useGasAdd.vue"
+import detailPage from "./useGasDetail.vue"
+export default {
+  name: "Approval",
+  components: {
+    addPage,
+    detailPage
+  },
+  data() {
+    return {
+      //页面状态
+      pageType:1,
+      loading:false,
+      headers: {
+        Authorization: "Bearer " + getToken()
+      },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize:20,
+        auditStatus:'',
+      },
+      total:0,
+      tableData:[],
+      pageData:{},//0添加1编辑
+      pageData2:{},
+    };
+  },
+  methods: {
+      handleClick(index,row,doType){
+        let _this=this;
+        if(doType=='apply'){//申请
+          _this.pageData.status=0;
+          _this.pageType=2;
+        }else if(doType=='detail'){//查看
+          _this.pageData2.id=row.id;
+          _this.pageData2.remark=row.remark;
+          _this.pageType=3;
+        }else if(doType=='back'){//返回
+          _this.pageType=1;
+        }else if(doType=='again'){//重新申请
+          _this.pageType=2;
+          _this.pageData.status=1;
+          _this.pageData.id=row;
+        }
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.queryParams.auditStatus = "";
+        this.handleQuery();
+      },
+      getList(){
+        let _this=this;
+        useAgsApplyList(_this.queryParams).then( response => {
+          let res=response.rows;
+          _this.tableData=res;
+          _this.total=response.total;
+        });
+      },
+  },
+  mounted() {
+    this.getList()
+  }
+};
+</script>
+
+<style scoped lang="scss">
+  .approval_handle {
+    display: flex!important;
+    flex-direction: column;
+    .approval_handle-page{
+      flex:1;
+      display: flex!important;
+      flex-direction: column;
+      box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+      padding:20px 20px 20px!important;
+      border-radius:10px;
+      .top-click-img-box{
+        width:1536px;
+        height:250px;
+        margin:0 auto 20px;
+        position: relative;
+        img{
+          width:1536px;
+          height:250px;
+        }
+        p{
+          margin:0;
+          position: absolute;
+          left:294px;
+          bottom:24px;
+          width:200px;
+          height:50px;
+          border-radius:25px;
+          line-height:50px;
+          font-size:24px;
+          text-align: center;
+          color:#fff;
+          font-weight: 500;
+          border: 1px solid #69eeff;
+          cursor: pointer;
+        }
+      }
+      .form-box{
+      }
+      .button-box{
+        width:200px;
+        display: flex;
+      }
+    }
+
+  }
+</style>

+ 408 - 0
src/views/gasManage_syd/useGas/useGasAdd.vue

@@ -0,0 +1,408 @@
+<!--资格申请-添加-->
+<template>
+  <div class="addPage">
+    <div class="addPage_title">
+      <p>用气申请</p>
+      <P>填写申请信息,内容提交后需要进行审核,通过审核才能够使用气瓶。   </P>
+      <p class="button-p reset-button-one" @click="backPage">返回</p>
+    </div>
+    <div class="addPage_b">
+      <!--申请1-->
+      <div v-if="pageType==1">
+        <el-form class="addPage_b_b" :model="form" ref="form" :rules="rules" label-position="right" label-width="100px">
+          <el-form-item label="申请人" prop="applyCause" >
+            <el-input  style="width: 300px" v-model="form.applyUser" disabled  maxlength="50" />
+          </el-form-item>
+          <el-form-item label="联系方式" prop="phone" >
+            <el-input  style="width: 300px" v-model="form.phone"  placeholder="请输入联系方式" maxlength="50" />
+          </el-form-item>
+<!--          <el-form-item label="实验地点" prop="subjectId">-->
+<!--            <el-select-->
+<!--              style="width:300px;"-->
+<!--              v-model="form.location"-->
+<!--              filterable-->
+<!--              remote-->
+<!--              clearable-->
+<!--              reserve-keyword-->
+<!--              @focus="selectFocus"-->
+<!--              @change="selectChange"-->
+<!--              placeholder="请选择实验地点"-->
+<!--              :remote-method="userSelectList"-->
+<!--              :loading="loading">-->
+<!--              <el-option-->
+<!--                v-for="item in laboratoryOptions"-->
+<!--                :key="item.id"-->
+<!--                :label="item.name"-->
+<!--                :value="item.id">-->
+<!--              </el-option>-->
+<!--            </el-select>-->
+<!--          </el-form-item>-->
+          <el-form-item label="使用期限" prop="dateRange" >
+            <el-date-picker
+              :clearable="false"
+              v-model="form.dateRange"
+              size="small"
+              style="width: 300px"
+              value-format="yyyy-MM-dd"
+              type="daterange"
+              range-separator="-"
+              :picker-options="pickerOptions0"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+            ></el-date-picker>
+          </el-form-item>
+          <el-form-item label="使用气体" prop="useGasId" >
+            <el-select class="min-width" placeholder="请选择使用气体" v-model="form.useGasId" filterable clearable  @change="useGasFun" style="width: 300px">
+              <el-option
+                v-for="(item,index) in useGasList"
+                :key="item.id"
+                :label="item.goodsName"
+                :value="item.id">
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="气体用途" prop="gasUse" >
+            <el-input  style="width: 300px" v-model="form.gasUse"  placeholder="请输入气体用途" maxlength="50" />
+          </el-form-item>
+          <el-form-item label="安全措施" prop="safetyPrecautions" >
+            <el-input  style="width: 300px" v-model="form.safetyPrecautions"  placeholder="请输入安全措施" maxlength="50" />
+          </el-form-item>
+          <el-form-item label="用气申请表" prop="applyCertificate" >
+            <el-upload
+              class="certificate-avatar-uploader"
+              :action="uploadImgUrl"
+              :show-file-list="false"
+              :on-success="handleAvatarSuccess"
+              :headers="headers"
+              :before-upload="beforeAvatarUpload">
+              <div style="display: flex;">
+                <img v-if="form.applyCertificate" :src="form.applyCertificate" style="width: 80px;height: 80px;margin-right: 10px">
+                <i v-if="!form.applyCertificate" class="el-icon-plus avatar-uploader-icon"></i>
+              </div>
+            </el-upload>
+          </el-form-item>
+        </el-form>
+        <p class="inquire-button-one" style="width:400px;margin:36px 0 16px 38%;" @click="handleClick('','form','next')">提交申请</p>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import { getToken } from "@/utils/auth";
+import {
+  bottleList,
+  getLoginUser, googsListGoogs,
+  subjectList,
+  useAgsApplyAdd,
+  useAgsApplyAnew,
+  useAgsApplyDetail
+} from '@/api/gasManage3_0/gasManage'
+export default {
+  name: "addPage",
+  props:{
+    pageData:{},
+  },
+  data() {
+    // 时间的校验
+    const validateTime = (rule, value, callback) => {
+      console.log(value)
+      if(value && value.length>0){
+        this.form.startTime=value[0]
+        this.form.endTime=value[1]
+        callback();
+      }else{
+        this.form.startTime=null;
+        this.form.endTime=null
+        callback(new Error('请选择使用期限'))
+      }
+    }
+    return {
+      pageType:1,
+      uploadImgUrl: window.location.href.split('://')[0]+'://' + process.env.VUE_APP_BASE_API + "/file/upload", // 上传的图片服务器地址
+      headers: {
+        Authorization: "Bearer " + getToken(),
+      },
+      // 设置只能选择当前日期及之后的日期
+      pickerOptions0: {
+        disabledDate(time) {
+          return time.getTime() < Date.now() - 8.64e7;//如果没有后面的-8.64e7就是不可以选择今天的
+        }
+      },
+      loading:false,
+      form:{
+        deptId:'',
+        applyUser:'',
+        applyUserid:'',
+        phone:'',
+        location:'',
+        subjectId:'',
+        startTime:'',
+        endTime:'',
+        useGasName:'',
+        useGasId:'',
+        gasUse:'',
+        safetyPrecautions:'',
+        applyCertificate:'',
+        dateRange:[],
+      },
+      laboratoryOptions:[],
+      useGasList:[],
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize:20,
+        searchValue:'',
+      },
+      total:0,
+      tableData:[],
+      dialogVisible:false,
+      totalNum:0,//所选气瓶总数
+      status:0,//0添加1编辑
+      // 表单校验
+      rules: {
+        phone: [
+          { required: true, message: "请输入联系方式", trigger: "blur" },
+          { required: true, message: "请输入联系方式", validator: this.spaceJudgment, trigger: "blur" },
+          { pattern:/^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(16[0-9])|(17[0,3,5-8])|(18[0-9])|(147))+\d{8}$/, message: "请输入正确的联系方式", trigger: "blur" }
+        ],
+        subjectId: [
+          { required: true, message: "请选择实验地点", trigger: "blur" }
+        ],
+        useGasId: [
+          { required: true, message: "请选择使用气体", trigger: "blur" }
+        ],
+        gasUse: [
+          { required: true, message: "请输入气体用途", trigger: "blur" },
+          { required: true, message: "请输入气体用途", validator: this.spaceJudgment, trigger: "blur" }
+        ],
+        safetyPrecautions: [
+          { required: true, message: "请输入安全措施", trigger: "change" },
+          { required: true, message: "请输入安全措施", validator: this.spaceJudgment, trigger: "blur" }
+        ],
+        applyCertificate: [
+          { required: true, message: "请上传用气申请表", trigger: "change" }
+        ],
+        dateRange: [
+          {required: true, validator: validateTime, trigger: 'blur' },
+        ],
+      },
+    };
+  },
+  methods: {
+    selectFocus(){
+      console.log("123");
+      if(!this.laboratoryOptions[0]){
+        this.userSelectList("");
+      }
+    },
+    handleClick(index,row,doType){
+      let _this=this;
+      if(doType=='next'){//下一步
+        //非空校验
+        this.$refs[row].validate((valid) => {
+          if (valid) {
+            _this.submitForm();
+          } else {
+            return false;
+          }
+        });
+      }else if(doType=='last'){//上一步
+        _this.pageType=1;
+      }else if(doType=='selected'){//已选气瓶
+        _this.dialogVisible=true
+      }
+    },
+    /** 获取当前用户信息 */
+    getLoginUser() {
+      let _this=this;
+      getLoginUser().then( response => {
+        let res=response.data
+        _this.form.applyUser=res.nickName
+        _this.form.applyUserid=res.userId
+        _this.form.phone=res.phonenumber
+        _this.form.deptId=res.deptId
+
+      });
+    },
+    /** 获取使用气体信息 */
+    googsListGoogs() {
+      let _this=this;
+      googsListGoogs().then( response => {
+        let res=response.rows
+        _this.useGasList=res;
+
+      });
+    },
+    useGasFun(){
+     let _this=this;
+      _this.useGasList.forEach(function(item){
+        if(_this.form.useGasId==item.id){
+          _this.form.useGasName=item.goodsName;
+        }
+      })
+      console.log(_this.form.useGasId)
+      console.log(_this.form.useGasName)
+    },
+    //懒加载实验室
+    userSelectList(e){
+      subjectList({name:e,deptId:this.form.deptId}).then(response => {
+        this.laboratoryOptions = response.data;
+      });
+    },
+    //实验室选择
+    selectChange(e){
+      let self = this;
+      for(let i=0;i<self.laboratoryOptions.length;i++){
+        if(self.laboratoryOptions[i].id == e){
+          this.$set(this.form,"subject",self.laboratoryOptions[i]);
+          this.$set(this.form,"location",self.laboratoryOptions[i].name);
+        }
+      }
+      this.$set(this.form,"subjectId",e);
+    },
+    //上传
+    handleAvatarSuccess(res, file) {
+      console.log(res.data.url);
+      this.form.applyCertificate = res.data.url;
+      this.$forceUpdate()
+    },
+    beforeAvatarUpload(file) {
+      let type = false;
+      if (file.type == 'image/png' || file.type == 'image/jpeg' || file.type == 'image/gif') {
+        type = true;
+      }else{
+        this.$message.error('只能上传png/jpeg/gif格式图片');
+        type = false;
+      }
+      return type;
+    },
+    /* 详情 */
+    getInfo(id){
+      let _this=this;
+      useAgsApplyDetail({id:id}).then( response => {
+        let res=response.data;
+        if(response.code==200){
+          let dateRange=[];
+          _this.totalNum=0;
+          dateRange.push(res.apply.startTime,res.apply.endTime)
+          _this.form.id=res.apply.id;
+          _this.form.applyUser=res.apply.applyUser;
+          _this.form.phone=res.apply.phone;
+          _this.form.location=res.apply.location;
+          _this.form.subjectId=String(res.apply.subjectId);
+          _this.form.startTime=res.apply.startTime;
+          _this.form.endTime=res.apply.endTime;
+          _this.form.gasUse=res.apply.gasUse;
+          _this.form.applyCertificate=res.apply.applyCertificate;
+          _this.form.safetyPrecautions=res.apply.safetyPrecautions;
+          _this.form.useGasId=res.apply.useGasId;
+          _this.form.useGasName=res.apply.useGasName;
+          _this.form.dateRange=dateRange;
+        }
+      });
+
+    },
+    //提交
+    submitForm(){
+      let _this = this;
+      _this.loading = true;
+      if(_this.status==0){//新增
+
+        useAgsApplyAdd(_this.form).then(res => {
+          this.msgSuccess(res.msg);
+          _this.backPage();
+        });
+      }else if(_this.status==1){
+        useAgsApplyAnew(_this.form).then(res => {
+          this.msgSuccess(res.msg);
+          _this.backPage();
+        });
+      }
+
+    },
+
+    //返回
+    backPage(){
+      this.$parent.handleClick('','','back');
+      this.$parent.getList();
+    },
+
+  },
+  mounted() {
+    this.getLoginUser()
+    this.googsListGoogs()
+    this.status=this.pageData.status;
+    if(this.status==1){
+      this.getInfo(this.pageData.id)
+    }
+
+  }
+
+};
+</script>
+
+<style scoped lang="scss">
+.addPage {
+  flex:1;
+  display: flex!important;
+  flex-direction: column;
+  box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+  border-radius:10px;
+  /*顶部*/
+  .addPage_title{
+    display: flex;
+    align-items: center;
+    border-bottom: 1px solid #E0E0E0;
+    padding-top:20px;
+    p:nth-child(1){
+      line-height:60px;
+      color: #0045AF;
+      font-size:18px;
+      margin:0 12px 0 20px;
+    }
+    p:nth-child(2){
+      font-size: 14px;
+      font-family: Source Han Sans CN;
+      font-weight: 400;
+      color: #999999;
+      flex: 1;
+    }
+    p:nth-child(3){
+      margin-right:20px;
+    }
+  }
+
+  .addPage_b{
+    flex: 1;
+    display: flex!important;
+    flex-direction: column;
+    .addPage_b_b{
+      margin-top: 58px;
+      margin-left: 36%;
+    }
+    /*申请二*/
+    .apply_tow{
+      padding: 0 20px;
+      box-sizing: border-box;
+      flex: 1;
+      display: flex!important;
+      flex-direction: column;
+      .selected{
+        display: inline-block;
+        font-size: 14px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #0045AF;
+        float: right;
+        cursor: pointer;
+      }
+      .sub_btn{
+        display: flex;
+        justify-content: center;
+        margin: 30px 0;
+      }
+    }
+  }
+
+}
+</style>

+ 182 - 0
src/views/gasManage_syd/useGas/useGasDetail.vue

@@ -0,0 +1,182 @@
+<!--用气申请-添加-->
+<template>
+  <div class="addPage">
+    <div class="addPage_title">
+      <p>查看</p>
+      <p v-if="pageData2.remark==2" style="width: 120px;" class="inquire-button-one" @click="handleClick('','','again')">重新申请</p>
+      <p  class="reset-button-one" @click="backPage">返回</p>
+    </div>
+    <!--基本信息-->
+    <div class="info" v-if="form.apply">
+      <li><i>使用气体:</i><i>{{form.apply.useGasName}}</i></li>
+      <li><i>使用期限:</i><i>{{form.apply.startTime}}至{{form.apply.endTime}}</i></li>
+      <li><i>气瓶用途:</i><i>{{form.apply.gasUse}}</i></li>
+      <li><i>主要安全措施:</i><i>{{form.apply.safetyPrecautions}}</i></li>
+      <li class="look_img" @click="lookFile(form.apply.applyCertificate)"><i>用气申请表:</i><i>查看图片</i></li>
+    </div>
+    <div class="addPage_b" v-if="form.auditlist !='undefined'">
+      <!--气瓶信息-->
+      <div  class="addPage_b_t">
+        <div class="addPage_b_t_title">审核记录</div>
+        <el-table border v-loading="loading" :data="form.auditlist" height="300px">
+          <el-table-column label="审核人" align="left" prop="auditUser"/>
+          <el-table-column label="审核时间" align="left" prop="auditTime"></el-table-column>
+          <el-table-column label="审核操作" align="left" prop="auditStatus">
+            <template slot-scope="scope">
+              <p :class="scope.row.auditStatus == 0?'color_warn':(scope.row.auditStatus == 1?'color_14AE10':(scope.row.auditStatus == 2?'color_red':''))">{{scope.row.auditStatus == 0?'待审核':(scope.row.auditStatus == 1?'通过':(scope.row.auditStatus == 2?'驳回':''))}}</p>
+            </template>
+          </el-table-column>
+          <el-table-column label="审核说明" align="left" prop="remark"></el-table-column>
+        </el-table>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+
+import { getToken } from "@/utils/auth";
+import {
+  qualificationApplyDetail,
+  qualificationApplyList,
+  subjectList,
+  useAgsApplyDetail
+} from '@/api/gasManage3_0/gasManage'
+let Base64 = require('js-base64').Base64;
+export default {
+  name: "addPage",
+  props:{
+    pageData2: {},
+  },
+  data() {
+    return {
+      pageType:1,
+      headers: {
+        Authorization: "Bearer " + getToken(),
+      },
+      loading:false,
+      form:{
+
+      },
+      total:0,
+      tableData:[{
+        num:0,
+      }],
+    };
+  },
+  methods: {
+    handleClick(index,row,doType){
+      let _this=this;
+      if(doType=='again'){//重新申请
+        this.$parent.handleClick('',this.form.apply.id,'again');
+      }
+    },
+    /**查看图片  */
+    lookFile(item){
+      let visitUrl=window.location.href.split('://')[0]+'://'+process.env.VUE_APP_BASE_API+'/admin/'+item;
+      console.log(visitUrl)
+      window.open(window.location.href.split('://')[0]+'://'  + process.env.VUE_APP_BASE_FILE_API + '/onlinePreview?url='+encodeURIComponent(Base64.encode(visitUrl)));
+    },
+    /* 详情 */
+    getInfo(id){
+      let _this=this;
+      useAgsApplyDetail({id:id}).then( response => {
+        let res=response.data;
+        if(response.code==200){
+          _this.form=res;
+        }
+      });
+
+    },
+    //返回
+    backPage(){
+      this.$parent.handleClick('','','back');
+    },
+
+  },
+  mounted() {
+    this.getInfo(this.pageData2.id);
+  }
+
+};
+</script>
+
+<style scoped lang="scss">
+.addPage {
+  flex:1;
+  display: flex!important;
+  flex-direction: column;
+  box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+  border-radius:10px;
+  /*顶部*/
+  .addPage_title{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    border-bottom: 1px solid #E0E0E0;
+    padding-top:20px;
+    p:nth-child(1){
+      flex: 1;
+      line-height:60px;
+      color: #0045AF;
+      font-size:18px;
+      margin:0 12px 0 20px;
+    }
+    p:nth-child(2){
+      margin-right:20px;
+    }
+    p:nth-child(3){
+      margin-right:20px;
+    }
+  }
+  /*基本信息*/
+  .info{
+    display: flex;
+    justify-content: flex-start;
+    flex-wrap: wrap;
+    align-items: center;
+    >li{
+      list-style-type: none;
+      margin: 20px;
+      >i{
+        font-style: normal;
+      }
+      >i:nth-of-type(1){
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #999999;
+        line-height: 16px;
+      }
+      >i:nth-of-type(2){
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #333333;
+        line-height: 16px;
+      }
+    }
+    .look_img{
+      cursor: pointer;
+      >i:nth-of-type(2){
+        color: #0183FA;
+      }
+    }
+  }
+  .addPage_b{
+    /*气瓶信息*/
+    .addPage_b_t{
+      padding: 0 20px;
+      box-sizing: border-box;
+      .addPage_b_t_title{
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: bold;
+        color: #333333;
+        line-height: 16px;
+        margin: 40px 0 30px 0;
+      }
+    }
+  }
+
+}
+</style>

+ 187 - 0
src/views/gasManage_syd/useGasCheck/useGasCheck.vue

@@ -0,0 +1,187 @@
+<!--用气审核-->
+<template>
+  <div class="app-container approval_handle">
+    <div class="approval_handle-page" v-if="pageType==1">
+      <template>
+        <el-tabs v-model="activeName"  @tab-click="handleTabClick">
+          <el-tab-pane label="待审核(10)" name="1"></el-tab-pane>
+          <el-tab-pane label="已通过(99)" name="2"></el-tab-pane>
+          <el-tab-pane label="未通过(9)" name="3"></el-tab-pane>
+        </el-tabs>
+      </template>
+      <el-form :model="queryParams" ref="queryForm" style="margin-top:20px;" :inline="true">
+        <el-form-item label="关键字" prop="safetyPrecautions" >
+          <el-input v-model="form.safetyPrecautions"  placeholder="申请人/联系电话" maxlength="50" />
+        </el-form-item>
+        <el-form-item>
+          <p class="inquire-button-one" @click="handleQuery">查询</p>
+          <p class="reset-button-one" @click="resetQuery">重置</p>
+        </el-form-item>
+      </el-form>
+      <el-table border v-loading="loading" :data="tableData">
+        <el-table-column label="申请人" align="left" prop="location"/>
+        <el-table-column label="联系方式" align="left" prop="createTime"></el-table-column>
+        <el-table-column label="使用气体" align="left" prop="createTime"></el-table-column>
+        <el-table-column label="申请时间" align="left" prop="createTime"></el-table-column>
+        <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="120">
+          <template slot-scope="scope">
+            <div class="button-box">
+              <p class="table-min-button"
+                 v-if="activeName==1"
+                 v-hasPermi="['airbottle:taskManage:query']"
+                 @click="handleClick('',scope.row,'check')"
+              >审核</p>
+              <p class="table-min-button"
+                 v-if="activeName==2 || activeName==3"
+                 v-hasPermi="['airbottle:taskManage:query']"
+                 @click="handleClick('',scope.row,'detail')"
+              >详情</p>
+            </div>
+
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination :page-sizes="[20, 30, 40, 50]"
+                  :total="total"
+                  layout="total, prev, pager, next, sizes, jumper"
+                  :page.sync="queryParams.pageNum"
+                  :limit.sync="queryParams.pageSize"
+                  @pagination="getList"
+      />
+    </div>
+    <!--详情页面-->
+    <detail-page v-if="pageType==2" :pageData2="pageData2"></detail-page>
+  </div>
+</template>
+
+<script>
+import { gasApplyList, } from '@/api/gasManage3_0/gasManage'
+import { getToken } from "@/utils/auth";
+import detailPage from '@/views/gasManage_syd/useGasCheck/useGasCheckDetail'
+export default {
+  name: "Approval",
+  components: {
+    detailPage
+  },
+  data() {
+    return {
+      activeName:'1',
+      //页面状态
+      pageType:1,
+      loading:false,
+      headers: {
+        Authorization: "Bearer " + getToken()
+      },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize:20,
+        remark:'login',
+        searchValue:'',
+        startTime:'',
+        endTime:'',
+      },
+      total:0,
+      tableData:[{}],
+      dateRange:[],
+      pageData2:{},
+      form:{
+
+      },
+      rules:{
+        txt:[
+          {required: true, message: '请输入播放文字', trigger: 'blur'},
+          { required: true, message: "请输入播放文字", validator: this.spaceJudgment, trigger: "blur" }
+        ],
+      },
+    };
+
+
+  },
+  methods: {
+      handleTabClick(tab, event) {
+        console.log(tab, event);
+      },
+      handleClick(index,row,doType){
+        let _this=this;
+        if(doType=='check'){//审核
+          this.pageType=2;
+          _this.pageData2.status=0;
+          _this.pageData2.id=row.id;
+        }else if(doType=='detail'){//详情
+          this.pageType=2;
+          _this.pageData2.status=1;
+          _this.pageData2.id=row.id;
+        }else if(doType=='back'){//详情
+          this.pageType=1;
+        }
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.queryParams.searchValue = "";
+        this.dateRange=[];
+        this.queryParams.startTime=null;
+        this.queryParams.endTime=null
+        this.handleQuery();
+      },
+      // 取消按钮
+      cancel() {
+        this.form = {};
+        this.dialogVisible = false;
+      },
+      /*提交*/
+      submitForm(){
+        this.$refs["form"].validate(valid => {
+          if (valid) {
+            let id = this.subId;
+
+          }
+        });
+      },
+      getList(){
+        let _this=this;
+        if(this.dateRange&&this.dateRange.length>0) {
+          this.queryParams.startTime=this.dateRange[0]
+          this.queryParams.endTime=this.dateRange[1]
+        } else {
+          this.queryParams.startTime=null;
+          this.queryParams.endTime=null
+        }
+        gasApplyList(_this.queryParams).then( response => {
+          let res=response.rows;
+          //_this.tableData=res;
+          _this.total=response.total;
+        });
+      },
+  },
+  mounted() {
+    this.getList()
+  }
+};
+</script>
+
+<style scoped lang="scss">
+  .approval_handle {
+    display: flex!important;
+    flex-direction: column;
+    .approval_handle-page{
+      flex:1;
+      display: flex!important;
+      flex-direction: column;
+      box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+      padding:20px 20px 20px!important;
+      border-radius:10px;
+
+      .button-box{
+        width:200px;
+        display: flex;
+      }
+    }
+
+  }
+</style>

+ 204 - 0
src/views/gasManage_syd/useGasCheck/useGasCheckDetail.vue

@@ -0,0 +1,204 @@
+<!--用气审核-详情-->
+<template>
+  <div class="addPage">
+    <div class="addPage_title">
+      <p>用气资格详情</p>
+      <p  class="reset-button-one" @click="backPage">返回</p>
+    </div>
+    <!--基本信息-->
+    <div class="info" v-if="form.apply">
+      <li><i>申请人:</i><i>{{form.apply.useGasName}}</i></li>
+      <li><i>联系方式:</i><i>{{form.apply.useGasName}}</i></li>
+      <li><i>使用气体:</i><i>{{form.apply.useGasName}}</i></li>
+      <li><i>使用期限:</i><i>{{form.apply.startTime}}至{{form.apply.endTime}}</i></li>
+      <li><i>气瓶用途:</i><i>{{form.apply.gasUse}}</i></li>
+      <li><i>主要安全措施:</i><i>{{form.apply.safetyPrecautions}}</i></li>
+      <li class="look_img" @click="lookFile(form.apply.applyCertificate)"><i>用气申请表:</i><i>查看图片</i></li>
+    </div>
+    <div class="check_btn" v-if="status==0">
+      <el-input type="textarea" class="apply_tree_b2" v-model="form.auditContent" placeholder="请输入审核意见"  maxlength="50" />
+      <div class="sub_btn">
+        <p class="reset-button-one" style="width:150px;margin-right: 30px" @click="handleClick('','','reject')">审核驳回</p>
+        <p class="inquire-button-one" style="width:150px;" @click="handleClick('','','pass')">审核通过</p>
+      </div>
+    </div>
+    <div class="addPage_b" v-if="form.auditlist !='undefined'">
+      <!--气瓶信息-->
+      <div  class="addPage_b_t">
+        <div class="addPage_b_t_title">审核记录</div>
+        <el-table border v-loading="loading" :data="form.auditlist" height="300px">
+          <el-table-column label="审核人" align="left" prop="auditUser"/>
+          <el-table-column label="审核时间" align="left" prop="auditTime"></el-table-column>
+          <el-table-column label="审核操作" align="left" prop="auditStatus">
+            <template slot-scope="scope">
+              <p :class="scope.row.auditStatus == 0?'color_warn':(scope.row.auditStatus == 1?'color_14AE10':(scope.row.auditStatus == 2?'color_red':''))">{{scope.row.auditStatus == 0?'待审核':(scope.row.auditStatus == 1?'通过':(scope.row.auditStatus == 2?'驳回':''))}}</p>
+            </template>
+          </el-table-column>
+          <el-table-column label="审核说明" align="left" prop="remark"></el-table-column>
+        </el-table>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+
+import { getToken } from "@/utils/auth";
+import {
+  qualificationApplyDetail,
+  qualificationApplyList,
+  subjectList,
+  useAgsApplyDetail
+} from '@/api/gasManage3_0/gasManage'
+let Base64 = require('js-base64').Base64;
+export default {
+  name: "addPage",
+  props:{
+    pageData2: {},
+  },
+  data() {
+    return {
+      pageType:1,
+      headers: {
+        Authorization: "Bearer " + getToken(),
+      },
+      loading:false,
+      form:{
+
+      },
+      status:0,
+      total:0,
+      tableData:[{
+        num:0,
+      }],
+    };
+  },
+  methods: {
+    handleClick(index,row,doType){
+      let _this=this;
+      if(doType=='again'){//重新申请
+        this.$parent.handleClick('',this.form.apply.id,'again');
+      }
+    },
+    /**查看图片  */
+    lookFile(item){
+      let visitUrl=window.location.href.split('://')[0]+'://'+process.env.VUE_APP_BASE_API+'/admin/'+item;
+      console.log(visitUrl)
+      window.open(window.location.href.split('://')[0]+'://'  + process.env.VUE_APP_BASE_FILE_API + '/onlinePreview?url='+encodeURIComponent(Base64.encode(visitUrl)));
+    },
+    /* 详情 */
+    getInfo(id){
+      let _this=this;
+      useAgsApplyDetail({id:id}).then( response => {
+        let res=response.data;
+        if(response.code==200){
+          _this.form=res;
+        }
+      });
+
+    },
+    //返回
+    backPage(){
+      this.$parent.handleClick('','','back');
+    },
+
+  },
+  mounted() {
+    this.status=this.pageData2.status;
+    //this.getInfo(this.pageData2.id);
+  }
+
+};
+</script>
+
+<style scoped lang="scss">
+.addPage {
+  flex:1;
+  display: flex!important;
+  flex-direction: column;
+  box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+  border-radius:10px;
+  /*顶部*/
+  .addPage_title{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    border-bottom: 1px solid #E0E0E0;
+    padding-top:20px;
+    p:nth-child(1){
+      flex: 1;
+      line-height:60px;
+      color: #0045AF;
+      font-size:18px;
+      margin:0 12px 0 20px;
+    }
+    p:nth-child(2){
+      margin-right:20px;
+    }
+    p:nth-child(3){
+      margin-right:20px;
+    }
+  }
+  /*基本信息*/
+  .info{
+    display: flex;
+    justify-content: flex-start;
+    flex-wrap: wrap;
+    align-items: center;
+    >li{
+      list-style-type: none;
+      margin: 20px;
+      >i{
+        font-style: normal;
+      }
+      >i:nth-of-type(1){
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #999999;
+        line-height: 16px;
+      }
+      >i:nth-of-type(2){
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #333333;
+        line-height: 16px;
+      }
+    }
+    .look_img{
+      cursor: pointer;
+      >i:nth-of-type(2){
+        color: #0183FA;
+      }
+    }
+  }
+  /*审核按钮*/
+  .check_btn{
+    .apply_tree_b2{
+      width: 800px;
+      margin: 46px 0 38px 70px;
+    }
+    .sub_btn{
+      display: flex;
+      justify-content: center;
+      margin: 30px 0;
+    }
+  }
+  .addPage_b{
+    /*气瓶信息*/
+    .addPage_b_t{
+      padding: 0 20px;
+      box-sizing: border-box;
+      .addPage_b_t_title{
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: bold;
+        color: #333333;
+        line-height: 16px;
+        margin: 40px 0 30px 0;
+      }
+    }
+  }
+
+}
+</style>

+ 300 - 0
src/views/gasManage_syd/useRecord/useRecord.vue

@@ -0,0 +1,300 @@
+<!--使用记录-->
+<template>
+  <div class="apply">
+    <div class="apply_page" v-if="pageType == 1">
+      <el-form :model="queryParams" ref="queryForm" style="margin-top:20px;" :inline="true">
+        <el-form-item label="关键字" prop="name">
+          <el-input
+            v-model="queryParams.searchValue"
+            placeholder="使用人/联系方式/实验地点"
+            clearable
+            maxLength="30"
+            size="small"
+          />
+        </el-form-item>
+        <div style="display: inline-block;font-size: 14px;color: #606266;line-height: 40px;margin-right: 12px;cursor: pointer;" @click="tabDateFun()">{{tabDateName}}<i style="font-size: 20px;position: relative;top: 2px;margin-left: 4px;" class="el-icon-arrow-down"></i></div>
+        <el-form-item label="" prop="dateRange" >
+          <el-date-picker
+            :clearable="false"
+            v-model="dateRange"
+            size="small"
+            style="width: 240px"
+            value-format="yyyy-MM-dd"
+            type="daterange"
+            range-separator="-"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <p class="inquire-button-one" @click="handleQuery">查询</p>
+          <p class="reset-button-one" @click="resetQuery">重置</p>
+        </el-form-item>
+      </el-form>
+      <el-table border v-loading="loading" :data="tableData">
+        <el-table-column label="标签码" align="left" prop=""></el-table-column>
+        <el-table-column label="气瓶编号" align="left" prop=""></el-table-column>
+        <el-table-column label="气体名称" align="left" prop=""></el-table-column>
+        <el-table-column label="使用前气压" align="left" prop="beforeUse">
+          <template slot-scope="scope">
+            <span >{{scope.row.beforeUse}}Mpa</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="使用后气压" align="left" prop="afterUse">
+          <template slot-scope="scope">
+            <span >{{scope.row.afterUse}}Mpa</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="使用时间" align="left" prop="useTime">
+          <template slot-scope="scope">
+            <span >{{scope.row.useTime?scope.row.useTime:'-'}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="归还时间" align="left" prop="backTime">
+          <template slot-scope="scope">
+            <span >{{scope.row.backTime?scope.row.backTime:'-'}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="120">
+          <template slot-scope="scope">
+            <div class="button-box">
+              <p class="table-min-button"
+                 v-hasPermi="['airbottle:use:record:query']"
+                 @click="handleClick('',scope.row,'detail')"
+              >查看</p>
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div style="display: flex;height:32px;margin-top:15px;">
+        <!--<p style="flex:4;"></p>-->
+        <p style="text-align: left;margin:0;line-height:32px;margin-right:20px;font-size:14px;color:#999;">
+          <i class="el-icon-warning" style="color:#0183FA;"></i>
+          已选择 {{selectedNum}} 项
+        </p>
+        <div style="flex:5;">
+          <pagination :page-sizes="[20, 30, 40, 50]"
+            v-show="total>0"
+            :total="total"
+            style="margin:0;"
+            :page.sync="queryParams.pageNum"
+            :limit.sync="queryParams.pageSize"
+            @pagination="getList"
+          />
+        </div>
+      </div>
+    </div>
+     <!--详情页面-->
+    <detail-page v-if="pageType==2" :pageData2="pageData2"></detail-page>
+  </div>
+</template>
+<script>
+import { gasApplyList, useRecordList } from '@/api/gasManage3_0/gasManage'
+import { getToken } from "@/utils/auth";
+import detailPage from "./useRecordDetail.vue"
+export default {
+  name: "Approval",
+  components: {
+    detailPage
+  },
+  data() {
+    return {
+      //页面状态
+      pageType:1,
+      loading:false,
+      headers: {
+        Authorization: "Bearer " + getToken()
+      },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize:20,
+        searchValue:'',
+        searchType:0,
+      },
+      total:0,
+      tableData:[{}],
+      dateRange:[],
+      pageData2:{},
+      tabDateName:'使用时间',
+      //导出
+      //表格扩展选择器---需要在@selection-change绑定的方法内监控selection数组长度
+      selectedNum:0,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+    };
+
+
+  },
+  methods: {
+    handleClick(index,row,doType){
+      let _this=this;
+      if(doType=='detail'){//查看
+        _this.pageData2.item=row;
+        _this.pageType=2;
+      }else if(doType=='back'){//返回
+        _this.pageType=1;
+      }else if(doType=='export'){//导出
+        this.download('airbottle/use/record/export', {
+          ...this.queryParams
+        }, `使用记录导出.xlsx`)
+      }
+
+    },
+    /** 当前时间 */
+    getCurrentTime () {
+      const yy = new Date().getFullYear()
+      const mm = new Date().getMonth() + 1
+      const dd = new Date().getDate()
+      const hh = new Date().getHours()
+      const mf = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes() : new Date().getMinutes()
+      const ss = new Date().getSeconds() < 10 ? '0' + new Date().getSeconds() : new Date().getSeconds()
+      return yy + '-' + mm + '-' + dd
+    },
+    /** 导出按钮操作 */
+    exportButton(item) {
+      let self = this;
+      let currentDate = this.getCurrentTime()
+      if(item.command == 1){
+        self.$confirm(`确认导出全部数据?`, "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(async () => {
+          self.download('/airbottle/use/record/export/', {...self.queryParamsData}, '使用记录导出-'+currentDate+'.xlsx')
+        }).catch(() => {})
+      }else if(item.command == 2){
+        if(self.ids.length>0) {
+          self.$confirm(`确认导出选中数据?`, "提示", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(async () => {
+            let ids = self.ids.join(',');
+            let obj = {
+              ids :ids
+            }
+            console.log("obj",obj)
+            self.download(`/airbottle/use/record/export/`,obj, '使用记录导出-'+currentDate+'.xlsx')
+          }).catch(() => {})
+        }else {
+          this.msgError('请选择要导出的数据')
+        }
+      }
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.selectedNum = selection.length;
+      this.ids = selection.map(item => item.id);
+      this.single = selection.length != 1;
+      this.multiple = !selection.length;
+    },
+    /*===记录勾选数据===
+      需要再el-table 添加  :row-key="getRowKeys"
+      需要在selection 添加 :reserve-selection="true"
+    */
+    getRowKeys(row) {
+      return row.id
+    },
+    tabDateFun(){
+      let _this=this;
+      console.log(111)
+      _this.queryParams.searchType==0? _this.queryParams.searchType=1:_this.queryParams.searchType=0
+      if(_this.queryParams.searchType==0){//使用时间
+        _this.tabDateName='使用时间'
+      }else if(_this.queryParams.searchType==1){//归还时间
+        _this.tabDateName='归还时间'
+      }
+    },
+      //返回
+      backPage(){
+        this.$parent.handleClick('','','back');
+        this.$parent.outStatistics()
+        this.$parent.gasApplyStatistics()
+        this.$parent.useGasStatistics()
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.queryParams.searchValue = "";
+      this.dateRange=[];
+      this.queryParams.startTime=null;
+      this.queryParams.endTime=null
+      this.handleQuery();
+    },
+    getList(){
+      let _this=this;
+      if(this.dateRange&&this.dateRange.length>0) {
+        this.queryParams.startTime=this.dateRange[0]
+        this.queryParams.endTime=this.dateRange[1]
+      } else {
+        this.queryParams.startTime=null;
+        this.queryParams.endTime=null
+      }
+      useRecordList(_this.queryParams).then( response => {
+        let res=response.rows;
+        //_this.tableData=res;
+        _this.total=response.total;
+      });
+    },
+  },
+  mounted() {
+    this.getList();
+  }
+};
+</script>
+
+<style scoped lang="scss">
+  /*导出按钮样式*/
+  .form-dropdown-box{
+    display: flex;
+    margin:0;
+    padding:0 10px;
+    cursor: pointer;
+    height:40px;
+    img:nth-child(1){
+      width:16px;
+      height:16px;
+      margin-top:12px;
+    }
+    p{
+      width:47px;
+      text-align: center;
+      font-size:14px;
+      margin:0;
+      line-height:40px;
+    }
+    img:nth-child(3){
+      width:10px;
+      height:6px;
+      margin-top:17px;
+    }
+  }
+  .apply {
+    flex:1;
+    display: flex!important;
+    flex-direction: column;
+    .apply_page{
+      flex:1;
+      display: flex!important;
+      flex-direction: column;
+      box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+      padding:20px 20px 20px!important;
+      border-radius:10px;
+
+      .button-box{
+        width:200px;
+        display: flex;
+      }
+    }
+
+  }
+</style>

+ 234 - 0
src/views/gasManage_syd/useRecord/useRecordDetail.vue

@@ -0,0 +1,234 @@
+<!--使用记录-详情-->
+<template>
+  <div class="addPage">
+    <div class="addPage_title">
+      <p>使用详情</p>
+      <p  class="reset-button-one" @click="backPage">返回</p>
+    </div>
+    <div class="small_title">气瓶信息</div>
+     <!--基本信息-->
+    <div class="info" v-if="form">
+      <li><i>标签码:</i><i></i></li>
+      <li><i>气瓶编号:</i><i>{{form.airNumber}}</i></li>
+      <li><i>气体名称:</i><i>{{form.airName}}</i></li>
+      <li><i>气瓶规格:</i><i></i></li>
+      <li><i>最低气压值:</i><i></i></li>
+      <li><i>气体组分:</i><i>{{form.airConstituents}}</i></li>
+    </div>
+    <div class="small_title">使用记录</div>
+    <div class="addPage_b">
+      <el-table border v-loading="loading" :data="form.recordVos" height="300px" >
+        <el-table-column label="使用量" align="left" prop="amount">
+          <template slot-scope="scope">
+            <span>{{scope.row.amount}}Mpa</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="使用前气压" align="left" prop="beforeUsePic">
+          <template slot-scope="scope">
+            <span>{{scope.row.beforeUse}}Mpa</span>
+            <span style="color: #0183FA;margin-left: 10px;cursor: pointer;"   @click="handleClick('',scope.row,'before')">查看图片</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="使用后气压" align="left" prop="afterUse">
+          <template slot-scope="scope">
+            <span>{{scope.row.afterUse}}Mpa</span>
+            <span style="color: #0183FA;margin-left: 10px;cursor: pointer;" @click="handleClick('',scope.row,'after')">查看图片</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="使用时间" align="left" prop="useTime">
+          <template slot-scope="scope">
+            <span >{{scope.row.useTime?scope.row.useTime:'-'}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="归还时间" align="left" prop="backTime">
+          <template slot-scope="scope">
+            <span >{{scope.row.backTime?scope.row.backTime:'-'}}</span>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+  </div>
+</template>
+<script>
+
+import { getToken } from "@/utils/auth";
+import { gasApplyDetail, subjectList, useRecordDetail } from '@/api/gasManage3_0/gasManage'
+let Base64 = require('js-base64').Base64;
+export default {
+  name: "addPage",
+  props:{
+    pageData2:{},
+  },
+  data() {
+    return {
+      pageType:1,
+      uploadImgUrl: window.location.href.split('://')[0]+'://' + process.env.VUE_APP_BASE_API + "/file/upload", // 上传的图片服务器地址
+      headers: {
+        Authorization: "Bearer " + getToken(),
+      },
+      // 设置只能选择当前日期及之后的日期
+      pickerOptions0: {
+        disabledDate(time) {
+          return time.getTime() < Date.now() - 8.64e7;//如果没有后面的-8.64e7就是不可以选择今天的
+        }
+      },
+      loading:false,
+      form:{
+      },
+      infoParams:{
+        radio:1,
+      },
+      dateRange:[],
+      laboratoryOptions:[],
+
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize:20,
+      },
+      total:0,
+      tableData:[],
+    };
+  },
+  created() {
+
+  },
+  methods: {
+    handleClick(index,row,doType){
+      let _this=this;
+      if(doType=='before'){//重新申请
+        _this.lookFile(row.beforeUsePic)
+      }else if(doType=='after'){
+        _this.lookFile(row.afterUsePic)
+      }
+    },
+    //使用记录当前查看的记录高亮显示
+    tableRowClassName({row, rowIndex}) {
+      if (rowIndex === 0) {
+        return 'warning-row';
+      } else if (rowIndex === 3) {
+        return 'success-row';
+      }
+    },
+    /**查看图片  */
+    lookFile(item){
+      let visitUrl=window.location.href.split('://')[0]+'://'+process.env.VUE_APP_BASE_API+'/admin/'+item;
+      console.log(visitUrl)
+      window.open(window.location.href.split('://')[0]+'://'  + process.env.VUE_APP_BASE_FILE_API + '/onlinePreview?url='+encodeURIComponent(Base64.encode(visitUrl)));
+    },
+    /* 详情 */
+    getInfo(id){
+      let _this=this;
+      useRecordDetail(id).then( response => {
+        let res=response.data;
+        if(response.code==200){
+          _this.form=res;
+        }
+      });
+
+    },
+    //返回
+    backPage(){
+      this.$parent.handleClick('','','back');
+    },
+
+  },
+  mounted() {
+    this.formInfo=this.pageData2.item
+    this.getInfo(this.pageData2.item.id);
+  }
+
+};
+</script>
+
+<style scoped lang="scss">
+.el-table__row .warning-row{
+    background: #333333;
+
+}
+
+.el-table {
+  .success-row {
+    background: #f0f9eb;
+  }
+}
+.addPage {
+  flex:1;
+  display: flex!important;
+  flex-direction: column;
+  box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+  border-radius:10px;
+  /*顶部*/
+  .addPage_title{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    border-bottom: 1px solid #E0E0E0;
+    padding-top:20px;
+    p:nth-child(1){
+      flex: 1;
+      line-height:60px;
+      color: #0045AF;
+      font-size:18px;
+      margin:0 12px 0 20px;
+    }
+    p:nth-child(2){
+      margin-right:20px;
+    }
+    p:nth-child(3){
+      margin-right:20px;
+    }
+  }
+  /*小标题*/
+  .small_title{
+    font-size: 16px;
+    font-family: Microsoft YaHei;
+    font-weight: bold;
+    color: #333333;
+    line-height: 16px;
+    margin: 20px 0 0 20px;
+  }
+  /*基本信息*/
+  .info{
+    display: flex;
+    justify-content: flex-start;
+    flex-wrap: wrap;
+    height: 130px;
+    border: 1px solid #E0E0E0;
+    margin: 20px;
+    padding: 30px 48px;
+    box-sizing: border-box;
+    >li{
+      list-style-type: none;
+      margin-right: 30px;
+      >i{
+        font-style: normal;
+      }
+      >i:nth-of-type(1){
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #999999;
+        line-height: 16px;
+      }
+      >i:nth-of-type(2){
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #333333;
+        line-height: 16px;
+      }
+    }
+    .look_img{
+      >i:nth-of-type(2){
+        color: #0183FA;
+      }
+    }
+  }
+  /*入库信息*/
+  .addPage_b{
+    margin: 20px;
+  }
+
+}
+</style>