小小儁爺
2026-01-14 e13624d53ce19ed506c81d835da4c76ff8966a06
1.递交
已添加4个文件
已修改4个文件
1043 ■■■■ 文件已修改
components/mold-list/mold-list.vue 316 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/login/hjpz.vue 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/login/hjpz2.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/login/index.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/mjgl/mjby.vue 261 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/mjgl/mjby2.vue 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/mjgl/mjby_back.vue 292 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/mjgl/mjdj.vue 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
components/mold-list/mold-list.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,316 @@
<template>
    <view>
        <page-nav :title="pageTitle"></page-nav>
        <!-- <view v-if="purchorderArrAll.length>0"> -->
        <u-input prefixIcon="search" prefixIconStyle="font-size: 22px;color: #909399" placeholder="扫描模具编码/输入模具信息"
            clearable border="surround" @clear='inputBoxValueClear' v-model="inputBoxValue"
            @change="changeInputBoxValue">
            <template slot="suffix">
                <u-icon name="scan" color="#909399" size="24" @click="topScanClick"></u-icon>
            </template>
        </u-input>
        <u-alert :title="'模具数(共'+title+'个)'" type="primary"></u-alert>
        <scroll-view class="container" scroll-y="true" @scroll="scroll">
            <!-- è™šæ‹Ÿåˆ—表总高度 -->
            <view :style="{'height': `${totalHeight}rpx`, 'position': 'relative'}">
                <view :style="{'top': `${top}px`}" style="width: 100%;position:absolute">
                    <!--在这里自定义你数据的展示结构和样式,itemHeight为这里的总高度-->
                    <view class="radioGroupClass">
                        <view v-for="(item,index) in purchorderArr" :key="item.code" class="item">
                            <view @click="highlightClick(item.code)" :style="{color:selectedCode===item.code?'#fff':'#000',
                                        background:selectedCode===item.code?'#3c9cff':'#fff'
                                }">
                                <view style="display: flex;">
                                    <view style="text-align: center;margin-right: 20rpx;">{{item.code}}
                                    </view>
                                    <view style="">{{item.name}}</view>
                                    <view style="margin-left: 20rpx;">{{item.spec}}</view>
                                </view>
                            </view>
                        </view>
                    </view>
                </view>
            </view>
        </scroll-view>
        <view class="footer" style="min-height:62rpx;">
            <u-button type="primary" size='large' :hairline="true" @click="navigateTo" text="下一步"></u-button>
        </view>
        <!-- </view> -->
        <!--     <view v-if="purchorderArrAll.length===0">
            <div class="sacnBody">
                <div class="boxImg"></div>
                <div class="scanText">暂无模具信息</div>
            </div>
        </view> -->
    </view>
</template>
<script>
    import {
        ScanMouldQrCodeMessageData,
        ScanMouldQrCodeMessageSubData
    } from '../../config/api.js';
    export default {
        props: {
            pageTitle: {
                type: String,
                default: ''
            },
            navigateToUrl: {
                type: String,
                default: ''
            },
        },
        onPullDownRefresh() {
            setTimeout(() => {
                this.init(() => {
                    uni.stopPullDownRefresh();
                })
            }, 1000);
        },
        // ç›‘听下拉刷新动作(UniApp åŽŸç”Ÿç”Ÿå‘½å‘¨æœŸï¼‰
        onPullDownRefresh() {
            let that = this
            uni.startPullDownRefresh({
                success() {
                    that.getScanMouldQrCodeMessageData()
                    uni.showToast({
                        title: "下拉刷新",
                        icon: 'none'
                    })
                },
                complete() {
                    uni.stopPullDownRefresh()
                }
            })
        },
        data() {
            return {
                inputBoxValue: '', //输入框值
                title: 0,
                purchorderArr: [],
                purchorderArrAll: [],
                allList: [], //原始数据列表
                //虚拟列表
                showList: [], //可视区域显示的数据
                itemHeight: 100, //每条数据所占高度
                showNum: 0, //可视区域显示的最大条数
                top: 0, //偏移量
                scrollTop: 0, //卷起的高度
                startIndex: 0, //可视区域第一条数据的索引
                endIndex: 0, //可视区域最后一条数据的索引+1,
                selectedCode: ''
            }
        },
        onShow() {
            //第一次时调用一下,且uni.createSelectorQuery()需要在生命周期mounted之后使用
            // this.scroll()
        },
        computed: {
            totalHeight() {
                return this.allList.length * this.itemHeight * 2 //因为rpx和px的关系
            }
        },
        created() {
        },
        mounted() {
            this.init()
            this.getScanMouldQrCodeMessageData()
        },
        methods: {
            //虚拟列表
            getShowList() {
                //可视区域能出现的数据条数
                this.showNum = Math.ceil(this.contentHeight / this.itemHeight);
                // console.log('可视数量', this.showNum)
                //可视区域第一条数据的索引
                this.startIndex = Math.floor(this.scrollTop / this.itemHeight);
                // console.log('初始索引',this.startIndex)
                //可视区域最后一条数据的下一条数据
                this.endIndex = this.startIndex + this.showNum;
                //可视区数据,会比实际可视多渲染一条
                this.showList = this.allList.slice(this.startIndex, this.endIndex)
                // console.log(this.showList)
                //保证滑动时第一条数据完整展示
                let offsetY = this.scrollTop - (this.scrollTop % this.itemHeight);
                this.top = offsetY;
            },
            scroll() {
                // åˆ©ç”¨uniapp提供的接口获取可视区域的高度和滚动高度
                let query = uni.createSelectorQuery()
                let container = query.select('.container');
                container.fields({
                    // rect:true,   //是否返回节点布局位置信息{left,top,right,bottom}
                    size: true, //是否返回节点尺寸信息{width,height}
                    scrollOffset: true //是否返回节点滚动信息{scrollLeft,scrollTop}
                }, (res) => {
                    // console.log(res)
                    this.scrollTop = res.scrollTop
                    this.contentHeight = res.height
                    this.getShowList(); //因为所在函数是异步
                }).exec()
            },
            highlightClick(code) {
                this.selectedCode = code
            },
            init() {
                uni.stopPullDownRefresh();
            },
            // æ‰«ç å·¥ä½  çš„æ‰«ç æ¡†ç‚¹å‡»
            topScanClick() {
                // if (this.topContent.length > 0) {
                //     return uni.$u.toast('请先提交此维修申请!')
                // }
                let that = this;
                uni.scanCode({
                    onlyFromCamera: true,
                    // scanType: ['barCode', 'qrCode'],
                    scanType: ['qrCode'],
                    success: function(res) {
                        console.log('条码类型:' + res.scanType);
                        console.log('条码内容:' + res.result);
                        that.scanContent = res.result;
                        that.inputBoxValue = res.result;
                        //处理扫码事件
                        that.changeInputBoxValue(that.scanContent);
                    },
                    complete: function(res) {
                    },
                    fail: function(res) {
                        console.log('条码类型:' + res.scanType);
                        console.log('条码内容:' + res.result);
                    }
                });
            },
            changeInputBoxValue(val) {
                this.purchorderArr = this.purchorderArrAll.filter((p) => {
                    return p.code.indexOf(val) !== -1 || p.name.indexOf(val) !== -1 || p.spec.indexOf(val) !== -1
                })
                this.selectedCode = this.purchorderArr[0].code
                this.$forceUpdate()
            },
            inputBoxValueClear() {
                this.inputBoxValue = ''
            },
            navigateTo() {
                uni.navigateTo({
                    url: this.navigateToUrl + '?code=' + this.selectedCode
                });
            },
            async getScanMouldQrCodeMessageData() {
                const res = await ScanMouldQrCodeMessageData()
                this.purchorderArrAll = res.data
                this.purchorderArr = res.data
                this.title = res.data.length
                this.selectedCode = res.data[0].code
            }
        }
    }
</script>
<style lang="scss" scoped>
    @import url('@/style/global.css');
    .container {
        width: 100%;
        height: 70vh;
        /*原生一定得有这个overflow的hidden效果,此处用了scroll-view所以不需要*/
        /*overflow:auto;*/
    }
    .item {
        width: 100%;
        height: 90rpx;
        line-height: 90rpx;
        border: 1px solid #c8c8c8;
    }
    ::v-deep .uicon-arrow-left>span {
        display: block;
    }
    .u-input--square {
        margin: 20rpx 10rpx;
        border-radius: 40rpx;
        background-color: #fff;
        border: 1px solid #c8c8c8;
    }
    ::v-deep .u-alert__text--primary--light {
        margin-bottom: 0;
        font-size: 32rpx !important;
    }
    .radioGroupClass {
        display: flex;
        flex-direction: column;
        background-color: #fff;
        overflow-y: auto;
        max-height: 1100rpx;
        margin-top: 20rpx;
    }
    ::v-deep .u-radio-label--right {
        height: 90rpx;
        line-height: 90rpx;
        width: 92%;
        margin-left: 4%;
        // padding: 0 50rpx;
    }
</style>
pages/login/hjpz.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,121 @@
<template>
    <view>
        <page-nav title="环境配置"></page-nav>
        <div class="main">
            <u-radio-group v-model="radioValue" style="display: flex;flex-direction: column;">
                <div class="block" v-for='(item,index) in contentArr'>
                    <div class="title">{{item.title}}</div>
                    <div>
                        <u--text type="info" :text="item.url"></u--text>
                    </div>
                    <u-divider></u-divider>
                    <div class="opertion">
                        <view style="margin-right: 100rpx;width: 60%;">
                            <u-radio label="设为默认" :name="item.id" @change="radioChange" :key="item.id"></u-radio>
                        </view>
                        <view style="display: flex;width: 30%;">
                            <u--text type="info" @click="edit(item,index)" text="修改"></u--text>
                            <u--text type="info" @click="del(item,index)" text="删除"></u--text>
                        </view>
                    </div>
                </div>
            </u-radio-group>
            <u-button hairline type="primary" text="确定" @click="confirm"></u-button>
            <u-back-top icon="arrow-up" text="11"></u-back-top>
        </div>
    </view>
</template>
<script>
    import Vue from 'vue'
    export default {
        data() {
            return {
                radioValue: 2,
                contentArr: [{
                        id: 1,
                        title: '我是标题1',
                        url: 'http://121.196.36.24:8000',
                    },
                    {
                        id: 2,
                        title: '我是标题2',
                        url: 'http://121.196.36.24:9090',
                    },
                    {
                        id: 3,
                        title: '我是标题3',
                        url: 'http://121.196.36.24:8019',
                    },
                    {
                        id: 4,
                        title: '我是标题4',
                        url: 'http://121.196.36.24:8047',
                    }
                ]
            }
        },
        methods: {
            radioChange(val) {
                uni.$u.http.setConfig((config) => {
                    config.baseURL = this.contentArr.find(i => i.id === val).url + '/api'
                    return config
                })
            },
            del(item, index) {
                console.log(item)
                this.contentArr.splice(index, 1)
            },
            edit(item) {
            },
            // ç¡®å®š
            confirm() {
                uni.navigateBack()
            },
        }
    }
</script>
<style>
    ::v-deep .u-icon--right {
        display: none;
    }
    .main {
        width: 100vw;
        height: 80vh;
        background-color: #eee;
        display: flex;
        flex-direction: column;
        align-items: center;
    }
    .block {
        width: 94vw;
        height: 200rpx;
        background-color: #fff;
        border-radius: 10rpx;
        margin-top: 10rpx;
        padding: 10rpx;
    }
    .title {}
    .opertion {
        display: flex;
        width: 100%;
    }
</style>
pages/login/hjpz2.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
<template>
</template>
<script>
</script>
<style>
</style>
pages/login/index.vue
@@ -3,7 +3,7 @@
        <view class="body">
            <view class="headClass">新凯迪云制造</view>
            <view class="headClass">智能制造云平台</view>
            <view class="main">
                <view class="circle">
                    <view class="circleBg"></view>
@@ -32,6 +32,9 @@
                        :disabled="!(usercode.trim().length>0&&userpassword.trim().length>0)" text="立即登录"
                        :loading="isDisabledSubmitButton" loadingText="正在登录,请稍等..." class="loginClass"
                        @click="gotoIndex"></u-button>
                    <!--     <u--text :block='false' color='#0659ff' :size='14' @click="envConfigClick" class='envConfig'
                        text="环境配置"></u--text> -->
                </view>
                <u-modal :show="isShow" :showCancelButton="isShowCancelButton" :showConfirmButton='false' title=""
@@ -101,7 +104,7 @@
            this.getAppUpgrade()
        },
        mounted() {
            console.log(this.$baseUrl)
        },
        methods: {
            getAppUpgrade() {
@@ -180,6 +183,14 @@
            isShowCancel() {
                this.isShow = false
            },
            // çŽ¯å¢ƒé…ç½®ç‚¹å‡»
            envConfigClick() {
                uni.navigateTo({
                    url: './hjpz'
                });
            }
        }
@@ -265,6 +276,12 @@
        font-size: 16px !important;
        line-height: 20px !important;
    }
    .envConfig {
        position: absolute;
        right: 0rpx;
        bottom: -120rpx;
    }
</style>
<style>
    page {
pages/mjgl/mjby.vue
@@ -1,111 +1,25 @@
<template>
    <view>
        <page-nav title="模具保养"></page-nav>
        <!-- <view v-if="purchorderArrAll.length>0"> -->
        <u-input prefixIcon="search" prefixIconStyle="font-size: 22px;color: #909399" placeholder="扫描模具编码/输入模具信息"
            clearable border="surround" @clear='inputBoxValueClear' v-model="inputBoxValue"
            @change="changeInputBoxValue">
            <template slot="suffix">
                <u-icon name="scan" color="#909399" size="24" @click="topScanClick"></u-icon>
            </template>
        </u-input>
        <u-alert :title="'模具数(共'+title+'个)'" type="primary"></u-alert>
        <scroll-view class="container" scroll-y="true" @scroll="scroll">
            <!-- è™šæ‹Ÿåˆ—表总高度 -->
            <view :style="{'height': `${totalHeight}rpx`, 'position': 'relative'}">
                <!-- å¯è§†æ¸²æŸ“区 -->
                <view :style="{'top': `${top}px`}" style="width: 100%;position:absolute">
                    <!--在这里自定义你数据的展示结构和样式,itemHeight为这里的总高度-->
                    <view class="radioGroupClass">
                        <view v-for="(item,index) in purchorderArr" :key="item.code" class="item">
                            <view @click="highlightClick(item.code)" :style="{color:selectedCode===item.code?'#fff':'#000',
                                        background:selectedCode===item.code?'#3c9cff':'#fff'
                                }">
                                <view style="display: flex;">
                                    <view style="text-align: center;margin-right: 20rpx;">{{item.code}}
                                    </view>
                                    <view style="">{{item.name}}</view>
                                    <view style="margin-left: 20rpx;">{{item.spec}}</view>
                                </view>
                            </view>
                        </view>
                    </view>
                </view>
            </view>
        </scroll-view>
        <view class="footer" style="min-height:62rpx;">
            <u-button type="primary" size='large' :hairline="true" @click="navigateTo" text="下一步"></u-button>
        </view>
        <!-- </view> -->
        <!--     <view v-if="purchorderArrAll.length===0">
            <div class="sacnBody">
                <div class="boxImg"></div>
                <div class="scanText">暂无模具信息</div>
            </div>
        </view> -->
        <mold-list page-title="模具保养" navigate-to-url="./mjby2"></mold-list>
    </view>
</template>
<script>
    import {
        ScanMouldQrCodeMessageData,
        ScanMouldQrCodeMessageSubData
    } from '../../config/api.js';
    export default {
    import moldList from '@/components/mold-list/mold-list.vue'
        onPullDownRefresh() {
            setTimeout(() => {
                this.init(() => {
                    uni.stopPullDownRefresh();
                })
            }, 1000);
    export default {
        components: {
            moldList
        },
        data() {
            return {
                inputBoxValue: '', //输入框值
                title: 0,
                purchorderArr: [],
                purchorderArrAll: [],
                allList: [], //原始数据列表
                //虚拟列表
                showList: [], //可视区域显示的数据
                itemHeight: 100, //每条数据所占高度
                showNum: 0, //可视区域显示的最大条数
                top: 0, //偏移量
                scrollTop: 0, //卷起的高度
                startIndex: 0, //可视区域第一条数据的索引
                endIndex: 0, //可视区域最后一条数据的索引+1,
                selectedCode: ''
            }
        },
@@ -114,179 +28,20 @@
            //第一次时调用一下,且uni.createSelectorQuery()需要在生命周期mounted之后使用
            // this.scroll()
        },
        computed: {
            totalHeight() {
                return this.allList.length * this.itemHeight * 2 //因为rpx和px的关系
            }
        },
        created() {
        },
        mounted() {
            this.init()
            this.getScanMouldQrCodeMessageData()
        },
        methods: {
            //虚拟列表
            getShowList() {
                //可视区域能出现的数据条数
                this.showNum = Math.ceil(this.contentHeight / this.itemHeight);
                // console.log('可视数量', this.showNum)
                //可视区域第一条数据的索引
                this.startIndex = Math.floor(this.scrollTop / this.itemHeight);
                // console.log('初始索引',this.startIndex)
                //可视区域最后一条数据的下一条数据
                this.endIndex = this.startIndex + this.showNum;
                //可视区数据,会比实际可视多渲染一条
                this.showList = this.allList.slice(this.startIndex, this.endIndex)
                // console.log(this.showList)
                //保证滑动时第一条数据完整展示
                let offsetY = this.scrollTop - (this.scrollTop % this.itemHeight);
                this.top = offsetY;
            },
            scroll() {
                // åˆ©ç”¨uniapp提供的接口获取可视区域的高度和滚动高度
                let query = uni.createSelectorQuery()
                let container = query.select('.container');
                container.fields({
                    // rect:true,   //是否返回节点布局位置信息{left,top,right,bottom}
                    size: true, //是否返回节点尺寸信息{width,height}
                    scrollOffset: true //是否返回节点滚动信息{scrollLeft,scrollTop}
                }, (res) => {
                    // console.log(res)
                    this.scrollTop = res.scrollTop
                    this.contentHeight = res.height
                    this.getShowList(); //因为所在函数是异步
                }).exec()
            },
            highlightClick(code) {
                this.selectedCode = code
            },
            init() {
                uni.stopPullDownRefresh();
            },
            // æ‰«ç å·¥ä½  çš„æ‰«ç æ¡†ç‚¹å‡»
            topScanClick() {
                // if (this.topContent.length > 0) {
                //     return uni.$u.toast('请先提交此维修申请!')
                // }
                let that = this;
                uni.scanCode({
                    onlyFromCamera: true,
                    // scanType: ['barCode', 'qrCode'],
                    scanType: ['qrCode'],
                    success: function(res) {
                        console.log('条码类型:' + res.scanType);
                        console.log('条码内容:' + res.result);
                        that.scanContent = res.result;
                        that.inputBoxValue = res.result;
                        //处理扫码事件
                        that.changeInputBoxValue(that.scanContent);
                    },
                    complete: function(res) {
                    },
                    fail: function(res) {
                        console.log('条码类型:' + res.scanType);
                        console.log('条码内容:' + res.result);
                    }
                });
            },
            changeInputBoxValue(val) {
                this.purchorderArr = this.purchorderArrAll.filter((p) => {
                    return p.code.indexOf(val) !== -1 || p.name.indexOf(val) !== -1 || p.spec.indexOf(val) !== -1
                })
                this.selectedCode = this.purchorderArr[0].code
                this.$forceUpdate()
            },
            inputBoxValueClear() {
                this.inputBoxValue = ''
            },
            navigateTo() {
                uni.navigateTo({
                    url: './mjby2?code=' + this.selectedCode
                });
            },
            async getScanMouldQrCodeMessageData() {
                const res = await ScanMouldQrCodeMessageData()
                this.purchorderArrAll = res.data
                this.purchorderArr = res.data
                this.title = res.data.length
                this.selectedCode = res.data[0].code
            }
        }
    }
</script>
<style lang="scss" scoped>
    @import url('@/style/global.css');
    .container {
        width: 100%;
        height: 70vh;
        /*原生一定得有这个overflow的hidden效果,此处用了scroll-view所以不需要*/
        /*overflow:auto;*/
    }
    .item {
        /* æŒ‰ç…§å®žé™…需求写css */
        width: 100%;
        height: 200rpx;
        line-height: 90rpx;
        /* è¦å¯¹åº”上itemHeight */
        border: 1px solid #c8c8c8;
    }
    ::v-deep .uicon-arrow-left>span {
        display: block;
    }
    .u-input--square {
        margin: 20rpx 10rpx;
        border-radius: 40rpx;
        background-color: #fff;
        border: 1px solid #c8c8c8;
    }
    ::v-deep .u-alert__text--primary--light {
        margin-bottom: 0;
        font-size: 32rpx !important;
    }
    .radioGroupClass {
        display: flex;
        flex-direction: column;
        background-color: #fff;
        overflow-y: auto;
        max-height: 1100rpx;
        margin-top: 20rpx;
    }
    ::v-deep .u-radio-label--right {
        height: 90rpx;
        line-height: 90rpx;
        width: 92%;
        margin-left: 4%;
        // padding: 0 50rpx;
    }
</style>
pages/mjgl/mjby2.vue
@@ -256,7 +256,10 @@
                    mouldcode: mouldcode,
                    repartempcode: repartempcode
                })
                res.forEach(i => {
                    i.isOK = 'OK'
                })
                this.resultValue = 'OK'
                this.centerContent = res
            },
            topScanClick() {
pages/mjgl/mjby_back.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,292 @@
<template>
    <view>
        <page-nav title="模具保养"></page-nav>
        <!-- <view v-if="purchorderArrAll.length>0"> -->
        <u-input prefixIcon="search" prefixIconStyle="font-size: 22px;color: #909399" placeholder="扫描模具编码/输入模具信息"
            clearable border="surround" @clear='inputBoxValueClear' v-model="inputBoxValue"
            @change="changeInputBoxValue">
            <template slot="suffix">
                <u-icon name="scan" color="#909399" size="24" @click="topScanClick"></u-icon>
            </template>
        </u-input>
        <u-alert :title="'模具数(共'+title+'个)'" type="primary"></u-alert>
        <scroll-view class="container" scroll-y="true" @scroll="scroll">
            <!-- è™šæ‹Ÿåˆ—表总高度 -->
            <view :style="{'height': `${totalHeight}rpx`, 'position': 'relative'}">
                <!-- å¯è§†æ¸²æŸ“区 -->
                <view :style="{'top': `${top}px`}" style="width: 100%;position:absolute">
                    <!--在这里自定义你数据的展示结构和样式,itemHeight为这里的总高度-->
                    <view class="radioGroupClass">
                        <view v-for="(item,index) in purchorderArr" :key="item.code" class="item">
                            <view @click="highlightClick(item.code)" :style="{color:selectedCode===item.code?'#fff':'#000',
                                        background:selectedCode===item.code?'#3c9cff':'#fff'
                                }">
                                <view style="display: flex;">
                                    <view style="text-align: center;margin-right: 20rpx;">{{item.code}}
                                    </view>
                                    <view style="">{{item.name}}</view>
                                    <view style="margin-left: 20rpx;">{{item.spec}}</view>
                                </view>
                            </view>
                        </view>
                    </view>
                </view>
            </view>
        </scroll-view>
        <view class="footer" style="min-height:62rpx;">
            <u-button type="primary" size='large' :hairline="true" @click="navigateTo" text="下一步"></u-button>
        </view>
        <!-- </view> -->
        <!--     <view v-if="purchorderArrAll.length===0">
            <div class="sacnBody">
                <div class="boxImg"></div>
                <div class="scanText">暂无模具信息</div>
            </div>
        </view> -->
    </view>
</template>
<script>
    import {
        ScanMouldQrCodeMessageData,
        ScanMouldQrCodeMessageSubData
    } from '../../config/api.js';
    export default {
        onPullDownRefresh() {
            setTimeout(() => {
                this.init(() => {
                    uni.stopPullDownRefresh();
                })
            }, 1000);
        },
        data() {
            return {
                inputBoxValue: '', //输入框值
                title: 0,
                purchorderArr: [],
                purchorderArrAll: [],
                allList: [], //原始数据列表
                //虚拟列表
                showList: [], //可视区域显示的数据
                itemHeight: 100, //每条数据所占高度
                showNum: 0, //可视区域显示的最大条数
                top: 0, //偏移量
                scrollTop: 0, //卷起的高度
                startIndex: 0, //可视区域第一条数据的索引
                endIndex: 0, //可视区域最后一条数据的索引+1,
                selectedCode: ''
            }
        },
        onShow() {
            //第一次时调用一下,且uni.createSelectorQuery()需要在生命周期mounted之后使用
            // this.scroll()
        },
        computed: {
            totalHeight() {
                return this.allList.length * this.itemHeight * 2 //因为rpx和px的关系
            }
        },
        created() {
        },
        mounted() {
            this.init()
            this.getScanMouldQrCodeMessageData()
        },
        methods: {
            //虚拟列表
            getShowList() {
                //可视区域能出现的数据条数
                this.showNum = Math.ceil(this.contentHeight / this.itemHeight);
                // console.log('可视数量', this.showNum)
                //可视区域第一条数据的索引
                this.startIndex = Math.floor(this.scrollTop / this.itemHeight);
                // console.log('初始索引',this.startIndex)
                //可视区域最后一条数据的下一条数据
                this.endIndex = this.startIndex + this.showNum;
                //可视区数据,会比实际可视多渲染一条
                this.showList = this.allList.slice(this.startIndex, this.endIndex)
                // console.log(this.showList)
                //保证滑动时第一条数据完整展示
                let offsetY = this.scrollTop - (this.scrollTop % this.itemHeight);
                this.top = offsetY;
            },
            scroll() {
                // åˆ©ç”¨uniapp提供的接口获取可视区域的高度和滚动高度
                let query = uni.createSelectorQuery()
                let container = query.select('.container');
                container.fields({
                    // rect:true,   //是否返回节点布局位置信息{left,top,right,bottom}
                    size: true, //是否返回节点尺寸信息{width,height}
                    scrollOffset: true //是否返回节点滚动信息{scrollLeft,scrollTop}
                }, (res) => {
                    // console.log(res)
                    this.scrollTop = res.scrollTop
                    this.contentHeight = res.height
                    this.getShowList(); //因为所在函数是异步
                }).exec()
            },
            highlightClick(code) {
                this.selectedCode = code
            },
            init() {
                uni.stopPullDownRefresh();
            },
            // æ‰«ç å·¥ä½  çš„æ‰«ç æ¡†ç‚¹å‡»
            topScanClick() {
                // if (this.topContent.length > 0) {
                //     return uni.$u.toast('请先提交此维修申请!')
                // }
                let that = this;
                uni.scanCode({
                    onlyFromCamera: true,
                    // scanType: ['barCode', 'qrCode'],
                    scanType: ['qrCode'],
                    success: function(res) {
                        console.log('条码类型:' + res.scanType);
                        console.log('条码内容:' + res.result);
                        that.scanContent = res.result;
                        that.inputBoxValue = res.result;
                        //处理扫码事件
                        that.changeInputBoxValue(that.scanContent);
                    },
                    complete: function(res) {
                    },
                    fail: function(res) {
                        console.log('条码类型:' + res.scanType);
                        console.log('条码内容:' + res.result);
                    }
                });
            },
            changeInputBoxValue(val) {
                this.purchorderArr = this.purchorderArrAll.filter((p) => {
                    return p.code.indexOf(val) !== -1 || p.name.indexOf(val) !== -1 || p.spec.indexOf(val) !== -1
                })
                this.selectedCode = this.purchorderArr[0].code
                this.$forceUpdate()
            },
            inputBoxValueClear() {
                this.inputBoxValue = ''
            },
            navigateTo() {
                uni.navigateTo({
                    url: './mjby2?code=' + this.selectedCode
                });
            },
            async getScanMouldQrCodeMessageData() {
                const res = await ScanMouldQrCodeMessageData()
                this.purchorderArrAll = res.data
                this.purchorderArr = res.data
                this.title = res.data.length
                this.selectedCode = res.data[0].code
            }
        }
    }
</script>
<style lang="scss" scoped>
    @import url('@/style/global.css');
    .container {
        width: 100%;
        height: 70vh;
        /*原生一定得有这个overflow的hidden效果,此处用了scroll-view所以不需要*/
        /*overflow:auto;*/
    }
    .item {
        /* æŒ‰ç…§å®žé™…需求写css */
        width: 100%;
        height: 200rpx;
        line-height: 90rpx;
        /* è¦å¯¹åº”上itemHeight */
        border: 1px solid #c8c8c8;
    }
    ::v-deep .uicon-arrow-left>span {
        display: block;
    }
    .u-input--square {
        margin: 20rpx 10rpx;
        border-radius: 40rpx;
        background-color: #fff;
        border: 1px solid #c8c8c8;
    }
    ::v-deep .u-alert__text--primary--light {
        margin-bottom: 0;
        font-size: 32rpx !important;
    }
    .radioGroupClass {
        display: flex;
        flex-direction: column;
        background-color: #fff;
        overflow-y: auto;
        max-height: 1100rpx;
        margin-top: 20rpx;
    }
    ::v-deep .u-radio-label--right {
        height: 90rpx;
        line-height: 90rpx;
        width: 92%;
        margin-left: 4%;
        // padding: 0 50rpx;
    }
</style>
pages/mjgl/mjdj.vue
@@ -83,7 +83,22 @@
                })
            }, 1000);
        },
        // ç›‘听下拉刷新动作(UniApp åŽŸç”Ÿç”Ÿå‘½å‘¨æœŸï¼‰
        onPullDownRefresh() {
            let that = this
            uni.startPullDownRefresh({
                success() {
                    that.getScanMouldQrCodeMessageData()
                    uni.showToast({
                        title: "下拉刷新",
                        icon: 'none'
                    })
                },
                complete() {
                    uni.stopPullDownRefresh()
                }
            })
        },
        data() {
            return {
@@ -248,11 +263,9 @@
    }
    .item {
        /* æŒ‰ç…§å®žé™…需求写css */
        width: 100%;
        height: 200rpx;
        line-height: 90rpx;
        /* è¦å¯¹åº”上itemHeight */
        border: 1px solid #c8c8c8;
    }