马宇豪
2024-08-21 23db8ee6063226480f964ed1de3ece9310e221a2
提交
已修改12个文件
已添加8个文件
已删除21个文件
4294 ■■■■ 文件已修改
api/examine.js 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/index.js 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/information.js 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/notice.js 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/response.js 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common/constant.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manifest.json 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages.json 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/index/index.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/tabBar/count/count.vue 108 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/tabBar/count/countDetail.vue 207 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/tabBar/count/productDetail.vue 270 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/tabBar/current/current.vue 335 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/tabBar/current/detail.vue 475 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/tabBar/current/video.vue 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/tabBar/firstPage/exam.vue 771 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/tabBar/firstPage/firstPage.vue 805 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/tabBar/tabBarIndex.vue 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/tabBar/utils/tabBar.js 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/tabBar/wearhouse/questions.vue 689 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/tabBar/wearhouse/wearhouse.vue 270 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/bg.jpeg 补丁 | 查看 | 原始文档 | blame | 历史
static/check.png 补丁 | 查看 | 原始文档 | blame | 历史
static/companyLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
static/defaultCover.jpg 补丁 | 查看 | 原始文档 | blame | 历史
static/delete.png 补丁 | 查看 | 原始文档 | blame | 历史
static/examine.png 补丁 | 查看 | 原始文档 | blame | 历史
static/info.png 补丁 | 查看 | 原始文档 | blame | 历史
static/loginTop1.png 补丁 | 查看 | 原始文档 | blame | 历史
static/mine1-selected.png 补丁 | 查看 | 原始文档 | blame | 历史
static/mine1.png 补丁 | 查看 | 原始文档 | blame | 历史
static/my-bg.jpg 补丁 | 查看 | 原始文档 | blame | 历史
static/my-bg.png 补丁 | 查看 | 原始文档 | blame | 历史
static/pic.png 补丁 | 查看 | 原始文档 | blame | 历史
static/return.png 补丁 | 查看 | 原始文档 | blame | 历史
static/sell.png 补丁 | 查看 | 原始文档 | blame | 历史
static/send.png 补丁 | 查看 | 原始文档 | blame | 历史
static/send_selected.png 补丁 | 查看 | 原始文档 | blame | 历史
static/take.png 补丁 | 查看 | 原始文档 | blame | 历史
static/wearhouse.png 补丁 | 查看 | 原始文档 | blame | 历史
static/wearhouse_sel.png 补丁 | 查看 | 原始文档 | blame | 历史
api/examine.js
文件已删除
api/index.js
@@ -31,26 +31,91 @@
    })
}
export function getSwiperList(data) {
export function getHazmatByCode(data) {
    return service({
        url: '/api/app/carousel/list',
        url: '/api/app/hazmat/getHazmatByCode',
        method: 'GET',
        data
    })
}
export function getClassList(data) {
export function getHazmatFlowByUser(data) {
    return service({
        url: '/api/app/phase-student/list',
        url: '/api/app/hazmat-flow/getHazmatFlowByUser',
        method: 'GET',
        data
    })
}
export function getExamList(data) {
export function getProductFlowByUser(data) {
    return service({
        url: '/api/app/paper-student/list',
        url: '/api/app/product-flow/getProductFlowByUser',
        method: 'GET',
        data
    })
}
export function getHazmatFlowByCode(data) {
    return service({
        url: '/api/app/hazmat-flow/getHazmatFlowByCode',
        method: 'GET',
        data
    })
}
// 领用
export function postHazmatUse(hazmatId) {
    return service({
        url: `/api/app/hazmat/hazmatUse/${hazmatId}`,
        method: 'POST',
    })
}
// 归还
export function postHazmatReturn(data) {
    return service({
        url: '/api/app/hazmat/hazmatReturn',
        method: 'POST',
        data
    })
}
// 用尽登记
export function postHazmatUsed(hazmatId) {
    return service({
        url: `/api/app/hazmat/hazmatUsed/${hazmatId}`,
        method: 'POST',
    })
}
// 原材料二维码作废
export function postHazmatDiscard(hazmatId) {
    return service({
        url: `/api/app/hazmat/hazmatDiscard/${hazmatId}`,
        method: 'POST',
    })
}
export function getProductByCode(data) {
    return service({
        url: '/api/app/product/getProductByCode',
        method: 'GET',
        data
    })
}
// 成品销售
export function postProductDiscard(productId) {
    return service({
        url: `/api/app/product/productDiscard/${productId}`,
        method: 'POST',
    })
}
// 成品二维码作废
export function postProductSold(productId) {
    return service({
        url: `/api/app/product/productSold/${productId}`,
        method: 'POST',
    })
}
api/information.js
文件已删除
api/notice.js
文件已删除
api/response.js
文件已删除
common/constant.js
@@ -1,15 +1,11 @@
    let VUE_APP_BASE_URL= null;
    if (process.env.NODE_ENV == 'development') {
        VUE_APP_BASE_URL = 'http://192.168.2.15:8082'
        // VUE_APP_BASE_URL = 'http://117.190.40.54:6622/edu'
        VUE_APP_BASE_URL = 'http://192.168.2.15:8083'
        // VUE_APP_BASE_URL = 'http://47.108.222.15:8000'
    }else {
        // VUE_APP_BASE_URL = 'http://192.168.2.15:8082'
        // 正式环境
        VUE_APP_BASE_URL = 'http://192.168.2.15:8083'
        // VUE_APP_BASE_URL = 'http://47.108.222.15:8000'
        // 国泰
        VUE_APP_BASE_URL = 'http://117.190.40.54:6622/edu'
    }
export default VUE_APP_BASE_URL
manifest.json
@@ -1,6 +1,6 @@
{
    "name" : "安全教育平台",
    "appid" : "__UNI__9D7DB5D",
    "name" : "危化品全生命周期管理平台",
    "appid" : "__UNI__3D059D7",
    "description" : "",
    "versionName" : "1.0.0",
    "versionCode" : 1,
@@ -21,7 +21,9 @@
        },
        "modules" : {
            "Push" : {},
            "VideoPlayer" : {}
            "VideoPlayer" : {},
            "Barcode" : {},
            "Camera" : {}
        },
        /* 模块配置 */
        "distribute" : {
pages.json
@@ -25,18 +25,6 @@
            }
        },
        {
            "path" : "pages/tabBar/firstPage/exam",
            "style" :
            {
                "navigationStyle": "custom",
                "navigationBarTitleText": "",
                "enablePullDownRefresh": false,
                "app-plus": {
                    "scrollIndicator": "none"
                }
            }
        },
        {
            "path" : "pages/tabBar/count/count",
            "style" :                                                                                    
            {
@@ -66,6 +54,18 @@
            }
        },
        {
            "path" : "pages/tabBar/count/productDetail",
            "style" :
            {
                "navigationStyle": "custom",
                "navigationBarTitleText": "",
                "enablePullDownRefresh": false,
                "app-plus": {
                    "scrollIndicator": "none"
                }
            }
        },
        {
            "path" : "pages/tabBar/current/current",
            "style" :
            {
@@ -79,42 +79,6 @@
                        "color": "#000000",
                        "style": "circle"
                    }
                }
            }
        },
        {
            "path" : "pages/tabBar/current/detail",
            "style" :
            {
                "navigationStyle": "custom",
                "navigationBarTitleText": "",
                "enablePullDownRefresh": false,
                "app-plus": {
                    "scrollIndicator": "none"
                }
            }
        },
        {
            "path" : "pages/tabBar/wearhouse/wearhouse",
            "style" :
            {
                "navigationStyle": "custom",
                "navigationBarTitleText": "",
                "enablePullDownRefresh": false,
                "app-plus": {
                    "scrollIndicator": "none"
                }
            }
        },
        {
            "path" : "pages/tabBar/wearhouse/questions",
            "style" :
            {
                "navigationStyle": "custom",
                "navigationBarTitleText": "",
                "enablePullDownRefresh": false,
                "app-plus": {
                    "scrollIndicator": "none"
                }
            }
        }
@@ -142,13 +106,7 @@
            },
            {
                "pagePath": "pages/tabBar/current/current"
            },
            {
                "pagePath": "pages/tabBar/wearhouse/wearhouse"
            }
        ]
    }
}
pages/index/index.vue
@@ -4,7 +4,7 @@
    <view class="main">
      <view class="header">
        <view class="titleFirst">
          你好~<br/>欢迎来到安全教育平台</view>
          你好~<br/>欢迎来到危化品全生命周期管理平台</view>
      </view>
      <view>
        <u-form :model="form" ref="uForm" class="form" >
@@ -233,7 +233,7 @@
.titleFirst{
  width: 80%;
    font-size: 44rpx;
    font-size: 34rpx;
  line-height: 1.5;
  font-weight: bold;
  letter-spacing: 2px;
@@ -259,7 +259,7 @@
  border-radius: 99px;
  background: #f5f5f5;
  padding: 15px 20px !important;
  box-shadow: 0px -6px 10px rgba(255, 255, 255, 1), 0px 4px 15px rgba(0, 0, 0, 0.1) !important;
  box-shadow: 0px -6px 10px rgba(255, 255, 255, 1), 0px 4px 15px rgba(0, 0, 0, 0.1)!important;
  transition: box-shadow .1s ease !important;
  &:active{
@@ -269,8 +269,8 @@
.isFocused{
  background: #fff;
  border-width: 1.5px !important;
  border-color: #e6e6e6 !important;
  border-width: 2px !important;
  border-color: #fff !important;
  box-shadow: 0px -6px 10px rgba(255, 255, 255, 1), 0px 4px 15px rgba(0, 0, 0, 0.1),0px 3px 6px rgba(0, 0, 0, 0.1) inset !important;
}
@@ -281,7 +281,7 @@
}
.loginBtn{
  border: 1px solid rgba(255,255,255,.4);
  border: 2px solid rgba(255,255,255,.8);
  letter-spacing: 10px;
  box-shadow: 0 2px 4px rgba(0,0,0,.2);
  background-image: linear-gradient(#41a2ff,#0f7ff9);
pages/tabBar/count/count.vue
@@ -15,18 +15,18 @@
    <view class="m-p-15">
      <view class="userInfo">
        <view class="info-l">
          <image src="../../../static/avator.png" mode="widthFix"></image>
          <view class="info-icons">
            <u-icon v-if="user.sex==0" name="man" color="#0f7ff9" bold size="24"></u-icon>
            <u-icon v-else-if="user.sex==1" name="woman" color="#ff69bf" bold size="24"></u-icon>
            <u-icon v-else name="question" color="#ff69bf" bold size="24"></u-icon>
          </view>
          <image src="../../../static/companyLogo.png" mode="widthFix"></image>
<!--          <view class="info-icons">-->
<!--            <u-icon v-if="user.sex==0" name="man" color="#0f7ff9" bold size="24"></u-icon>-->
<!--            <u-icon v-else-if="user.sex==1" name="woman" color="#ff69bf" bold size="24"></u-icon>-->
<!--            <u-icon v-else name="question" color="#ff69bf" bold size="24"></u-icon>-->
<!--          </view>-->
        </view>
        <view class="info-r">
          <view class="info-n">
<!--            用户:-->
            <span>{{user.name}}</span>
            <span>{{username}}</span>
          </view>
<!--          <view class="info-id">-->
@@ -36,20 +36,17 @@
      </view>
      <view class="card-list">
        <view class="paper-card">
          <view class="company-info">
            <view class="company-i">
              <view>电话:</view>
              <span>{{getPhoneNumber(user.phone)}}</span>
            </view>
            <view class="company-i">
              <view>公司:</view>
              <span v-if="user.company && user.company.name">{{user.company.name?user.company.name:'暂无'}}</span>
            </view>
          </view>
          <view class="menu-i" @click="toMyScore">
          <view class="menu-i" @click="toHazmat">
            <view class="menu-l">
              <u-icon name="info-circle-fill" color="#0f7ff9" size="20"></u-icon>
              <view>我的成绩</view>
              <u-icon name="warning" color="#0f7ff9" size="32"></u-icon>
              <view><span style="color: #ed6464">危化品</span>操作记录</view>
            </view>
            <u-icon name="arrow-right" color="#ccc" size="20"></u-icon>
          </view>
          <view class="menu-i" @click="toProduct">
            <view class="menu-l">
              <u-icon name="bag" color="#0f7ff9" size="32"></u-icon>
              <view><span style="color: #5fb734">成品</span>操作记录</view>
            </view>
            <u-icon name="arrow-right" color="#ccc" size="20"></u-icon>
          </view>
@@ -76,7 +73,7 @@
            return {
                page: 'pages/tabBar/count/count',
                statusBarHeight: '',
        user: {},
        username: '',
        examParams: {
          pageNum: 1,
          pageSize: 10,
@@ -92,8 +89,9 @@
    },
        onLoad() {
            this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight'];
      this.username = uni.getStorageSync('name')
            // uni.hideTabBar();
      this.getUserInfo()
      // this.getUserInfo()
        },
        methods: {
@@ -119,10 +117,17 @@
          url: `/pages/tabBar/firstPage/exam?bank=` + encodeURIComponent(JSON.stringify(item)) + `&type=` + encodeURIComponent(JSON.stringify(type))
        })
      },
      toMyScore(){
      toHazmat(){
        uni.setStorageSync("prevPage", '/pages/tabBar/count/count');
        uni.navigateTo({
          url: '/pages/tabBar/count/countDetail'
        })
      },
      toProduct(){
        uni.setStorageSync("prevPage", '/pages/tabBar/count/count');
        uni.navigateTo({
          url: '/pages/tabBar/count/productDetail'
        })
      },
@@ -170,8 +175,6 @@
    flex-direction: column; 
    width: 100%; 
    height: 100%;
  background: url("../../../static/my-bg.png") no-repeat top fixed;
  background-size: 100% auto;
}
.u-icon{
  margin: 0 !important;
@@ -211,21 +214,22 @@
.m-p-15{
  width: 100%;
  margin-top: 50rpx;
  padding-top: 50rpx;
  background: url("../../../static/my-bg.jpg") no-repeat top;
  background-size: 100% auto;
  .userInfo{
    display: flex;
    align-items: center;
    justify-content: left;
    width: calc(100% - 60px);
    margin: 0 auto;
    margin: 20rpx auto;
    .info-l{
      width: 150rpx;
      height: 150rpx;
      border-radius: 50%;
      margin-right: 40rpx;
      position: relative;
      margin-right: 20px;
      image{
        width: 150rpx;
        height: 150rpx;
@@ -267,47 +271,39 @@
    margin: 20px 0;
    .paper-card{
      width: calc(100% - 60px);
      background: #fff;
      border-radius: 20px;
      padding: 15px 15px 5px;
      width: calc(100% - 40px);
      margin: 0 auto 15px;
      box-sizing: border-box;
      box-shadow: 0 3px 8px rgba(150,150,150,.1);
      .company-info{
        border-bottom: 1px solid #e6e6e6;
        .company-i{
          display: flex;
          align-items: center;
          font-size: 28rpx;
          color: #999;
          margin-bottom: 15px;
          view{
            margin-left: 4px;
          }
          span{
            color: #333;
          }
          &:first-of-type{
            margin-bottom: 5px;
          }
        }
      }
      display: flex;
      align-items: center;
      justify-content: space-between;
      .menu-i{
        width: calc(50% - 5px);
        background: rgba(255,255,255,1);
        border-radius: 12px;
        display: flex;
        align-items: center;
        box-shadow: 0 3px 8px rgba(150,150,150,.1);
        justify-content: space-between;
        padding: 15px 0;
        padding: 18px 15px;
        box-sizing: border-box;
        cursor: pointer;
        .menu-l{
          display: flex;
          align-items: center;
          font-size: 28rpx;
          font-size: 22rpx;
          color: #999;
          view{
            margin-left: 6px;
            display: flex;
            flex-direction: column;
            align-items: flex-start;
            span{
              font-size: 32rpx;
              font-weight: bold;
              color: #333;
            }
          }
        }
      }
pages/tabBar/count/countDetail.vue
@@ -8,32 +8,39 @@
      <view style="display: flex; flex-direction: column;">
        <view class="navBar">
          <u-icon name="arrow-left" color="black" size="17" style="margin-left: 8px;" @click="goBack" />
          <view class="barText">我的成绩</view>
          <view class="barText">我的操作</view>
        </view>
      </view>
    </view>
    <view class="m-p-15">
      <view class="card-list">
          <scroll-view v-if="examList && examList.length>0" scroll-y="true" class="scroll-Y" @scrolltoupper="upper" @scrolltolower="lower" lower-threshold="150" @scroll="scrollView" style="height:100%">
            <view class="paper-card" v-for="(item,index) in examList" :key="index" @click="toDetail(item,2)">
            <view class="paper-card" v-for="(item,index) in examList" :key="index">
              <view class="paper-card-l">
                <view class="paper-card-t">{{item.examPaper.name}}</view>
                <view style="color: #999;margin-bottom: 15px;font-size: 12px">{{item.examPaper.code}}</view>
                <view style="display: flex;align-items: center">
                  <u-tag style="margin-right: 20rpx" :text="item.examPaper.categoryName" size="mini"></u-tag>
                  <u-tag :text="item.createName" plain plainFill size="mini"></u-tag>
                </view>
                <view class="dot"></view>
                <view class="line"></view>
              </view>
              <view class="paper-card-r">
                <view :class="item.passed == 0?'red':'green'">
                  <view>{{item.score}}</view>
                  <view class="divide"></view>
                  <view>{{item.passed == 0?'不合格':'合格'}}</view>
              <view class="paper-card-box">
                <view class="paper-card-r">
                  <view class="paper-card-t"><u-icon name="clock-fill" color="#2979ff" size="18" style="margin-right: 4px"></u-icon>{{item.updateTime}}</view>
                  <view class="paper-card-c">
                    <span style="margin-right: 4px">对</span>
                    <span style="font-weight: bold" v-if="item.hazmatBasic">{{item.hazmatBasic.companyName?item.hazmatBasic.companyName + '的':''}}{{item.hazmatBasic.name}}({{item.hazmatBasic.productSn}})</span>
                    <span style="font-weight: bold" v-if="item.productBasic">{{item.productBasic.companyName?item.productBasic.companyName + '的':''}}{{item.productBasic.name}}({{item.productBasic.productSn}})</span>
                    进行
                    <span :class="item.num>=0?'green':'red'" style="font-weight: bold;margin: 0 4px">{{item.state==0?'入库 ':item.state==1?'取用 ':item.state==2?'归还 ':item.state==3?'标签作废 ':item.state==4?'用尽登记 ':item.state==5?'销售 ':'-- '}}</span>
                  </view>
                  <view v-if="item.hazmatBasic" :class="item.num>=0?'green':'red'" style="font-size: 28rpx">
                    <span v-if="item.num  > 0">+</span>{{item.num + item.hazmatBasic.unit}}
                  </view>
                  <view v-if="item.productBasic" :class="item.num>=0?'green':'red'" style="font-size: 28rpx">
                    <span v-if="item.num  > 0">+</span>{{item.num + item.productBasic.unit}}
                  </view>
                </view>
              </view>
            </view>
          </scroll-view>
          <u-empty v-else text="暂无已完成的考试记录" mode="list"></u-empty>
          <u-empty v-else text="暂无记录" mode="list"></u-empty>
      </view>
<!--      <view>-->
<!--        <u-button @click="loginOut" type="primary" text="退出登录" style="width: 80%" shape="circle"></u-button>-->
@@ -45,7 +52,7 @@
<script>
    import tabBar from '../tabBarIndex.vue'
  import {getExamList, loginOut} from "../../../api";
  import {getHazmatFlowByUser,loginOut} from "../../../api";
  import {getCleanRecord} from "../../../api/wearhouse";
    export default {
        components:{
@@ -58,7 +65,6 @@
        examParams: {
          pageNum: 1,
          pageSize: 10,
          state: 2
        },
        examList: [],
        totalPage: 0
@@ -69,7 +75,7 @@
      console.log('跳转完成')
            this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight'];
            // uni.hideTabBar();
      this.getExamList()
      this.getList()
        },
        methods: {
            goBack() {
@@ -84,8 +90,8 @@
          })
        }
            },
      getExamList(){
        getExamList(this.examParams).then(res => {
      getList(){
        getHazmatFlowByUser(this.examParams).then(res => {
          if(res.code == 200) {
            let list = res.data.list?res.data.list: [];
            if (res.data.pageNum != 1) {
@@ -96,41 +102,6 @@
            this.totalPage = res.data.totalPage
          }else{
            uni.$u.toast(res.message)
          }
        })
      },
      toDetail(item,type){
        uni.setStorageSync("prevPage", '/pages/tabBar/count/count');
        uni.navigateTo({
          url: `/pages/tabBar/firstPage/exam?bank=` + encodeURIComponent(JSON.stringify(item)) + `&type=` + encodeURIComponent(JSON.stringify(type))
        })
      },
      loginOut(){
        uni.showModal({
          title: '提示',
          content: '是否确认退出该账号?',
          success: async function (res) {
            if (res.confirm) {
              loginOut().then(res=>{
                if(res.code == 200){
                  uni.showToast({
                    title: '账户已退出',
                    duration: 1000
                  })
                  setTimeout(()=>{
                    uni.clearStorageSync();
                    uni.clearStorage();
                    uni.navigateTo({
                      url: '/pages/index/index'
                    })
                  },1000)
                }
              })
            } else if (res.cancel) {
              console.log('用户点击取消');
            }
          }
        })
      },
@@ -146,7 +117,7 @@
          uni.$u.toast('已加载全部数据')
          return
        }
        this.getExamList()
        this.getList()
      },
      scrollView(e) {
        // console.log(e)
@@ -205,64 +176,92 @@
    .paper-card{
      width: calc(100% - 30px);
      background: #fff;
      border-radius: 20px;
      padding: 15px;
      margin: 0 auto 15px;
      box-sizing: border-box;
      box-shadow: 0 3px 8px rgba(150,150,150,.1);
      margin: 0 auto;
      display: flex;
      align-items: center;
      justify-content: space-between;
      .paper-card-l{
        width: 75%;
        .paper-card-t{
          font-size: 32rpx;
          margin-bottom: 10rpx;
          font-family: "PingFang SC";
          font-weight: 800;
          overflow: hidden;
          text-overflow: ellipsis;
          display: -webkit-box;
          -webkit-line-clamp: 2;
          -webkit-box-orient: vertical;
        width: 5%;
        position: relative;
        .dot{
          width: 32rpx;
          height: 32rpx;
          border-radius: 50%;
          background: #5fb734;
          position: absolute;
          left: 50%;
          top: 28rpx;
          transform: translateX(-16rpx);
          z-index: 9;
          box-shadow: 0 3px 8px rgba(95,183,52,.4);
          border: 1px solid #fff;
        }
        .line{
          position: absolute;
          left: 50%;
          top: 0;
          width: 1px;
          height: 100%;
          border-left: 1px dashed #ccc;
        }
      }
      .paper-card-r{
        width: 25%;
        &>view{
          width: 140rpx;
          height: 140rpx;
          border-radius: 50%;
          color: #fff;
          display: flex;
          flex-direction: column;
          align-items: center;
          justify-content: center;
          font-size: 20rpx;
          line-height: 1;
          view:first-of-type{
            font-size: 44rpx;
            font-weight: 600;
      &:first-of-type{
        .paper-card-l{
          .line{
            position: absolute;
            left: 50%;
            top: 44rpx;
            width: 1px;
            height: calc(100% - 44rpx);
            border-left: 1px dashed #ccc;
          }
          .divide{
            width: 60%;
            height: 1rpx;
            background: #fff;
        }
      }
      &:last-of-type{
        .paper-card-l{
          .line{
            position: absolute;
            left: 50%;
            top: 0;
            width: 1px;
            height: 56rpx;
            border-left: 1px dashed #ccc;
          }
        }
      }
      .paper-card-box{
        width: calc(95% - 15px);
        padding-bottom: 15px;
        .paper-card-r{
          width: 100%;
          background: #fff;
          border-radius: 20px;
          padding: 15px;
          box-sizing: border-box;
          box-shadow: 0 3px 8px rgba(150,150,150,.1);
          .paper-card-t{
            font-size: 32rpx;
            font-family: "PingFang SC";
            font-weight: 800;
            display: flex;
          }
          .paper-card-c{
            font-size: 28rpx;
            margin: 10rpx 0;
            overflow: hidden;
            text-overflow: ellipsis;
            display: -webkit-box;
            -webkit-line-clamp: 2;
            -webkit-box-orient: vertical;
          }
        }
        .green{
          background: #5fb734;
        }
        .red{
          background: #ed6464
          .green{
            margin-bottom: 5px;
            color: #5fb734;
          }
          .red{
            margin-bottom: 5px;
            color: #ed6464
          }
        }
      }
    }
pages/tabBar/count/productDetail.vue
对比新文件
@@ -0,0 +1,270 @@
<template>
    <view class="box">
        <!-- 自定义导航栏 -->
    <view class="navBarBox">
      <!-- 状态栏占位 -->
      <view class="statusBar" :style="{ paddingTop: statusBarHeight + 'px' }"></view>
      <!-- 真正的导航栏内容 -->
      <view style="display: flex; flex-direction: column;">
        <view class="navBar">
          <u-icon name="arrow-left" color="black" size="17" style="margin-left: 8px;" @click="goBack" />
          <view class="barText">我的操作</view>
        </view>
      </view>
    </view>
    <view class="m-p-15">
      <view class="card-list">
          <scroll-view v-if="examList && examList.length>0" scroll-y="true" class="scroll-Y" @scrolltoupper="upper" @scrolltolower="lower" lower-threshold="150" @scroll="scrollView" style="height:100%">
            <view class="paper-card" v-for="(item,index) in examList" :key="index">
              <view class="paper-card-l">
                <view class="dot"></view>
                <view class="line"></view>
              </view>
              <view class="paper-card-box">
                <view class="paper-card-r">
                  <view class="paper-card-t"><u-icon name="clock-fill" color="#2979ff" size="18" style="margin-right: 4px"></u-icon>{{item.updateTime}}</view>
                  <view class="paper-card-c">
                    <span style="margin-right: 4px">对</span>
                    <span style="font-weight: bold" v-if="item.hazmatBasic">{{item.hazmatBasic.companyName?item.hazmatBasic.companyName + '的':''}}{{item.hazmatBasic.name}}({{item.hazmatBasic.productSn}})</span>
                    <span style="font-weight: bold" v-if="item.productBasic">{{item.productBasic.companyName?item.productBasic.companyName + '的':''}}{{item.productBasic.name}}({{item.productBasic.productSn}})</span>
                    进行
                    <span :class="item.num>=0?'green':'red'" style="font-weight: bold;margin: 0 4px">{{item.state==0?'入库 ':item.state==1?'取用 ':item.state==2?'归还 ':item.state==3?'标签作废 ':item.state==4?'用尽登记 ':item.state==5?'销售 ':'-- '}}</span>
                  </view>
                  <view v-if="item.hazmatBasic" :class="item.num>=0?'green':'red'" style="font-size: 28rpx">
                    <span v-if="item.num  > 0">+</span>{{item.num + item.hazmatBasic.unit}}
                  </view>
                  <view v-if="item.productBasic" :class="item.num>=0?'green':'red'" style="font-size: 28rpx">
                    <span v-if="item.num  > 0">+</span>{{item.num + item.productBasic.unit}}
                  </view>
                </view>
              </view>
            </view>
          </scroll-view>
          <u-empty v-else text="暂无记录" mode="list"></u-empty>
      </view>
<!--      <view>-->
<!--        <u-button @click="loginOut" type="primary" text="退出登录" style="width: 80%" shape="circle"></u-button>-->
<!--      </view>-->
    </view>
<!--        <tabBar :currentPagePath="page"></tabBar>-->
    </view>
</template>
<script>
    import tabBar from '../tabBarIndex.vue'
  import {getHazmatFlowByUser, getProductFlowByUser, loginOut} from "../../../api";
  import {getCleanRecord} from "../../../api/wearhouse";
    export default {
        components:{
            tabBar
        },
        data() {
            return {
                page: 'pages/tabBar/count/productDetail',
                statusBarHeight: '',
        examParams: {
          pageNum: 1,
          pageSize: 10,
        },
        examList: [],
        totalPage: 0
            }
        },
        onLoad() {
      console.log('跳转完成')
            this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight'];
            // uni.hideTabBar();
      this.getList()
        },
        methods: {
            goBack() {
        const url = uni.getStorageSync("prevPage");
        if(url){
          uni.reLaunch({
            url: url
          });
        } else{
          uni.reLaunch({
            url: '/pages/tabBar/count/count'
          })
        }
            },
      getList(){
        getProductFlowByUser(this.examParams).then(res => {
          if(res.code == 200) {
            let list = res.data.list?res.data.list: [];
            if (res.data.pageNum != 1) {
              this.examList = this.examList.concat(list)
            } else {
              this.examList = res.data.list
            }
            this.totalPage = res.data.totalPage
          }else{
            uni.$u.toast(res.message)
          }
        })
      },
      upper(e) {
        // console.log(e)
      },
      lower(e) {
        //并且让页码+1,调用获取数据的方法获取第二页数据
        this.examParams.pageNum++
        //此处调用自己获取数据列表的方法
        if (this.examParams.pageNum > this.totalPage){
          uni.$u.toast('已加载全部数据')
          return
        }
        this.getList()
      },
      scrollView(e) {
        // console.log(e)
      },
        }
    }
</script>
<style lang='scss' scoped>
.box {
    display: flex;
    flex-direction: column;
    width: 100%;
    height: 100%;
}
.fix{
    position: sticky;
    top: 0;
    left: 0;
    right: 0;
    width: 100%;
    z-index: 1;
}
.navBarBox .navBar {
  background-color:#fff;
  height: 50px;
  display: flex;
  flex-direction: row;
  justify-content: space-around;
  align-items: center;
  box-shadow: 0 3px 12px rgba(0,0,0,0.05);
}
.barText{
  margin-left: -20px;
  flex: 1;
  /* margin-left: 20px; */
  text-align: center;
  width: 85%;
  font-size: 16px;
  /* text-align: center; */
  font-weight: 600;
}
.navBarBox .navBar .logo {
  width: 82rpx;
  height: 82rpx;
  margin-right: 10rpx;
}
.m-p-15{
  width: 100%;
  .card-list{
    width: 100%;
    height: calc(100vh - 85px);
    margin: 20px 0 15px;
    .paper-card{
      width: calc(100% - 30px);
      margin: 0 auto;
      display: flex;
      justify-content: space-between;
      .paper-card-l{
        width: 5%;
        position: relative;
        .dot{
          width: 32rpx;
          height: 32rpx;
          border-radius: 50%;
          background: #5fb734;
          position: absolute;
          left: 50%;
          top: 28rpx;
          transform: translateX(-16rpx);
          z-index: 9;
          box-shadow: 0 3px 8px rgba(95,183,52,.4);
          border: 1px solid #fff;
        }
        .line{
          position: absolute;
          left: 50%;
          top: 0;
          width: 1px;
          height: 100%;
          border-left: 1px dashed #ccc;
        }
      }
      &:first-of-type{
        .paper-card-l{
          .line{
            position: absolute;
            left: 50%;
            top: 44rpx;
            width: 1px;
            height: calc(100% - 44rpx);
            border-left: 1px dashed #ccc;
          }
        }
      }
      &:last-of-type{
        .paper-card-l{
          .line{
            position: absolute;
            left: 50%;
            top: 0;
            width: 1px;
            height: 56rpx;
            border-left: 1px dashed #ccc;
          }
        }
      }
      .paper-card-box{
        width: calc(95% - 15px);
        padding-bottom: 15px;
        .paper-card-r{
          width: 100%;
          background: #fff;
          border-radius: 20px;
          padding: 15px;
          box-sizing: border-box;
          box-shadow: 0 3px 8px rgba(150,150,150,.1);
          .paper-card-t{
            font-size: 32rpx;
            font-family: "PingFang SC";
            font-weight: 800;
            display: flex;
          }
          .paper-card-c{
            font-size: 28rpx;
            margin: 10rpx 0;
            overflow: hidden;
            text-overflow: ellipsis;
            display: -webkit-box;
            -webkit-line-clamp: 2;
            -webkit-box-orient: vertical;
          }
          .green{
            margin-bottom: 5px;
            color: #5fb734;
          }
          .red{
            margin-bottom: 5px;
            color: #ed6464
          }
        }
      }
    }
  }
}
</style>
pages/tabBar/current/current.vue
@@ -6,36 +6,53 @@
            <view class="statusBar" :style="{ paddingTop: statusBarHeight + 'px' }"></view>
            <!-- 真正的导航栏内容 -->
            <view class="navBar">
<!--                <u-icon style=" margin-left: 13px;" name="arrow-left" color="black" size="17" @click="goBack"/>-->
                <view class="barText">课程</view>
<!--                <view >-->
<!--                    <u-button type="text" @click="loginOut" style="color: #1890ff;margin-right: 5px;width: 65px;">退出</u-button>-->
<!--                </view>-->
                <view class="barText">记录查询</view>
            </view>
        </view>
        <!-- 页面内容 -->
    <view class="m-p-15">
      <view class="cardList">
        <scroll-view scroll-y="true" class="scroll-Y" @scrolltoupper="upper"
                     @scrolltolower="lower" lower-threshold="150" @scroll="scrollView" style="height:100%">
          <view style="padding: 20px 0 20px">
          <view class="card-i" v-for="(item,index) in classList" :key="index">
            <u-image radius="16px" width="200rpx" height="200rpx" :show-loading="true" :src="getImageUrl(item.course.logo)" mode="aspectFill">
            </u-image>
            <!--            <view class="card-i-t">目前已学:{{item.totalProgress}}分钟</view>-->
            <view class="card-i-r">
              <view class="card-i-r-t">
                <view>{{item.phaseName + '-' + item.course.name}}</view>
                <span style="color: #999;font-size: 12px;display: flex;align-items: center"><u-icon name="account" color="#999" size="18" style="margin-bottom: 0;margin-right: 2px"></u-icon>{{item.createName +'('+ item.createTime +')'}}</span>
              </view>
              <view class="card-i-r-b">
                <u-tag icon="clock" :text="secondsToHms(item.course.period)" type="success" size="mini" shape="circle" plain plainFill></u-tag>
                <u-button class="study-button" type="primary" text="开始学习" shape="circle" size="small" @click="toStudy(item)"></u-button>
              </view>
      <u-sticky>
        <u-input placeholder="请输入或扫描二维码编号进行搜索" v-model="searchContent">
          <template slot="prefix">
            <u-icon name="scan" color="#2979ff" size="28" @click="scanCode()"></u-icon>
          </template>
          <template slot="suffix">
            <u-button type="primary" class="searchBtn" size="small" text="溯源查询" shape="circle" @click="getList()"></u-button>
          </template>
        </u-input>
      </u-sticky>
      <view class="productCard" v-if="dataList && dataList.length>0">
        <view v-if="dataList[0].hazmatBasic">
          <view>名称:<span>{{dataList[0].hazmatBasic?dataList[0].hazmatBasic.name:''}}({{dataList[0].hazmatBasic?dataList[0].hazmatBasic.productSn :''}})</span></view>
          <view>条码:<span>{{dataList[0].code}}</span></view>
        </view>
        <view v-if="dataList[0].productBasic">
          <view>名称:{{dataList[0].productBasic?dataList[0].productBasic.name:''}}({{dataList[0].productBasic?dataList[0].productBasic.productSn :''}})</view>
          <view>条码:{{dataList[0].code}}</view>
        </view>
      </view>
      <view class="cardList" v-if="dataList && dataList.length>0">
        <view class="card-i" v-for="(item,index) in dataList" :key="index">
          <view class="card-i-l">
            <span><u-icon name="clock-fill" color="#2979ff" size="18" style="margin-right: 4px"></u-icon>{{item.updateTime}}</span>
            <view v-if="item.user">
              <span></span>{{item.user.departName}}部门的<span style="font-weight: bold">{{item.user.name }}</span>进行了<span :class="item.num>=0?'green':'red'">{{item.state==0?'入库':item.state==1?'取用':item.state==2?'归还':item.state==3?'标签作废':item.state==4?'用尽登记':item.state==5?'销售':'--'}}</span>
            </view>
          </view>
          <view v-if="item.hazmatBasic" class="card-i-r" :class="item.num>=0?'green':'red'">
            <span v-if="item.num  > 0">+</span>{{item.num + item.hazmatBasic.unit}}
          </view>
        </scroll-view>
          <view v-if="item.productBasic" class="card-i-r" :class="item.num>=0?'green':'red'">
            <span v-if="item.num  > 0">+</span>{{item.num + item.productBasic.unit}}
          </view>
        </view>
      </view>
      <view v-else style="margin-top: 200rpx">
        <u-empty
            mode="list"
            text="通过条码搜索记录"
        >
        </u-empty>
      </view>
    </view>
        <tabBar :currentPagePath="page"></tabBar>
@@ -44,7 +61,7 @@
<script>
    import tabBar from '../tabBarIndex.vue'
  import {getClassList} from '../../../api/index.js'
  import {getHazmatFlowByCode} from '../../../api/index.js'
    import tebBar from '../tabBarIndex.vue'
  import VUE_APP_BASE_URL from "../../../common/constant";
    export default {
@@ -55,20 +72,12 @@
            return {
                page: 'pages/tabBar/current/current',
                statusBarHeight: 0,
        classParams: {
          pageNum: 1,
          pageSize: 10,
        },
        classList: [],
        totalPage: 0
        searchContent: '',
        dataList: []
            }
        },
        onLoad() {
            // this.unitType = uni.getStorageSync('unittype') + 1;
            //获取手机状态栏高度
            this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight'];
      this.classParams.pageNum = 1
      this.getClass();
        },
        onShow() {
            // this.role = uni.getStorageSync('roleName');
@@ -77,36 +86,43 @@
      uni.hideTabBar()
    },
        methods: {
            loginOut() {
                uni.clearStorageSync();
                uni.clearStorage();
                uni.navigateTo({
                    url: '/pages/index/index'
                })
            },
            goBack() {
                uni.switchTab({
                    url:'/pages/tabBar/firstPage/firstPage'
                });
            },
      getClass(){
        getClassList(this.classParams).then(res => {
          if(res.code == 200) {
            let list = res.data.list?res.data.list: [];
            if (res.data.pageNum != 1) {
              this.classList = this.classList.concat(list)
            } else {
              this.classList = res.data.list
      scanCode(){
        const t = this
        uni.scanCode({
          autoZoom: false,
          success: function (res) {
            if(res && res.result){
              t.searchContent = res.result
              getHazmatFlowByCode({code: res.result}).then(re => {
                if(re.code == 200) {
                  t.dataList = re.data?re.data: []
                }else{
                  uni.$u.toast(re.message)
                }
              })
            }else{
              uni.showToast({
                title: '该二维码已失效或不包含条码信息',
                duration: 2000
              })
            }
            this.totalPage = res.data.totalPage
          }else{
            uni.$u.toast(res.message)
          }
        })
      },
      getImageUrl(logo) {
        return logo ? VUE_APP_BASE_URL  + '/api/' + logo : '/static/defaultCover.jpg';
      getList(){
        const t = this
        if(t.searchContent == ''){
          uni.$u.toast('请输入二维码编号')
        }else{
          getHazmatFlowByCode({code: t.searchContent}).then(re => {
            if(re.code == 200) {
              t.dataList = re.data?re.data: []
            }else{
              uni.$u.toast(re.message)
            }
          })
        }
      },
      toStudy(item) {
@@ -115,35 +131,6 @@
                  url: `/pages/tabBar/current/detail?bank=` + encodeURIComponent(JSON.stringify(item))
                })
            },
      secondsToHms(seconds) {
        seconds = Number(seconds);
        const h = Math.floor(seconds / 3600);
        const m = Math.floor(seconds % 3600 / 60);
        const s = Math.floor(seconds % 3600 % 60);
        const hDisplay = h > 0 ? String(h).padStart(2, '0') : '00';
        const mDisplay = m > 0 ? String(m).padStart(2, '0') : '00';
        const sDisplay = s > 0 ? String(s).padStart(2, '0') : '00';
        return `${hDisplay}:${mDisplay}:${sDisplay}`;
      },
      upper(e) {
        // console.log(e)
      },
      lower(e) {
        //并且让页码+1,调用获取数据的方法获取第二页数据
        this.classParams.pageNum++
        if (this.classParams.pageNum > this.totalPage){
          uni.$u.toast('已加载全部数据')
          return
        }
        //此处调用自己获取数据列表的方法
        this.getClass()
      },
      scrollView(e) {
        // console.log(e)
      }
        }
    }
@@ -176,110 +163,122 @@
  font-size: 16px;
  font-weight: 600;
  flex: 2;
  margin-left: 45%;
}
.examineList{
  margin-top: 12px;
  height: calc(100vh - 246px);
  overflow: hidden;
  overflow-y: scroll;
  text-align: center;
}
.content{
  .tit{
    width: 100%;
    text-overflow: ellipsis;
    overflow: hidden;
    white-space: nowrap;
  }
  .cont{
    width: 100%;
    font-size: 14px;
    color: #666;
    display: block;
    text-overflow: ellipsis;
    overflow: hidden;
    white-space: nowrap;
    margin-bottom: 6px;
  }
  .btnGroup{
    width: 100%;
    display: flex;
    justify-content: space-between;
  }
.u-input{
  border-color: #f5f5f5 !important;
  border-radius: 99px;
  background: #f5f5f5;
  box-shadow: 0px -6px 10px rgba(255, 255, 255, 1), 0px 4px 15px rgba(0, 0, 0, 0.1),0px 3px 6px rgba(0, 0, 0, 0.1) inset !important;
  transition: box-shadow .1s ease !important;
}
.buttonCo{
    margin-top: 5px;
    margin-bottom: 10px;
.searchBtn{
  border: 1px solid #fff;
  padding: 0 30rpx;
  box-shadow: 0px -6px 10px rgba(255, 255, 255, 1), 0px 4px 15px rgba(0, 0, 0, 0.15)!important;
}
.m-p-15{
  width: 100%;
}
.cardList{
  width: 100%;
  height: calc(100vh - 130px);
  padding: 0 15px;
  margin-top: 20px;
  box-sizing: border-box;
  .card-i{
    width: calc(100% - 30px);
  .productCard{
    width: 100%;
    background: #fff;
    border-radius: 20px;
    padding: 15px;
    margin: 0 auto 15px;
    position: relative;
    display: flex;
    align-items: flex-start;
    margin: 15px auto;
    box-sizing: border-box;
    box-shadow: 4px 4px 12px rgba(150,150,150,.05);
    &:last-of-type{
      margin-bottom: 0;
    }
    .card-i-t{
      position: absolute;
      width: 250rpx;
      height: 30px;
      border-radius: 20px;
      line-height: 30px;
      color: #fff;
      padding: 0 10rpx;
      box-sizing: border-box;
      left: 0;
      bottom: 0;
      background: rgba(0,0,0,.4);
    }
    .card-i-r{
    &>view>view{
      width: 100%;
      height: 200rpx;
      margin-left: 20rpx;
      font-size: 28rpx;
      font-weight: bold;
      margin-bottom: 10rpx;
      span{
        color: #2979ff;
      }
      &:last-of-type{
        margin-bottom: 0;
      }
    }
  }
  .cardList{
    width: 100%;
    box-sizing: border-box;
    margin-top: 15px;
    box-shadow: 4px 4px 12px rgba(150,150,150,.05);
    .card-i{
      width: 100%;
      background: #fff;
      border-radius: 12px;
      padding: 20px 15px;
      margin: 0 auto;
      box-sizing: border-box;
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      .card-i-r-t{
        view{
          font-size: 32rpx;
          margin-bottom: 20rpx;
          font-family: "PingFang SC";
          font-weight: 800;
      align-items: center;
      border-bottom: 1px dashed #ccc;
      &:first-of-type{
        border-radius: 20px 20px 12px 12px;
      }
      &:last-of-type{
        margin-bottom: 0;
        border-bottom: none;
        border-radius: 12px 12px 20px 20px;
      }
      .card-i-l{
        height: 100%;
        width: 75%;
        flex-direction: column;
        align-items: flex-end;
        justify-content: space-between;
        &>span{
          display: flex;
          align-items: center;
          font-size: 30rpx;
          font-weight: bold;
          margin-bottom: 15rpx;
        }
        &>view{
          width: 100%;
          overflow: hidden;
          text-overflow: ellipsis;
          display: -webkit-box;
          -webkit-line-clamp: 2;
          -webkit-box-orient: vertical;
          span{
            &:first-of-type{
              display: inline-block;
              width: 22px;
            }
          }
        }
      }
      .card-i-r-b{
        width: 100%;
        display: flex;
        align-items: center;
        justify-content: space-between;
        .study-button{
          width: 220rpx;
          margin: 0;
          box-shadow: 3px 3px 12px rgba(51,133,217,.3), -2px -2px 6px #fff;
          border: 1px solid rgba(255,255,255,.8);
        }
      .card-i-r{
        height: 100%;
        width: 25%;
        text-align: right;
        font-size: 32rpx;
        font-weight: bolder;
      }
      .green{
        color: #5fb734;
      }
      .red{
        color: #ed6464
      }
    }
  }
pages/tabBar/current/detail.vue
文件已删除
pages/tabBar/current/video.vue
文件已删除
pages/tabBar/firstPage/exam.vue
文件已删除
pages/tabBar/firstPage/firstPage.vue
@@ -12,82 +12,102 @@
<!--                </view>-->
            </view>
        </view>
    <view style="width: 100%;padding: 0 15px;box-sizing: border-box;margin: 20px 0">
      <u-swiper :list="swiperList" indicatorMode="dot" circular height="160" indicator previousMargin="30" nextMargin="30"></u-swiper>
    </view>
    <scroll-view scroll-y="true" class="scroll-Y" @scrolltoupper="upper"
                 @scrolltolower="lower" lower-threshold="150" @scroll="scrollView" style="height:calc(100vh - 335px)">
    <view class="m-p-15">
      <view class="card" style="width:100%">
        <view class="card-t">
          <span class="card-t-l">我的线上课程</span>
          <span class="card-t-r" @click="toCourses">查看全部</span>
        </view>
        <view class="card-c">
          <view class="card-i" v-for="(item,index) in classList" :key="index">
            <u-image radius="16px" width="200rpx" height="200rpx" :show-loading="true" :src="getImageUrl(item.course.logo)" mode="aspectFill">
            </u-image>
            <!--            <view class="card-i-t">目前已学:{{item.totalProgress}}分钟</view>-->
            <view class="card-i-r">
              <view class="card-i-r-t">
                <view>{{item.phaseName + '-' + item.course.name}}</view>
                <span style="color: #999;font-size: 12px;display: flex;align-items: center"><u-icon name="account" color="#999" size="18" style="margin-bottom: 0;margin-right: 2px"></u-icon>{{item.createName +'('+ item.createTime +')'}}</span>
              </view>
              <view class="card-i-r-b">
                <u-tag icon="clock" :text="secondsToHms(item.course.period)" type="success" size="mini" shape="circle" plain plainFill></u-tag>
                <u-button class="study-button" type="primary" text="开始学习" shape="circle" size="small" @click="toStudy(item)"></u-button>
              </view>
            </view>
    <u-toast ref="uToast"></u-toast>
    <view class="cardList">
      <view class="switchPanel">
        <view class="switchBtns">
          <view class="btnItem" @click="changeTab(1)">
            危化品
          </view>
          <view class="btnItem" @click="changeTab(2)">
            成品
          </view>
        </view>
      </view>
    </view>
    <view class="m-p-15">
      <view class="card" style="width:100%">
        <view class="card-t">
          <span class="card-t-l">我的考试</span>
          <uni-data-select
              v-model="examParams.state"
              placeholder="完成状态"
              :localdata="examSelect"
              :clear="true"
              @change="changeExam"
          ></uni-data-select>
        </view>
        <view class="card-c card-d" v-if="examList && examList.length>0">
            <view class="paper-card" v-for="(item,index) in examList" :key="index">
              <view class="paper-card-t"><span :class="item.state == 0?'blue':item.state == 1?'red':'green'">[{{item.state == 0?'待考试':item.state == 1?'待批阅':'批阅完成'}}]</span>{{item.examPaper.name}}</view>
              <u-tag style="margin-right: 20rpx;display: inline-block" :text="item.examPaper.categoryName" size="mini"></u-tag>
              <u-tag style="display: inline-block" :text="item.examPaper.limited == 1?'时长:' + item.examPaper.limitTime + '分钟':'不限时'" plain plainFill size="mini"></u-tag>
              <view class="paper-card-b">
                <view style="font-size: 12px;margin-top: 10px;color: #999">
                  <view>创建人:{{item.createName}}</view>
                  <view>截止日期:{{item.examPaper.deadline.substring(0,10)}}</view>
                </view>
                <view>
                  <u-button v-if="item.state == 0" @click="toExam(item,1)" class="exam-button" type="primary" text="开始考试" shape="circle" size="small"></u-button>
                  <u-button v-if="item.state == 2" @click="toExam(item,2)" class="exam-button" type="primary" text="查看" shape="circle" size="small"></u-button>
                </view>
              </view>
            </view>
        </view>
        <view class="card-c card-d" v-else>
          <u-empty text="该状态暂无记录" mode="data"></u-empty>
        <view class="colBlock" :style="blockStyle">
          {{blockText}}
        </view>
      </view>
    </view>
    </scroll-view>
    <view class="cardList" v-show="tabNum == 1">
      <view class="cardItem" v-for="(item,index) in cardList1" :key="index" @click="scanCode(item.title)">
        <u-image radius="16px" width="140rpx" height="140rpx" :show-loading="true" :src="item.icon" mode="aspectFill">
        </u-image>
        <view class="cardTit">
          {{item.title}}
        </view>
      </view>
    </view>
    <view class="cardList" v-show="tabNum == 2">
      <view class="cardItem" v-for="(item,index) in cardList2" :key="index" @click="scanCode(item.title)">
        <u-image radius="16px" width="140rpx" height="140rpx" :show-loading="true" :src="item.icon" mode="aspectFill">
        </u-image>
        <view class="cardTit">
          {{item.title}}
        </view>
      </view>
    </view>
    <u-modal :show="showModal" :title="modalTitle" :showConfirmButton="false" :closeOnClickOverlay="true" ref="uModal" :asyncClose="true" @close="closeModal()">
      <view v-if="tabNum == 1" style="font-size: 32rpx;font-weight: bold;margin-bottom: 10px">
        {{hazmat.hazmatBasic?hazmat.hazmatBasic.name:'--'}}({{hazmat.hazmatBasic?hazmat.hazmatBasic.productSn:'--'}})
      </view>
      <view v-if="tabNum == 2" style="font-size: 32rpx;font-weight: bold;margin-bottom: 10px">
        {{product.productBasic?product.productBasic.name:'--'}}({{product.productBasic?product.productBasic.productSn:'--'}})
      </view>
      <view>
        二维码识别号:{{tabNum == 1?hazmat.code:product.code}}
      </view>
      <view>
        入库时间:{{tabNum == 1?hazmat.createTime:product.createTime}}
      </view>
      <view v-if="modalTitle == '取用' || modalTitle == '扫码作废'">
        <span v-if="tabNum == 1">当前包装存量:{{hazmat.remaining}}{{hazmat.hazmatBasic?hazmat.hazmatBasic.unit:''}}</span>
        <span v-else>当前包装存量:{{product.remaining}}{{product.productBasic?product.productBasic.unit:''}}</span>
      </view>
      <view v-if="modalTitle == '归还' || modalTitle == '用尽登记'">
        取用时存量:{{hazmat.remaining}}{{hazmat.hazmatBasic?hazmat.hazmatBasic.unit:''}}
      </view>
      <br>
      <view v-if="modalTitle == '归还'">
        请输入归还剩余量:
        <u--form labelPosition="left" :model="hazmatBack" :rules="rules" ref="uForm">
          <u-form-item
              prop="remaining"
              ref="remaining"
          >
            <u--input
                v-model="hazmatBack.remaining"
                :placeholder="'必填(单位:' + (hazmat.hazmatBasic?hazmat.hazmatBasic.unit:'') + ')'"
                type="number"
            ></u--input>
          </u-form-item>
        </u--form>
      </view>
      <u-button v-if="modalTitle == '取用'" type="primary" style="margin-top: 20px" text="确认取用" @click="confirmTake()"></u-button>
      <u-button v-if="modalTitle == '归还'" type="primary" style="margin-top: 20px" text="确认归还" @click="confirmBack()"></u-button>
      <u-button v-if="modalTitle == '用尽登记'" type="warning" style="margin-top: 20px" text="确认用尽登记" @click="confirmCheck()"></u-button>
      <u-button v-if="modalTitle == '销售'" type="primary" style="margin-top: 20px" text="确认销售" @click="confirmSell()"></u-button>
      <u-button v-if="modalTitle == '扫码作废'" type="error" style="margin-top: 20px" text="确认作废该二维码" @click="confirmCancle()"></u-button>
    </u-modal>
    <tabBar :currentPagePath="page"></tabBar>
    </view>
</template>
<script>
    import tabBar from '../tabBarIndex.vue'
    import {getClassList, getExamList, getSwiperList} from '../../../api/index.js'
  import {
    getHazmatByCode,
    postHazmatReturn,
    postHazmatUse,
    postHazmatUsed,
    postHazmatDiscard,
    postProductDiscard, getProductByCode, postProductSold
  } from '../../../api/index.js'
  import VUE_APP_BASE_URL from 'common/constant.js'
import { Value } from 'sass';
  import take from '../../../static/take.png'
  import takeBack from '../../../static/return.png'
  import check from '../../../static/check.png'
  import del from '../../../static/delete.png'
  import sell from '../../../static/sell.png'
  import {postEndExam} from "../../../api/wearhouse";
    export default {
        components:{
@@ -95,36 +115,63 @@
        },
        data() {
            return {
        swiperList: [
          '/static/home/swiperPic.png','/static/home/swiperPic.png','/static/home/swiperPic.png'
        ],
                titleList:[
                    {
                        label: '默认排序',
                        value: 1,
                    }
                ],
        classList: [],
        examList: [],
        totalPage: 0,
                page: 'pages/tabBar/firstPage/firstPage',
                statusBarHeight: '',
        classParams:{
          pageNum: 1,
          pageSize: 3,
        },
        examParams: {
          pageNum: 1,
          pageSize: 10,
          state: 0
        },
        examSelect: [
          { value: 0, text: "待考试" },
          { value: 1, text: "待批阅" },
          { value: 2, text: "批阅完成" },
        cardList1: [
          {
            icon: take,
            title: '取用',
            type: 1
          },
          {
            icon: takeBack,
            title: '归还',
            type: 2
          },
          {
            icon: check,
            title: '用尽登记',
            type: 3
          },
          {
            icon: del,
            title: '扫码作废',
            type: 4
          }
        ],
                role: '',
                realname:''
        cardList2: [
          {
            icon: sell,
            title: '销售',
            type: 1
          },
          {
            icon: del,
            title: '扫码作废',
            type: 4
          }
        ],
        showModal: false,
        modalTitle: '取用',
        hazmat: {},
        product: {},
        hazmatBack: {
          id: null,
          remaining: ''
        },
        rules: {
          remaining: {
            type: 'string',
            required: true,
            message: '归还剩余量不可为空',
            trigger: ['blur', 'change']
          }
        },
        tabNum: 1,
        blockText: '原材料',
        blockStyle: {
          transform: 'translateX(0px)'
        }
            }
            
        },
@@ -132,12 +179,6 @@
            //获取手机状态栏高度
            this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight'];
            // uni.hideTabBar();
      this.examList = []
      this.classParams.pageNum = 1
      this.examParams.pageNum = 1
      this.getSwiper()
      this.getClass()
      this.getExamList()
        },
        onShow(){
            // this.role = uni.getStorageSync('roleName');
@@ -148,63 +189,225 @@
    created(){
      uni.hideTabBar()
    },
    mounted() {
    },
        methods: {
            loginOut() {
                uni.clearStorageSync();
                uni.clearStorage();
                uni.navigateTo({
                    url: '/pages/index/index'
                })
            },
      changeExam(e) {
        this.examParams.pageNum = 1
        this.getExamList()
      },
      async getSwiper(){
        const res = await getSwiperList()
        if(res.code == 200){
          let list = res.data.list || []
          if(list.length>0){
            this.swiperList = list.map(i=>VUE_APP_BASE_URL + '/api/' + i.imgUrl)
          }
        }else{
          uni.$u.toast(res.message)
        }
      },
      getClass(){
        getClassList(this.classParams).then(res => {
                    if(res.code == 200) {
                        if(res.data && res.data.list.length > 0){
                            this.classList = res.data.list
                        }else {
              this.classList = []
                        }
                    }else{
                        uni.$u.toast(res.message)
                    }
                })
            },
      getExamList(){
        getExamList(this.examParams).then(res => {
          if(res.code == 200) {
            let list = res.data.list?res.data.list: [];
            if (res.data.pageNum != 1) {
              this.examList = this.examList.concat(list)
            } else {
              this.examList = res.data.list
      scanCode(title){
        const t = this
        t.modalTitle = title
        uni.scanCode({
          autoZoom: false,
          success: function (res) {
            if(res && res.result){
              if(t.tabNum == 1){
                getHazmatByCode({code: res.result}).then((re)=>{
                  if(re.code == 200){
                    t.hazmat = re.data
                    t.showModal = true
                  }else{
                    t.$refs.uToast.show({
                      type: 'default',
                      message: re.message
                    })
                  }
                }).catch((err) => {
                  uni.showToast({
                    title: err,
                    duration: 2000
                  })
                })
              }else{
                getProductByCode({code: res.result}).then((re)=>{
                  if(re.code == 200){
                    t.product = re.data
                    t.showModal = true
                  }else{
                    t.$refs.uToast.show({
                      type: 'default',
                      message: re.message
                    })
                  }
                }).catch((err) => {
                  uni.showToast({
                    title: err,
                    duration: 2000
                  })
                })
              }
            }else{
              t.$refs.uToast.show({
                type: 'default',
                message: '该二维码已失效或不包含条码信息',
              })
            }
            this.totalPage = res.data.totalPage
          }else{
            uni.$u.toast(res.message)
          }
        })
      },
      getImageUrl(logo) {
        return logo ? VUE_APP_BASE_URL  + '/api/' + logo : '/static/defaultCover.jpg';
      confirmTake(){
        const t = this
        postHazmatUse(t.hazmat.id).then((r)=>{
          if(r.code == 200){
            t.$refs.uToast.show({
              type: 'default',
              message: r.message
            })
          }else{
            t.$refs.uToast.show({
              type: 'default',
              message: r.message
            })
          }
        }).catch((err) => {
          uni.showToast({
            title: err,
            duration: 2000
          })
        })
        t.showModal = false
      },
      confirmBack() {
        const t = this
        t.$refs.uForm.validate().then(res => {
          t.hazmatBack.id = t.hazmat.id
          t.hazmatBack.remaining = Number(t.hazmatBack.remaining)
          postHazmatReturn(t.hazmatBack).then((r)=>{
            if(r.code == 200){
              t.$refs.uToast.show({
                type: 'default',
                message: r.message
              })
            }else{
              t.$refs.uToast.show({
                type: 'default',
                message: r.message
              })
            }
          }).catch((err) => {
            uni.showToast({
              title: err,
              duration: 2000
            })
          })
          t.showModal = false
          t.hazmatBack.remaining = ''
        }).catch(errors => {
          uni.$u.toast('请完善必填信息')
        })
      },
      confirmCheck(){
        const t = this
        postHazmatUsed(t.hazmat.id).then((r)=>{
          if(r.code == 200){
            t.$refs.uToast.show({
              type: 'default',
              message: r.message
            })
          }else{
            t.$refs.uToast.show({
              type: 'default',
              message: r.message
            })
          }
        }).catch((err) => {
          uni.showToast({
            title: err,
            duration: 2000
          })
        })
        t.showModal = false
      },
      confirmSell(){
        const t = this
        postProductSold(t.product.id).then((r)=>{
          if(r.code == 200){
            t.$refs.uToast.show({
              type: 'default',
              message: r.message
            })
          }else{
            t.$refs.uToast.show({
              type: 'default',
              message: r.message
            })
          }
        }).catch((err) => {
          uni.showToast({
            title: err,
            duration: 2000
          })
        })
        t.showModal = false
      },
      confirmCancle(){
        const t = this
        if(t.tabNum == 1){
          postHazmatDiscard(t.hazmat.id).then((r)=>{
            if(r.code == 200){
              t.$refs.uToast.show({
                type: 'default',
                message: r.message
              })
            }else{
              t.$refs.uToast.show({
                type: 'default',
                message: r.message
              })
            }
          }).catch((err) => {
            uni.showToast({
              title: err,
              duration: 2000
            })
          })
        }else{
          postProductDiscard(t.product.id).then((r)=>{
            if(r.code == 200){
              t.$refs.uToast.show({
                type: 'default',
                message: r.message
              })
            }else{
              t.$refs.uToast.show({
                type: 'default',
                message: r.message
              })
            }
          }).catch((err) => {
            uni.showToast({
              title: err,
              duration: 2000
            })
          })
        }
        t.showModal = false
      },
      closeModal(){
        this.hazmat = {}
        this.product = {}
        this.hazmatBack={
          id: null,
          remaining: ''
        }
        this.showModal = false
      },
      changeTab(num){
        this.tabNum = num
        if(num == 1){
          this.blockStyle.transform = 'translateX(0px)'
          this.blockText = '危化品'
        }else{
          this.blockStyle.transform = 'translateX(calc(100% - 2px))'
          this.blockText = '成品'
        }
        console.log(this.tabNum,'num')
      },
      toStudy(item) {
@@ -212,59 +415,6 @@
        uni.navigateTo({
          url: `/pages/tabBar/current/detail?bank=` + encodeURIComponent(JSON.stringify(item))
        })
      },
      toExam(item,type){
        if(type == 1 && !item.startTime && item.examPaper.limited == 1){
          uni.showModal({
            title: '提示',
            content: '该考试限制时长为:' + item.examPaper.limitTime + '分钟,进入后开始计时,计时结束自动交卷,是否继续?',
            success: function (res) {
              if (res.confirm) {
                uni.setStorageSync("prevPage", '/pages/tabBar/firstPage/firstPage');
                uni.navigateTo({
                  url: `/pages/tabBar/firstPage/exam?bank=` + encodeURIComponent(JSON.stringify(item)) + `&type=` + encodeURIComponent(JSON.stringify(type))
                })
              } else if (res.cancel) {
                console.log('用户点击取消');
              }
            }
          })
        }else{
          uni.setStorageSync("prevPage", '/pages/tabBar/firstPage/firstPage');
          uni.navigateTo({
            url: `/pages/tabBar/firstPage/exam?bank=` + encodeURIComponent(JSON.stringify(item)) + `&type=` + encodeURIComponent(JSON.stringify(type))
          })
        }
      },
      secondsToHms(seconds) {
        seconds = Number(seconds);
        const h = Math.floor(seconds / 3600);
        const m = Math.floor(seconds % 3600 / 60);
        const s = Math.floor(seconds % 3600 % 60);
        const hDisplay = h > 0 ? String(h).padStart(2, '0') : '00';
        const mDisplay = m > 0 ? String(m).padStart(2, '0') : '00';
        const sDisplay = s > 0 ? String(s).padStart(2, '0') : '00';
        return `${hDisplay}:${mDisplay}:${sDisplay}`;
      },
      upper(e) {
        // console.log(e)
      },
      lower(e) {
        //并且让页码+1,调用获取数据的方法获取第二页数据
        this.examParams.pageNum++
        //此处调用自己获取数据列表的方法
        if (this.examParams.pageNum > this.totalPage){
          uni.$u.toast('已加载全部数据')
          return
        }
        this.getExamList()
      },
      scrollView(e) {
        // console.log(e)
      },
      toCourses(){
@@ -278,7 +428,7 @@
</script>
<style lang="scss">
<style lang="scss" scoped>
.navBarBox .navBar {
    background-color:#fff;
      height: 50px;
@@ -286,8 +436,7 @@
      flex-direction: row;
      justify-content: center;
      align-items: center;
  box-shadow: 0 3px 12px rgba(0,0,0,0.05);
    box-shadow: 0 3px 12px rgba(0,0,0,0.05);
}
.fix{
    position: sticky;
@@ -302,187 +451,107 @@
  font-size: 16px;
  font-weight: 600;
  flex: 2;
  margin-left: 45%;
  text-align: center;
}
.statusBar{
    background-color:lightgrey;
}
.m-p-15{
  width: 100%;
  box-sizing: border-box;
  padding: 0 15px;
/deep/ .u-toast__content{
  white-space: pre-wrap !important;
  word-break: break-all !important;
  word-wrap: break-word !important;
}
.card{
  width: 100%;
  margin-bottom: 40rpx;
/deep/ .u-modal__content{
  display: flex;
  flex-direction: column !important;
  align-items: center;
  text-align: left;
  .card-t{
  &>view{
    width: 100%;
    padding: 0 6rpx;
    box-sizing: border-box;
  }
}
.switchPanel{
  width: 100%;
  height: 84rpx;
  position: relative;
  border: 2px solid #fff;
  box-sizing: border-box;
  border-radius: 8px;
  box-shadow: 0px -6px 10px rgba(255, 255, 255, 1), 0px 4px 15px rgba(0, 0, 0, 0.1),0px 3px 6px rgba(0, 0, 0, 0.05) inset !important;
  .switchBtns{
    width: 100%;
    height: 80rpx;
    position: absolute;
    top: 0;
    left: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 20rpx;
    z-index: 99;
    .card-t-l{
      font-size: 32rpx;
      font-weight: bold;
    }
    .card-t-r{
      color: #999;
      cursor: pointer;
    }
    /deep/ .uni-stat__select{
      display: flex;
      flex: 0;
      justify-content: right;
      .uni-stat-box{
        display: flex;
        flex: 0;
        justify-content: right;
        .uni-select{
          width: 320rpx;
          border-radius: 99px;
          padding: 0 10px;
          background: #fff;
          .uni-select__input-placeholder{
            color: #999;
          }
        }
      }
    .btnItem{
      width: 50%;
      height: 100%;
      box-sizing: border-box;
      text-align: center;
      line-height: 80rpx;
    }
  }
  .card-c{
    background: #fff;
    border-radius: 20px;
    padding: 15px;
    .card-i{
      padding-bottom: 15px;
      margin-bottom: 15px;
      border-bottom: 1px solid #f0f0f0;
      position: relative;
      display: flex;
      align-items: flex-start;
      box-sizing: border-box;
      &:last-of-type{
        margin-bottom: 0;
        padding-bottom: 0;
        border-bottom: none;
      }
      .card-i-t{
        position: absolute;
        width: 250rpx;
        height: 30px;
        border-radius: 8rpx;
        line-height: 30px;
        color: #fff;
        padding: 0 10rpx;
        box-sizing: border-box;
        left: 0;
        bottom: 0;
        background: rgba(0,0,0,.4);
      }
      .card-i-r{
        width: 100%;
        height: 200rpx;
        margin-left: 20rpx;
        display: flex;
        flex-direction: column;
        justify-content: space-between;
        .card-i-r-t{
          view{
            font-size: 32rpx;
            margin-bottom: 10rpx;
            font-family: "PingFang SC";
            font-weight: 800;
            overflow: hidden;
            text-overflow: ellipsis;
            display: -webkit-box;
            -webkit-line-clamp: 2;
            -webkit-box-orient: vertical;
          }
        }
        .card-i-r-b{
          width: 100%;
          display: flex;
          align-items: center;
          justify-content: space-between;
          .study-button{
            width: 220rpx;
            margin: 0;
            box-shadow: 3px 3px 12px rgba(51,133,217,.3), -2px -2px 6px #fff;
            border: 1px solid rgba(255,255,255,.8);
          }
        }
      }
    }
  }
  .card-d{
    background: none;
    padding: 0 0 15px;
    .paper-card{
      background: #fff;
      margin-bottom: 15px;
      padding: 15px;
      box-sizing: border-box;
      position: relative;
      border-radius: 20px;
      &:last-of-type{
        margin-bottom: 0;
      }
      .paper-card-t{
        font-size: 32rpx;
        margin-bottom: 10rpx;
        font-family: "PingFang SC";
        font-weight: 800;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        .blue{
          font-size: 28rpx;
          color: #0f7ff9
        }
        .green{
          font-size: 28rpx;
          color: #5ac725
        }
        .red{
          font-size: 28rpx;
          color: #f56c6c
        }
      }
      .paper-card-b{
        display: flex;
        align-items: flex-end;
        justify-content: space-between;
        .exam-button{
          width: 220rpx;
          margin: 0;
          box-shadow: 3px 3px 12px rgba(51,133,217,.3), -2px -2px 6px #fff;
          border: 1px solid rgba(255,255,255,.8);
        }
      }
    }
  .colBlock{
    position: absolute;
    top: 5rpx;
    left: 0;
    z-index: 999;
    width: 50%;
    height: 70rpx;
    border-radius: 8px;
    background: rgb(0,172,238);
    background: linear-gradient(0deg, rgba(0,172,238,1) 0%, rgba(2,126,251,1) 100%);
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) !important;
    transition: .4s;
    text-align: center;
    line-height: 70rpx;
    color: #fff;
    font-weight: bold;
    letter-spacing: 2px;
    border: 2rpx solid #fff;
  }
}
.cardList{
  width: 100%;
  box-sizing: border-box;
  padding: 0 15px;
  margin-top: 20px;
  display: flex;
  flex-direction: column;
  align-items: center;
  flex-wrap: wrap;
.badge span{
    text-align: center;
    width: 100%;
  .cardItem{
    width: 100%;
    padding: 15px 30px;
    box-sizing: border-box;
    margin-bottom: 15px;
    background: #fff;
    border-radius: 40rpx;
    display: flex;
    align-items: center;
    box-shadow: 0 10rpx 20rpx rgba(0,0,0,.05);
    transition: box-shadow .15s ease !important;
    &:active{
      box-shadow: none;
    }
    .cardTit{
      font-size: 36rpx;
      font-weight: bold;
      margin-left: 30px;
    }
  }
}
</style>
pages/tabBar/tabBarIndex.vue
@@ -65,8 +65,13 @@
  border-radius: 99px;
  overflow: hidden;
  box-shadow: 0 -6px 10px rgba(150, 150, 150, 0.1), 0 6px 10px rgba(150, 150, 150, 0.1);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  /deep/ .u-tabbar__content{
    background-color: rgba(255,255,255,.4);
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
    border: 1px solid rgba(255,255,255,.8);
  }
  /deep/ .u-tabbar .u-border-top{
    border-color: rgba(0,0,0,0) !important;
pages/tabBar/utils/tabBar.js
@@ -9,13 +9,7 @@
                "pagePath": "pages/tabBar/current/current",
                "iconPath": "/static/notice.png",
                "selectedIconPath": "/static/notice-sel.png",
                "text": "课程"
            },
            {
                "pagePath": "pages/tabBar/wearhouse/wearhouse",
                "iconPath": "/static/wearhouse.png",
                "selectedIconPath": "/static/wearhouse_sel.png",
                "text": "刷题"
                "text": "记录查询"
            },
            {
                "pagePath": "pages/tabBar/count/count",
@@ -27,10 +21,28 @@
const user_other = [
    {
        "pagePath": "pages/tabBar/notice/notice",
        "iconPath": "/static/notice.png",
        "selectedIconPath": "/static/notice-sel.png",
        "text": "工作通知"
    },
    {
        "pagePath": "pages/tabBar/response/response",
        "iconPath": "/static/mine1.png",
        "selectedIconPath": "/static/mine1-selected.png",
        "text": "我的叫应"
    },
    {
        "pagePath": "pages/tabBar/current/current",
        "iconPath": "/static/send.png",
        "selectedIconPath": "/static/send_selected.png",
        "text": "我发布的"
    },
    {
        "pagePath": "pages/tabBar/information/information",
        "iconPath": "/static/send.png",
        "selectedIconPath": "/static/send_selected.png",
        "text": "信息发布"
    }
]
pages/tabBar/wearhouse/questions.vue
文件已删除
pages/tabBar/wearhouse/wearhouse.vue
文件已删除
static/bg.jpeg
Binary files differ
static/check.png
static/companyLogo.png
static/defaultCover.jpg
Binary files differ
static/delete.png
static/examine.png
Binary files differ
static/info.png
Binary files differ
static/loginTop1.png

static/mine1-selected.png
Binary files differ
static/mine1.png
Binary files differ
static/my-bg.jpg
static/my-bg.png
Binary files differ
static/pic.png
Binary files differ
static/return.png
static/sell.png
static/send.png
Binary files differ
static/send_selected.png
Binary files differ
static/take.png
static/wearhouse.png
Binary files differ
static/wearhouse_sel.png
Binary files differ