chenhaozhe
2025-10-30 7bd57821164a2036cb6669d8b45a8ff0976a0b84
新增 检验方案 弹窗
1个文件已添加
1个文件已修改
414 ■■■■■ 已修改文件
components/ZLGL/CheckProjectPopup.vue 305 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/ZLGL/shoujianjianyan/form.vue 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
components/ZLGL/CheckProjectPopup.vue
New file
@@ -0,0 +1,305 @@
<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="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['检验方案名称']"
                            @tap="clickCard(bill, index)">
                            <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">{{dayjs(bill['日期']).format("YYYY-MM-DD")}}</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 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>
                        </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,
                HProcessName: '',
                HMaterName: '',
                HBeginDate: dayjs(new Date()).subtract(30, 'd').format("YYYY-MM-DD"),
                HEndDate: dayjs(new Date()).format("YYYY-MM-DD"),
                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 ISNULL(审核人,'')!=''  and HOrgID  = '${ uni.getStorageSync("OrganizationID")}'`
                if (this.HBeginDate && this.HEndDate) {
                    sWhere += ` and  CONVERT(varchar(100),日期, 23) between '${this.HBeginDate}' and '${this.HEndDate}'`
                }
                if (this.HMaterName && this.HProcessName) {
                    sWhere += ` and 物料名称 = '${this.HMaterName}' and 工序名称 = '${this.HProcessName}'`
                }
                return sWhere
            },
            getBillList() {
                this.HBillList = []
                this.length = 0
                this.page = 0
                this.curPage = 1
                CommonUtils.doRequest(
                    "/QC_Management/MES_QC_CheckProjectList_Json_Main", {
                        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
                            })
                        }
                    }
                )
            },
            setRequiredInfo(MaterName, ProcessName) {
                this.HMaterName = MaterName || ""
                this.HProcessName = ProcessName || ""
            }
        },
    }
</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>
pages/ZLGL/shoujianjianyan/form.vue
@@ -94,7 +94,7 @@
                    <view class="form-item">
                        <view class="left">检验方案</view>
                        <view class="right disabled">
                            <input type="text" disabled value="" />
                            <input type="text" disabled :value="this.hform.HQCSchemeName" />
                        </view>
                        <view class="icon-wrapper-big"><uni-icons type="search" size="20"
                                @click="showSelectorModule(hform, 7)"></uni-icons></view>
@@ -395,10 +395,12 @@
        </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>
        <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>
        <CheckProjectPopupVue v-if="enablePopupModule == PopupModuleNameList[7]" ref="listPopup"
            @update="HQCSchemeComplete" :bindKey="0"></CheckProjectPopupVue>
    </view>
</template>
@@ -415,6 +417,7 @@
    import ICMOBillPopupVue from '../../../components/ZLGL/ICMOBillPopup.vue'
    import ProcExchBillPopupVue from '../../../components/ZLGL/ProcExchBillPopup.vue'
    import ProcessPopupVue from '../../../components/ZLGL/ProcessPopup.vue'
    import CheckProjectPopupVue from '../../../components/ZLGL/CheckProjectPopup.vue'
    import {
        getUserInfo
    } from '../../../utils/auth'
@@ -427,7 +430,8 @@
            MaterialPopupVue,
            ICMOBillPopupVue,
            ProcExchBillPopupVue,
            ProcessPopupVue
            ProcessPopupVue,
            CheckProjectPopupVue
        },
        computed: {
            judgeConclusion: {
@@ -732,6 +736,11 @@
                this.enablePopupModule = this.PopupModuleNameList[index]
                console.log('this.$refs: ', this.$refs);
                await this.$nextTick()
                if (index == 7) {
                    // 检验方案需要额外传递工序和物料名称两个参数
                    this.$refs.listPopup.setRequiredInfo(item.HMaterName, item.HProcName)
                }
                this.$refs.listPopup.showPopup()
            },
            getAnalysisMethodDisplay(val) {
@@ -745,7 +754,7 @@
                console.log('event: ', event);
            },
            // 检验项目新增行
            addCheckItem() {
            addCheckItem(resource) {
                let ordinal = this.getObjLength(this.checkItems) + 1
                let checkItem = {
                    "num": ordinal,
@@ -787,7 +796,16 @@
                    "HInspectResultToSee": ""
                }
                if (resource) { // 通过主表检验方案带出的检验项目
                    Object.assign(checkItem, resource)
                }
                this.$set(this.checkItems, ordinal, checkItem)
                this.$nextTick(() => {
                    // 检查是否可以新增检验值项
                    this.setInspectValModule(this.checkItems[ordinal])
                })
            },
@@ -954,16 +972,16 @@
                    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["物料代码"],
                        // "HMaterName": data["物料名称"],
                        // "HMaterID": data["HItemID"],
                        HQCSchemeID: data.hmainid,
                        HQCSchemeName: data.检验方案名称
                    })
                    await this.get_CheckItem();
                    await this.$nextTick()
                    this.$refs.listPopup.exit()
                    // 确保在弹窗结束后,再将页面上挂在的组件置空
@@ -1014,6 +1032,79 @@
                this.checkItems[data.num] = Object.assign(this.checkItems[data.num], data)
                this.$set(this.InspectValues, `${data.num}`, list)
            },
            // 带出检验项目
            async get_CheckItem() {
                try {
                    let res = await CommonUtils.doRequest2Async({
                        url: '/Web/GetCheckItemByCheckProjectID',
                        data: {
                            CheckProjectID: this.hform.HQCSchemeID || 0,
                            HBatchQty: this.hform.HProcExchQty
                        }
                    })
                    let {
                        data,
                        count,
                        Message
                    } = res.data
                    if (count == 1) {
                        for (var i = 0; i < data.length; i++) {
                            let checkItem = {
                                "HQCCheckItemID": data[i]["HQCCheckItemID"],
                                "HQCCheckItemNumber": data[i]["检验项目代码"],
                                "HQCCheckItemName": data[i]["检验项目"],
                                "HInspectInstruMentID": data[i]["HInspectInstruMentID"],
                                "HInspectInstruMentNumber": data[i]["检验仪器代码"],
                                "HInspectInstruMentName": data[i]["检验仪器"],
                                "HQCStd": data[i]["HQCStd"],
                                "HUnit": data[i]["单位名称"],
                                "HQCNote": "",
                                "HAnalysisMethod": data[i]["分析方法"],
                                "HResult": data[i]["默认结论"],
                                "HMax": "",
                                "HMin": "",
                                "HAvg": "",
                                "HRemark": "",
                                "HKeyInspect": data[i]["重点检查"] == 1 ? true : false,
                                "HStatus": 0,
                                "HSampleSchemeID": data[i]["HSampleSchemeID"],
                                "HUnitID": data[i]["HUnitID"],
                                "HInspectVal": '',
                                "HTargetVal": '',
                                "HUpLimit": data[i].上限值,
                                "HDownLimit": data[i].下限值,
                                "HUpOffSet": '',
                                "HDownOffSet": '',
                                "HSampleDamageQty": "0",
                                "HSampleSchemeName": data[i].抽样方案名称,
                                "HSampleQty": data[i].样本量,
                                "HAcceptQty": data[i].允许数,
                                "HInspectionLevel": data[i].检验水平,
                                "HRejectQty": data[i].拒绝数,
                                "HStrictness": data[i].严格度,
                                "HSampleUnRightQty": "",
                                "HAQL": data[i].AQL,
                                "HSamplingType": data[i].抽样类型
                            }
                            this.addCheckItem(checkItem)
                        }
                    } else {
                        CommonUtils.showTips({
                            title: '温馨提示',
                            message: `获取检验项目信息失败: ${Message} `
                        })
                    }
                } catch (err) {
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: `获取检验项目信息失败: ${err} `
                    })
                }
            },
            async getMaxBillNo() {
                try {
                    let res = await CommonUtils.doRequest2Sync({