1
schangxiang@126.com
2024-09-04 c0885ae4ad1d8aba1ea04696fd04af9b221d2197
1
已添加3个文件
已修改1个文件
452 ■■■■■ 文件已修改
yiqi_pda/pages/home/index.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yiqi_pda/pages/outBoundWorkPieceInfoCount/index.vue 313 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yiqi_pda/pages/outBoundWorkPieceInfoCount/modules/barContent.vue 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yiqi_pda/pages/outBoundWorkPieceInfoCount/modules/barStatus.vue 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yiqi_pda/pages/home/index.vue
@@ -59,8 +59,9 @@
                        {name:'工件质量信息批量修改',icon:'icon-worker',pathName:'unbindAll',color:'#1e90ff'},
                        {name:'工件信息追溯',icon:'icon-notice',pathName:'retrospect',color:'#1e90ff'},
                        {name:'工件出库执行',icon:'icon-notice',pathName:'outBound',color:'#1e90ff'},
                        {name:'工件下线(新)',icon:'icon-notice',pathName:'unLine',color:'#1e90ff'},
                        {name:'工件出库(新)',icon:'icon-notice',pathName:'outBoundNew',color:'#1e90ff'}
                        // {name:'工件下线(新)',icon:'icon-notice',pathName:'unLine',color:'#1e90ff'},
                        // {name:'工件出库(新)',icon:'icon-notice',pathName:'outBoundNew',color:'#1e90ff'},
                        {name:'工件出库统计',icon:'icon-notice',pathName:'outBoundWorkPieceInfoCount',color:'#1e90ff'}
                    ]
                },
                {
yiqi_pda/pages/outBoundWorkPieceInfoCount/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,313 @@
<template>
    <default-header-page-layout ref="page" title="工件出库统计" >
        <view class="page-frame with-action-user-row" :style="{height:pageBodyHeight+'px'}" v-if="pageBodyHeight">
            <action-user-row />
            <view class="with-action-user-row-page-content">
            <!--     <scan-input-form-item
                    class="forma-item"
                    label="工件ID"
                    v-model="barId"
                    :msg="msg"
                    :msg-type="msgType"
                    @search="onSearchContainter"
                    @clear="onClearContainter"
                /> -->
                <u-form :model="form"  ref="uForm" label-width="65" labelAlign="right">
                <u-form-item required label="出库日期:" prop="planTime">
                                    <u-input :readonly="true" placeholder="请选择出库日期" v-model="form.planTime"
                                        @click.native="timeShow = true"></u-input>
                                </u-form-item>
                                    <!-- æ—¶é—´é€‰æ‹©å™¨ -->
                                            <u-datetime-picker closeOnClickOverlay :show="timeShow" @confirm="timeConfirm" :mode="mode"
                                                v-model="value1"  @close="timeShow=false" @cancel="timeShow=false"></u-datetime-picker>
                </u-form>
                <view class="btn-view">
                    <view class="search-btn" @tap.stop="onSearchContainter">搜索</view>
                </view>
                <!-- è¯¦æƒ… -->
                <view>
                    <!-- åŸºç¡€ä¿¡æ¯ -->
                    <bar-content v-for="item in list" :title="'出库人:' + item.workPieceOutboundUserName" :content="item" :propArr="detailArr" :key="item.id"></bar-content>
                </view>
            </view>
        </view>
        <!-- <template v-slot:footer>
            <view class="bottom-btns-row">
                <view class="btn-frame left-btn-frame"><u-button text="撤销"  @click="onBind"></u-button></view>
                <view class="btn-frame right-btn-frame"><u-button type="primary" text="确认修改"  @click="comfirmUpdate"></u-button></view>
            </view>
        </template> -->
    </default-header-page-layout>
</template>
<script>
import DefaultHeaderPageLayout from '@/components/DefaultHeaderPageLayout.vue'
import ActionUserRow from '@/components/ActionUserRow.vue'
import ScanInputFormItem from '@/components/ScanInputFormItem.vue'
import barContent from './modules/barContent.vue'
import barStatus from './modules/barStatus.vue'
import { getBarRetrospectInfo } from '@/api/retrospect/index.js'
import {
        getOutBoundWorkPieceInfoCountList
    } from '@/api/outBound/index.js'
import { parseDic, $alert, $successInfo } from '@/static/js/utils/index.js'
import moment from 'moment'
export default {
    name:'baseInPage',
    components:{DefaultHeaderPageLayout,ActionUserRow,ScanInputFormItem,barContent,barStatus},
    data(){
        return {
            // è®¡åˆ’æ—¶é—´
            value1: Number(new Date()),
            mode: '',
            timeShow: false,
            form: {
                                planType: '',
                                planTypeName: '',
                                planTime: '',
                                teamType: '',
                                planProductionNum: null,
                                remarks: ''
                            },
            pageBodyHeight: 0,
            initInterVal: null,
            msg: '',
            msgType: 'error',
            barId: '',
            list: [],
            detailArr: []
        }
    },
    onLoad() {
        // this.barDetail = {special: "SAE1041(0.80%~1.10%Mn)",barType: "高碳钢",barSpec: "70号",material: "229-255HBS",status: 1};
        // this.statusArr = [{code: 1,title: '不合格'},{code: 2,title: '合格'},{code: 3,title: '疑似'}]
        this.detailArr = [{code: "count",title: '出库数量'}]
        var date=new Date();
        this.form.planTime = moment(date).format('YYYY-MM-DD')
        this.onSearchContainter();
    },
    methods:{
        // æ—¶é—´ç¡®è®¤
                    timeConfirm({
                        value,
                        mode
                    }) {
                        if (!value) {
                            return this.timeShow = false
                        }
                        if (mode == 'date') {
                            this.form.planTime = moment(value).format('YYYY-MM-DD')
                        } else {
                            this.form.planTime = moment(value).format('YYYY-MM')
                        }
                        this.timeShow = false
                    },
        onSearchContainter(barId) {
            if(this.form.planTime == '') {
                return uni.showModal({
                    title:'出库日期不能为空',
                    showCancel: false
                })
            }
            //debugger
            const param = {Date: this.form.planTime}
            getOutBoundWorkPieceInfoCountList(param).then(res => {
                this.list = res.data
            })
        },
        onClearContainter() {
            this.barId = ''
            this.list = []
        },
        /* é¡µé¢åˆå§‹åŒ–获取页面body高度的定时器 */
        startInitInterval(callback){
            this.initInterVal = setInterval(()=>{
                if (this.pageBodyHeight) {
                    this.clearInitInterval()
                    callback && callback()
                } else {
                    this.pageBodyHeight = this.$refs.page.getBodyHeight()
                }
            },200)
        },
        /* æ¸…除定时器 */
        clearInitInterval(){
            try{
                clearInterval(this.initInterVal)
                this.initInterVal = null
            }catch(e){
                //TODO handle the exception
            }
        },
        comfirmUpdate() {
        }
    },
    onReady(){
        this.startInitInterval(()=>{
            /* é¡µé¢åˆå§‹åŒ–后需要执行的代码在这边调用 */
        })
    },
    onUnload(){
        this.clearInitInterval()
    }
}
</script>
<style scoped lang="scss">
    .btn-view {
        flex-shrink: 0;
    }
    .btn-view {
        width: 570rpx;
        height: 10%;
        padding: 20rpx;
        padding-left: 0rpx;
        box-sizing: border-box;
        .search-btn {
            height: 100%;
            width: 100%;
            border-radius: 8rpx;
            background: linear-gradient(157.342820970935deg, rgba(194, 128, 255, 1) -20%, rgba(194, 128, 255, 1) -19%, rgba(132, 0, 255, 1) 119%);
            display: flex;
            align-items: center;
            justify-content: center;
            color: $uni-bg-color;
            font-size: 26rpx;
        }
    }
    .p-form-label {
        font-size: 32rpx;
        color: $u-tips-color;
        padding-bottom: 12rpx;
        padding-left: 20rpx;
    }
    .input-row {
        width: 100%;
        height: 90rpx;
        overflow: hidden;
        background-color: $uni-bg-color;
        display: flex;
        align-items: center;
        position: relative;
        .scan-view,
        .scan-view {
            display: flex;
            align-items: center;
            justify-content: center;
            padding-right: 10rpx;
        }
        .input-view {
            flex-grow: 1;
            padding-left: 20rpx;
        }
    }
    .msg-row {
        padding: 6rpx 20rpx 0 20rpx;
        line-height: 1.3;
        font-size: 24rpx;
        color: $u-error;
        &.info-type {
            color: $color-blue;
        }
    }
.bottom-btns-row{
    display: flex;
    padding: 10rpx 0;
    background-color: #fff;
    .btn-frame{
        box-sizing: border-box;
    }
    .left-btn-frame{
        width: 30%;
        padding-left: 20rpx;
        padding-right: 8rpx;
    }
    .right-btn-frame{
        flex: 1;
        padding-right: 20rpx;
        padding-left: 8rpx;
    }
    .u-button {
        border: 2px solid #F08202;
    }
}
.forma-item{
    margin-bottom: 24rpx;
}
.material-item-group{
    background-color: $uni-bg-color;
    padding-top: 10rpx;
    .material-list-item{
        border-bottom: 2rpx solid $uni-border-color;
        padding-bottom: 10rpx;
        padding-left: 60rpx;
        margin-bottom: 10rpx;
        position: relative;
        &:last-child{
            border-bottom: 0;
        }
        .item-row{
            display: flex;
            &>.label{
                flex-shrink: 0;
                color: $u-tips-color;
                width: 144rpx;
            }
            &>.content{
                flex-grow: 1;
                color: $u-content-color;
                uni-input{
                    font: inherit;
                    color: $u-primary;
                    text-decoration: underline;
                }
            }
        }
        .badge-box{
            position: absolute;
            top:8rpx;
            left: 8rpx;
            z-index: 1;
        }
        .close-btn{
            $closeBtnSize:70rpx;
            width: $closeBtnSize;
            height: $closeBtnSize;
            z-index: 1;
            position: absolute;
            top:0rpx;
            right: 8rpx;
            background-color: $u-error;
            opacity: 0.6;
            border-radius: 25rpx;
            .icon-layer{
                position: absolute;
                width: 100%;
                height: 100%;
                display: flex;
                align-items: center;
                justify-content: center;
                z-index: 2;
            }
        }
    }
}
</style>
yiqi_pda/pages/outBoundWorkPieceInfoCount/modules/barContent.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
<template>
    <view class="content">
        <!-- é¡¶éƒ¨æ ‡é¢˜ -->
        <view class="title">{{title}}</view>
        <view class="detail">
            <view v-for="item in propArr" :key="item.code" class="item">
                <view class="item_title">{{item.title}}</view>
                <view  class="item_content">{{content[item.code]}}</view>
            </view>
        </view>
    </view>
</template>
<script>
    export default {
        props: {
            title: {type:String,required: true},
            content: {type: Object,required: true},
            propArr: {type: Array,required: true}
        },
        data() {
            return {
            }
        },
        methods: {
        }
    }
</script>
<style scoped lang="scss">
    .content {
        width: 96%;
        margin: 18rpx auto;
        .title {
            border-left: 6rpx solid #F18202;
            padding-left: 10rpx;
            box-sizing: border-box;
            font-size: 36rpx;
            margin-bottom: 10rpx;
        }
        .detail {
            box-sizing: border-box;
            .item {
                width: 100%;
                background: #fff;
                border-radius: 4rpx;
                display: flex;
                justify-content: center;
                align-items: center;
                padding: 15rpx;
                font-size: 32rpx;
                box-sizing: border-box;
            }
            .item_title {
                width: 30%;
            }
            .item_content {
                flex: 1;
                text-align: right;
                color: $color-common;
            }
        }
    }
</style>
yiqi_pda/pages/outBoundWorkPieceInfoCount/modules/barStatus.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
<template>
    <view class="content">
        <!-- é¡¶éƒ¨æ ‡é¢˜ -->
        <view class="title">{{title}}</view>
        <view class="detail">
            <view v-for="(item,index) in typeArr" :key="item.code" class="item" :class="activeIndex == index? 'active' : ''" @click="activeIndex = index">
                {{item.title}}
            </view>
        </view>
    </view>
</template>
<script>
import props from '../../../uni_modules/uview-ui/libs/config/props'
    export default {
        props: {
            title: {type: String,required: true},
            typeArr: {type: Array,required: true},
            status: {type: Number,required: true}
        },
        data() {
            return {
                activeIndex: 0,
            }
        },
        watch: {
            activeIndex(val) {
                this.$emit("update:status", this.typeArr[val].code)
            }
        }
    }
</script>
<style scoped lang="scss">
    .content {
        width: 96%;
        margin: 18rpx auto;
        .title {
            border-left: 6rpx solid #F18202;
            padding-left: 10rpx;
            box-sizing: border-box;
            font-size: 36rpx;
            margin-bottom: 10rpx;
        }
        .detail {
            box-sizing: border-box;
            width: 100%;
            display: flex;
            justify-content: space-around;
            box-sizing: border-box;
            .item {
                width: 30%;
                text-align: center;
                height: 80rpx;
                line-height: 80rpx;
                font-size: 40rpx;
                color: #000;
                background: #fff;
                border-radius: 10rpx;
            }
            .active {
                color: #fff;
                background: #F18202;
            }
        }
    }
</style>