chenhaozhe
2025-10-29 cb4b80d1ed8a8c1dc6e9aaee714fdf64fa344700
APP更新前保存
4个文件已添加
3个文件已修改
2148 ■■■■■ 已修改文件
components/ZLGL/InspectValueTemplate.vue 309 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
components/ZLGL/SampleSchemePopup.vue 290 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages.json 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/ZLGL/shoujianjianyan/form.vue 947 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/ZLGL/shoujianjianyan/table.vue 572 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/index/tab2.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/zhijiediaobo/table.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
components/ZLGL/InspectValueTemplate.vue
New file
@@ -0,0 +1,309 @@
<template>
    <view>
        <view class="inspect-value-content">
            <view class="form-item">
                <view class="left">项目序号</view>
                <view class="right disabled">
                    <input type="text" v-model="checkData.num" disabled />
                </view>
            </view>
            <view class="form-item">
                <view class="left">检验项目</view>
                <view class="right disabled">
                    <input type="text" v-model="checkData.HQCCheckItemName" disabled />
                </view>
            </view>
            <view class="form-item">
                <view class="left">样本量</view>
                <view class="right disabled">
                    <input type="text" v-model="checkData.HSampleQty" disabled />
                </view>
            </view>
            <view class="form-item">
                <view class="left">检验结果</view>
                <view class="right disabled">
                    <input type="text" v-model="checkData.HResult2" disabled />
                </view>
            </view>
            <view class="form-item">
                <view class="left">不合格数</view>
                <view class="right">
                    <input type="number" v-model="checkData.HSampleUnRightQty" />
                </view>
            </view>
            <view class="form-item">
                <view class="left">保留小数位</view>
                <view class="right">
                    <input type="number" v-model="checkData.HResDec" />
                </view>
            </view>
            <view style="width: 100%;border-bottom: 1px solid #e3e3e3;"></view>
            <view class="form-item" style="width: 100%;">
                <view class="left">状态</view>
                <view class="right none-border">
                    <view style="width: 4em; ">
                        {{ checkData.HStatus?"合格":"不合格" }}
                    </view>
                    <view>
                        <switch style="width: 2em; transform:scale(0.7);" :checked="checkData.HStatus?'checked':''"
                            @change="HStatusChange" />
                    </view>
                </view>
            </view>
            <view class="form-item">
                <view class="left">比较符</view>
                <view class="right disabled">
                    <input type="text" v-model="checkData.HResult2" disabled />
                </view>
            </view>
            <view class="form-item">
                <view class="left">单位</view>
                <view class="right disabled">
                    <input type="text" v-model="checkData.HTargetVal" disabled />
                </view>
            </view>
            <view class="form-item">
                <view class="left">检验值</view>
                <view class="right disabled">
                    <input type="text" v-model="checkData.HInspectVal" disabled />
                </view>
            </view>
            <view class="form-item">
                <view class="left">目标值</view>
                <view class="right disabled">
                    <input type="text" v-model="checkData.HTargetVal" disabled />
                </view>
            </view>
            <view class="form-item">
                <view class="left">上限值</view>
                <view class="right disabled">
                    <input type="text" v-model="checkData.HUpLimit" disabled />
                </view>
            </view>
            <view class="form-item">
                <view class="left">下限值</view>
                <view class="right disabled">
                    <input type="text" v-model="checkData.HDownLimit" disabled />
                </view>
            </view>
            <view class="form-item">
                <view class="left">上偏差</view>
                <view class="right disabled">
                    <input type="text" v-model="checkData.HUpOffset" disabled />
                </view>
            </view>
            <view class="form-item">
                <view class="left">下偏差</view>
                <view class="right disabled">
                    <input type="text" v-model="checkData.HDownOffset" disabled />
                </view>
            </view>
            <view style="width: 100%;border-bottom: 1px solid #e3e3e3;"></view>
            <view class="inspect-value-list">
                <view style="width: 100%;text-align: right;">
                    <button type="default" size="mini" class="btn-a" @click="storeInspectValue">缓存检验值</button>
                </view>
                <view class="item" style="border-top: 2px solid #e3e3e3 ;">
                    <view class="th1">序号</view>
                    <view class="th2" style="display: flex; flex-direction: row; align-items: center;">
                        检验结果
                    </view>
                    <view class="th3">
                        检验值({{getAnalysisMethodTitle(checkData.HAnalysisMethod)}})
                    </view>
                </view>
                <view class="item" v-for="(item, index) in inspectValues">
                    <view class="th1">{{item.HSEQ}}</view>
                    <view class="th2" style="display: flex; flex-direction: row; align-items: center;">
                        <view style="width: 3em; ">
                            {{ item.HInspectResult?"合格":"不合格" }}
                        </view>
                        <view>
                            <switch style="width: 3em; transform:scale(0.7);" :checked="item.HInspectResult?'checked':''"
                                @change="HInspectResultChange(index, $event)" />
                        </view>
                    </view>
                    <view class="th3">
                        <input type="number" v-model="item.HInspectValue" />
                    </view>
                </view>
            </view>
        </view>
    </view>
</template>
<script>
    // 检验值模板
    export default {
        name: "InspectValueTemplate",
        data() {
            return {
                checkData: {
                    HResDec: 2,
                    HResult2: '',
                    HStatus: true,
                },
                inspectValues: []
            };
        },
        props: {
            bindKey: {
                type: [String, Number],
                required: true
            },
            bindData: {
                type: Object,
                required: true
            }
        },
        mounted() {
            console.log('bingData: ', this.bindData);
            let {data, list} = this.bindData
            this.checkData = Object.assign(data, JSON.parse(JSON.stringify(this.bindData)))
            // 判断是否有缓存数据或者缓存数据是否与样本数一致
            if(!list || list.length != this.checkData.HSampleQty ){
                for (let index = 0; index < this.checkData.HSampleQty; index++) {
                    this.inspectValues.push({
                        HSEQ: index + 1,
                        HInspectResult: true,
                        HInspectValue: 0,
                    })
                }
            }else {
                this.inspectValues = list
            }
            this.$forceUpdate()
        },
        methods: {
            storeInspectValue(){
                this.$emit("update", {
                    data: this.checkData,
                    list: this.inspectValues
                })
            },
            getAnalysisMethodTitle(type){
                if(type == 1) {
                    return '定性分析'
                }else if(type == 2){
                    return '定量分析'
                }
                return '其他分析'
            },
            HStatusChange(e) {
                this.checkData.HStatus = e.detail.value
            },
            HInspectResultChange(index, e) {
                console.log('e: ',e.detail.value);
                this.inspectValues[index].HInspectResult = e.detail.value
            },
        }
    }
</script>
<style lang="scss">
    input {
        height: inherit;
        width: inherit;
        font-size: 26rpx;
    }
    .inspect-value-content {
        box-sizing: border-box;
        padding: 20rpx 10rpx;
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
        gap: 20rpx 0;
        .form-item {
            width: 50%;
            display: flex;
            align-items: center;
            font-size: 26rpx;
            box-sizing: border-box;
            padding-left: 20rpx;
            .left {
                width: 5em;
                text {
                    color: red;
                    font-weight: bold;
                }
            }
            .right {
                // width: 450rpx;
                padding: 8rpx 20rpx;
                font-size: 26rpx;
                flex: 1;
                border-radius: 22rpx;
                border: 1px solid #acacac;
                display: flex;
                flex-direction: row;
                align-items: center;
            }
            .disabled {
                border: 1px solid #e4e4e4;
                background-color: #e4e4e4;
            }
            .none-border {
                border: none;
            }
        }
    }
    .inspect-value-list {
        box-sizing: border-box;
        display: flex;
        flex-direction: column;
        width: 100%;
        .item {
            display: flex;
            flex-direction: row;
            align-items: center;
            font-size: 30rpx;
        }
        .th1 {
            height: 100%;
            width: 4em;
            border: #e4e4e4 2px solid;
            border-top: 0;
            display: flex;
            align-items: center;
            box-sizing: border-box;
            padding: 8rpx 16rpx;
        }
        .th2 {
            height: 100%;
            width: 50%;
            border: #e4e4e4 2px solid;
            border-left: 0;
            border-top: 0;
            box-sizing: border-box;
            padding: 8rpx 16rpx;
        }
        .th3 {
            height: 100%;
            flex: 1;
            border: #e4e4e4 2px solid;
            border-left: 0;
            border-top: 0;
            box-sizing: border-box;
            padding: 8rpx 16rpx;
        }
    }
    .btn-a {
        background-color: #3A78FF;
        color: #fff;
    }
</style>
components/ZLGL/SampleSchemePopup.vue
New file
@@ -0,0 +1,290 @@
<template>
    <view>
        <uni-popup ref="popup" type="bottom" @change="popupChangeHandler">
            <view class="content">
                <view class="buttons">
                    <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">
                                <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">AQL: </view>
                                <view class="right">{{bill['AQL']}}</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>
                            <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,
                HSourceBillNo: '',
                HMater: '',
                HCustom: '',
                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 = ''
                if (this.HBeginDate && this.HEndDate) {
                    sWhere += ` and  CONVERT(varchar(100),日期, 23) between '${this.HBeginDate}' and '${this.HEndDate}'`
                }
                if (this.HNumber) {
                    sWhere += ` and 产品模具代码 like '%${this.HNumber}%'`
                }
                if (this.HName) {
                    sWhere += ` and 产品模具 like '%${this.HName}%'`
                }
                if (this.HBillNo) {
                    sWhere += ` and 单据号 like '%${this.HBillNo}%'`
                }
                return sWhere
            },
            getBillList() {
                this.HBillList = []
                this.length = 0
                this.page = 0
                this.curPage = 1
                CommonUtils.doRequest(
                    "/Web/GetGy_SampleScheme", {
                        SampleScheme: '',
                        OrganizationID: this.HStockOrgID || uni.getStorageSync("OrganizationID")
                    },
                    (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>
pages.json
@@ -886,6 +886,20 @@
            {
                "navigationBarTitleText" : "ERP即时库存查询"
            }
        },
        {
            "path" : "pages/ZLGL/shoujianjianyan/table",
            "style" :
            {
                "navigationBarTitleText" : "首件检验单维护"
            }
        },
        {
            "path" : "pages/ZLGL/shoujianjianyan/form",
            "style" :
            {
                "navigationBarTitleText" : "首件检验单"
            }
        }
    ],
    "tabBar": {
pages/ZLGL/shoujianjianyan/form.vue
New file
@@ -0,0 +1,947 @@
<template>
    <view>
        <!-- 主表区域 -->
        <view class="bill-main-area">
            <!-- 主表页签 -->
            <view class="bill-main-tabs">
                <view :class="mainTabSelected == 1 ? 'selected':''" @tap="mainTabSelected = 1">基本信息</view>
                <view :class="mainTabSelected == 2 ? 'selected':''" @tap="mainTabSelected = 2">制单信息</view>
            </view>
            <!-- 主表内容 -->
            <view class="bill-main-contents">
                <!-- 基本信息 -->
                <view class="bill-main-content" v-if="mainTabSelected == 1">
                    <view class="form-item">
                        <view class="left">单据号</view>
                        <view class="right disabled">
                            <input type="text" :value="hform.HBillNo" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">日期</view>
                        <view class="right">
                            <uni-datetime-picker type="date" :clear-icon="false" v-model="hform.HDate">
                                <view>{{hform.HDate}}</view>
                            </uni-datetime-picker>
                        </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="" />
                        </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="" />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">任务单数量</view>
                        <view class="right">
                            <input type="number" value="" />
                        </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="number" value=""  />
                        </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="" />
                        </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="" />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">判断结论</view>
                        <view class="right none-border">
                            <radio-group @changer="checkResultChange">
                                <label>
                                    <radio value="0" :checked="judgeConclusion" /><text></text>
                                    合格
                                </label>
                                <view style="width: 20rpx;display: inline-block;"></view>
                                <label>
                                    <radio value="1" :checked="!judgeConclusion" /><text></text>
                                    不合格
                                </label>
                            </radio-group>
                        </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="" />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">异常临时处理方案</view>
                        <view class="right">
                            <input type="text" value="" />
                        </view>
                    </view>
                </view>
                <!-- 制单信息 -->
                <view class="bill-main-content" v-if="mainTabSelected == 2">
                    <view class="form-item">
                        <view class="left">制单人</view>
                        <view class="right disabled">
                            <input type="text" value="" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">制单日期</view>
                        <view class="right disabled">
                            <input type="text" value="" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">审核人</view>
                        <view class="right disabled">
                            <input type="text" value="" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">审核日期</view>
                        <view class="right disabled">
                            <input type="text" value="" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">关闭人</view>
                        <view class="right disabled">
                            <input type="text" value="" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">关闭日期</view>
                        <view class="right disabled">
                            <input type="text" value="" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">修改人</view>
                        <view class="right disabled">
                            <input type="text" value="" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">修改日期</view>
                        <view class="right disabled">
                            <input type="text" value="" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">作废人</view>
                        <view class="right disabled">
                            <input type="text" value="" disabled />
                        </view>
                    </view>
                    <view class="form-item">
                        <view class="left">作废日期</view>
                        <view class="right disabled">
                            <input type="text" value="" disabled />
                        </view>
                    </view>
                </view>
            </view>
        </view>
        <!-- 子表区域 -->
        <view class="bill-sub-area">
            <!-- 子表页签 -->
            <view class="bill-sub-tabs">
                <view v-for="subTab in subTabs" :key="subTab.id" :class="subTab.id == subTabSelected ? 'selected':''"
                    @tap="subTabSelected = subTab.id">{{subTab.name}}</view>
            </view>
            <!-- 子表内容 -->
            <view class="bill-main-contents">
                <!-- 检验项目 呈现 -->
                <view v-if="subTabSelected == 1">
                    <view class="buttons" @tap="addCheckItem">
                        <uni-icons type="plus" style="margin-right: 10rpx;" size="22"></uni-icons>新增
                    </view>
                    <view class="over" v-if="!checkItems || getObjLength(checkItems) == 0">暂无数据</view>
                    <view class="list" v-else>
                        <uni-card v-for="checkItem in checkItems" :key="checkItem.num">
                            <view class="card-detail">
                                <view class="detail">
                                    <text>序号:</text>{{checkItem.num}}
                                </view>
                                <view class="detail editable">
                                    <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>
                                </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>
                                </view>
                                <view class="detail editable">
                                    <view><text>结论:</text></view>
                                    <view style="width: 4em; ">
                                        {{ checkItem.HResult == 1?"合格":"不合格" }}
                                    </view>
                                    <view>
                                        <switch style="width: 2em; transform:scale(0.7);"
                                            :checked="checkItem.HResult == 1"
                                            @change="HResultChange(checkItem.num, $event)" />
                                    </view>
                                </view>
                                <view class="detail editable">
                                    <view style="flex-shrink: 0;"><text>分析方法:</text></view>
                                    <picker :range="arrayAnalysisMethod" range-key="name"
                                        @change="HAnalysisMethodChange(checkItem.num, $event)">
                                        <input disabled :value="getAnalysisMethodDisplay(checkItem.HAnalysisMethod)"
                                            placeholder="请选择" />
                                        <view class="picker-overlay"></view>
                                    </picker>
                                </view>
                                <view class="detail editable">
                                    <view style="flex-shrink: 0;"><text>重点检查:</text></view>
                                    <view>
                                        <switch type="checkbox" style="transform:scale(0.7);"
                                            :checked="checkItem.HKeyInspect"
                                            @change="HKeyInspectChange(checkItem.num, $event)" />
                                    </view>
                                </view>
                                <view class="detail" v-if="checkItem.HQCStd">
                                    <text>检验标准:</text>{{checkItem.HQCStd}}
                                </view>
                                <view class="detail" v-if="checkItem.HUnit">
                                    <text>单位:</text>{{checkItem.HUnit}}
                                </view>
                                <view class="detail" v-if="checkItem.HQCStd">
                                    <text>检验值:</text>{{checkItem.HQCStd}}
                                </view>
                                <view class="detail" v-if="checkItem.HQCNote">
                                    <text>检验记录:</text>{{checkItem.HQCNote}}
                                </view>
                                <view class="detail" v-if="checkItem.HTargetVal">
                                    <text>目标值:</text>{{checkItem.HTargetVal}}
                                </view>
                                <view class="detail" v-if="checkItem.HUpLimit">
                                    <text>上限值:</text>{{checkItem.HUpLimit}}
                                </view>
                                <view class="detail" v-if="checkItem.HDownLimit">
                                    <text>下限值:</text>{{checkItem.HDownLimit}}
                                </view>
                                <view class="detail" v-if="checkItem.HMax">
                                    <text>最大值:</text>{{checkItem.HMax}}
                                </view>
                                <view class="detail" v-if="checkItem.HMin">
                                    <text>最小值:</text>{{checkItem.HMin}}
                                </view>
                                <view class="detail" v-if="checkItem.HAvg">
                                    <text>平均值:</text>{{checkItem.HAvg}}
                                </view>
                            </view>
                            <view class="more">
                                <view class="part" style="color: #da0000;" @tap.stop="removeCheckItem(checkItem)">
                                    <uni-icons type="trash" style="color: #da0000;margin-right: 10rpx;"
                                        size="18"></uni-icons>删除
                                </view>
                            </view>
                        </uni-card>
                    </view>
                </view>
                <!-- 抽样检验 呈现 -->
                <view v-if="subTabSelected == 2">
                    <view class="over" v-if="!checkItems || getObjLength(checkItems) == 0">暂无数据</view>
                    <view class="list" v-else>
                        <uni-card v-for="SamplingItem in checkItems" :key="SamplingItem.num">
                            <view class="card-detail">
                                <view class="detail">
                                    <text>序号:</text>{{SamplingItem.num}}
                                </view>
                                <view class="detail editable">
                                    <text>检验项目:</text>{{SamplingItem.HQCCheckItemName}}
                                </view>
                                <view style="width: 100%; height: 1px; border-bottom: 1px solid #e3e3e3;"></view>
                                <view class="detail editable" style="width: 100%;">
                                    <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>
                                </view>
                                <view class="detail editable">
                                    <text>抽样类型:</text>{{SamplingItem.HSamplingType}}
                                </view>
                                <view class="detail editable">
                                    <text>检验水平:</text>{{SamplingItem.HInspectionLevel}}
                                </view>
                                <view class="detail editable">
                                    <text>严格度:</text>{{SamplingItem.HStrictness}}
                                </view>
                                <view class="detail editable">
                                    <text>AQL:</text>{{SamplingItem.HAQL}}
                                </view>
                                <view style="width: 100%; height: 1px; border-bottom: 1px solid #e3e3e3;"></view>
                                <view class="detail editable">
                                    <text>样本量:</text>{{SamplingItem.HSampleQty}}
                                </view>
                                <view class="detail editable">
                                    <text>允许数:</text>{{SamplingItem.HAcceptQty}}
                                </view>
                                <view class="detail editable">
                                    <text>拒绝数:</text>{{SamplingItem.HRejectQty}}
                                </view>
                                <view class="detail editable">
                                    <text>样本不合格数:</text>{{SamplingItem.HSampleUnRightQty}}
                                </view>
                                <view class="detail editable">
                                    <text>样本破坏数:</text>{{SamplingItem.HSampleDamageQty}}
                                </view>
                                <view class="detail editable">
                                    <text>检验结果:</text>{{SamplingItem.HInspectResultToSee}}
                                </view>
                            </view>
                        </uni-card>
                    </view>
                </view>
                <!-- 检测值 呈现 -->
                <view v-else v-for="item in InspectModules" :key="item.id">
                    <view v-if="subTabSelected == item.id">
                        <InspectValueTemplateVue :bind-key="item.id"
                            :bind-data="{data: checkItems[item.checkItemId], list: InspectValues[item.checkItemId]}"
                            @update="InspectValueUpdate"></InspectValueTemplateVue>
                    </view>
                </view>
            </view>
        </view>
        <view style="height: 120rpx;"></view>
        <view class="bottom-btn">
            <button class="btn-a" size="mini" @tap="submit">提交</button>
            <view style="flex: 1;"></view>
            <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>
    </view>
</template>
<script>
    import dayjs from 'dayjs'
import {
        CommonUtils
    } from '../../../utils/common'
    import InspectValueTemplateVue from '@/components/ZLGL/InspectValueTemplate.vue'
    import SampleSchemePopupVue from '@/components/ZLGL/SampleSchemePopup.vue'
import { getUserInfo } from '../../../utils/auth'
    export default {
        components: {
            InspectValueTemplateVue,
            SampleSchemePopupVue
        },
        computed: {
            judgeConclusion: {
                get() {
                    return true
                }
            }
        },
        data() {
            return {
                operationType: 1,
                linterid: 0,
                mainTabSelected: 1,
                subTabSelected: 1,
                // 当前操作的检验单ID缓存
                currentChechItemIDCache: -1,
                // 检验方案
                arrayAnalysisMethod: [{
                    value: 1,
                    name: '定性分析'
                }, {
                    value: 2,
                    name: '定量分析'
                }, {
                    value: 3,
                    name: '其他分析'
                }],
                ArrayAnalysisMethodValue: [1, 2, 3],
                // 子表 页签信息
                subTabs: {
                    "1": {
                        id: "1",
                        name: "检验项目"
                    },
                    "2": {
                        id: "2",
                        name: "抽样检验"
                    }
                },
                // 主表属性
                hform: {
                    "HBillNo": "",
                    "HInterID": "0",
                    "HDate": dayjs(new Date()).format("YYYY-MM-DD"),
                    "HSourceName": "",
                    "HSourceID": "0",
                    "HShiftsName": "",
                    "HShiftsID": "0",
                    "HICMOBillNo": "",
                    "HICMOInterID": "0",
                    "HICMOEntryID": "1",
                    "HICMOQty": "",
                    "HProcExchBillNo": "",
                    "HProcExchInterID": "0",
                    "HProcExchEntryID": "0",
                    "HProcExchQty": "0",
                    "HMaterNumber": "",
                    "HMaterID": "0",
                    "HMaterName": "",
                    "HFirstCheckEmpName":  "",
                    "HFirstCheckEmp":0,
                    "HQCSchemeName": "",
                    "HQCSchemeID": "0",
                    "HBatchNo": "",
                    "HLastResult": true, // 默认合格
                    "HProcName": "",
                    "HProcID": "0",
                    "HTakeSampleCheckBillNo": "", // 取样单
                    "HTakeSampleCheckBillID": "0",
                    "HRemark": "",
                    "HErrTreatment": "", // 异常临时处理方案
                    "HMaker": getUserInfo()["Czymc"] || "",
                    "HChecker": "",
                    "HCloseMan": "",
                    "HMakeDate": dayjs(new Date()).format("YYYY-MM-DDTHH:mm:ss"),
                    "HCheckDate": "",
                    "HCloseDate": "",
                    "HUpDater": "",
                    "HDeleteMan": "",
                    "HUpDateDate": "",
                    "HDeleteDate": "",
                    // "HResult": "2",
                    // "HAnalysisMethod": "1",
                    // "layTableCheckbox": "on",
                    // "HEntryID": "1",
                    // "HQCCheckItemName": "外观",
                    // "HQCCheckItemID": "2",
                    // "HSampleSchemeName": "",
                    // "HSampleSchemeID": "0",
                    // "HSampleQty": "0",
                    // "HSampleDamageQty": "0",
                    // "HSamplingType": "",
                    // "HAcceptQty": "",
                    // "HInspectResultToSee": "",
                    // "HInspectionLevel": "",
                    // "HRejectQty": "",
                    // "HStrictness": "",
                    // "HSampleUnRightQty": "0",
                    // "HAQL": "",
                    // "HSampleQty2": "0",
                    // "HInspectResultToSee2": "",
                    // "HSampleUnRightQty2": "0",
                    // "HResDec": "2",
                    // "HStatus": "1",
                    // "HComparator": "=",
                    // "HUnit": "",
                    // "HUnitID": "0",
                    // "HInspectVal": "",
                    // "HInspectValB": "",
                    // "HTargetVal": "",
                    // "HTargetValB": "",
                    // "HUpLimit": "0",
                    // "HDownLimit": "0",
                    // "HUpOffSet": "",
                    // "HDownOffSet": "",
                    // "HInSpectResult": "",
                    "HMainSourceBillType": "",
                    "HMainSourceInterID": "0",
                    "HMainSourceEntryID": "1",
                    "HMainSourceBillNo": ""
                },
                // 检验项目和抽样检验 值
                checkItems: {
                },
                // 检测值模块
                InspectModules: {
                },
                // 检测值
                InspectValues: {
                }
            }
        },
        methods: {
            async showHSampleSchemeNameSelector(item) {
                this.currentChechItemIDCache = item.num
                console.log('this.$refs: ', this.$refs);
                await this.$nextTick()
                this.$refs.sampleSchemePopup.showPopup()
            },
            getAnalysisMethodDisplay(val) {
                console.log('AnalysisMethodVal: ', val);
                if (val) {
                    return this.arrayAnalysisMethod.find(e => e.value == val).name
                }
                return ''
            },
            checkResultChange(event) {
                console.log('event: ', event);
            },
            // 检验项目新增行
            addCheckItem() {
                let ordinal = this.getObjLength(this.checkItems) + 1
                let checkItem = {
                    "num": ordinal,
                    "HQCCheckItemID": "",
                    "HQCCheckItemNumber": "",
                    "HQCCheckItemName": "",
                    "HInspectInstruMentID": "0",
                    "HInspectInstruMentNumber": "",
                    "HInspectInstruMentName": "",
                    "HQCStd": "",
                    "HUnit": "",
                    "HQCNote": "",
                    "HAnalysisMethod": "",
                    "HResult": false,
                    "HMax": "",
                    "HMin": "",
                    "HAvg": "",
                    "HRemark": "",
                    "HKeyInspect": false,
                    "HStatus": 0,
                    "HSampleSchemeID": "",
                    "HUnitID": 0,
                    "HInspectVal": '',
                    "HTargetVal": '',
                    "HUpLimit": '',
                    "HDownLimit": '',
                    "HUpOffSet": '',
                    "HDownOffSet": '',
                    "HSampleDamageQty": 0,
                    "HSampleSchemeName": "",
                    "HSampleQty": 0,
                    "HAcceptQty": 0,
                    "HInspectionLevel": "",
                    "HRejectQty": 0,
                    "HStrictness": "",
                    "HSampleUnRightQty": 0,
                    "HAQL": "",
                    "HSamplingType": "",
                    "HInspectResultToSee": ""
                }
                this.$set(this.checkItems, ordinal, checkItem)
            },
            // 检验项目删除行
            removeCheckItem(item) {
                uni.showModal({
                    title: "温馨提示",
                    content: `确认要删除第${item.num}行吗?删除后不能恢复`,
                    success: (res) => {
                        if (res.confirm) {
                            this.$delete(this.checkItems, item.num)
                            this.refreshCheckItemNum()
                        }
                    }
                })
            },
            async refreshCheckItemNum() {
                await this.$nextTick()
                // 重排序号
                let num = 1
                for (let s in this.checkItems) {
                    console.log('s: ', s);
                    this.checkItems[s].num = num
                    num++
                }
            },
            getObjLength(obj) {
                return Object.keys(obj).length
            },
            // 结论修改
            HResultChange(id, e) {
                console.log('e: ', e);
                this.checkItems[id]["HResult"] = e.detail.value ? 1 : 2
            },
            // 检验方案修改
            HAnalysisMethodChange(id, e) {
                console.log('e: ', e);
                this.checkItems[id]["HAnalysisMethod"] = this.arrayAnalysisMethod[e.detail.value]["value"]
            },
            // 重点检查修改
            HKeyInspectChange(id, e) {
                console.log('e: ', e);
                this.checkItems[id]["HKeyInspect"] = e.detail.value
            },
            // 检验方案选择结束
            async SampleSchemeComplete(e) {
                console.log('SampleSchemeRet: ', e);
                for (var key in e["retVal"]) {
                    let data = e["retVal"][key]
                    Object.assign(this.checkItems[key], {
                        "HSampleSchemeID": data["hmainid"],
                        "HSampleSchemeNumber": data["抽样方案代码"],
                        "HSampleSchemeName": data["抽样方案名称"],
                        "HSampleQty": data["样本量"] || 0,
                        "HAcceptQty": data["允许数"] || 0,
                        "HInspectionLevel": data["检验水平"],
                        "HRejectQty": data["拒绝数"] || 0,
                        "HStrictness": data["严格度"],
                        "HSampleUnRightQty": data["样本不合格数"] || 0,
                        "HAQL": data["AQL"],
                        "HSamplingType": data["抽样类型"],
                        "HInspectResultToSee": data["检验结果"],
                        "HUpLimit": data["上限值"] || 0,
                        "HDownLimit": data["下限值"] || 0,
                        "HSampleDamageQty": data["样本破坏数"] || 0
                    })
                    await this.$nextTick()
                    this.$refs.sampleSchemePopup.exit()
                    this.setInspectValModule(this.checkItems[key])
                }
            },
            setInspectValModule(checkItem) {
                // 区分检验值页签和静态页签,检验值页签的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
                this.$set(this.subTabs, `_${checkItem.num}`, {
                    id: `_${checkItem.num}`,
                    name: `${analysisMethodName}-${checkItem.HSampleSchemeName}`
                })
            },
            InspectValueUpdate(e) {
                console.log('e: ', e);
                let {
                    data,
                    list
                } = e
                this.checkItems[data.num] = Object.assign(this.checkItems[data.num], data)
                this.$set(this.InspectValues, `${data.num}`, list)
            },
            async getMaxBillNo() {
                try {
                    let res = await CommonUtils.doRequest2Sync({
                        url: "/Web/GetMAXNum",
                        data: {
                            "HBillType": '7505'
                        }
                    })
                    if (!res) {
                        return
                    }
                    let {
                        data,
                        Message,
                        count
                    } = res.data
                    if (count == 1) {
                        this.hform.HInterID = data[0].HInterID
                        this.hform.HBillNo = data[0].HBillNo
                    } else {
                        throw (Message)
                    }
                } catch (err) {
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: "获取单据号异常: " + err
                    })
                }
            }
        },
        async onLoad(e) {
            this.operationType = e.operationType || 1
            this.linterid = e.linterid || 0
            if (this.operationType == 1) {
                await this.getMaxBillNo()
            } else if (this.operationType  == 2) {
            } else if (this.operationType  == 3) {
            }
        }
    }
</script>
<style lang="scss">
    input {
        width: inherit;
        font-size: 26rpx;
    }
    .uni-input {
        padding: 0
    }
    .bill-main-tabs,
    .bill-sub-tabs {
        box-sizing: border-box;
        width: 730rpx;
        display: flex;
        flex-direction: row;
        flex-wrap: nowrap;
        gap: 20rpx;
        flex-shrink: 0;
        overflow-x: auto;
        border-bottom: 1px solid #ddd;
        padding: 20rpx 10rpx;
        white-space: nowrap;
        view {
            width: auto;
            font-size: 26rpx;
            color: #555;
            text-align: center;
            padding: 16rpx 0;
        }
        .selected {
            color: #3a78ff;
            font-weight: bold;
            border-bottom: 3px solid #3a78ff;
        }
    }
    .bill-main-content,
    .bill-sub-content {
        box-sizing: border-box;
        padding: 0 10rpx;
        display: flex;
        flex-direction: column;
        .form-item {
            width: 100%;
            display: flex;
            align-items: center;
            font-size: 26rpx;
            padding: 6rpx 0;
            .left {
                width: 208rpx;
                text {
                    color: red;
                    font-weight: bold;
                }
            }
            .right {
                // width: 450rpx;
                padding: 8rpx 20rpx;
                font-size: 26rpx;
                flex: 1;
                border-radius: 22rpx;
                border: 1px solid #acacac;
            }
            .disabled {
                border: 1px solid #e4e4e4;
                background-color: #e4e4e4;
            }
            .none-border {
                border: none;
            }
        }
    }
    .bottom-btn {
        box-sizing: border-box;
        width: 100%;
        height: 120rpx;
        position: fixed;
        bottom: 0;
        left: 0;
        background-color: #fff;
        box-shadow: 0 2rpx 10rpx 2rpx rgba(0, 0, 0, 0.4);
        padding: 30rpx 40rpx 40rpx 40rpx;
        display: flex;
        flex-direction: row;
        gap: 10rpx;
        button {
            border-radius: 50rpx;
            width: 180rpx;
            height: 66rpx;
            line-height: 66rpx;
            font-size: 28rpx;
        }
        .btn-a {
            background-color: #3A78FF;
            color: #fff;
        }
        .btn-b {
            background-color: #41a863;
            color: #fff;
        }
        .btn-c {
            background-color: #acacac;
            color: #fff;
            // position: absolute;
            // right: 120rpx;
        }
        .btn-d {
            background-color: #ff8901;
            color: #fff;
        }
    }
    .buttons {
        box-sizing: border-box;
        width: 100%;
        display: flex;
        justify-content: center;
        padding: 10rpx 0;
        button {
            border-radius: 50rpx;
            width: 180rpx;
            height: 66rpx;
            line-height: 66rpx;
            font-size: 26rpx;
        }
        .btn-a {
            background-color: #acacac;
            color: #fff;
        }
        .btn-b {
            background-color: #41a863;
            color: #fff;
        }
        .btn-c {
            background-color: #3a78ff;
            color: #fff;
        }
    }
    .list {
        width: 100%;
        .card-detail {
            width: 100%;
            display: flex;
            flex-wrap: wrap;
            justify-content: space-between;
            align-items: center;
            line-height: 120%;
            gap: 10rpx 0;
            input {
                font-size: 26rpx;
            }
            .detail {
                // width: 50%;
                box-sizing: border-box;
                font-size: 26rpx;
                color: #555;
                padding-right: 20rpx;
                text {
                    color: #999;
                    font-size: 26rpx;
                }
            }
            .editable {
                width: 50%;
                display: inline-flex;
                flex-direction: row;
                align-items: center;
            }
        }
    }
    .icon-wrapper {
        background-color: #3A78FF;
        border-radius: 100%;
        width: 40rpx;
        height: 40rpx;
        display: flex;
        justify-content: center;
        align-items: center;
        flex-shrink: 0;
        .uni-icons {
            color: #fff !important;
        }
    }
    .more {
        color: #888;
        font-size: 22rpx;
        display: flex;
        border-top: 1px solid #eee;
        padding-top: 10rpx;
        .part {
            width: 100%;
            text-align: center;
        }
    }
</style>
pages/ZLGL/shoujianjianyan/table.vue
New file
@@ -0,0 +1,572 @@
<template>
    <view class="page" id="pageContent">
        <view class="search-condition-zone">
            <view class="form-item">
                <view class="left">
                    日期:
                </view>
                <view class="daterange" style="flex: 1;">
                    <view class="right general">
                        <uni-datetime-picker type="date" :clear-icon="false" v-model="hform.HBeginDate">
                            <view>{{hform.HBeginDate}}</view>
                        </uni-datetime-picker>
                    </view>
                    <view>—</view>
                    <view class="right general">
                        <uni-datetime-picker type="date" :clear-icon="false" v-model="hform.HEndDate">
                            <view>{{hform.HEndDate}}</view>
                        </uni-datetime-picker>
                    </view>
                </view>
            </view>
            <view class="form-item">
                <view class="left">
                    单据号:
                </view>
                <view class="right general">
                    <input type="text" v-model="hform.HBillNo" />
                </view>
            </view>
        </view>
        <view class="button-zone">
            <button type="default" class="btn-a" size="mini" @tap="cmdAdd">新增</button>
            <button type="default" class="btn-a" size="mini" @tap="cmdSearch">查询</button>
            <button type="default" class="btn-c" size="mini" @tap="exit">退出</button>
        </view>
        <view class="info-list-zone" id="scroll-content" :style="{height: scrollContentHeight + 'px'}">
            <view class="card-item" v-for="(item, index) in listDataShow">
                <uni-card :title="item['单据号']" :extra="'日期:' + item['日期'].split('T')[0]"
                    @tap="showDetail = showDetail==index?-1:index">
                    <view class="card-detail">
                        <view class="detail" v-if="item['单据类型']">
                            <text>单据类型:</text>{{item['单据类型']}}
                        </view>
                        <view class="detail" v-if="item['单据状态']">
                            <text>单据状态:</text>{{item['单据状态']}}
                        </view>
                        <view class="detail" v-if="item['判断结论']">
                            <text>判断结论:</text>{{item['判断结论']}}
                        </view>
                        <view class="detail" v-if="item['物料代码']">
                            <text>物料代码:</text>{{item['物料代码']}}
                        </view>
                        <view class="detail" v-if="item['物料名称']">
                            <text>物料名称:</text>{{item['物料名称']}}
                        </view>
                        <view class="detail" v-if="item['规格型号'].trim()">
                            <text>规格型号:</text>{{item['规格型号']}}
                        </view>
                        <view class="detail" v-if="item['检验方案'].trim()">
                            <text>检验方案:</text>{{item['检验方案']}}
                        </view>
                        <view class="detail" v-if="item['规格型号'].trim()">
                            <text>规格型号:</text>{{item['规格型号']}}
                        </view>
                    </view>
                    <view class="card-detail" v-if="showDetail == index">
                        <view class="detail" v-if="item['质检员']">
                            <text>质检员:</text>{{item['质检员']}}
                        </view>
                        <view class="detail" v-if="item['部门']">
                            <text>部门:</text>{{item['部门']}}
                        </view>
                        <view class="detail" v-if="item['生产订单']">
                            <text>生产订单:</text>{{item['生产订单']}}
                        </view>
                        <view class="detail" v-if="item['工序流转卡号']">
                            <text>工序流转卡号:</text>{{item['工序流转卡号']}}
                        </view>
                        <view class="detail" v-if="item['生产资源名称']">
                            <text>生产资源名称:</text>{{item['生产资源名称']}}
                        </view>
                        <view class="detail" v-if="item['创建人']">
                            <text>创建人:</text>{{item['创建人']}}
                        </view>
                        <view class="detail" v-if="item['审核人']">
                            <text>审核人:</text>{{item['审核人']}}
                        </view>
                        <view class="detail" v-if="item['组织名称']">
                            <text>组织名称:</text>{{item['组织名称']}}
                        </view>
                        <view class="detail" v-if="item['备注']">
                            <text>备注:</text>{{item['备注']}}
                        </view>
                        <view class="detail" v-if="item['源单号']">
                            <text>源单号:</text>{{item['源单号']}}
                        </view>
                        <view class="detail" v-if="item['制单日期']">
                            <text>制单日期:</text>{{item['制单日期']}}
                        </view>
                        <view class="detail" v-if="item['审核日期']">
                            <text>审核日期:</text>{{item['审核日期']}}
                        </view>
                    </view>
                    <view class="more" v-if="showDetail == index && operations != index">
                        <view class="part" style="border-right: 1px solid #eee;">
                            <uni-icons type="top" style="color: #888;margin-right: 10rpx;" size="14"></uni-icons>收起
                        </view>
                        <view class="part" @tap.stop="operations = operations==index?-1:index">
                            <uni-icons type="more-filled" style="color: #888;margin-right: 10rpx;"
                                size="14"></uni-icons>操作
                        </view>
                    </view>
                    <view class="more" v-if="showDetail != index && operations != index">
                        <view class="part" style="border-right: 1px solid #eee;">
                            <uni-icons type="bottom" style="color: #888;margin-right: 10rpx;" size="14"></uni-icons>更多信息
                        </view>
                        <view class="part" @tap.stop="operations = operations==index?-1:index">
                            <uni-icons type="more-filled" style="color: #888;margin-right: 10rpx;"
                                size="14"></uni-icons>操作
                        </view>
                    </view>
                    <view class="op" v-if="operations == index">
                        <button class="op3" size="mini" plain @tap.stop="edit(item)">编辑</button>
                        <button class="op3" size="mini" plain @tap.stop="audit(item, 0)" v-if="!listDataShow[index]['审核人']">审核</button>
                        <button class="op3" size="mini" plain @tap.stop="audit(item, 1)" v-if="listDataShow[index]['审核人']">反审核</button>
                        <button class="op4" size="mini" plain @tap.stop="del(item)">删除</button>
                        <button class="op5" size="mini" plain @tap.stop="operations = -1">取消操作</button>
                    </view>
                </uni-card>
            </view>
            <view class="over" v-if="listDataShow.length == 0">暂无数据</view>
        </view>
        <view class="pagination-zone" id="pagination-zone">
            <uni-pagination show-icon :page-size="paginationMeta.pageSize" :total="paginationMeta.total"
                :current="paginationMeta.current" @change="onPaginationChangeHandler"></uni-pagination>
        </view>
    </view>
</template>
<script>
    import {
        CommonUtils
    } from '@/utils/common'
    import {
        getUserInfo
    } from '@/utils/auth'
    import dayjs, {
        Dayjs
    } from 'dayjs'
    export default {
        data() {
            return {
                navHeight: 0,
                scrollTop: 0,
                showDetail: -1,
                operations: -1,
                hform: {
                    HBeginDate: dayjs(new Date).subtract(30, 'd').format('YYYY-MM-DD'),
                    HEndDate: dayjs(new Date).format('YYYY-MM-DD'),
                    HBillNo: ''
                },
                paginationMeta: {
                    current: 1,
                    total: 0,
                    pageSize: 30,
                },
                pageMeta: {
                    scrollContentTop: 0,
                    bottomBtnTop: 0,
                },
                listData: [],
                listDataShow: [],
            }
        },
        computed: {
            scrollContentHeight: {
                get() {
                    return this.pageMeta.bottomBtnTop - this.pageMeta.scrollContentTop
                }
            }
        },
        methods: {
            exit() {
                uni.navigateBack()
            },
            cmdAdd() {
                uni.navigateTo({
                    url: "/pages/ZLGL/shoujianjianyan/form?operationType=1"
                })
            },
            async cmdSearch() {
                let sWhere = ''
                if (this.hform.HBeginDate != "" && this.hform.HEndDate != "") {
                    sWhere += " and  CONVERT(varchar(100),日期, 23) between '" + this.hform.HBeginDate + "' and '" +
                        this.hform.HEndDate + "' ";
                }
                if (this.hform.HBillNo != "") {
                    sWhere += " and 单据号 like '%" + this.hform.HBillNo + "%'"
                }
                try {
                    let res = await CommonUtils.doRequest2Sync({
                        url: '/QC_POStockInCheckBill/GetPOStockInCheckBill',
                        data: {
                            "sWhere": sWhere,
                            "user": getUserInfo()["Czymc"]
                        },
                    })
                    if (!res) {
                        return
                    }
                    let {
                        data,
                        count,
                        Message
                    } = res.data
                    if (count > 0) {
                        this.listData = data
                        this.paginationMeta.total = data.length
                        this.onPaginationChangeHandler({
                            current: 1
                        })
                    } else {
                        uni.showToast({
                            icon: 'none',
                            title: Message
                        })
                    }
                } catch (err) {
                    console.warn(err);
                    uni.showToast({
                        title: '接口请求失败:' + err,
                        icon: 'none'
                    })
                }
            },
            async onPaginationChangeHandler({
                current
            }) {
                this.listDataShow =
                    this.listData.slice((current - 1) * this.paginationMeta.pageSize,
                        current * this.paginationMeta.pageSize)
            },
            async audit(item, mode) {
                console.log('审核单据: ',item);
                try{
                    let res = await CommonUtils.doRequest2Sync({
                        method: 'GET',
                        url: 'QC_POStockInCheck_ValueTable/QC_POStockInCheckValue',
                        data: {
                            HInterID: item["hmainid"],
                            IsAudit: mode,
                            CurUserName: getUserInfo()["Czymc"]
                        }
                    })
                    if(!res) {
                        return
                    }
                    let {count, data, Message} = res.data
                    if(count == 1) {
                        CommonUtils.showTips({
                            message: `${item["审核人"]?'反审核':'审核'}成功`
                        })
                        this.$forceUpdate()
                        setTimeout(() => {
                            this.cmdSearch()
                        }, 2000)
                    }else {
                        CommonUtils.showTips({
                            title: '温馨提示',
                            message: `单据${item["审核人"]?'反审核':'审核'}失败: ${Message}`
                        })
                    }
                }catch(err) {
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: `单据${item["审核人"]?'反审核':'审核'}错误: ${err}`
                    })
                }
            },
            async del(item) {
                console.log("delItem: ", item);
                uni.showModal({
                    title: '提示',
                    content: '确认要删除记录?删除后不能恢复',
                    success: async (res) => {
                        if (res.confirm) {
                            console.log('用户点击确定');
                            try {
                                let res = await CommonUtils.doRequest2Sync({
                                    url: '/Sc_MouldConkBookBill/DeltetMouldConkBookBill',
                                    data: {
                                        "HInterID": item.hmainid,
                                        "user": getUserInfo()["Czymc"]
                                    }
                                })
                                if (!res) {
                                    return
                                }
                                let {
                                    count,
                                    code,
                                    Message
                                } = res.data
                                if (count == 0) {
                                    return uni.showModal({
                                        title: '错误提示',
                                        content: `删除错误: ${Message}`,
                                        showCancel: false
                                    })
                                }
                                uni.showToast({
                                    title: '删除成功',
                                    icon: 'none'
                                })
                                this.cmdSearch()
                            } catch (err) {
                                uni.showModal({
                                    title: '错误提示',
                                    content: `接口请求失败: ${err}`,
                                    showCancel: false
                                })
                            }
                        }
                    },
                })
            },
            edit(item) {
                console.log("editItem:", item)
                uni.navigateTo({
                    url: `/pages/ZLGL/shoujianjianyan/form?operationType=2&linterid=${item.hmainid}`
                })
            }
        },
        onLoad() {
            this.$nextTick(() => {
                this.cmdSearch()
            })
        },
        onReady() {
            // #ifndef MP-WEIXIN
            let query = uni.createSelectorQuery().in(this)
            query.select("#scroll-content").boundingClientRect((data) => {
                this.pageMeta.scrollContentTop = data.top
            }).exec()
            query.select("#pagination-zone").boundingClientRect((data) => {
                this.pageMeta.bottomBtnTop = data.top
            }).exec()
            // #endif
            // #ifdef MP-WEIXIN
            // 微信不支持 uni.createSelectorQuery().in(this)
            // #endif
        },
    }
</script>
<style lang="scss" scoped>
    .page {
        box-sizing: border-box;
        display: flex;
        flex-direction: column;
        gap: 20rpx;
        padding: 20rpx 0;
        position: relative;
        .button-zone {
            height: auto;
            box-sizing: border-box;
            padding-top: 20rpx;
            display: flex;
            flex-direction: row;
            justify-content: space-between;
            flex-wrap: wrap;
            button {
                border-radius: 50rpx;
                width: 180rpx;
                height: 66rpx;
                line-height: 66rpx;
                font-size: 28rpx;
            }
            .btn-a {
                background-color: #3a78ff;
                color: #fff;
            }
            .btn-c {
                background-color: #ff5722;
                color: #fff;
            }
        }
        .search-condition-zone {
            height: auto;
            box-sizing: border-box;
            padding: 0 60rpx;
            display: flex;
            flex-direction: column;
            gap: 20rpx;
            .form-item {
                display: flex;
                flex-direction: row;
                gap: 20rpx;
                align-items: center;
                font-size: 28rpx;
                .left {
                    width: 4rem;
                }
                .right {
                    flex: 1;
                    padding: 8rpx 16rpx;
                    .search {
                        width: 28rpx;
                        height: 28rpx;
                    }
                    input {
                        font-size: 28rpx;
                    }
                    .uni-combox {
                        padding: 0;
                        margin: 0;
                        ::v-deep .uni-combox__input {
                            font-size: 28rpx;
                            height: auto;
                        }
                    }
                }
                .general {
                    border-radius: 22rpx;
                    border: 1px solid #acacac;
                }
                .disabled {
                    border-radius: 22rpx;
                    border: 1px solid #e4e4e4;
                    background-color: #e4e4e4;
                }
            }
        }
        .info-list-zone {
            overflow-y: auto;
            .card-item {
                .card-detail {
                    width: 100%;
                    display: flex;
                    flex-wrap: wrap;
                    justify-content: space-between;
                    line-height: 120%;
                    .detail {
                        // width: 50%;
                        font-size: 26rpx;
                        margin-bottom: 12rpx;
                        color: #555;
                        margin-right: 20rpx;
                        text {
                            color: #999;
                            font-size: 26rpx;
                        }
                    }
                }
            }
        }
        .daterange {
            display: flex;
            flex-direction: row;
            gap: 10rpx;
            justify-content: center;
            align-items: center;
        }
        .more {
            color: #888;
            font-size: 24rpx;
            display: flex;
            border-top: 1px solid #eee;
            padding-top: 20rpx;
            .part {
                width: 50%;
                text-align: center;
            }
        }
        .op {
            display: flex;
            justify-content: space-between;
            gap: 20rpx;
            margin-top: 20rpx;
            flex-wrap: wrap;
            align-content: flex-start;
            button {
                margin: 0;
                flex-shrink: 0;
                padding: 0;
                width: 150rpx;
                flex-basis: 150rpx;
                font-size: 25rpx;
            }
            .op1 {
                border: 1px solid #41a863;
                color: #41a863;
            }
            .op2 {
                border: 1px solid #d98d00;
                color: #d98d00;
            }
            .op3 {
                border: 1px solid #3a78ff;
                color: #3a78ff;
            }
            .op4 {
                border: 1px solid #da0000;
                color: #da0000;
            }
            .op5 {
                border: 1px solid #888;
                color: #888;
            }
        }
        .pagination-zone {
            position: fixed;
            bottom: 0;
            box-sizing: border-box;
            background-color: #fff;
            box-shadow: 0 2rpx 10rpx 2rpx rgba(0, 0, 0, 0.4);
            padding: 20rpx 40rpx 20rpx 40rpx;
            display: flex;
            flex-direction: column;
            gap: 20rpx;
            justify-content: space-between;
            width: 100%;
        }
    }
</style>
pages/index/tab2.vue
@@ -317,6 +317,20 @@
                    url: '/pages/weixiujilu/form',
                    id: 40,
                    hidden: false,
                },
                {
                    img: '../../static/icon/icon13.png',
                    text: '首件检验单缓存',
                    url: '/pages/ZLGL/shoujianjianyan/table',
                    id: 41,
                    hidden: false,
                },
                {
                    img: '../../static/icon/icon13.png',
                    text: '首件检验单',
                    url: '/pages/ZLGL/shoujianjianyan/form?operationType=1',
                    id: 42,
                    hidden: false,
                }
                ]
            }
pages/zhijiediaobo/table.vue
@@ -2,7 +2,7 @@
    <view class="content">
        <view class="tabs">
            <view :class="tabs == 0 ? 'on':''" @tap="changeTab(0)">缓存列表</view>
            <view :class="tabs == 1 ? 'on':''" @tap="changeTab(1)">已校验列表</view>
            <view :class="tabs == 1 ? 'on':''" @tap="changeTab(1)">已上传列表</view>
        </view>
        <view style="width: 100%;height: 16rpx;background-color: #e5e5e5;"></view>