From f414b2494547116c058a135c4e37ab402cecaf2b Mon Sep 17 00:00:00 2001
From: chenhaozhe <cgz@hz-kingdee.com>
Date: 星期四, 30 十月 2025 17:02:21 +0800
Subject: [PATCH] 完善首件检验单 逻辑 添加 检验项目 任务单 流转卡 工序 产品 检验仪器选单弹出窗口

---
 components/ZLGL/ICMOBillPopup.vue     |  365 +++++++++
 components/ZLGL/SampleSchemePopup.vue |    2 
 pages/ZLGL/shoujianjianyan/form.vue   |  463 ++++++++++-
 components/ZLGL/CheckItemPopup.vue    |  269 ++++++
 components/ZLGL/MaterialPopup.vue     |  306 +++++++
 components/ZLGL/ProcExchBillPopup.vue |  369 +++++++++
 manifest.json                         |    4 
 pages/index/login.vue                 |    3 
 components/ZLGL/ProcessPopup.vue      |  269 ++++++
 pages/index/index.vue                 |   11 
 components/ZLGL/InspectMentPopup.vue  |  288 +++++++
 pages/shengchanlingliao/form.vue      |   28 
 12 files changed, 2,313 insertions(+), 64 deletions(-)

diff --git a/components/ZLGL/CheckItemPopup.vue b/components/ZLGL/CheckItemPopup.vue
new file mode 100644
index 0000000..f08c2af
--- /dev/null
+++ b/components/ZLGL/CheckItemPopup.vue
@@ -0,0 +1,269 @@
+<template>
+    <view>
+        <uni-popup ref="popup" type="bottom" @change="popupChangeHandler">
+            <view class="content">
+                <view class="search-condition">
+                    <view class="title"><text>浠g爜: </text></view>
+                    <view class="right"><input type="text" v-model="HCode" @confirm="getBillList" /></view>
+                </view>
+                <view class="search-condition">
+                    <view class="title"><text>鍚嶇О: </text></view>
+                    <view class="right"><input type="text" v-model="HName" @confirm="getBillList" /></view>
+                </view>
+                <view class="buttons">
+                    <button size="mini" type="primary" @click="search">鏌ヨ</button>
+                    <view style="flex: 1;"></view>
+                    <button size="mini" type="primary" @click="exit">閫�鍑�</button>
+                </view>
+                <scroll-view id="#BillListPanel" scroll-y="true" style="height: 55vh;">
+                    <view class="options-wrapper" v-show="HBillList.length != 0">
+                        <uni-card :is-active="bill.isActive" :class="bill.isActive?'uni-card--is-active':''"
+                            v-for="(bill, index) in HBillList[curPage-1]" :key="index" :title="bill['鍚嶇О']" :extra="`浠g爜: ${bill['浠g爜']}`"
+                            @tap="clickCard(bill, index)">
+                            <view class="item">
+                                <view class="left">妫�楠岄」鐩被鍒�: </view>
+                                <view class="right">{{bill['妫�楠岄」鐩被鍒�']}}</view>
+                            </view>
+                            <view class="item">
+                                <view class="left">绛夌骇: </view>
+                                <view class="right">{{bill['绛夌骇']}}</view>
+                            </view>
+                            <view class="item">
+                                <view class="left">绂佺敤鏍囪: </view>
+                                <view class="right">{{bill['绂佺敤鏍囪']}}</view>
+                            </view>
+                            <view class="item">
+                                <view class="left">澶囨敞: </view>
+                                <view class="right">{{bill['澶囨敞']}}</view>
+                            </view>
+                            <view class="item">
+                                <view class="left">浣跨敤鏍囪: </view>
+                                <view class="right">{{bill['浣跨敤鏍囪']}}</view>
+                            </view>
+                            <view class="item">
+                                <view class="left">浣跨敤缁勭粐: </view>
+                                <view class="right">{{bill['浣跨敤缁勭粐鍚嶇О']}}</view>
+                            </view>
+                        </uni-card>
+                    </view>
+                    <view class="over" v-show="HBillList.length == 0">鏆傛棤鏁版嵁</view>
+                </scroll-view>
+                <uni-pagination id="#pagination" title="鏍囬鏂囧瓧" v-model="curPage" :pageSize="size"
+                    :total="length"></uni-pagination>
+            </view>
+
+        </uni-popup>
+    </view>
+</template>
+
+<script>
+    import dayjs from 'dayjs';
+    import {
+        CommonUtils
+    } from '@/utils/common';
+    import {
+        getUserInfo
+    } from '@/utils/auth';
+    export default {
+        name: "SampleSchemePopup",
+        emits: ["update:modelValue"],
+        data() {
+            return {
+                dayjs: dayjs,
+                enablefocus: false,
+                size: 20,
+                curPage: 1,
+                length: 0,
+                page: 0,
+                HName: '',
+                HCode: '',
+                HBillList: [],
+                panelHeight: 0,
+
+                multiSouceBillList: []
+            };
+        },
+        props: {
+            bindKey: {
+                type: [String, Number],
+                required: true
+            },
+            HStockOrgID: {
+                type: [String, Number],
+            },
+        },
+        methods: {
+            popupChangeHandler(e) {
+                if (e.show === true) {
+                    this.getBillList()
+                }
+            },
+            async exit() {
+                this.size = 20
+                this.curPage = 1
+                this.length = 0
+                this.page = 0
+                this.HSourceBillNo = ''
+                this.HMater = ''
+                this.HCustom = ''
+                this.HBillList = []
+                this.enablefocus = false
+                this.multiSouceBillList = []
+                // 闇�瑕佺瓑寰呴〉闈㈠唴鐨勬暟鎹祴鍊煎畬姣�
+                await this.$nextTick()
+                this.$refs.popup.close();
+            },
+            search() {
+                this.getBillList()
+            },
+            showPopup() {
+                this.$refs.popup.open();
+            },
+            clickCard(bill, index) {
+                let retVal = {}
+                retVal[this.bindKey] = bill
+                console.log('retVal: ', retVal);
+                this.$emit("update", {
+                    retVal: retVal
+                })
+            },
+            getsWhere() {
+                let sWhere = ` and 绂佺敤鏍囪 !='Y' and  ISNULL(瀹℃牳浜�,'')!=''  and 浣跨敤缁勭粐鍚嶇О = '${ uni.getStorageSync("Organization")}'`
+
+               if (this.HCode) {
+                   swhere += ` and 浠g爜 like '%${this.HCode}%'`
+               }
+               if (this.HName) {
+                   swhere += ` and 鍚嶇О like '%${this.HName}%'`
+               }
+                return sWhere
+            },
+            getBillList() {
+                this.HBillList = []
+                this.length = 0
+                this.page = 0
+                this.curPage = 1
+                CommonUtils.doRequest(
+                    "/Gy_CheckItem/list", {
+                        sWhere: this.getsWhere(),
+                        user: getUserInfo()['Czymc']
+                    },
+                    (res) => {
+                        let {
+                            data,
+                            count,
+                            Message
+                        } = res.data
+                        if (count == 1) {
+                            this.length = Array.from(data).length
+                            const result = [];
+                            for (let i = 0; i < data.length; i += this.size) {
+                                result.push(data.slice(i, i + this.size));
+                            }
+                            this.HBillList = result
+                            this.page = result.length
+                            setTimeout(() => {
+                                this.enablefocus = true
+                            }, 500)
+                        } else {
+                            setTimeout(() => {
+                                this.enablefocus = true
+                            }, 500)
+                            uni.showToast({
+                                icon: 'none',
+                                title: Message
+                            })
+                        }
+                    }
+                )
+            },
+        },
+    }
+</script>
+
+<style lang="scss">
+    .content {
+        box-sizing: border-box;
+        border-radius: 15rpx 15rpx 0 0;
+        padding: 20rpx 20rpx 40rpx 20rpx;
+        background-color: #fff;
+        display: flex;
+        flex-direction: column;
+        gap: 10rpx;
+
+        .search-condition {
+            display: flex;
+            flex-direction: row;
+            align-items: center;
+            gap: 20rpx;
+            font-size: 30rpx;
+
+            .title {
+                width: 5rem;
+                text-align: right;
+            }
+
+            .right {
+                flex: 1;
+                border-radius: 22rpx;
+                border: 1px solid #acacac;
+                height: auto;
+                padding: 8rpx 16rpx;
+
+                input {
+                    width: 100%;
+                    font-size: 30rpx;
+                }
+            }
+        }
+
+        .buttons {
+            display: flex;
+            flex-direction: row;
+            gap: 20rpx;
+            justify-content: flex-end;
+
+            >button {
+                display: inline-flex;
+                width: 4rem;
+            }
+        }
+
+        .options-wrapper {
+            padding: 20rpx;
+            display: grid;
+            grid-template-columns: repeat(1, 1fr);
+            gap: 20rpx;
+
+            >view {
+                margin: 0 !important;
+                box-sizing: border-box;
+
+            }
+
+            .item {
+                .left {
+                    display: inline-block;
+                    width: 6rem;
+                }
+
+                .right {
+                    display: inline-block;
+                }
+            }
+        }
+
+        .uni-card--is-active {
+            background-color: rgba(0, 122, 255, 0.2);
+        }
+
+        .daterange {
+            display: flex;
+            flex-direction: row;
+            gap: 10rpx;
+            justify-content: center;
+            align-items: center;
+
+        }
+    }
+</style>
\ No newline at end of file
diff --git a/components/ZLGL/ICMOBillPopup.vue b/components/ZLGL/ICMOBillPopup.vue
new file mode 100644
index 0000000..cb72dc2
--- /dev/null
+++ b/components/ZLGL/ICMOBillPopup.vue
@@ -0,0 +1,365 @@
+<template>
+    <view>
+        <uni-popup ref="popup" type="bottom" @change="popupChangeHandler">
+            <view class="content">
+                <view class="search-condition">
+                    <view class="title"><text>鏃ユ湡: </text></view>
+                    <view class="daterange" style="flex: 1;">
+                        <view class="right general">
+                            <uni-datetime-picker type="date" :clear-icon="false" v-model="HBeginDate">
+                                <view>{{HBeginDate}}</view>
+                            </uni-datetime-picker>
+                        </view>
+                        <view>鈥�</view>
+                        <view class="right general">
+                            <uni-datetime-picker type="date" :clear-icon="false" v-model="HEndDate">
+                                <view>{{HEndDate}}</view>
+                            </uni-datetime-picker>
+                        </view>
+                    </view>
+                </view>
+                <view class="search-condition">
+                    <view class="title"><text>鐗╂枡缂栫爜: </text></view>
+                    <view class="right"><input type="text" v-model="HCode" @confirm="getBillList" /></view>
+                </view>
+                <view class="search-condition">
+                    <view class="title"><text>涓氬姟鐘舵��: </text></view>
+                    <view class="right">
+                        <uni-combox :candidates="HStatusList" v-model="HStatus"></uni-combox>
+                    </view>
+                </view>
+                <view class="buttons">
+                    <button size="mini" type="primary" @click="search">鏌ヨ</button>
+                    <view style="flex: 1;"></view>
+                    <button size="mini" type="primary" @click="exit">閫�鍑�</button>
+                </view>
+                <scroll-view id="#BillListPanel" scroll-y="true" style="height: 55vh;">
+                    <view class="options-wrapper" v-show="HBillList.length != 0">
+                        <uni-card :is-active="bill.isActive" :class="bill.isActive?'uni-card--is-active':''"
+                            v-for="(bill, index) in HBillList" :key="index" :title="bill['鏃ユ湡']" :extra="`${bill['鏃ユ湡']}`"
+                            @tap="clickCard(bill, index)">
+                            <view class="item-wrapper">
+                                <view class="item"  v-if="bill['鍗曟嵁鐘舵��']">
+                                    <view class="left">鍗曟嵁鐘舵��: </view>
+                                    <view class="right">{{bill['鍗曟嵁鐘舵��']}}</view>
+                                </view>
+                                <view class="item" v-if="bill['鐘舵��']">
+                                    <view class="left" >鐘舵��: </view>
+                                    <view class="right">{{bill['鐘舵��']}}</view>
+                                </view>
+                                <view class="item" v-if="bill['棰嗘枡鐘舵��']">
+                                    <view class="left" >棰嗘枡鐘舵��: </view>
+                                    <view class="right">{{bill['棰嗘枡鐘舵��']}}</view>
+                                </view>
+                                <view class="item" v-if="bill['鏄惁鎺掍骇']">
+                                    <view class="left" >鏄惁鎺掍骇: </view>
+                                    <view class="right">{{bill['鏄惁鎺掍骇']}}</view>
+                                </view>
+                                <view class="item" v-if="bill['宸叉眹鎶ユ暟閲�']">
+                                    <view class="left" >宸叉眹鎶ユ暟閲�: </view>
+                                    <view class="right">{{bill['宸叉眹鎶ユ暟閲�']}}</view>
+                                </view>
+                                <view class="item" v-if="bill['宸叉眹鎶ュ鏍告暟閲�']">
+                                    <view class="left" >宸叉眹鎶ュ鏍告暟閲�: </view>
+                                    <view class="right">{{bill['宸叉眹鎶ュ鏍告暟閲�']}}</view>
+                                </view>
+                                <view class="item" v-if="bill['宸ヨ壓璺嚎浠g爜']">
+                                    <view class="left" >宸ヨ壓璺嚎浠g爜: </view>
+                                    <view class="right">{{bill['宸ヨ壓璺嚎浠g爜']}}</view>
+                                </view>
+                                <view class="item" v-if="bill['宸ヨ壓璺嚎']"> 
+                                    <view class="left" >宸ヨ壓璺嚎: </view>
+                                    <view class="right">{{bill['宸ヨ壓璺嚎']}}</view>
+                                </view>
+                                <view class="item" v-if="bill['榻愬鏁伴噺']">
+                                    <view class="left" >榻愬鏁伴噺: </view>
+                                    <view class="right">{{bill['榻愬鏁伴噺']}}</view>
+                                </view>
+                                <view class="item"  v-if="bill['浜у搧浠g爜']">
+                                    <view class="left">浜у搧浠g爜: </view>
+                                    <view class="right">{{bill['浜у搧浠g爜']}}</view>
+                                </view>
+                                <view class="item" v-if="bill['浜у搧鍚嶇О']">
+                                    <view class="left" >浜у搧鍚嶇О: </view>
+                                    <view class="right">{{bill['浜у搧鍚嶇О']}}</view>
+                                </view>
+                                <view class="item"  v-if="bill['瑙勬牸鍨嬪彿']">
+                                    <view class="left">瑙勬牸鍨嬪彿: </view>
+                                    <view class="right">{{bill['瑙勬牸鍨嬪彿']}}</view>
+                                </view>
+                                <view class="item" v-if="bill['璁¢噺鍗曚綅浠g爜']">
+                                    <view class="left" >璁¢噺鍗曚綅浠g爜: </view>
+                                    <view class="right">{{bill['璁¢噺鍗曚綅浠g爜']}}</view>
+                                </view>
+                                <view class="item" v-if="bill['璁¢噺鍗曚綅']">
+                                    <view class="left">璁¢噺鍗曚綅: </view>
+                                    <view class="right">{{bill['璁¢噺鍗曚綅']}}</view>
+                                </view>
+                                <view class="item"  v-if="bill['鐢熶骇浠诲姟鍗曟暟閲�']">
+                                    <view class="left">鐢熶骇浠诲姟鍗曟暟閲�: </view>
+                                    <view class="right">{{bill['鐢熶骇浠诲姟鍗曟暟閲�']}}</view>
+                                </view>
+                                <view class="item"  v-if="bill['娴佽浆鍗℃暟閲�']">
+                                    <view class="left">娴佽浆鍗℃暟閲�: </view>
+                                    <view class="right">{{bill['娴佽浆鍗℃暟閲�']}}</view>
+                                </view>
+                            </view>
+                        </uni-card>
+                    </view>
+                    <view class="over" v-show="HBillList.length == 0">鏆傛棤鏁版嵁</view>
+                </scroll-view>
+                <uni-pagination id="#pagination" title="鏍囬鏂囧瓧" v-model="curPage" :pageSize="size" :total="length"
+                    @update:modelValue="pageUpdate"></uni-pagination>
+            </view>
+
+        </uni-popup>
+    </view>
+</template>
+
+<script>
+    import dayjs from 'dayjs';
+    import {
+        CommonUtils
+    } from '@/utils/common';
+    import {
+        getUserInfo
+    } from '@/utils/auth';
+    export default {
+        name: "SampleSchemePopup",
+        emits: ["update:modelValue"],
+        data() {
+            return {
+                dayjs: dayjs,
+                enablefocus: false,
+                size: 20,
+                curPage: 1,
+                length: 0,
+                page: 0,
+                HStatus: '寮�宸�',
+                HStatusList: ['寮�宸�', '璁″垝', '璁″垝纭', '涓嬭揪', '鍏ㄩ儴', '瀹屽伐', '缁撴'],
+                HCode: '',
+                HBillList: [],
+                HBeginDate: dayjs(new Date()).subtract(30, 'd').format("YYYY-MM-DD"),
+                HEndDate: dayjs(new Date()).format("YYYY-MM-DD"),
+                panelHeight: 0,
+
+                multiSouceBillList: []
+            };
+        },
+        props: {
+            bindKey: {
+                type: [String, Number],
+                required: true
+            },
+            HStockOrgID: {
+                type: [String, Number],
+            },
+        },
+        methods: {
+            async pageUpdate(e) {
+                console.log('e: ', e);
+                this.curPage = e
+                await this.$nextTick()
+                this.getBillList()
+            },
+            popupChangeHandler(e) {
+                if (e.show === true) {
+                    this.getBillList()
+                }
+            },
+            async exit() {
+                this.size = 20
+                this.curPage = 1
+                this.length = 0
+                this.page = 0
+                this.HSourceBillNo = ''
+                this.HMater = ''
+                this.HCustom = ''
+                this.HBillList = []
+                this.enablefocus = false
+                this.multiSouceBillList = []
+                // 闇�瑕佺瓑寰呴〉闈㈠唴鐨勬暟鎹祴鍊煎畬姣�
+                await this.$nextTick()
+                this.$refs.popup.close();
+            },
+            search() {
+                this.getBillList()
+            },
+            showPopup() {
+                this.$refs.popup.open();
+            },
+            clickCard(bill, index) {
+                let retVal = {}
+                retVal[this.bindKey] = bill
+                console.log('retVal: ', retVal);
+                this.$emit("update", {
+                    retVal: retVal
+                })
+            },
+            getsWhere() {
+                let sWhere =
+                    ` and 鍗曟嵁鐘舵�� = '宸插鏍�' and 琛岀姸鎬� = ''  and HPRDORGID = '${uni.getStorageSync("OrganizationID")}'`
+
+                if (this.HBeginDate && this.HEndDate) {
+                    sWhere += ` and  CONVERT(varchar(100),鏃ユ湡, 23) between '${this.HBeginDate}' and '${this.HEndDate}'`
+                }
+                if (this.HCode) {
+                    sWhere += ` and 鐗╂枡缂栫爜 like '%${this.HCode}%'`
+                }
+                if (this.HStatus) {
+                    sWhere += ` and 鐘舵�� like '%${this.HStatus}%'`
+                }
+                return sWhere
+            },
+            getBillList() {
+                this.HBillList = []
+                this.length = this.length || 0
+                this.page = 0
+                this.curPage = this.curPage || 1
+                CommonUtils.doRequest(
+                    "/LEMS/MES_IF_ICMOBillList_Json_byPage", {
+                        sWhere: this.getsWhere(),
+                        user: getUserInfo()['Czymc'],
+                        Organization: uni.getStorageSync("Organization"),
+                        page: this.curPage,
+                        size: this.size
+                    },
+                    (res) => {
+                        let {
+                            data,
+                            count,
+                            Message
+                        } = res.data
+                        if (count > 0) {
+                            this.length = count
+                            // const result = [];
+                            // for (let i = 0; i < data.length; i += this.size) {
+                            //     result.push(data.slice(i, i + this.size));
+                            // }
+                            this.HBillList = data
+                            // this.page = result.length
+                            setTimeout(() => {
+                                this.enablefocus = true
+                            }, 500)
+                        } else {
+                            setTimeout(() => {
+                                this.enablefocus = true
+                            }, 500)
+                            uni.showToast({
+                                icon: 'none',
+                                title: Message
+                            })
+                        }
+                    }
+                )
+            },
+        },
+    }
+</script>
+
+<style lang="scss">
+    button {}
+
+    .content {
+        box-sizing: border-box;
+        border-radius: 15rpx 15rpx 0 0;
+        padding: 20rpx 20rpx 40rpx 20rpx;
+        background-color: #fff;
+        display: flex;
+        flex-direction: column;
+        gap: 10rpx;
+
+        .search-condition {
+            display: flex;
+            flex-direction: row;
+            align-items: center;
+            gap: 20rpx;
+            font-size: 30rpx;
+
+            .title {
+                width: 5rem;
+                text-align: right;
+            }
+
+            .right {
+                flex: 1;
+                border-radius: 22rpx;
+                border: 1px solid #acacac;
+                height: auto;
+                padding: 8rpx 16rpx;
+
+                input {
+                    width: 100%;
+                    font-size: 30rpx;
+                }
+
+                .uni-combox {
+                    padding: 0;
+                    height: auto;
+
+                    .uni-input-placeholder,
+                    .uni-input-input {
+                        font-size: 26rpx;
+                    }
+                }
+            }
+        }
+
+        .buttons {
+            display: flex;
+            flex-direction: row;
+            gap: 20rpx;
+            justify-content: flex-end;
+
+            >button {
+                display: inline-flex;
+                width: 4rem;
+            }
+        }
+
+        .options-wrapper {
+            padding: 20rpx;
+            display: flex;
+            flex-direction: column;
+            gap: 20rpx;
+
+            .item-wrapper {
+                display: flex;
+                flex-direction: row;
+                flex-wrap: wrap;
+                gap: 8rpx 0;
+            }
+
+            view {
+                margin: 0 !important;
+                box-sizing: border-box;
+
+            }
+
+            .item {
+                display: flex;
+                flex-direction: row;
+                align-items: center;
+
+                .left {
+                    padding: 0 20rpx;
+                }
+
+                .right {}
+            }
+        }
+
+        .uni-card--is-active {
+            background-color: rgba(0, 122, 255, 0.2);
+        }
+
+        .daterange {
+            display: flex;
+            flex-direction: row;
+            gap: 10rpx;
+            justify-content: center;
+            align-items: center;
+
+        }
+    }
+</style>
\ No newline at end of file
diff --git a/components/ZLGL/InspectMentPopup.vue b/components/ZLGL/InspectMentPopup.vue
new file mode 100644
index 0000000..401b4e5
--- /dev/null
+++ b/components/ZLGL/InspectMentPopup.vue
@@ -0,0 +1,288 @@
+<template>
+    <view>
+        <uni-popup ref="popup" type="bottom" @change="popupChangeHandler">
+            <view class="content">
+                <view class="search-condition">
+                    <view class="title"><text>浠g爜: </text></view>
+                    <view class="right"><input type="text" v-model="HCode" @confirm="getBillList" /></view>
+                </view>
+                <view class="search-condition">
+                    <view class="title"><text>鍚嶇О: </text></view>
+                    <view class="right"><input type="text" v-model="HName" @confirm="getBillList" /></view>
+                </view>
+                <view class="buttons">
+                    <button size="mini" type="primary" @click="search">鏌ヨ</button>
+                    <view style="flex: 1;"></view>
+                    <button size="mini" type="primary" @click="exit">閫�鍑�</button>
+                </view>
+                <scroll-view id="#BillListPanel" scroll-y="true" style="height: 55vh;">
+                    <view class="options-wrapper" v-show="HBillList.length != 0">
+                        <uni-card :is-active="bill.isActive" :class="bill.isActive?'uni-card--is-active':''"
+                            v-for="(bill, index) in HBillList[curPage-1]" :key="index" :title="bill['妫�楠屼华鍣ㄥ悕绉�']"
+                            :extra="`浠g爜: ${bill['妫�楠屼华鍣ㄤ唬鐮�']}`" @tap="clickCard(bill, index)">
+                            <view class="item-wrapper">
+                                <view class="item">
+                                    <view class="left">鏍″噯鐘舵��: </view>
+                                    <view class="right">{{bill['鏍″噯鐘舵��']}}</view>
+                                </view>
+                                <view class="item">
+                                    <view class="left">鏍″噯鏃ユ湡: </view>
+                                    <view class="right">{{dayjs(bill['鏍″噯鏃ユ湡']).format("YYYY-MM-DD")}}</view>
+                                </view>
+                                <view class="item">
+                                    <view class="left">鏈夋晥鏃ユ湡: </view>
+                                    <view class="right">{{dayjs(bill['鏈夋晥鏃ユ湡']).format("YYYY-MM-DD")}}</view>
+                                </view>
+                                <view class="item">
+                                    <view class="left">鍒版湡澶╂暟: </view>
+                                    <view class="right">{{bill['鍒版湡澶╂暟']}}</view>
+                                </view>
+                                <view class="item">
+                                    <view class="left">绂佺敤鏍囧織: </view>
+                                    <view class="right">{{bill['绂佺敤鏍囧織']}}</view>
+                                </view>
+                                <view class="item" v-if="bill['澶囨敞']">
+                                    <view class="left">澶囨敞: </view>
+                                    <view class="right">{{bill['澶囨敞']}}</view>
+                                </view>
+                                <view class="item">
+                                    <view class="left">浣跨敤鐘舵��: </view>
+                                    <view class="right">{{bill['浣跨敤鐘舵��']}}</view>
+                                </view>
+                                <view class="item">
+                                    <view class="left">浣跨敤缁勭粐: </view>
+                                    <view class="right">{{bill['浣跨敤缁勭粐鍚嶇О']}}</view>
+                                </view>
+                            </view>
+                        </uni-card>
+                    </view>
+                    <view class="over" v-show="HBillList.length == 0">鏆傛棤鏁版嵁</view>
+                </scroll-view>
+                <uni-pagination id="#pagination" title="" v-model="curPage" :pageSize="size"
+                    :total="length"></uni-pagination>
+            </view>
+
+        </uni-popup>
+    </view>
+</template>
+
+<script>
+    import dayjs from 'dayjs';
+    import {
+        CommonUtils
+    } from '@/utils/common';
+    import {
+        getUserInfo
+    } from '@/utils/auth';
+    export default {
+        name: "SampleSchemePopup",
+        emits: ["update:modelValue"],
+        data() {
+            return {
+                dayjs: dayjs,
+                enablefocus: false,
+                size: 20,
+                curPage: 1,
+                length: 0,
+                page: 0,
+                HName: '',
+                HCode: '',
+                HBillList: [],
+                panelHeight: 0,
+
+                multiSouceBillList: []
+            };
+        },
+        props: {
+            bindKey: {
+                type: [String, Number],
+                required: true
+            },
+            HStockOrgID: {
+                type: [String, Number],
+            },
+        },
+        methods: {
+            popupChangeHandler(e) {
+                if (e.show === true) {
+                    this.getBillList()
+                }
+            },
+            async exit() {
+                this.size = 20
+                this.curPage = 1
+                this.length = 0
+                this.page = 0
+                this.HSourceBillNo = ''
+                this.HMater = ''
+                this.HCustom = ''
+                this.HBillList = []
+                this.enablefocus = false
+                this.multiSouceBillList = []
+                // 闇�瑕佺瓑寰呴〉闈㈠唴鐨勬暟鎹祴鍊煎畬姣�
+                await this.$nextTick()
+
+                this.$refs.popup.close();
+            },
+            search() {
+                this.getBillList()
+            },
+            showPopup() {
+                this.$refs.popup.open();
+            },
+            clickCard(bill, index) {
+                let retVal = {}
+                retVal[this.bindKey] = bill
+                console.log('retVal: ', retVal);
+                this.$emit("update", {
+                    retVal: retVal
+                })
+            },
+            getsWhere() {
+                let sWhere =
+                    ` and 浣跨敤缁勭粐鍚嶇О = '${uni.getStorageSync("Organization")}'  and 绂佺敤鏍囧織 !='鏄�' and ISNULL(瀹℃牳浜�,'')!=''  `
+
+                if (this.HCode) {
+                    swhere += ` and 妫�楠屼华鍣ㄤ唬鐮� like '%${this.HCode}%'`
+                }
+                if (this.HName) {
+                    swhere += ` and 妫�楠屼华鍣ㄥ悕绉� like '%${this.HName}%'`
+                }
+                return sWhere
+            },
+            getBillList() {
+                this.HBillList = []
+                this.length = 0
+                this.page = 0
+                this.curPage = 1
+                CommonUtils.doRequest(
+                    "/Gy_BadReason/Gy_InspectInstruMentList", {
+                        sWhere: this.getsWhere(),
+                        user: getUserInfo()['Czymc']
+                    },
+                    (res) => {
+                        let {
+                            data,
+                            count,
+                            Message
+                        } = res.data
+                        if (count == 1) {
+                            this.length = Array.from(data).length
+                            const result = [];
+                            for (let i = 0; i < data.length; i += this.size) {
+                                result.push(data.slice(i, i + this.size));
+                            }
+                            this.HBillList = result
+                            this.page = result.length
+                            setTimeout(() => {
+                                this.enablefocus = true
+                            }, 500)
+                        } else {
+                            setTimeout(() => {
+                                this.enablefocus = true
+                            }, 500)
+                            uni.showToast({
+                                icon: 'none',
+                                title: Message
+                            })
+                        }
+                    }
+                )
+            },
+        },
+    }
+</script>
+
+<style lang="scss">
+    .content {
+        box-sizing: border-box;
+        border-radius: 15rpx 15rpx 0 0;
+        padding: 20rpx 20rpx 40rpx 20rpx;
+        background-color: #fff;
+        display: flex;
+        flex-direction: column;
+        gap: 10rpx;
+
+        .search-condition {
+            display: flex;
+            flex-direction: row;
+            align-items: center;
+            gap: 20rpx;
+            font-size: 30rpx;
+
+            .title {
+                width: 5rem;
+                text-align: right;
+            }
+
+            .right {
+                flex: 1;
+                border-radius: 22rpx;
+                border: 1px solid #acacac;
+                height: auto;
+                padding: 8rpx 16rpx;
+
+                input {
+                    width: 100%;
+                    font-size: 30rpx;
+                }
+            }
+        }
+
+        .buttons {
+            display: flex;
+            flex-direction: row;
+            gap: 20rpx;
+            justify-content: flex-end;
+
+            >button {
+                display: inline-flex;
+                width: 4rem;
+            }
+        }
+
+        .options-wrapper {
+            padding: 20rpx;
+            display: flex;
+            flex-direction: column;
+            gap: 20rpx;
+
+            view {
+                margin: 0 !important;
+                box-sizing: border-box;
+            }
+            .item-wrapper{
+                display: flex;
+                flex-direction: row;
+                flex-wrap: wrap;
+                gap: 8rpx 20rpx;
+            }
+
+            .item {
+                display: flex;
+                flex-direction: row;
+                align-items: center;
+                
+
+                .left {
+                    width: 5rem;
+                }
+
+                .right {}
+            }
+        }
+
+        .uni-card--is-active {
+            background-color: rgba(0, 122, 255, 0.2);
+        }
+
+        .daterange {
+            display: flex;
+            flex-direction: row;
+            gap: 10rpx;
+            justify-content: center;
+            align-items: center;
+
+        }
+    }
+</style>
\ No newline at end of file
diff --git a/components/ZLGL/MaterialPopup.vue b/components/ZLGL/MaterialPopup.vue
new file mode 100644
index 0000000..9561b5b
--- /dev/null
+++ b/components/ZLGL/MaterialPopup.vue
@@ -0,0 +1,306 @@
+<template>
+    <view>
+        <uni-popup ref="popup" type="bottom" @change="popupChangeHandler">
+            <view class="content">
+                <view class="search-condition">
+                    <view class="title"><text>鐗╂枡浠g爜: </text></view>
+                    <view class="right"><input type="text" v-model="HCode" @confirm="getBillList" /></view>
+                </view>
+                <view class="search-condition">
+                    <view class="title"><text>鐗╂枡鍚嶇О: </text></view>
+                    <view class="right"><input type="text" v-model="HName" @confirm="getBillList" /></view>
+                </view>
+                <view class="buttons">
+                    <button size="mini" type="primary" @click="search">鏌ヨ</button>
+                    <view style="flex: 1;"></view>
+                    <button size="mini" type="primary" @click="exit">閫�鍑�</button>
+                </view>
+                <scroll-view id="#BillListPanel" scroll-y="true" style="height: 55vh;">
+                    <view class="options-wrapper" v-show="HBillList.length != 0">
+                        <uni-card :is-active="bill.isActive" :class="bill.isActive?'uni-card--is-active':''"
+                            v-for="(bill, index) in HBillList" :key="index" :title="bill['鐗╂枡鍚嶇О']"
+                            :extra="`浠g爜: ${bill['鐗╂枡浠g爜']}`" @tap="clickCard(bill, index)">
+                            <view class="item-wrapper">
+                                <view class="item">
+                                    <view class="left" v-if="bill['瑙勬牸鍨嬪彿'].trim()">瑙勬牸鍨嬪彿: </view>
+                                    <view class="right">{{bill['瑙勬牸鍨嬪彿']}}</view>
+                                </view>
+                                <view class="item">
+                                    <view class="left" v-if="bill['璁¢噺鍗曚綅鍚嶇О']">璁¢噺鍗曚綅鍚嶇О: </view>
+                                    <view class="right">{{bill['璁¢噺鍗曚綅鍚嶇О']}}</view>
+                                </view>
+                                <view class="item">
+                                    <view class="left" v-if="bill['浠撳簱鍚嶇О']">浠撳簱鍚嶇О: </view>
+                                    <view class="right">{{bill['浠撳簱鍚嶇О']}}</view>
+                                </view>
+                                <view class="item">
+                                    <view class="left" v-if="bill['鐗╂枡鍒嗙被鍚嶇О']">鐗╂枡鍒嗙被鍚嶇О: </view>
+                                    <view class="right">{{bill['鐗╂枡鍒嗙被鍚嶇О']}}</view>
+                                </view>
+                                <view class="item">
+                                    <view class="left" v-if="bill['鐗╂枡灞炴��']">鐗╂枡灞炴��: </view>
+                                    <view class="right">{{bill['鐗╂枡灞炴��']}}</view>
+                                </view>
+                                <view class="item">
+                                    <view class="left" v-if="bill['鍩烘湰璁¢噺鍗曚綅']">鍩烘湰璁¢噺鍗曚綅: </view>
+                                    <view class="right">{{bill['鍩烘湰璁¢噺鍗曚綅']}}</view>
+                                </view>
+                                <view class="item">
+                                    <view class="left" v-if="bill['浜嬩笟閮�']">浜嬩笟閮�: </view>
+                                    <view class="right">{{bill['浜嬩笟閮�']}}</view>
+                                </view> 
+                                <view class="item">
+                                    <view class="left" v-if="bill['缁勭粐鍚嶇О']">缁勭粐鍚嶇О: </view>
+                                    <view class="right">{{bill['缁勭粐鍚嶇О']}}</view>
+                                </view>
+                                <view class="item">
+                                    <view class="left" v-if="bill['澶囨敞']">澶囨敞: </view>
+                                    <view class="right">{{bill['澶囨敞']}}</view>
+                                </view>
+                            </view>
+                        </uni-card>
+                    </view>
+                    <view class="over" v-show="HBillList.length == 0">鏆傛棤鏁版嵁</view>
+                </scroll-view>
+                <uni-pagination id="#pagination" title="鏍囬鏂囧瓧" v-model="curPage" :pageSize="size" :total="length"
+                    @update:modelValue="pageUpdate"></uni-pagination>
+            </view>
+
+        </uni-popup>
+    </view>
+</template>
+
+<script>
+    import dayjs from 'dayjs';
+    import {
+        CommonUtils
+    } from '@/utils/common';
+    import {
+        getUserInfo
+    } from '@/utils/auth';
+    export default {
+        name: "SampleSchemePopup",
+        emits: ["update:modelValue"],
+        data() {
+            return {
+                dayjs: dayjs,
+                enablefocus: false,
+                size: 20,
+                curPage: 1,
+                length: 0,
+                page: 0,
+                HName: '',
+                HCode: '',
+                HBillList: [],
+                panelHeight: 0,
+
+                multiSouceBillList: []
+            };
+        },
+        props: {
+            bindKey: {
+                type: [String, Number],
+                required: true
+            },
+            HStockOrgID: {
+                type: [String, Number],
+            },
+        },
+        methods: {
+            async pageUpdate(e) {
+                console.log('e: ', e);
+                this.curPage = e
+                await this.$nextTick()
+                this.getBillList()
+            },
+            popupChangeHandler(e) {
+                if (e.show === true) {
+                    this.getBillList()
+                }
+            },
+            async exit() {
+                this.size = 20
+                this.curPage = 1
+                this.length = 0
+                this.page = 0
+                this.HSourceBillNo = ''
+                this.HMater = ''
+                this.HCustom = ''
+                this.HBillList = []
+                this.enablefocus = false
+                this.multiSouceBillList = []
+                // 闇�瑕佺瓑寰呴〉闈㈠唴鐨勬暟鎹祴鍊煎畬姣�
+                await this.$nextTick()
+                this.$refs.popup.close();
+            },
+            search() {
+                this.getBillList()
+            },
+            showPopup() {
+                this.$refs.popup.open();
+            },
+            clickCard(bill, index) {
+                let retVal = {}
+                retVal[this.bindKey] = bill
+                console.log('retVal: ', retVal);
+                this.$emit("update", {
+                    retVal: retVal
+                })
+            },
+            getsWhere() {
+                let sWhere =
+                    `  and 1=1 and 绂佺敤鏍囪 = '' and ISNULL(瀹℃牳浜�,'') <> '' and HUSEORGID =  '${uni.getStorageSync("OrganizationID")}'`
+
+                if (this.HCode) {
+                    sWhere += ` and 鐗╂枡浠g爜 like '%${this.HCode}%'`
+                }
+                if (this.HName) {
+                    sWhere += ` and 鐗╂枡鍚嶇О like '%${this.HName}%'`
+                }
+                return sWhere
+            },
+            getBillList() {
+                this.HBillList = []
+                this.length = this.length || 0
+                this.page = 0
+                this.curPage = this.curPage || 1
+                CommonUtils.doRequest(
+                    "/Gy_Material/page", {
+                        sWhere: this.getsWhere(),
+                        user: getUserInfo()['Czymc'],
+                        Organization: uni.getStorageSync("Organization"),
+                        page: this.curPage,
+                        size: this.size
+                    },
+                    (res) => {
+                        let {
+                            data,
+                            count,
+                            Message
+                        } = res.data
+                        if (count > 0) {
+                            this.length = count
+                            // const result = [];
+                            // for (let i = 0; i < data.length; i += this.size) {
+                            //     result.push(data.slice(i, i + this.size));
+                            // }
+                            this.HBillList = data
+                            // this.page = result.length
+                            setTimeout(() => {
+                                this.enablefocus = true
+                            }, 500)
+                        } else {
+                            setTimeout(() => {
+                                this.enablefocus = true
+                            }, 500)
+                            uni.showToast({
+                                icon: 'none',
+                                title: Message
+                            })
+                        }
+                    }
+                )
+            },
+        },
+    }
+</script>
+
+<style lang="scss">
+    button {
+        
+    }
+    .content {
+        box-sizing: border-box;
+        border-radius: 15rpx 15rpx 0 0;
+        padding: 20rpx 20rpx 40rpx 20rpx;
+        background-color: #fff;
+        display: flex;
+        flex-direction: column;
+        gap: 10rpx;
+
+        .search-condition {
+            display: flex;
+            flex-direction: row;
+            align-items: center;
+            gap: 20rpx;
+            font-size: 30rpx;
+
+            .title {
+                width: 5rem;
+                text-align: right;
+            }
+
+            .right {
+                flex: 1;
+                border-radius: 22rpx;
+                border: 1px solid #acacac;
+                height: auto;
+                padding: 8rpx 16rpx;
+
+                input {
+                    width: 100%;
+                    font-size: 30rpx;
+                }
+            }
+        }
+
+        .buttons {
+            display: flex;
+            flex-direction: row;
+            gap: 20rpx;
+            justify-content: flex-end;
+
+            >button {
+                display: inline-flex;
+                width: 4rem;
+            }
+        }
+
+        .options-wrapper {
+            padding: 20rpx;
+            display: flex;
+            flex-direction: column;
+            gap: 20rpx;
+
+            .item-wrapper {
+                display: flex;
+                flex-direction: row;
+                flex-wrap: wrap;
+                gap: 8rpx 0;
+            }
+
+            view {
+                margin: 0 !important;
+                box-sizing: border-box;
+
+            }
+
+            .item {
+                display: flex;
+                flex-direction: row;
+                align-items: center;
+
+                .left {
+                   padding: 0 20rpx;
+                }
+
+                .right {
+                    
+                }
+            }
+        }
+
+        .uni-card--is-active {
+            background-color: rgba(0, 122, 255, 0.2);
+        }
+
+        .daterange {
+            display: flex;
+            flex-direction: row;
+            gap: 10rpx;
+            justify-content: center;
+            align-items: center;
+
+        }
+    }
+</style>
\ No newline at end of file
diff --git a/components/ZLGL/ProcExchBillPopup.vue b/components/ZLGL/ProcExchBillPopup.vue
new file mode 100644
index 0000000..85aa2ee
--- /dev/null
+++ b/components/ZLGL/ProcExchBillPopup.vue
@@ -0,0 +1,369 @@
+<template>
+    <view>
+        <uni-popup ref="popup" type="bottom" @change="popupChangeHandler">
+            <view class="content">
+                <view class="search-condition">
+                    <view class="title"><text>鏃ユ湡: </text></view>
+                    <view class="daterange" style="flex: 1;">
+                        <view class="right general">
+                            <uni-datetime-picker type="date" :clear-icon="false" v-model="HBeginDate">
+                                <view>{{HBeginDate}}</view>
+                            </uni-datetime-picker>
+                        </view>
+                        <view>鈥�</view>
+                        <view class="right general">
+                            <uni-datetime-picker type="date" :clear-icon="false" v-model="HEndDate">
+                                <view>{{HEndDate}}</view>
+                            </uni-datetime-picker>
+                        </view>
+                    </view>
+                </view>
+                <view class="search-condition">
+                    <view class="title"><text>鐢熶骇璁㈠崟鍙�: </text></view>
+                    <view class="right"><input type="text" v-model="HPrdOrderBillNo" @confirm="getBillList" /></view>
+                </view>
+                <view class="search-condition">
+                    <view class="title"><text>鐢熶骇杞﹂棿: </text></view>
+                    <view class="right">
+                        <uni-combox :candidates="HWorkShopList" v-model="HWorkShop"></uni-combox>
+                    </view>
+                </view>
+                <view class="buttons">
+                    <button size="mini" type="primary" @click="search">鏌ヨ</button>
+                    <view style="flex: 1;"></view>
+                    <button size="mini" type="primary" @click="exit">閫�鍑�</button>
+                </view>
+                <scroll-view id="#BillListPanel" scroll-y="true" style="height: 55vh;">
+                    <view class="options-wrapper" v-show="HBillList.length != 0">
+                        <uni-card :is-active="bill.isActive" :class="bill.isActive?'uni-card--is-active':''"
+                            v-for="(bill, index) in HBillList" :key="index" :title="bill['鍗曟嵁鍙�']" :extra="`${bill['鏃ユ湡']}`"
+                            @tap="clickCard(bill, index)">
+                            <view class="item-wrapper">
+                                <view class="item" v-if="bill['鐢熶骇璁㈠崟鍙�']">
+                                    <view class="left">鐢熶骇璁㈠崟鍙�: </view>
+                                    <view class="right">{{bill['鐢熶骇璁㈠崟鍙�']}}</view>
+                                </view>
+                                <view class="item" v-if="bill['鍗曟嵁鐘舵��']">
+                                    <view class="left">鍗曟嵁鐘舵��: </view>
+                                    <view class="right">{{bill['鍗曟嵁鐘舵��']}}</view>
+                                </view>
+                                <view class="item" v-if="bill['浜у搧浠g爜']">
+                                    <view class="left">浜у搧浠g爜: </view>
+                                    <view class="right">{{bill['浜у搧浠g爜']}}</view>
+                                </view>
+                                <view class="item" v-if="bill['浜у搧鍚嶇О']">
+                                    <view class="left">浜у搧鍚嶇О: </view>
+                                    <view class="right">{{bill['浜у搧鍚嶇О']}}</view>
+                                </view>
+                                <view class="item" v-if="bill['浜у搧瑙勬牸']">
+                                    <view class="left">浜у搧瑙勬牸: </view>
+                                    <view class="right">{{bill['浜у搧瑙勬牸']}}</view>
+                                </view>
+                                <view class="item" v-if="bill['娴佽浆鍗℃暟閲�']">
+                                    <view class="left">娴佽浆鍗℃暟閲�: </view>
+                                    <view class="right">{{bill['娴佽浆鍗℃暟閲�']}}</view>
+                                </view>
+                                <view class="item" v-if="bill['鍗曚綅']">
+                                    <view class="left">鍗曚綅: </view>
+                                    <view class="right">{{bill['鍗曚綅']}}</view>
+                                </view>
+                                <view class="item" v-if="bill['瀹㈡埛']">
+                                    <view class="left">瀹㈡埛: </view>
+                                    <view class="right">{{bill['瀹㈡埛']}}</view>
+                                </view>
+                                <view class="item" v-if="bill['涓氬姟鍛�']">
+                                    <view class="left">涓氬姟鍛�: </view>
+                                    <view class="right">{{bill['涓氬姟鍛�']}}</view>
+                                </view>
+                            </view>
+                        </uni-card>
+                    </view>
+                    <view class="over" v-show="HBillList.length == 0">鏆傛棤鏁版嵁</view>
+                </scroll-view>
+                <uni-pagination id="#pagination" title="鏍囬鏂囧瓧" v-model="curPage" :pageSize="size" :total="length"
+                    @update:modelValue="pageUpdate"></uni-pagination>
+            </view>
+
+        </uni-popup>
+    </view>
+</template>
+
+<script>
+    import dayjs from 'dayjs';
+    import {
+        CommonUtils
+    } from '@/utils/common';
+    import {
+        getUserInfo
+    } from '@/utils/auth';
+    export default {
+        name: "SampleSchemePopup",
+        emits: ["update:modelValue"],
+        data() {
+            return {
+                dayjs: dayjs,
+                enablefocus: false,
+                size: 20,
+                curPage: 1,
+                length: 0,
+                page: 0,
+                HWorkShop: '鍏ㄩ儴杞﹂棿',
+                HWorkShopList: ['鍏ㄩ儴杞﹂棿'],
+                HWorkShopValues: [],
+                HCode: '',
+                HBillList: [],
+                HPrdOrderBillNo: '',
+                HBeginDate: dayjs(new Date()).subtract(30, 'd').format("YYYY-MM-DD"),
+                HEndDate: dayjs(new Date()).format("YYYY-MM-DD"),
+                panelHeight: 0,
+
+                multiSouceBillList: []
+            };
+        },
+        props: {
+            bindKey: {
+                type: [String, Number],
+                required: true
+            },
+            HStockOrgID: {
+                type: [String, Number],
+            },
+        },
+        methods: {
+            async pageUpdate(e) {
+                console.log('e: ', e);
+                this.curPage = e
+                await this.$nextTick()
+                this.getBillList()
+            },
+            async popupChangeHandler(e) {
+                if (e.show === true) {
+                    this.getBillList()
+                }
+            },
+            async getDept() {
+                try {
+                    let res = await CommonUtils.doRequest2Async({
+                        url: '/Sc_ICMOBill/GetHDeptList',
+                        data: {
+                            "HOrgID": uni.getStorageSync("OrganizationID")
+                        }
+                    })
+                    
+                    let {data, count, Message} = res.data
+                    if(count == 1) {
+                        this.HWorkShopList = ['鍏ㄩ儴杞﹂棿']
+                        this.HWorkShopList.push(...Array.from(data).map(e => e.HName))
+                        this.HWorkShopValues = data
+                    }else {
+                        CommonUtils.showTips({
+                            title: '娓╅Θ鎻愮ず',
+                            message: `鍒濆鍖栬溅闂村け璐�: ${Message}`
+                        })
+                    }
+                }catch(err) {
+                    CommonUtils.showTips({
+                        title: '娓╅Θ鎻愮ず',
+                        message: `鍒濆鍖栬溅闂村け璐�: ${err}`
+                    })
+                }
+                
+            },
+            async exit() {
+                this.size = 20
+                this.curPage = 1
+                this.length = 0
+                this.page = 0
+                this.HSourceBillNo = ''
+                this.HMater = ''
+                this.HCustom = ''
+                this.HBillList = []
+                this.enablefocus = false
+                this.multiSouceBillList = []
+                // 闇�瑕佺瓑寰呴〉闈㈠唴鐨勬暟鎹祴鍊煎畬姣�
+                await this.$nextTick()
+                this.$refs.popup.close();
+            },
+            search() {
+                this.getBillList()
+            },
+            showPopup() {
+                this.$refs.popup.open();
+            },
+            clickCard(bill, index) {
+                let retVal = {}
+                retVal[this.bindKey] = bill
+                console.log('retVal: ', retVal);
+                this.$emit("update", {
+                    retVal: retVal
+                })
+            },
+            getsWhere() {
+                let sWhere =
+                    `  and 鎵撳嵃娆℃暟 >= 0 and HPRDORGID = '${uni.getStorageSync("OrganizationID")}' and ISNULL(瀹℃牳浜�,'') != '' and ISNULL(鍏抽棴浜�,'')='' and HBillSubType<>'SUB'`
+
+                if (this.HBeginDate && this.HEndDate) {
+                    sWhere += ` and  CONVERT(varchar(100),鏃ユ湡, 23) between '${this.HBeginDate}' and '${this.HEndDate}'`
+                }
+                if (this.HPrdOrderBillNo) {
+                    sWhere += ` and 鐢熶骇璁㈠崟鍙� like'%${this.HPrdOrderBillNo}%`
+                }
+                if (this.HWorkShop != '鍏ㄩ儴杞﹂棿') {
+                    let workshopValue = this.HWorkShopValues.find(e => e.HName = this.HStatus )
+                    sWhere += ` and HWorkShopID like '%${workshopValue.HItemID}%'`
+                }
+                return sWhere
+            },
+            getBillList() {
+                this.HBillList = []
+                this.length = this.length || 0
+                this.page = 0
+                this.curPage = this.curPage || 1
+                CommonUtils.doRequest(
+                    "/LEMS/Sc_ProcessExchangeBillList_Query_byPage", {
+                        sWhere: this.getsWhere(),
+                        user: getUserInfo()['Czymc'],
+                        Organization: uni.getStorageSync("Organization"),
+                        page: this.curPage,
+                        size: this.size,
+                        HBillSubType: 3772
+                    },
+                    (res) => {
+                        let {
+                            data,
+                            count,
+                            Message
+                        } = res.data
+                        if (count > 0) {
+                            this.length = count
+                            // const result = [];
+                            // for (let i = 0; i < data.length; i += this.size) {
+                            //     result.push(data.slice(i, i + this.size));
+                            // }
+                            this.HBillList = data
+                            // this.page = result.length
+                            setTimeout(() => {
+                                this.enablefocus = true
+                            }, 500)
+                        } else {
+                            setTimeout(() => {
+                                this.enablefocus = true
+                            }, 500)
+                            uni.showToast({
+                                icon: 'none',
+                                title: Message
+                            })
+                        }
+                    }
+                )
+            },
+        },
+    }
+</script>
+
+<style lang="scss">
+    button {}
+
+    .content {
+        box-sizing: border-box;
+        border-radius: 15rpx 15rpx 0 0;
+        padding: 20rpx 20rpx 40rpx 20rpx;
+        background-color: #fff;
+        display: flex;
+        flex-direction: column;
+        gap: 10rpx;
+
+        .search-condition {
+            display: flex;
+            flex-direction: row;
+            align-items: center;
+            gap: 20rpx;
+            font-size: 30rpx;
+
+            .title {
+                width: 5rem;
+                text-align: right;
+            }
+
+            .right {
+                flex: 1;
+                border-radius: 22rpx;
+                border: 1px solid #acacac;
+                height: auto;
+                padding: 8rpx 16rpx;
+
+                input {
+                    width: 100%;
+                    font-size: 30rpx;
+                }
+
+                .uni-combox {
+                    padding: 0;
+                    height: auto;
+
+                    .uni-input-placeholder,
+                    .uni-input-input {
+                        font-size: 26rpx;
+                    }
+                }
+            }
+        }
+
+        .buttons {
+            display: flex;
+            flex-direction: row;
+            gap: 20rpx;
+            justify-content: flex-end;
+
+            >button {
+                display: inline-flex;
+                width: 4rem;
+            }
+        }
+
+        .options-wrapper {
+            padding: 20rpx;
+            display: flex;
+            flex-direction: column;
+            gap: 20rpx;
+
+            .item-wrapper {
+                display: flex;
+                flex-direction: row;
+                flex-wrap: wrap;
+                gap: 8rpx 0;
+            }
+
+            view {
+                margin: 0 !important;
+                box-sizing: border-box;
+
+            }
+
+            .item {
+                display: flex;
+                flex-direction: row;
+                align-items: center;
+
+                .left {
+                    padding: 0 20rpx;
+                }
+
+                .right {}
+            }
+        }
+
+        .uni-card--is-active {
+            background-color: rgba(0, 122, 255, 0.2);
+        }
+
+        .daterange {
+            display: flex;
+            flex-direction: row;
+            gap: 10rpx;
+            justify-content: center;
+            align-items: center;
+
+        }
+    }
+</style>
\ No newline at end of file
diff --git a/components/ZLGL/ProcessPopup.vue b/components/ZLGL/ProcessPopup.vue
new file mode 100644
index 0000000..7420f34
--- /dev/null
+++ b/components/ZLGL/ProcessPopup.vue
@@ -0,0 +1,269 @@
+<template>
+    <view>
+        <uni-popup ref="popup" type="bottom" @change="popupChangeHandler">
+            <view class="content">
+                <view class="search-condition">
+                    <view class="title"><text>宸ュ簭浠g爜: </text></view>
+                    <view class="right"><input type="text" v-model="HCode" @confirm="getBillList" /></view>
+                </view>
+                <view class="search-condition">
+                    <view class="title"><text>宸ュ簭鍚嶇О: </text></view>
+                    <view class="right"><input type="text" v-model="HName" @confirm="getBillList" /></view>
+                </view>
+                <view class="buttons">
+                    <button size="mini" type="primary" @click="search">鏌ヨ</button>
+                    <view style="flex: 1;"></view>
+                    <button size="mini" type="primary" @click="exit">閫�鍑�</button>
+                </view>
+                <scroll-view id="#BillListPanel" scroll-y="true" style="height: 55vh;">
+                    <view class="options-wrapper" v-show="HBillList.length != 0">
+                        <uni-card :is-active="bill.isActive" :class="bill.isActive?'uni-card--is-active':''"
+                            v-for="(bill, index) in HBillList[curPage-1]" :key="index" :title="bill['宸ュ簭鍚嶇О']" :extra="`${bill['宸ュ簭浠g爜']}`"
+                            @tap="clickCard(bill, index)">
+                            <view class="item">
+                                <view class="left">妫�楠岄」鐩被鍒�: </view>
+                                <view class="right">{{bill['妫�楠岄」鐩被鍒�']}}</view>
+                            </view>
+                            <view class="item">
+                                <view class="left">绛夌骇: </view>
+                                <view class="right">{{bill['绛夌骇']}}</view>
+                            </view>
+                            <view class="item">
+                                <view class="left">绂佺敤鏍囪: </view>
+                                <view class="right">{{bill['绂佺敤鏍囪']}}</view>
+                            </view>
+                            <view class="item">
+                                <view class="left">澶囨敞: </view>
+                                <view class="right">{{bill['澶囨敞']}}</view>
+                            </view>
+                            <view class="item">
+                                <view class="left">浣跨敤鏍囪: </view>
+                                <view class="right">{{bill['浣跨敤鏍囪']}}</view>
+                            </view>
+                            <view class="item">
+                                <view class="left">浣跨敤缁勭粐: </view>
+                                <view class="right">{{bill['浣跨敤缁勭粐鍚嶇О']}}</view>
+                            </view>
+                        </uni-card>
+                    </view>
+                    <view class="over" v-show="HBillList.length == 0">鏆傛棤鏁版嵁</view>
+                </scroll-view>
+                <uni-pagination id="#pagination" title="鏍囬鏂囧瓧" v-model="curPage" :pageSize="size"
+                    :total="length"></uni-pagination>
+            </view>
+
+        </uni-popup>
+    </view>
+</template>
+
+<script>
+    import dayjs from 'dayjs';
+    import {
+        CommonUtils
+    } from '@/utils/common';
+    import {
+        getUserInfo
+    } from '@/utils/auth';
+    export default {
+        name: "SampleSchemePopup",
+        emits: ["update:modelValue"],
+        data() {
+            return {
+                dayjs: dayjs,
+                enablefocus: false,
+                size: 20,
+                curPage: 1,
+                length: 0,
+                page: 0,
+                HName: '',
+                HCode: '',
+                HBillList: [],
+                panelHeight: 0,
+
+                multiSouceBillList: []
+            };
+        },
+        props: {
+            bindKey: {
+                type: [String, Number],
+                required: true
+            },
+            HStockOrgID: {
+                type: [String, Number],
+            },
+        },
+        methods: {
+            popupChangeHandler(e) {
+                if (e.show === true) {
+                    this.getBillList()
+                }
+            },
+            async exit() {
+                this.size = 20
+                this.curPage = 1
+                this.length = 0
+                this.page = 0
+                this.HSourceBillNo = ''
+                this.HMater = ''
+                this.HCustom = ''
+                this.HBillList = []
+                this.enablefocus = false
+                this.multiSouceBillList = []
+                // 闇�瑕佺瓑寰呴〉闈㈠唴鐨勬暟鎹祴鍊煎畬姣�
+                await this.$nextTick()
+                this.$refs.popup.close();
+            },
+            search() {
+                this.getBillList()
+            },
+            showPopup() {
+                this.$refs.popup.open();
+            },
+            clickCard(bill, index) {
+                let retVal = {}
+                retVal[this.bindKey] = bill
+                console.log('retVal: ', retVal);
+                this.$emit("update", {
+                    retVal: retVal
+                })
+            },
+            getsWhere() {
+                let sWhere = ` and 绂佺敤鏍囪 !='Y' and  ISNULL(瀹℃牳浜�,'')!=''  and HUSEORGID = '${ uni.getStorageSync("OrganizationID")}'`
+
+               if (this.HCode) {
+                   swhere += ` and 宸ュ簭浠g爜 like '%${this.HCode}%'`
+               }
+               if (this.HName) {
+                   swhere += ` and 宸ュ簭鍚嶇О like '%${this.HName}%'`
+               }
+                return sWhere
+            },
+            getBillList() {
+                this.HBillList = []
+                this.length = 0
+                this.page = 0
+                this.curPage = 1
+                CommonUtils.doRequest(
+                    "/Gy_Process/list", {
+                        sWhere: this.getsWhere(),
+                        user: getUserInfo()['Czymc']
+                    },
+                    (res) => {
+                        let {
+                            data,
+                            count,
+                            Message
+                        } = res.data
+                        if (count == 1) {
+                            this.length = Array.from(data).length
+                            const result = [];
+                            for (let i = 0; i < data.length; i += this.size) {
+                                result.push(data.slice(i, i + this.size));
+                            }
+                            this.HBillList = result
+                            this.page = result.length
+                            setTimeout(() => {
+                                this.enablefocus = true
+                            }, 500)
+                        } else {
+                            setTimeout(() => {
+                                this.enablefocus = true
+                            }, 500)
+                            uni.showToast({
+                                icon: 'none',
+                                title: Message
+                            })
+                        }
+                    }
+                )
+            },
+        },
+    }
+</script>
+
+<style lang="scss">
+    .content {
+        box-sizing: border-box;
+        border-radius: 15rpx 15rpx 0 0;
+        padding: 20rpx 20rpx 40rpx 20rpx;
+        background-color: #fff;
+        display: flex;
+        flex-direction: column;
+        gap: 10rpx;
+
+        .search-condition {
+            display: flex;
+            flex-direction: row;
+            align-items: center;
+            gap: 20rpx;
+            font-size: 30rpx;
+
+            .title {
+                width: 5rem;
+                text-align: right;
+            }
+
+            .right {
+                flex: 1;
+                border-radius: 22rpx;
+                border: 1px solid #acacac;
+                height: auto;
+                padding: 8rpx 16rpx;
+
+                input {
+                    width: 100%;
+                    font-size: 30rpx;
+                }
+            }
+        }
+
+        .buttons {
+            display: flex;
+            flex-direction: row;
+            gap: 20rpx;
+            justify-content: flex-end;
+
+            >button {
+                display: inline-flex;
+                width: 4rem;
+            }
+        }
+
+        .options-wrapper {
+            padding: 20rpx;
+            display: grid;
+            grid-template-columns: repeat(1, 1fr);
+            gap: 20rpx;
+
+            >view {
+                margin: 0 !important;
+                box-sizing: border-box;
+
+            }
+
+            .item {
+                .left {
+                    display: inline-block;
+                    width: 6rem;
+                }
+
+                .right {
+                    display: inline-block;
+                }
+            }
+        }
+
+        .uni-card--is-active {
+            background-color: rgba(0, 122, 255, 0.2);
+        }
+
+        .daterange {
+            display: flex;
+            flex-direction: row;
+            gap: 10rpx;
+            justify-content: center;
+            align-items: center;
+
+        }
+    }
+</style>
\ No newline at end of file
diff --git a/components/ZLGL/SampleSchemePopup.vue b/components/ZLGL/SampleSchemePopup.vue
index 7df8b14..a419f8c 100644
--- a/components/ZLGL/SampleSchemePopup.vue
+++ b/components/ZLGL/SampleSchemePopup.vue
@@ -60,7 +60,7 @@
                     <view class="over" v-show="HBillList.length == 0">鏆傛棤鏁版嵁</view>
                 </scroll-view>
                 <uni-pagination id="#pagination" title="鏍囬鏂囧瓧" v-model="curPage" :pageSize="size"
-                    :total="length"></uni-pagination>
+                    :total="length" ></uni-pagination>
             </view>
 
         </uni-popup>
diff --git a/manifest.json b/manifest.json
index c0a3ed6..46f764f 100644
--- a/manifest.json
+++ b/manifest.json
@@ -2,8 +2,8 @@
     "name" : "鏅轰簯LMES",
     "appid" : "__UNI__B002F49",
     "description" : "",
-    "versionName" : "2.0.7",
-    "versionCode" : 207,
+    "versionName" : "2.0.9",
+    "versionCode" : 209,
     "transformPx" : false,
     /* 5+App鐗规湁鐩稿叧 */
     "app-plus" : {
diff --git a/pages/ZLGL/shoujianjianyan/form.vue b/pages/ZLGL/shoujianjianyan/form.vue
index 8da4f9e..a22e945 100644
--- a/pages/ZLGL/shoujianjianyan/form.vue
+++ b/pages/ZLGL/shoujianjianyan/form.vue
@@ -29,62 +29,75 @@
                     <view class="form-item">
                         <view class="left">鐢熶骇璧勬簮</view>
                         <view class="right">
-                            <input type="text" value="" />
+                            <uni-combox :candidates="GySourceNameList" placeholder="璇烽�夋嫨鐢熶骇璧勬簮" v-model="hform.HSourceName"
+                                @update:modelValue="HSourceChange"></uni-combox>
                         </view>
                     </view>
                     <view class="form-item">
                         <view class="left">鐢熶骇鐝</view>
                         <view class="right">
-                            <input type="text" value="" />
-                        </view>
-                    </view>
-                    <view class="form-item">
-                        <view class="left">鐢熶骇璧勬簮</view>
-                        <view class="right">
-                            <input type="text" value="" />
+                            <uni-combox :candidates="GyWorkShiftNameList" placeholder="璇烽�夋嫨鐢熶骇鐝"
+                                v-model="hform.HShiftsName" @update:modelValue="HWorkShiftChange"></uni-combox>
                         </view>
                     </view>
                     <view class="form-item">
                         <view class="left">浠诲姟鍗曞彿</view>
-                        <view class="right">
-                            <input type="text" value="" />
+                        <view class="right disabled">
+                            <input type="text" :value="hform.HICMOBillNo" disabled />
                         </view>
+                        <view class="icon-wrapper-big"><uni-icons type="search" size="20"
+                                @click="showSelectorModule(hform, 5)"></uni-icons></view>
                     </view>
                     <view class="form-item">
                         <view class="left">浠诲姟鍗曟暟閲�</view>
                         <view class="right">
-                            <input type="number" value="" />
+                            <input type="number" v-model="hform.HICMOQty" />
                         </view>
                     </view>
                     <view class="form-item">
                         <view class="left">娴佽浆鍗″彿</view>
-                        <view class="right">
-                            <input type="text" value="" />
+                        <view class="right disabled">
+                            <input type="text" :value="hform.HProcExchBillNo" disabled />
                         </view>
+                        <view class="icon-wrapper-big"><uni-icons type="search" size="20"
+                                @click="showSelectorModule(hform, 6)"></uni-icons></view>
                     </view>
                     <view class="form-item">
                         <view class="left">娴佽浆鍗℃暟閲�</view>
                         <view class="right">
-                            <input type="number" value=""  />
+                            <input type="number" v-model="hform.HProcExchQty" />
+                        </view>
+                    </view>
+                    <view class="form-item">
+                        <view class="left">浜у搧浠g爜</view>
+                        <view class="right disabled">
+                            <input type="text" disabled :value="hform.HMaterNumber" />
+                        </view>
+                        <view class="icon-wrapper-big">
+                            <uni-icons type="search" size="20" @click="showSelectorModule(hform, 4)"></uni-icons>
                         </view>
                     </view>
                     <view class="form-item">
                         <view class="left">浜у搧鍚嶇О</view>
-                        <view class="right">
-                            <input type="text" value="" />
+                        <view class="right disabled">
+                            <input type="text" disabled :value="hform.HMaterName" />
                         </view>
                     </view>
                     <view class="form-item">
                         <view class="left">妫�楠屽憳</view>
                         <view class="right">
-                            <input type="text" value="" />
+                            <uni-combox :candidates="GyFirstCheckEmpNameList" placeholder="璇烽�夋嫨妫�楠屽憳"
+                                :v-model="hform.HFirstCheckEmpName"
+                                @update:modelValue="HFirstCheckEmpChange"></uni-combox>
                         </view>
                     </view>
                     <view class="form-item">
                         <view class="left">妫�楠屾柟妗�</view>
-                        <view class="right">
-                            <input type="text" value="" />
+                        <view class="right disabled">
+                            <input type="text" disabled value="" />
                         </view>
+                        <view class="icon-wrapper-big"><uni-icons type="search" size="20"
+                                @click="showSelectorModule(hform, 7)"></uni-icons></view>
                     </view>
                     <view class="form-item">
                         <view class="left">鎵瑰彿</view>
@@ -110,9 +123,11 @@
                     </view>
                     <view class="form-item">
                         <view class="left">宸ュ簭</view>
-                        <view class="right">
-                            <input type="text" value="" />
+                        <view class="right disabled">
+                            <input type="text" disabled :value="hform.HProcName" />
                         </view>
+                        <view class="icon-wrapper-big"><uni-icons type="search" size="20"
+                                @click="showSelectorModule(hform, 8)"></uni-icons></view>
                     </view>
                     <view class="form-item">
                         <view class="left">澶囨敞</view>
@@ -217,13 +232,13 @@
                                     <view style="flex-shrink: 0;"><text>妫�楠岄」鐩細</text></view>
                                     <input type="text" :value="checkItem.HQCCheckItemName" disabled="" />
                                     <view class="icon-wrapper"><uni-icons type="search" size="16"
-                                            @click="showHQCCheckItemSelector"></uni-icons></view>
+                                            @click="showSelectorModule(checkItem, 2)"></uni-icons></view>
                                 </view>
                                 <view class="detail editable">
                                     <view style="flex-shrink: 0;"><text>妫�楠屼华鍣細</text></view>
                                     <input type="text" :value="checkItem.HInspectInstruMentName" disabled="" />
                                     <view class="icon-wrapper"><uni-icons type="search" size="16"
-                                            @click="showInspectInstruMentSelector"></uni-icons></view>
+                                            @click="showSelectorModule(checkItem, 3)"></uni-icons></view>
                                 </view>
                                 <view class="detail editable">
                                     <view><text>缁撹锛�</text></view>
@@ -236,7 +251,7 @@
                                             @change="HResultChange(checkItem.num, $event)" />
                                     </view>
                                 </view>
-                                <view class="detail editable">
+                                <view class="detail editable" style="position: relative;">
                                     <view style="flex-shrink: 0;"><text>鍒嗘瀽鏂规硶锛�</text></view>
                                     <picker :range="arrayAnalysisMethod" range-key="name"
                                         @change="HAnalysisMethodChange(checkItem.num, $event)">
@@ -250,7 +265,7 @@
                                     <view>
                                         <switch type="checkbox" style="transform:scale(0.7);"
                                             :checked="checkItem.HKeyInspect"
-                                            @change="HKeyInspectChange(checkItem.num, $event)" />
+                                            @change="HKeyInspectChange(checkItem, $event)" />
                                     </view>
                                 </view>
                                 <view class="detail" v-if="checkItem.HQCStd">
@@ -284,6 +299,7 @@
                                     <text>骞冲潎鍊硷細</text>{{checkItem.HAvg}}
                                 </view>
                             </view>
+                            <view style="height: 20rpx;"></view>
                             <view class="more">
                                 <view class="part" style="color: #da0000;" @tap.stop="removeCheckItem(checkItem)">
                                     <uni-icons type="trash" style="color: #da0000;margin-right: 10rpx;"
@@ -310,7 +326,7 @@
                                     <view style="flex-shrink: 0;"><text>鎶芥牱鏂规锛�</text></view>
                                     <input type="text" :value="SamplingItem.HSampleSchemeName" disabled />
                                     <view class="icon-wrapper"><uni-icons type="search" size="16"
-                                            @click="showHSampleSchemeNameSelector(SamplingItem)"></uni-icons></view>
+                                            @click="showSelectorModule(SamplingItem, 1)"></uni-icons></view>
                                 </view>
                                 <view class="detail editable">
                                     <text>鎶芥牱绫诲瀷锛�</text>{{SamplingItem.HSamplingType}}
@@ -365,23 +381,53 @@
             <button class="btn-a" size="mini" @tap="addNew">鏂板</button>
             <button class="btn-c" size="mini" @tap="goBack">閫�鍑�</button>
         </view>
-        <SampleSchemePopupVue ref="sampleSchemePopup" @update="SampleSchemeComplete" :bindKey="currentChechItemIDCache">
+        <SampleSchemePopupVue v-if="enablePopupModule == PopupModuleNameList[1]" ref="listPopup"
+            @update="SampleSchemeComplete" :bindKey="currentChechItemIDCache">
         </SampleSchemePopupVue>
+        <CheckItemPopupVue v-if="enablePopupModule == PopupModuleNameList[2]" ref="listPopup"
+            @update="CheckItemComplete" :bindKey="currentChechItemIDCache">
+        </CheckItemPopupVue>
+        <InspectMentPopupVue v-if="enablePopupModule == PopupModuleNameList[3]" ref="listPopup"
+            @update="InspectMentComplete" :bindKey="currentChechItemIDCache">
+        </InspectMentPopupVue>
+        <MaterialPopupVue v-if="enablePopupModule == PopupModuleNameList[4]" ref="listPopup" @update="MaterComplete"
+            :bindKey="0">
+        </MaterialPopupVue>
+        <ICMOBillPopupVue v-if="enablePopupModule == PopupModuleNameList[5]" ref="listPopup" @update="ICMOBillComplete"
+            :bindKey="0"></ICMOBillPopupVue>
+        <ProcExchBillPopupVue v-if="enablePopupModule == PopupModuleNameList[6]" ref="listPopup" @update="ProcExchBillComplete"
+            :bindKey="0"></ProcExchBillPopupVue>
+        <ProcessPopupVue v-if="enablePopupModule == PopupModuleNameList[8]" ref="listPopup" @update="HProcComplete"
+            :bindKey="0"></ProcessPopupVue>
     </view>
 </template>
 
 <script>
     import dayjs from 'dayjs'
-import {
+    import {
         CommonUtils
     } from '../../../utils/common'
     import InspectValueTemplateVue from '@/components/ZLGL/InspectValueTemplate.vue'
     import SampleSchemePopupVue from '@/components/ZLGL/SampleSchemePopup.vue'
-import { getUserInfo } from '../../../utils/auth'
+    import CheckItemPopupVue from '@/components/ZLGL/CheckItemPopup.vue'
+    import InspectMentPopupVue from '../../../components/ZLGL/InspectMentPopup.vue'
+    import MaterialPopupVue from '../../../components/ZLGL/MaterialPopup.vue'
+    import ICMOBillPopupVue from '../../../components/ZLGL/ICMOBillPopup.vue'
+    import ProcExchBillPopupVue from '../../../components/ZLGL/ProcExchBillPopup.vue'
+    import ProcessPopupVue from '../../../components/ZLGL/ProcessPopup.vue'
+    import {
+        getUserInfo
+    } from '../../../utils/auth'
     export default {
         components: {
             InspectValueTemplateVue,
-            SampleSchemePopupVue
+            SampleSchemePopupVue,
+            CheckItemPopupVue,
+            InspectMentPopupVue,
+            MaterialPopupVue,
+            ICMOBillPopupVue,
+            ProcExchBillPopupVue,
+            ProcessPopupVue
         },
         computed: {
             judgeConclusion: {
@@ -398,8 +444,24 @@
                 mainTabSelected: 1,
                 subTabSelected: 1,
 
+                // 鎺у埗褰撳墠鏄剧ず鐨勫脊绐楁ā鍧�
+                enablePopupModule: '',
+                PopupModuleNameList: ["", "SampleScheme", "CheckItem",
+                    "InspectMent", "Material", "ICMOBill", "ProcExchBill", "QCScheme", "Process"
+                ],
                 // 褰撳墠鎿嶄綔鐨勬楠屽崟ID缂撳瓨
                 currentChechItemIDCache: -1,
+
+                // uni-combox 閫夋嫨鍣ㄤ娇鐢�
+                // 鐢熶骇璧勬簮
+                GySourceList: [],
+                GySourceNameList: [],
+                // 鐝
+                GyWorkShiftList: [],
+                GyWorkShiftNameList: [],
+                // 妫�楠屽憳
+                GyFirstCheckEmpList: [],
+                GyFirstCheckEmpNameList: [],
 
                 // 妫�楠屾柟妗�
                 arrayAnalysisMethod: [{
@@ -436,7 +498,7 @@
                     "HICMOBillNo": "",
                     "HICMOInterID": "0",
                     "HICMOEntryID": "1",
-                    "HICMOQty": "",
+                    "HICMOQty": "0",
                     "HProcExchBillNo": "",
                     "HProcExchInterID": "0",
                     "HProcExchEntryID": "0",
@@ -444,8 +506,8 @@
                     "HMaterNumber": "",
                     "HMaterID": "0",
                     "HMaterName": "",
-                    "HFirstCheckEmpName":  "",
-                    "HFirstCheckEmp":0,
+                    "HFirstCheckEmpName": "",
+                    "HFirstCheckEmp": 0,
                     "HQCSchemeName": "",
                     "HQCSchemeID": "0",
                     "HBatchNo": "",
@@ -521,11 +583,156 @@
             }
         },
         methods: {
-            async showHSampleSchemeNameSelector(item) {
-                this.currentChechItemIDCache = item.num
+            // 妫�楠屽憳鍒濆鍖�
+            async InitHEmp() {
+                try {
+                    let res = await CommonUtils.doRequest2Async({
+                        url: '/Gy_Employee/list',
+                        data: {
+                            sWhere: `  and 缁勭粐鍚嶇О = '${uni.getStorageSync("Organization")}' and 绂佺敤鏍囪 = ''and 瀹℃牳浜� !='' order by 閮ㄩ棬浠g爜`,
+                            user: getUserInfo()['Czymc'],
+                            Organization: uni.getStorageSync("Organization")
+                        }
+                    })
+
+                    let {
+                        data,
+                        Message,
+                        count
+                    } = res.data
+
+                    if (count == 1) {
+                        console.log('data: ', data);
+                        this.GyFirstCheckEmpList = data
+                        this.GyFirstCheckEmpNameList = Array.from(data).map(e => e["鑱屽憳鍚嶇О"])
+                    } else {
+                        CommonUtils.showTips({
+                            title: '娓╅Θ鎻愮ず',
+                            message: `鍒濆鍖栨楠屽憳澶辫触: ${Message}`
+                        })
+                    }
+
+                } catch (err) {
+                    CommonUtils.showTips({
+                        title: '娓╅Θ鎻愮ず',
+                        message: `鍒濆鍖栨楠屽憳澶辫触: ${err}`
+                    })
+                }
+            },
+            async HFirstCheckEmpChange(e) {
+                console.log('閫変腑妫�楠屽憳: ', e);
+                let index = this.GyFirstCheckEmpList.findIndex(elem => elem["鑱屽憳鍚嶇О"] == e)
+                if (index == -1) {
+                    this.hform.HFirstCheckEmp = 0
+                    this.hform.HFirstCheckEmpName = ''
+                    return
+                }
+
+                this.hform.HFirstCheckEmp = this.GyFirstCheckEmpList[index]["HItemID"]
+                this.hform.HFirstCheckEmpName = this.GyFirstCheckEmpList[index]["鑱屽憳鍚嶇О"]
+            },
+            // 鐢熶骇鐝鍒濆鍖�
+            async InitHWorkShift() {
+                try {
+                    let res = await CommonUtils.doRequest2Async({
+                        url: '/Gy_ShiftsController/Get_Gy_WorkShiftList',
+                        data: {
+                            sWhere: ` and 绂佺敤鏍囪 = '' and ISNULL(瀹℃牳浜�,'')  != '' and 浣跨敤缁勭粐鍚嶇О = '${uni.getStorageSync("Organization")}'`,
+                            HMaker: getUserInfo()['Czymc']
+                        }
+                    })
+
+                    let {
+                        data,
+                        Message,
+                        count
+                    } = res.data
+
+                    if (count == 1) {
+                        console.log('data: ', data);
+                        this.GyWorkShiftList = data
+                        this.GyWorkShiftNameList = Array.from(data).map(e => e["鐝鍚嶇О"])
+                    } else {
+                        CommonUtils.showTips({
+                            title: '娓╅Θ鎻愮ず',
+                            message: `鍒濆鍖栫彮娆″け璐�: ${Message}`
+                        })
+                    }
+
+                } catch (err) {
+                    CommonUtils.showTips({
+                        title: '娓╅Θ鎻愮ず',
+                        message: `鍒濆鍖栫彮娆″け璐�: ${err}`
+                    })
+                }
+            },
+            async HWorkShiftChange(e) {
+                console.log('閫変腑鐝: ', e);
+                let index = this.GyWorkShiftList.findIndex(elem => elem["鐝鍚嶇О"] == e)
+                if (index == -1) {
+                    this.hform.HWorkShiftID = 0
+                    this.hform.HWorkShiftName = ''
+                    return
+                }
+
+                this.hform.HWorkShiftID = this.GySourceList[index]["HInterID"]
+                this.hform.HWorkShiftName = this.GySourceList[index]["鐝鍚嶇О"]
+            },
+            // 鐢熶骇璧勬簮鏇存柊
+            // 鐢熶骇璧勬簮鍒濆鍖�
+            async InitHSource() {
+                try {
+                    let res = await CommonUtils.doRequest2Async({
+                        url: '/Gy_Source/list',
+                        data: {
+                            sWhere: `and 绂佺敤鏍囪 != 'Y' and ISNULL(瀹℃牳浜�,'')  != '' and HUSEORGID = '100038'`,
+                            user: getUserInfo()['Czymc']
+                        }
+                    })
+
+                    let {
+                        data,
+                        Message,
+                        count
+                    } = res.data
+
+                    if (count == 1) {
+                        this.GySourceList = data
+                        this.GySourceNameList = Array.from(data).map(e => e["鐢熶骇璧勬簮鍚嶇О"])
+                    } else {
+                        CommonUtils.showTips({
+                            title: '娓╅Θ鎻愮ず',
+                            message: `鍒濆鍖栫敓浜ц祫婧愬け璐�: ${Message}`
+                        })
+                    }
+
+                } catch (err) {
+                    CommonUtils.showTips({
+                        title: '娓╅Θ鎻愮ず',
+                        message: `鍒濆鍖栫敓浜ц祫婧愬け璐�: ${err}`
+                    })
+                }
+            },
+            // 鐢熶骇璧勬簮鏇存柊
+            async HSourceChange(e) {
+                console.log('閫変腑鐢熶骇璧勬簮: ', e);
+                let index = this.GySourceList.findIndex(elem => elem["鐢熶骇璧勬簮鍚嶇О"] == e)
+                if (index == -1) {
+                    this.hform.HSourceID = 0
+                    this.hform.HSourceName = ''
+                    return
+                }
+
+                this.hform.HSourceID = this.GySourceList[index]["HItemID"]
+                this.hform.HSourceName = this.GySourceList[index]["鐢熶骇璧勬簮鍚嶇О"]
+            },
+            // 鏄剧ず寮圭獥
+            async showSelectorModule(item, index) {
+                this.currentChechItemIDCache = item.num || 0 // 0 琛ㄧず娌℃湁浠讳綍瀛愯〃琚�変腑
+                this.enablePopupModule = this.PopupModuleNameList[index]
                 console.log('this.$refs: ', this.$refs);
                 await this.$nextTick()
-                this.$refs.sampleSchemePopup.showPopup()
+                this.$refs.listPopup.showPopup()
             },
             getAnalysisMethodDisplay(val) {
                 console.log('AnalysisMethodVal: ', val);
@@ -613,19 +820,39 @@
             // 缁撹淇敼
             HResultChange(id, e) {
                 console.log('e: ', e);
-                this.checkItems[id]["HResult"] = e.detail.value ? 1 : 2
+                this.checkItems[id]["HResult"] = e.detail.value
             },
             // 妫�楠屾柟妗堜慨鏀�
             HAnalysisMethodChange(id, e) {
                 console.log('e: ', e);
                 this.checkItems[id]["HAnalysisMethod"] = this.arrayAnalysisMethod[e.detail.value]["value"]
+
+                // 妫�鏌ユ槸鍚﹀彲浠ユ柊澧炴楠屽�奸」
+                this.setInspectValModule(this.checkItems[id])
             },
             // 閲嶇偣妫�鏌ヤ慨鏀�
             HKeyInspectChange(id, e) {
                 console.log('e: ', e);
                 this.checkItems[id]["HKeyInspect"] = e.detail.value
             },
-            // 妫�楠屾柟妗堥�夋嫨缁撴潫
+            // 妫�楠岄」鐩繑鍥�
+            async CheckItemComplete(e) {
+                console.log('CheckItemRet: ', e);
+                for (var key in e["retVal"]) {
+                    let data = e["retVal"][key]
+                    Object.assign(this.checkItems[key], {
+                        "HQCCheckItemID": data["HItemID"],
+                        "HQCCheckItemNumber": data["浠g爜"],
+                        "HQCCheckItemName": data["鍚嶇О"],
+                    })
+                    await this.$nextTick()
+                    this.$refs.listPopup.exit()
+                    // 纭繚鍦ㄥ脊绐楃粨鏉熷悗锛屽啀灏嗛〉闈笂鎸傚湪鐨勭粍浠剁疆绌�
+                    await this.$nextTick()
+                    this.enablePopupModule = this.PopupModuleNameList[0]
+                }
+            },
+            // 妫�楠屾柟妗堣繑鍥�
             async SampleSchemeComplete(e) {
                 console.log('SampleSchemeRet: ', e);
                 for (var key in e["retVal"]) {
@@ -648,18 +875,131 @@
                         "HSampleDamageQty": data["鏍锋湰鐮村潖鏁�"] || 0
                     })
                     await this.$nextTick()
-                    this.$refs.sampleSchemePopup.exit()
+                    this.$refs.listPopup.exit()
                     this.setInspectValModule(this.checkItems[key])
+
+                    await this.$nextTick()
+                    this.enablePopupModule = this.PopupModuleNameList[0]
+                }
+            },
+            // 妫�楠屼华鍣ㄨ繑鍥�
+            async InspectMentComplete(e) {
+                console.log('InspectInstruMentRet: ', e);
+                for (var key in e["retVal"]) {
+                    let data = e["retVal"][key]
+                    Object.assign(this.checkItems[key], {
+                        "HInspectInstruMentID": data["HItemID"],
+                        "HInspectInstruMentNumber": data["妫�楠屼华鍣ㄤ唬鐮�"],
+                        "HInspectInstruMentName": data["妫�楠屼华鍣ㄥ悕绉�"],
+                    })
+                    await this.$nextTick()
+                    this.$refs.listPopup.exit()
+                    // 纭繚鍦ㄥ脊绐楃粨鏉熷悗锛屽啀灏嗛〉闈笂鎸傚湪鐨勭粍浠剁疆绌�
+                    await this.$nextTick()
+                    this.enablePopupModule = this.PopupModuleNameList[0]
+                }
+            },
+            // 浜у搧浠g爜杩斿洖
+            async MaterComplete(e) {
+                console.log('MaterRet: ', e);
+                for (var key in e["retVal"]) {
+                    let data = e["retVal"][key]
+                    Object.assign(this.hform, {
+                        "HMaterNumber": data["鐗╂枡浠g爜"],
+                        "HMaterName": data["鐗╂枡鍚嶇О"],
+                        "HMaterID": data["HItemID"],
+                    })
+                    await this.$nextTick()
+                    this.$refs.listPopup.exit()
+                    // 纭繚鍦ㄥ脊绐楃粨鏉熷悗锛屽啀灏嗛〉闈笂鎸傚湪鐨勭粍浠剁疆绌�
+                    await this.$nextTick()
+                    this.enablePopupModule = this.PopupModuleNameList[0]
+                }
+            },
+            // 浠诲姟鍗曡繑鍥�
+            async ICMOBillComplete(e) {
+                console.log('ICMOBillRet: ', e);
+                for (var key in e["retVal"]) {
+                    let data = e["retVal"][key]
+                    Object.assign(this.hform, {
+                        "HICMOInterID": data.hmainid,
+                        "HICMOEntryID": data.HEntryID,
+                        "HICMOBillNo": data.鍗曟嵁鍙�,
+                        "HMaterNumber": data.浜у搧浠g爜,
+                        "HMaterName": data.浜у搧鍚嶇О,
+                        "HMaterID": data.HMaterID,
+                        "HICMOQty": data.鐢熶骇浠诲姟鍗曟暟閲�,
+                    })
+                    await this.$nextTick()
+                    this.$refs.listPopup.exit()
+                    // 纭繚鍦ㄥ脊绐楃粨鏉熷悗锛屽啀灏嗛〉闈笂鎸傚湪鐨勭粍浠剁疆绌�
+                    await this.$nextTick()
+                    this.enablePopupModule = this.PopupModuleNameList[0]
+                }
+            },
+            // 娴佽浆鍗¤繑鍥�
+            async ProcExchBillComplete(e) {
+                console.log('ProcExchBillRet: ', e);
+                for (var key in e["retVal"]) {
+                    let data = e["retVal"][key]
+                    Object.assign(this.hform, {
+                        "HProcExchInterID": data.hmainid,
+                        "HProcExchEntryID": data.hsubid,
+                        "HProcExchBillNo": data.鍗曟嵁鍙�,
+                    })
+                    await this.$nextTick()
+                    this.$refs.listPopup.exit()
+                    // 纭繚鍦ㄥ脊绐楃粨鏉熷悗锛屽啀灏嗛〉闈笂鎸傚湪鐨勭粍浠剁疆绌�
+                    await this.$nextTick()
+                    this.enablePopupModule = this.PopupModuleNameList[0]
+                }
+            },
+            // 妫�楠屾柟妗堣繑鍥�
+            async HQCSchemeComplete(e) {
+                console.log('HQCSchemeRet: ', e);
+                for (var key in e["retVal"]) {
+                    let data = e["retVal"][key]
+                    Object.assign(this.hform, {
+                        // "HMaterNumber": data["鐗╂枡浠g爜"],
+                        // "HMaterName": data["鐗╂枡鍚嶇О"],
+                        // "HMaterID": data["HItemID"],
+                    })
+                    await this.$nextTick()
+                    this.$refs.listPopup.exit()
+                    // 纭繚鍦ㄥ脊绐楃粨鏉熷悗锛屽啀灏嗛〉闈笂鎸傚湪鐨勭粍浠剁疆绌�
+                    await this.$nextTick()
+                    this.enablePopupModule = this.PopupModuleNameList[0]
+                }
+            },
+            // 宸ュ簭杩斿洖
+            async HProcComplete(e) {
+                console.log(' HProcRet: ', e);
+                for (var key in e["retVal"]) {
+                    let data = e["retVal"][key]
+                    Object.assign(this.hform, {
+                        "HProcName": data["宸ュ簭鍚嶇О"],
+                        "HProcID": data["HItemID"],
+                    })
+                    await this.$nextTick()
+                    this.$refs.listPopup.exit()
+                    // 纭繚鍦ㄥ脊绐楃粨鏉熷悗锛屽啀灏嗛〉闈笂鎸傚湪鐨勭粍浠剁疆绌�
+                    await this.$nextTick()
+                    this.enablePopupModule = this.PopupModuleNameList[0]
                 }
             },
             setInspectValModule(checkItem) {
+                console.log('checkItem: ', checkItem);
+                if (!checkItem.HAnalysisMethod || !checkItem.HSampleSchemeID) {
+                    return
+                }
                 // 鍖哄垎妫�楠屽�奸〉绛惧拰闈欐�侀〉绛撅紝妫�楠屽�奸〉绛剧殑id浠寮�澶�
                 this.$set(this.InspectModules, `_${checkItem.num}`, {
                     id: `_${checkItem.num}`,
                     checkItemId: checkItem.num
                 })
                 console.log(' this.arrayAnalysisMethod: ', checkItem.HAnalysisMethod);
-                let analysisMethodName = this.arrayAnalysisMethod.find(e => e.value == checkItem.HAnalysisMethod).name
+                let analysisMethodName = this.arrayAnalysisMethod.find(e => e.value == checkItem.HAnalysisMethod)
+                    .name
                 this.$set(this.subTabs, `_${checkItem.num}`, {
                     id: `_${checkItem.num}`,
                     name: `${analysisMethodName}-${checkItem.HSampleSchemeName}`
@@ -712,11 +1052,15 @@
             this.linterid = e.linterid || 0
             if (this.operationType == 1) {
                 await this.getMaxBillNo()
-            } else if (this.operationType  == 2) {
+            } else if (this.operationType == 2) {
 
-            } else if (this.operationType  == 3) {
+            } else if (this.operationType == 3) {
 
             }
+
+            await this.InitHSource()
+            await this.InitHWorkShift()
+            await this.InitHEmp()
         }
     }
 </script>
@@ -730,6 +1074,7 @@
     .uni-input {
         padding: 0
     }
+
 
     .bill-main-tabs,
     .bill-sub-tabs {
@@ -763,7 +1108,7 @@
     .bill-main-content,
     .bill-sub-content {
         box-sizing: border-box;
-        padding: 0 10rpx;
+        padding: 0 30rpx 0 30rpx;
         display: flex;
         flex-direction: column;
 
@@ -790,6 +1135,22 @@
                 flex: 1;
                 border-radius: 22rpx;
                 border: 1px solid #acacac;
+
+                .uni-combox {
+                    padding: 0;
+                    height: auto;
+
+                    .uni-input-placeholder,
+                    .uni-input-input {
+                        font-size: 26rpx;
+                    }
+                }
+
+                .uni-combox::v-deep input {
+                    height: inherit;
+                    font-size: 26rpx;
+                }
+
             }
 
             .disabled {
@@ -932,6 +1293,22 @@
         }
     }
 
+    .icon-wrapper-big {
+        background-color: #3A78FF;
+        border-radius: 100%;
+        width: 50rpx;
+        height: 50rpx;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        flex-shrink: 0;
+        margin-left: 20rpx;
+
+        .uni-icons {
+            color: #fff !important;
+        }
+    }
+
     .more {
         color: #888;
         font-size: 22rpx;
diff --git a/pages/index/index.vue b/pages/index/index.vue
index a33bcf1..af57a66 100644
--- a/pages/index/index.vue
+++ b/pages/index/index.vue
@@ -220,10 +220,11 @@
                         hidden: false,
                     },
                     {
-                    	img: '../../static/icon/icon16.png',
-                    	text: '鍏朵粬鍏ュ簱鏍¢獙',
-                    	url: '/pages/qitarukujiaoyan/table',
-                    	id: 27,
+                        img: '../../static/icon/icon16.png',
+                        text: '鍏朵粬鍏ュ簱鏍¢獙',
+                        url: '/pages/qitarukujiaoyan/table',
+                        id: 27,
+                        hidden: false,
                     },
                     {
                         img: '../../static/icon/icon8.png',
@@ -245,7 +246,7 @@
                         id: 26,
                         hidden: false,
                     },
-                    
+
 
                 ],
                 // itemData: [{
diff --git a/pages/index/login.vue b/pages/index/login.vue
index 5293b6e..5b82b65 100644
--- a/pages/index/login.vue
+++ b/pages/index/login.vue
@@ -85,7 +85,8 @@
                     "娓╁窞娴疯瘹鍏夊": 'http://122.228.39.234:7177/API/',
                     "瀹佹尝鎯犲悍宸ヤ笟": 'http://172.16.72.30:6699/API/',
                     "浣欏鍏磋揪璧峰姩鍣�": 'http://121.37.133.104/API/',
-					"鑻忓窞鍗櫤绉戞妧": 'http://221.224.60.42:8082/API_WW/',
+					"鑻忓窞鍗櫤绉戞妧-澶栫綉": 'http://221.224.60.42:8082/API_WW/',
+                    "鑻忓窞鍗櫤绉戞妧-鍐呯綉": 'http://172.16.20.233:8082/API_NW/',
 					"缈佹稕娑涙湰鍦版祴璇�": 'http://localhost:81/API/',
 					"闄堥晲鍝叉湰鍦版祴璇�": 'http://localhost:81/API/',
                 },
diff --git a/pages/shengchanlingliao/form.vue b/pages/shengchanlingliao/form.vue
index d906f73..b32460f 100644
--- a/pages/shengchanlingliao/form.vue
+++ b/pages/shengchanlingliao/form.vue
@@ -338,6 +338,7 @@
                                 },
                                 resFunction: (res) => {
                                     if (res.data.count == 1) {
+
                                         this.DisBillEntryList()
                                     } else {
                                         uni.showToast({
@@ -354,15 +355,15 @@
             },
             async refreshHBarCodeFocus() {
                 this.HBarCodeFocus = false
-                await this.$nextTick()
                 this.hform.HBarCode = ''
+                await this.$nextTick()
                 this.HBarCodeFocus = true
             },
             async refreshHBillNoFocus() {
                 this.HBillNoFocus = false
+                this.hform.HBillNo = ""
                 await this.$nextTick(() => {
                     this.HBillNoFocus = true
-                    this.hform.HBillNo = ""
                 })
             },
             playSound(e) {
@@ -398,7 +399,7 @@
                     return
                 }
                 let targetUrl = () => {
-                    if(/鏅轰簯|鎯犲悍/.test(this.hform.HStockOrgName)){
+                    if (/鏅轰簯|鎯犲悍/.test(this.hform.HStockOrgName)) {
                         return "/WEBSController/get_BillBarCode_BillCheck_Json_MateOut_HuiKang"
                     }
                     return "/WEBSController/get_BillBarCode_BillCheck_Json"
@@ -636,8 +637,12 @@
                             this.hform.HBarCode = ''
                             if (res.data.count == 1) {
                                 this.hform.HQty = ''
+                                this.refreshHBarCodeFocus()
+                                CommonUtils.playSound(1)
                                 this.DisBillEntryList()
                             } else {
+                                this.refreshHBarCodeFocus()
+                                CommonUtils.playSound(0)
                                 uni.showToast({
                                     title: res.data.Message,
                                     icon: 'none'
@@ -645,6 +650,7 @@
                             }
 
                         } catch (e) {
+                            this.refreshHBarCodeFocus()
                             CommonUtils.playSound(0)
                             this.refreshHBillNoFocus()
                             uni.showToast({
@@ -801,29 +807,27 @@
                                     this.showHSupName = false
                                 }
                             }
+                            this.refreshHBarCodeFocus()
                             //鏄剧ず琛ㄤ綋鏄庣粏
                             this.DisBillEntryList()
                             //娓呯┖鏁伴噺
                             this.hform.HQty = ''
                         } else {
+                            this.refreshHBarCodeFocus()
                             CommonUtils.playSound(0);
                             uni.showToast({
                                 title: res.data.Message,
                                 icon: 'none'
                             })
                         }
-
-                        this.refreshHBarCodeFocus()
-
                     } catch (e) {
                         CommonUtils.playSound(0)
-                        this.refreshHBillNoFocus()
+                        this.refreshHBarCodeFocus()
                         uni.showToast({
                             title: '鎺ュ彛璇锋眰澶辫触: ' + e,
                             icon: 'none'
                         })
                     }
-
                     // uni.request({
                     //     url: this.serverUrl + '/WEBSController/get_CheckTypeByBarCode_BillCheck_Json',
                     //     data: {
@@ -1095,11 +1099,11 @@
                                     oMain: sMainStr
                                 },
                             })
-                            
-                            if(!res) {
+
+                            if (!res) {
                                 return
                             }
-                            
+
                             console.log(1, res);
                             uni.hideLoading()
                             if (res.data.count == 1) {
@@ -1126,7 +1130,7 @@
                                     icon: 'none'
                                 })
                             }
-                            
+
                         } catch (e) {
                             CommonUtils.playSound(0)
                             this.refreshHBillNoFocus()

--
Gitblit v1.9.1