| | |
| | | <view class="main_app">
|
| | | <view class="main_head">
|
| | | <view class="tabs">
|
| | | <view class="tab" :class="{active: activeTab == 0}" @click="tabsClick(0)">
|
| | | <text>未盘({{info.unFinishAmount || 0}})</text>
|
| | | <view class="tab" :class="{ active: activeTab == 0 }" @click="tabsClick(0)">
|
| | | <text>未盘({{ info.unFinishAmount || 0 }})</text>
|
| | | <text class="border"></text>
|
| | | </view>
|
| | | <view class="tab" :class="{active: activeTab == 1}" @click="tabsClick(1)">
|
| | | <text>已盘({{info.finishAmount || 0}})</text>
|
| | | <view class="tab" :class="{ active: activeTab == 1 }" @click="tabsClick(1)">
|
| | | <text>已盘({{ info.finishAmount || 0 }})</text>
|
| | | <text class="border"></text>
|
| | | </view>
|
| | | </view>
|
| | | <view class="head_wrap">
|
| | | <view class="search_wrap">
|
| | | <image class="mr12 search" src="@/static/home/ic_search@2x.png" mode="widthFix"></image>
|
| | | <input v-model="param.materialCode" @confirm="handleQuery" type="text" placeholder="搜索资产编码/资产名称"
|
| | | <input v-model="param.materialCode" @confirm="handleQuery()" type="text" placeholder="搜索物料编码/物料名称"
|
| | | placeholder-class="placeholder9" />
|
| | | </view>
|
| | | </view>
|
| | | <!-- -->
|
| | | <scroll-view scroll-y="true" class="scroll_Y" @scrolltolower="scrolltolower">
|
| | | <view class="list">
|
| | | <view class="item" v-for="item in list">
|
| | | <view class="line">
|
| | | <view class="title">{{item.materialName}}</view>
|
| | | <view class="item" v-for="item in list" @click="itemClick(item)">
|
| | | <view class="head">
|
| | | <view class="title">{{ item.materialName }}</view>
|
| | | <view class="status red" v-if="item.type == 1">盘亏</view>
|
| | | <view class="status primaryColor" v-if="item.type == 2">盘盈</view>
|
| | | </view>
|
| | | <view class="line">资产编码:{{item.materialCode}}</view>
|
| | | <view class="line">条码:{{item.materialQrcode}}</view>
|
| | | <view class="line">规格型号:{{item.materialAttr}}</view>
|
| | | <view class="line">
|
| | | <view class="">账面数量:{{item.stock}}{{item.materialUnitName}}</view>
|
| | | <view v-if="item.status == 0" @click="openEheck(item)" class="btn">执行盘点</view>
|
| | | <view class="line">物料编码:{{ item.materialCode }}</view>
|
| | | <view class="line">条码:{{ item.materialQrcode }}</view>
|
| | | <view class="line">规格型号:{{ item.materialAttr }}</view>
|
| | | <view class="line" v-if="item.status == 0">
|
| | | <view class="">账面数量:{{ item.stock }}{{ item.materialUnitName }}</view>
|
| | | <view v-if="info.status == 1" @click.stop="openEheck(item)" class="btn">执行盘点</view>
|
| | | </view>
|
| | | <view class="static" v-if="item.status == 1">
|
| | | <view class="ite">
|
| | | <view class="la">账面数量:</view>
|
| | | <view class="val">{{item.stock}}</view>
|
| | | <view class="val">{{ item.stock }}</view>
|
| | | </view>
|
| | | <view class="spi"></view>
|
| | | <view class="ite">
|
| | |
| | | <view class="val" :class="{
|
| | | primaryColor: item.type == 2,
|
| | | red: item.type == 1,
|
| | | }">{{item.actStock}}</view>
|
| | | }">{{ item.actStock }}</view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | </scroll-view>
|
| | | <view class="footer_btn">
|
| | | <view @click="openQrcode" v-if="activeTab== 0" class="sweep">
|
| | | <view @click="openQrcode" v-if="activeTab == 0 && info.status == 1" class="sweep">
|
| | | <image src="@/static/side/ic_saoma@2x.png" mode=""></image>
|
| | | <view class="">扫码盘点</view>
|
| | | </view>
|
| | | <view @click="showTip = true" v-if="activeTab== 1" class="sweep sub_result">
|
| | | <view @click="showTip = true" v-if="activeTab == 1 && info.status == 1" class="sweep sub_result">
|
| | | <view class="">提交盘点结果</view>
|
| | | </view>
|
| | | </view>
|
| | |
| | | <u-popup :show="showModal" :round="10" @close="showModal = false" closeOnClickOverlay>
|
| | | <view class="modal_wrap">
|
| | | <view class="modal_title">执行盘点</view>
|
| | | <view class="title">{{modalForm.materialName}}</view>
|
| | | <view class="item">资产编码:{{modalForm.materialCode}}</view>
|
| | | <view class="item">条码:{{modalForm.materialQrcode}}</view>
|
| | | <view class="item">品牌:{{modalForm.materialBrand}}</view>
|
| | | <view class="item">规格型号:{{modalForm.materialAttr}}</view>
|
| | | <view class="item">所在仓库:{{modalForm.warehouseName}}</view>
|
| | | <view class="title">{{ modalForm.materialName }}</view>
|
| | | <view class="item">物料编码:{{ modalForm.materialCode }}</view>
|
| | | <view class="item">条码:{{ modalForm.materialQrcode }}</view>
|
| | | <view class="item">品牌:{{ modalForm.materialBrand }}</view>
|
| | | <view class="item">规格型号:{{ modalForm.materialAttr }}</view>
|
| | | <view class="item">所在仓库:{{ modalForm.warehouseName }}</view>
|
| | | <view class="content">
|
| | | <view class="line">
|
| | | <view class="la">账面数量:</view>
|
| | | <view class="val">
|
| | | <view class="wrap">{{modalForm.stock}}</view>
|
| | | <view class="unit">{{modalForm.materialUnitName}}</view>
|
| | | <view class="wrap">{{ modalForm.stock }}</view>
|
| | | <view class="unit">{{ modalForm.materialUnitName }}</view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="line">
|
| | | <view class="la">盘点数量:</view>
|
| | | <view class="val">
|
| | | <view class="wrap">
|
| | | <image v-if="!modalForm.actStock" src="@/static/side/btn_jian_grey@2x.png" mode=""></image>
|
| | | <image v-else @click="changeAct(-1)" src="@/static/side/btn_jian@3x.png" mode=""></image>
|
| | | <input type="number" v-model="modalForm.actStock"></input>
|
| | | <image @click="changeAct(1)" src="@/static/side/btn_jia@3x.png" mode=""></image>
|
| | | <template v-if="!modalForm.handleType">
|
| | | <image v-if="!modalForm.actStock" src="@/static/side/btn_jian_grey@2x.png" mode=""></image>
|
| | | <image v-else @click="changeAct(-1)" src="@/static/side/btn_jian@3x.png" mode=""></image>
|
| | | </template>
|
| | | <input :disabled="Boolean(modalForm.handleType && modalForm.handleType == 'detail')" type="digit"
|
| | | v-model="modalForm.actStock"></input>
|
| | | <image v-if="!modalForm.handleType" @click="changeAct(1)" src="@/static/side/btn_jia@3x.png" mode="">
|
| | | </image>
|
| | | </view>
|
| | | <view class="unit">{{modalForm.materialUnitName}}</view>
|
| | | <view class="unit">{{ modalForm.materialUnitName }}</view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="remark">
|
| | | <view class="la">备注:</view>
|
| | | <textarea v-model="modalForm.remark" placeholder="请填写备注" :maxlength="-1" placeholder-class="placeholder9"
|
| | | cols="30" rows="10"></textarea>
|
| | | <textarea v-model="modalForm.remark"
|
| | | :disabled="Boolean(modalForm.handleType && modalForm.handleType == 'detail')" placeholder="请填写备注"
|
| | | :maxlength="-1" placeholder-class="placeholder9" cols="30" rows="10"></textarea>
|
| | | </view>
|
| | | <view class="btns">
|
| | | <view v-if="!modalForm.handleType" class="btns">
|
| | | <view class="btn" @click="showModal = false">取消</view>
|
| | | <view class="btn sub" @click="onSubmit">提交</view>
|
| | | </view>
|
| | |
| | | import {
|
| | | ywStocktakingDetail,
|
| | | getYwStocktakingRecord,
|
| | | takingDataOpen, |
| | | takingDataOpen,
|
| | | ywStocktaFinishById
|
| | | } from '@/api'
|
| | | import {
|
| | | Html5Qrcode
|
| | | } from 'html5-qrcode';
|
| | | } from 'html5-qrcode'
|
| | | export default {
|
| | | data() {
|
| | | return {
|
| | |
| | | html5Qrcode: null,
|
| | | isScaning: false,
|
| | |
|
| | | };
|
| | | }
|
| | | },
|
| | | onLoad(op) {
|
| | | this.id = op.id
|
| | |
| | | this.getList()
|
| | | },
|
| | | methods: {
|
| | | checkSub() {
|
| | | const {
|
| | | modalForm
|
| | | } = this
|
| | | // let str = modalForm.unFinishAmount > 0 ? '还有三项物料'
|
| | | itemClick(item) {
|
| | | if (item.status == 1) {
|
| | | this.showItem(item)
|
| | | }
|
| | | },
|
| | | showItem(item) {
|
| | | this.showModal = true
|
| | | this.modalForm = {
|
| | | ...item,
|
| | | handleType: this.info.status != 1 ? 'detail' : ''
|
| | | }
|
| | | console.log('modalForm', this.modalForm);
|
| | | },
|
| | | getDetail() {
|
| | | const {
|
| | |
| | | stocktakingId: id,
|
| | | ...param
|
| | | }
|
| | | }).then(res => { |
| | | this.list = [...this.list, ...res.data.records] |
| | | this.total = res.data.total |
| | | if(this.param.materialQrcode && this.list.length == 1){ |
| | | this.openEheck(this.list[0]) |
| | | this.$set(this.param, 'materialQrcode', null) |
| | | } |
| | | |
| | | |
| | | }).then(res => {
|
| | | this.list = [...this.list, ...res.data.records || []]
|
| | | this.total = res.data.total
|
| | | if (this.param.materialQrcode && this.total == 1) {
|
| | | this.openEheck(this.list[0])
|
| | | this.param = {}
|
| | | } else if (this.param.materialQrcode && this.total == 0) {
|
| | | this.param = {}
|
| | | uni.showModal({
|
| | | content: '未匹配到物料,请重新扫码', |
| | | showCancel: false,
|
| | | success: (res) => {
|
| | | if (res.confirm) {
|
| | | this.getList()
|
| | | }
|
| | | }
|
| | | });
|
| | | }
|
| | |
|
| | | })
|
| | | }, |
| | | scrolltolower() { |
| | | const { |
| | | total, |
| | | list |
| | | } = this |
| | | if (list.length < total) { |
| | | this.page = this.page + 1 |
| | | this.getList() |
| | | } else { |
| | | this.showToast('暂无更多数据') |
| | | } |
| | | },
|
| | | scrolltolower() {
|
| | | const {
|
| | | total,
|
| | | list
|
| | | } = this
|
| | | if (list.length < total) {
|
| | | this.page = this.page + 1
|
| | | this.getList()
|
| | | } else {
|
| | | this.showToast('暂无更多数据')
|
| | | }
|
| | | },
|
| | | openEheck(item) {
|
| | | this.modalForm = {
|
| | |
| | | this.list = []
|
| | | this.getList()
|
| | | },
|
| | | tipSub() { |
| | | const { info } = this |
| | | ywStocktaFinishById(info.id).then(res => { |
| | | this.showTip = false |
| | | uni.navigateBack() |
| | | tipSub() {
|
| | | const {
|
| | | info
|
| | | } = this
|
| | | ywStocktaFinishById(info.id).then(res => {
|
| | | this.showTip = false
|
| | | uni.navigateBack()
|
| | | })
|
| | | |
| | |
|
| | | },
|
| | | openQrcode() {
|
| | | this.isScaning = true;
|
| | | this.isScaning = true
|
| | | Html5Qrcode.getCameras().then((devices) => {
|
| | | if (devices && devices.length) {
|
| | | this.html5Qrcode = new Html5Qrcode('reader');
|
| | | this.html5Qrcode = new Html5Qrcode('reader')
|
| | | this.html5Qrcode.start({
|
| | | facingMode: 'environment'
|
| | | }, {
|
| | |
| | | qrbox: 280 //设置二维码扫描框大小
|
| | | },
|
| | | (decodeText, decodeResult) => {
|
| | | if (decodeText) { //这里decodeText就是通过扫描二维码得到的内容 |
| | | this.stopScan() |
| | | if (decodeText) { //这里decodeText就是通过扫描二维码得到的内容
|
| | | this.stopScan()
|
| | | this.$set(this.param, 'materialQrcode', decodeText)
|
| | | this.handleQuery()
|
| | | }
|
| | |
| | | (err) => {
|
| | | // console.log(err); //错误信息
|
| | | }
|
| | | );
|
| | | )
|
| | | }
|
| | | });
|
| | | })
|
| | | },
|
| | |
|
| | | stopScan() {
|
| | | console.log('停止扫码')
|
| | | this.isScaning = false;
|
| | | this.isScaning = false
|
| | | if (this.html5Qrcode) {
|
| | | this.html5Qrcode.stop();
|
| | | this.html5Qrcode.stop()
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | font-size: 34rpx;
|
| | | color: #222222;
|
| | | margin-bottom: 10rpx;
|
| | | flex: 1;
|
| | | }
|
| | |
|
| | | .head {
|
| | | display: flex;
|
| | | // align-items: center;
|
| | | justify-content: space-between;
|
| | | color: #666666;
|
| | |
|
| | | .status {
|
| | | width: 76rpx;
|
| | | text-align: right;
|
| | | padding-top: 3rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .line {
|