<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">{{ item.type == 0 ? '盘点中' : '进行中' }}</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 v-if="queryStatus == 0" 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 && item.status == 1) {
|
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 if(item.objType == 2) {
|
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;
|
background-color: #fff;
|
}
|
|
.tabs {
|
display: flex;
|
width: 750rpx;
|
margin: 0rpx 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: 16rpx;
|
}
|
}
|
|
.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>
|