¶Ô±ÈÐÂÎļþ |
| | |
| | | <template>
|
| | | <view class="main_app">
|
| | | <view class="tabs">
|
| | | <view class="tab" :class="{active: queryStatus == 0}" @click="tabsClick(0)">
|
| | | <text>å¾
å</text>
|
| | | <text class="border"></text>
|
| | | </view>
|
| | | <view class="tab" :class="{active: queryStatus == 1}" @click="tabsClick(1)">
|
| | | <text>å·²å</text>
|
| | | <text class="border"></text>
|
| | | </view>
|
| | | </view>
|
| | | <scroll-view scroll-y="true" class="scroll_Y" @scrolltolower="scrolltolower">
|
| | | <view class="list">
|
| | | <view class="item" @click="itemClick(item)" v-for="item in list">
|
| | | <view class="img">
|
| | | <image v-if="item.type == 0 && item.status == 0" src="@/static/side/ic_pandian@2x.png"></image>
|
| | | <image v-if="item.type == 1 && item.status == 0" src="@/static/side/xunjianed.png"></image>
|
| | | <image v-if="item.type == 2 && item.status == 0" src="@/static/side/workordered.png"></image> |
| | | <image v-if="item.type == 0 && item.status == 1" src="@/static/side/ic_pandian_grey@2x.png"></image> |
| | | <image v-if="item.type == 1 && item.status == 1" src="@/static/side/xunjian.png"></image> |
| | | <image v-if="item.type == 2 && item.status == 1" src="@/static/side/workorder.png"></image>
|
| | | </view>
|
| | | <view class="content">
|
| | | <view class="title" v-if="item.obj">
|
| | | <view>{{item.obj.key1}}</view>
|
| | | <view v-if="item.status == 0 && item.type == 2" class="status">å¾
å¤ç</view>
|
| | | <view v-if="item.status == 0 && item.param3 == 0 && (item.type == 0 || item.type == 1)" class="status">æªå¼å§
|
| | | </view>
|
| | | <view v-if="item.status == 0 && item.param3 == 1 && (item.type == 0 || item.type == 1)"
|
| | | class="status green">è¿è¡ä¸</view>
|
| | | <view v-if="item.status == 1 && item.type == 2" class="status gray">å·²å¤ç</view>
|
| | | <view v-if="item.status == 1 && (item.type == 0 || item.type == 1)" class="status gray">已宿</view>
|
| | | </view>
|
| | | <template v-if="item.obj && item.type == 1">
|
| | | <view class="text">任塿¥æï¼{{item.obj.key2}}</view>
|
| | | <view class="text">æ§è¡æ¶é´ï¼{{item.obj.key3}}</view>
|
| | | <view class="text">
|
| | | <view class="">å·¡æ£è´è´£äººï¼{{item.obj.key4}}</view>
|
| | | <view class="btn" @click.stop="openSc(item)">
|
| | | <image src="@/static/side/ic_saoma@2x.png" mode=""></image>
|
| | | <view v-if="item.status == 0" class="">æ«ç å·¡æ£</view>
|
| | | </view>
|
| | | </view>
|
| | | </template>
|
| | | <template v-if="item.obj && item.type == 0">
|
| | | <view class="content">
|
| | | <view class="text">çç¹æ¥æï¼{{item.obj.key2}}</view>
|
| | | <view class="text">çç¹ä»åºï¼{{item.obj.key3}}</view>
|
| | | <view class="text">
|
| | | <view class="">çç¹åï¼{{item.obj.key4}}</view>
|
| | | <view v-if="item.status == 0 && item.param3 == 0" class="btn" @click.stop="startHandle(item)">å¼å§çç¹
|
| | | </view>
|
| | | <view v-if="item.status == 0 && item.param3 == 1" class="btn" @click.stop="startHandle(item)">ç»§ç»çç¹
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | </template>
|
| | | <template v-if="item.obj && item.type == 2">
|
| | | <view class="content">
|
| | | <view class="text">䏿¥æ¶é´ï¼{{item.obj.key2}}</view>
|
| | | <view class="text">ä½ç½®ç±»åï¼{{item.obj.key3}}</view>
|
| | | <view class="text">å·¥ååç±»ï¼{{item.obj.key4}}</view>
|
| | | </view>
|
| | | </template>
|
| | |
|
| | | </view>
|
| | |
|
| | |
|
| | | </view>
|
| | | </view>
|
| | | <view class="empty" v-if="list.length == 0">
|
| | | <image src="@/static/empty.png" mode=""></image>
|
| | | <view class="">ææ æ°æ®</view>
|
| | | </view>
|
| | | </scroll-view>
|
| | | <!-- -->
|
| | | <view class="reader-box" @click="stopScan" v-if="isScaning">
|
| | | <view class="reader" id="reader"></view>
|
| | | </view>
|
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script>
|
| | | import {
|
| | | myNoticesH5,
|
| | | ywStocktakingBegin,
|
| | | getPointRecordByCode
|
| | | } from '@/api'
|
| | | import {
|
| | | Html5Qrcode
|
| | | } from 'html5-qrcode';
|
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | list: [],
|
| | | total: 0,
|
| | | page: 1,
|
| | | queryStatus: 0,
|
| | |
|
| | | html5Qrcode: null,
|
| | | isScaning: false,
|
| | | };
|
| | | },
|
| | | onShow() {
|
| | | this.page = 1
|
| | | this.list = []
|
| | | this.getList()
|
| | | },
|
| | | methods: {
|
| | | tabsClick(val) {
|
| | | this.list = []
|
| | | this.page = 1
|
| | | this.queryStatus = val
|
| | | this.getList()
|
| | | },
|
| | | itemClick(item) {
|
| | | if (item.objType == 0) {
|
| | | return
|
| | | uni.navigateTo({
|
| | | url: `/pages/inventory/detail?id=${item.objId}`
|
| | | })
|
| | | } else if (item.objType == 1) {
|
| | | // return
|
| | | uni.navigateTo({
|
| | | url: `/pages/polling/detail?id=${item.objId}`
|
| | | })
|
| | | } else {
|
| | | uni.navigateTo({
|
| | | url: `/pages/workOrder/detail?id=${item.objId}`
|
| | | })
|
| | | }
|
| | | },
|
| | | startHandle(item) {
|
| | | if (item.param3 == 0) {
|
| | | uni.showModal({
|
| | | content: 'çç¹æé´ä¸å¯è¿è¡åºå
¥åºæä½',
|
| | | success: (res) => {
|
| | | if (res.confirm) {
|
| | | ywStocktakingBegin(item.objId).then(() => {
|
| | | uni.navigateTo({
|
| | | url: '/pages/inventory/detail?id=' + item.objId
|
| | | })
|
| | | })
|
| | |
|
| | | }
|
| | | }
|
| | | })
|
| | | }else{ |
| | | uni.navigateTo({ |
| | | url: '/pages/inventory/detail?id=' + item.objId |
| | | }) |
| | | }
|
| | | },
|
| | | getList() {
|
| | | const {
|
| | | page,
|
| | | total,
|
| | | list,
|
| | | queryStatus
|
| | | } = this
|
| | | myNoticesH5({
|
| | | page,
|
| | | capacity: 20,
|
| | | model: {
|
| | | status: queryStatus
|
| | | }
|
| | | }).then(res => {
|
| | | this.list = [...this.list, ...res.data.records]
|
| | | this.list.forEach(item => {
|
| | | item.obj = JSON.parse(item.param2)
|
| | | })
|
| | | console.log(this.list);
|
| | | this.total = res.data.total
|
| | | })
|
| | | },
|
| | | scrolltolower() {
|
| | | const {
|
| | | total,
|
| | | list
|
| | | } = this
|
| | | if (list.length < total) {
|
| | | this.page = this.page + 1
|
| | | this.getList()
|
| | | } else {
|
| | | this.showToast('ææ æ´å¤æ°æ®')
|
| | | }
|
| | | },
|
| | | openSc(item) {
|
| | | this.isScaning = true;
|
| | | Html5Qrcode.getCameras().then((devices) => {
|
| | | if (devices && devices.length) {
|
| | | this.html5Qrcode = new Html5Qrcode('reader');
|
| | | this.html5Qrcode.start({
|
| | | facingMode: 'environment'
|
| | | }, {
|
| | | focusMode: 'continuous', //设置è¿ç»èç¦æ¨¡å¼
|
| | | fps: 5, //设置æ«ç è¯å«é度
|
| | | qrbox: 280 //设置äºç»´ç æ«ææ¡å¤§å°
|
| | | },
|
| | | (decodeText, decodeResult) => {
|
| | | if (decodeText) { //è¿édecodeTextå°±æ¯éè¿æ«æäºç»´ç å¾å°çå
容
|
| | | this.stopScan(); //å
³éæ«ç åè½
|
| | | const index = decodeText.indexOf('ywid')
|
| | | let pointCode = decodeText.slice(index + 5)
|
| | | getPointRecordByCode({
|
| | | taskId: item.objId,
|
| | | pointCode
|
| | | }).then(ress => {
|
| | | if (ress.data) {
|
| | | uni.navigateTo({
|
| | | url: '/pages/polling/point?id=' + ress.data.id
|
| | | })
|
| | | } else {
|
| | | this.showToast('æªå¹é
å°å·¡æ£ç¹,è¯·éæ°æ«æ')
|
| | | }
|
| | | })
|
| | | }
|
| | | },
|
| | | (err) => {
|
| | | // console.log(err); //é误信æ¯
|
| | | }
|
| | | );
|
| | | }
|
| | | });
|
| | | },
|
| | |
|
| | | stopScan() {
|
| | | console.log('忢æ«ç ')
|
| | | this.isScaning = false;
|
| | | if (this.html5Qrcode) {
|
| | | this.html5Qrcode.stop();
|
| | | }
|
| | | },
|
| | | }
|
| | | }
|
| | | </script>
|
| | |
|
| | | <style lang="scss">
|
| | | page {
|
| | | background-color: #f7f7f7;
|
| | |
|
| | | .main_app {
|
| | | padding: 0;
|
| | | height: 100vh;
|
| | | overflow: hidden;
|
| | | }
|
| | |
|
| | | .tabs {
|
| | | display: flex;
|
| | | width: 750rpx;
|
| | | margin: 12rpx 0rpx 0;
|
| | | border-bottom: 1rpx solid #E5E5E5;
|
| | | background-color: #fff;
|
| | |
|
| | | .tab {
|
| | | font-size: 30rpx;
|
| | | color: #666666;
|
| | | flex: 1;
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | align-items: center;
|
| | | justify-content: flex-end;
|
| | | height: 88rpx;
|
| | |
|
| | | .name {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | }
|
| | |
|
| | | .icon {
|
| | | width: 28rpx;
|
| | | height: 28rpx;
|
| | | margin-right: 10rpx;
|
| | | }
|
| | |
|
| | | .border {
|
| | | width: 54rpx;
|
| | | height: 6rpx;
|
| | | background-color: #fff;
|
| | | border-radius: 3rpx;
|
| | | margin-top: 24rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .active {
|
| | | font-weight: 600;
|
| | | font-size: 32rpx;
|
| | | color: #222222;
|
| | |
|
| | | .border {
|
| | | background-color: $primaryColor;
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | .scroll_Y {
|
| | | height: calc(100vh - 120rpx);
|
| | |
|
| | | .empty {
|
| | | padding-top: 260rpx;
|
| | |
|
| | | image {
|
| | | width: 360rpx;
|
| | | height: 360rpx;
|
| | | margin-bottom: 10rpx;
|
| | | }
|
| | |
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | justify-content: center;
|
| | | align-items: center;
|
| | | color: #999999;
|
| | | }
|
| | | }
|
| | |
|
| | | .list {
|
| | | // padding-top: 20rpx;
|
| | |
|
| | | .item {
|
| | | width: 100%;
|
| | | background: #FFFFFF;
|
| | | border-radius: 8rpx;
|
| | | display: flex;
|
| | | padding: 30rpx 24rpx;
|
| | | border-bottom: 1rpx solid #e5e5e5;
|
| | |
|
| | | .img {
|
| | | position: relative;
|
| | | margin-right: 20rpx;
|
| | | flex-shrink: 0;
|
| | | position: relative;
|
| | |
|
| | | image {
|
| | | width: 72rpx;
|
| | | height: 72rpx;
|
| | | }
|
| | |
|
| | | .dian {
|
| | | position: absolute;
|
| | | background-color: red;
|
| | | width: 18rpx;
|
| | | height: 18rpx;
|
| | | border-radius: 50%;
|
| | | top: -8rpx;
|
| | | right: -8rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .content {
|
| | | flex: 1;
|
| | |
|
| | | .title {
|
| | | font-weight: 500;
|
| | | font-size: 32rpx;
|
| | | color: #222222;
|
| | | margin-bottom: 6rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | |
|
| | | .status {
|
| | | color: $primaryColor;
|
| | | font-weight: 400;
|
| | | font-size: 28rpx;
|
| | | }
|
| | |
|
| | | .green {
|
| | | color: #0ADE79;
|
| | | }
|
| | |
|
| | | .gray {
|
| | | color: #999999;
|
| | | }
|
| | | }
|
| | |
|
| | | .text {
|
| | | font-size: 26rpx;
|
| | | color: #666666;
|
| | | height: 60rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | |
|
| | | .btn {
|
| | | background-color: $primaryColor;
|
| | | padding: 0 24rpx;
|
| | | height: 60rpx;
|
| | | border-radius: 30rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | color: #fff;
|
| | |
|
| | | image {
|
| | | width: 28rpx;
|
| | | height: 28rpx;
|
| | | margin-right: 6rpx;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .time {
|
| | | font-size: 26rpx;
|
| | | color: #999999;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .reader-box {
|
| | | position: fixed;
|
| | | top: 0;
|
| | | bottom: 0;
|
| | | left: 0;
|
| | | right: 0;
|
| | | background-color: rgba(0, 0, 0, 0.5);
|
| | | }
|
| | |
|
| | | .reader {
|
| | | width: 100%;
|
| | | // width: 540rpx;
|
| | | // height: 540rpx;
|
| | | position: absolute;
|
| | | top: 50%;
|
| | | left: 50%;
|
| | | transform: translate(-50%, -50%);
|
| | | }
|
| | | </style> |