chenhaozhe
2026-03-13 c32ab7e978d43814b1f12e9572ae6aab3da4ece4
锦隆 新增来料批量检验模块
1个文件已添加
2个文件已修改
917 ■■■■■ 已修改文件
pages.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/ZLGL/lailiaojianyan_fast/Kf_QCStockInCheckBill_Fast2.vue 902 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/index/tab4.vue 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages.json
@@ -1436,6 +1436,12 @@
            }
        },
        {
            "path": "pages/ZLGL/lailiaojianyan_fast/Kf_QCStockInCheckBill_Fast2",
            "style": {
                "navigationBarTitleText": "来料检验单"
            }
        },
        {
            "path": "pages/ZLGL/checkFlowList/QC_CheckBillflowList",
            "style": {
                "navigationBarTitleText": "待我审核",
pages/ZLGL/lailiaojianyan_fast/Kf_QCStockInCheckBill_Fast2.vue
New file
@@ -0,0 +1,902 @@
<template>
    <view>
        <!-- 页签 -->
        <view class="tabs">
            <view :class="tabs == 0 ? 'on':''" @tap="tabs = 0">选择源单</view>
            <view :class="tabs == 1 ? 'on':''" @tap="tabs = 1">表头信息</view>
            <!-- <view :class="tabs == 2 ? 'on':''" @tap="tabs = 2">物料信息</view>
            <view :class="tabs == 3 ? 'on':''" @tap="tabs = 3">附件信息</view> -->
        </view>
        <!-- 页签 源单信息 -->
        <view v-if="tabs == 0">
            <view class="form-item-wrapper">
                <view class="form-item">
                    <view class="title">源单号:</view>
                    <view class="right">
                        <input v-model="sourceBillInfo.HSourceBillNo" @confirm="getCode(sourceBillInfo.HSourceBillNo)"
                            placeholder="请输入源单号" />
                    </view>
                    <uni-icons type="scan"
                        style="margin-left: 10rpx;background-color: #3A78FF;padding: 6rpx;color: #fff;border-radius: 100%;"
                        size="20" @click="toScanCode"></uni-icons>
                </view>
                <view class="form-item">
                    <view class="title">单据号:</view>
                    <view class="right disabled">
                        <input v-model="sourceBillInfo.HBillNo" disabled />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">单据内码:</view>
                    <view class="right disabled">
                        <input v-model="sourceBillInfo.HInterID" disabled />
                    </view>
                </view>
            </view>
        </view>
        <!-- 页签 物料清单 -->
        <view v-if="tabs == 1">
            <view class="form-item-wrapper">
                <view class="form-item">
                    <view class="title">质检员:</view>
                    <view class="right">
                        <uni-combox :candidates="HKeeperNameList" placeholder="请选择质检员"
                            v-model="sourceBillInfo.HKeeperName" @input="HKeeperNameChange"></uni-combox>
                    </view>
                </view>
            </view>
            <view class="card-item-wrapper">
                <view v-for="(item, index) in materialManifest" :key="index">
                    <uni-card :class="item.selected?'card-selected':''" :title="item.HSourceBillNo"
                        @tap="selectMater(item, index)">
                        <view class="card-detail">
                            <view class="detail">
                                <text>物料代码:</text>{{item.HMaterNumber}}
                            </view>
                            <view class="detail">
                                <text>物料名称:</text>{{item.HMaterName}}
                            </view>
                            <view class="detail">
                                <text>规格型号:</text>{{item.HMaterModel}}
                            </view>
                            <view class="detail">
                                <text>数量:</text>{{item.HQty}}
                            </view>
                        </view>
                    </uni-card>
                </view>
            </view>
        </view>
        <!-- 页签 明细清单 -->
        <view v-if="tabs == 2">
            <view class="form-item-wrapper">
                <view class="form-item">
                    <view class="title">物料代码:</view>
                    <view class="right">
                        <input v-model="detailManifestItem.HMaterNumber" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">物料名称:</view>
                    <view class="right">
                        <input v-model="detailManifestItem.HMaterName" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">规格型号:</view>
                    <view class="right">
                        <input v-model="detailManifestItem.HMaterModel" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">单位:</view>
                    <view class="right">
                        <input v-model="detailManifestItem.HUnitName" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">检验数量:</view>
                    <view class="right">
                        <input v-model="detailManifestItem.HCheckQty" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">合格数量:</view>
                    <view class="right">
                        <input v-model="detailManifestItem.HRightQty" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">不合格数量:</view>
                    <view class="right">
                        <input v-model="detailManifestItem.HBadQty" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">质检员:</view>
                    <view class="right">
                        <uni-combox :candidates="HKeeperNameList" placeholder="请选择质检员"
                            v-model="detailManifestItem.HKeeperName" @input="HKeeperNameChange"></uni-combox>
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">检验结果:</view>
                    <view class="right">
                        <uni-combox v-model="detailManifestItem.HCheckResultName" :candidates="HCheckResultValueList"
                            @input="HCheckResultChangeHandle"></uni-combox>
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">使用决策:</view>
                    <view class="right">
                        <uni-combox v-model="detailManifestItem.HUseResultName" :candidates="HUseResultValueList"
                            @input="HUseResultChangeHandle"></uni-combox>
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">仓库:</view>
                    <view class="right">
                        <input v-model="detailManifestItem.HWHName_B" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">仓位:</view>
                    <view class="right">
                        <input v-model="detailManifestItem.HSPName_B" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">批号:</view>
                    <view class="right">
                        <input v-model="detailManifestItem.HBatchNo" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">质检组织:</view>
                    <view class="right">
                        <input v-model="detailManifestItem.HZJOrgName" />
                    </view>
                </view>
                <view class="form-item">
                    <view class="title">供应商:</view>
                    <view class="right">
                        <input v-model="detailManifestItem.HSupName" />
                    </view>
                </view>
            </view>
        </view>
        <!-- 页签 附件信息 -->
        <view v-if="tabs == 3">
            <view class="card-item-wrapper">
                <view class="attachment-btns">
                    <button type="primary" size="mini" @tap="fileUpload">选择文件</button>
                    <button type="primary" size="mini" @tap="imageUpload">拍照上传</button>
                    <view style="flex: 1;"></view>
                </view>
                <view v-for="(item, index) in attachmentInfo" :key="index">
                    <uni-card :title="item['fileName']" :thumbnail="item.filePath">
                        <view class="card-detail">
                            <view class="detail">
                                <text>大小:</text>{{item["size"]}}
                            </view>
                            <view class="detail">
                                <text>状态:</text>{{item["status"]}}
                            </view>
                            <view class="detail operation" v-if="item['status']!='上传成功'">
                                <text>操作:</text>
                                <button class="btn-a" size="mini" @tap.stop="uploadFile(index)">上传</button>
                                <button class="btn-b" size="mini" @tap.stop="delFile(index)">删除</button>
                            </view>
                        </view>
                    </uni-card>
                </view>
            </view>
        </view>
        <view style="height: 140rpx;"></view>
        <!-- 操作按钮 -->
        <view class="bottom-btn" id="bottom-btn">
            <button class="btn-a" size="mini" @tap="cmdSubmit">提交</button>
            <button class="btn-a" size="mini" @tap="cmdAdd">新增</button>
            <view style="flex: 1;"></view>
            <!-- <button class="btn-d" size="mini" @tap="cmdDelete">删除</button> -->
            <button class="btn-c" size="mini" @tap="cmdExit">退出</button>
        </view>
        <xe-upload ref="XeUpload" :options="uploadOptions" @callback="handleUploadCallback"></xe-upload>
    </view>
</template>
<script>
    import {
        getUserInfo
    } from '../../../utils/auth';
    import {
        CommonUtils
    } from '../../../utils/common';
    import {
        MpaasScan
    } from '@/utils/mpaasScan.js'
    export default {
        data() {
            return {
                uploadOptions: {},
                EnableSubmit: false,
                tabs: 0,
                // 源单信息
                sourceBillInfo: {
                    HSourceBillNo: '',
                    HBillNo: '',
                    HInterID: '',
                    HSourceEntryIDList: [],
                    HSourceInterID: 0,
                    HSourceBillType: 0,
                    HKeeperID: getUserInfo()["HEmpID"],
                    HKeeperName: getUserInfo()["HEmpName"]
                },
                // 物料清单
                materialManifest: [],
                // 明细清单
                detailManifest: [],
                detailManifestItem: {
                    "HMaterNumber": "",
                    "HMaterID": "",
                    "HMaterName": "",
                    "HMaterModel": "",
                    "HUnitName": "",
                    "HUnitNumber": "",
                    "HCheckQty": "",
                    "HRightQty": "",
                    "HBadQty": "",
                    "HKeeper": "",
                    "HKeeperID": "0",
                    "HCheckResult": "1",
                    "HUseResult": "A",
                    "HWHName_B": "",
                    "HWHNumber": "",
                    "HWHID": "",
                    "HSPName_B": "",
                    "HSPNumber": "",
                    "HSPID": "",
                    "HBatchNo": "",
                    "HZJOrgName": "",
                    "HZJOrgNumber": "",
                    "HSupName": "",
                    "HSupNumber": "",
                    "HSupID": "",
                    "HCheckResultName": '合格',
                    "HUseResultName": '接收',
                    "HSourceBillType": "",
                    "HSLInterID": "0",
                    "HSLEntryID": "1",
                    "HSLBillNo": "",
                    "HSLSeQ": ""
                },
                // 附件信息
                attachmentInfo: [],
                detailManifestCursor: 0, // 明细清单索引指针
                HCheckResultValueList: ["合格", "不合格", "保留"],
                HUseResultValueList: ["接收", "让步接收"],
                HCheckResultList: [{
                    value: 1,
                    text: "合格"
                }, {
                    value: 2,
                    text: "不合格"
                }, {
                    value: 3,
                    text: "保留"
                }],
                HUseResultList: [{
                    value: "A",
                    text: "接收"
                }, {
                    value: "B",
                    text: "让步接收"
                }, {
                    value: "E",
                    text: "挑选(全检)"
                }, {
                    value: "F",
                    text: "判退"
                }],
                HKeeperList: [],
                HKeeperNameList: []
            };
        },
        methods: {
            selectMater(item, index) {
                if (typeof this.materialManifest[index].selected == 'undefined') {
                    this.$set(this.materialManifest[index], 'selected', false)
                }
                if (this.materialManifest[index].selected == false) {
                    this.sourceBillInfo.HSourceEntryIDList[index] =
                        item.HSourceEntryID
                    this.materialManifest[index].selected = true
                } else {
                    this.sourceBillInfo.HSourceEntryIDList.splice(index, 1)
                    this.materialManifest[index].selected = false
                }
            },
            handleUploadCallback(res) { // 文件上传回调
                console.log('file: ', res);
                let fileInfo = res.data[0]
                this.attachmentInfo.push({
                    fileName: fileInfo.name,
                    size: fileInfo.size,
                    status: '等待上传',
                    filePath: fileInfo.tempFilePath
                })
            },
            delFile(index) {
                console.log('attachmentInfo: ', this.attachmentInfo[index]);
                uni.showModal({
                    title: '提示',
                    content: '确认要删除 " ' + this.attachmentInfo[index].fileName + ' " 删除后将不可恢复!',
                    success: (res) => {
                        if (res.confirm) {
                            this.attachmentInfo.splice(index, 1)
                        }
                    },
                })
            },
            uploadFile(index) {
                console.log('filePath: ', this.attachmentInfo[index].filePath);
                // 通过临时路径读取文件
                uni.uploadFile({
                    url: CommonUtils.getServerUrl() + "/Cj_StationOutBill/UploadFile2",
                    filePath: this.attachmentInfo[index].filePath,
                    name: 'file',
                    formData: {
                        HBillNo: this.sourceBillInfo.HBillNo,
                        HRemark: "",
                        HUserName: getUserInfo()["Czymc"]
                    },
                    success: (uploadRes) => {
                        CommonUtils.showTips({
                            message: "上传成功"
                        })
                        this.attachmentInfo[index].status = "上传成功"
                    },
                    fail: (err) => {
                        CommonUtils.showTips({
                            title: '温馨提示',
                            message: `上传失败: ${err}`
                        })
                    }
                })
            },
            fileUpload() {
                this.$refs.XeUpload.upload('file', {});
            },
            imageUpload() {
                uni.chooseImage({
                    count: 1,
                    success: (res) => {
                        console.log(res)
                        let fileNameArray = res.tempFiles[0].path.split("/")
                        this.attachmentInfo.push({
                            fileName: res.tempFiles[0].name,
                            size: (res.tempFiles[0].size / 1024).toFixed(2) + 'kB',
                            status: '等待上传',
                            filePath: res.tempFilePaths[0],
                            type: res.tempFilePaths[0].type
                        })
                    },
                })
            },
            HKeeperNameChange(e) {
                let keeperItem = this.HKeeperList.find(elem => elem.HName == e)
                this.sourceBillInfo.HKeeperID = keeperItem.HItemID
                this.sourceBillInfo.HKeeperName = keeperItem.HName
            },
            HCheckResultChangeHandle(e) {
                this.detailManifestItem.HCheckResult =
                    this.HCheckResultList.find(elem => elem.text == e)?.value
                if (e == '合格') {
                    this.HUseResultValueList = ["接收", "让步接收"]
                    this.detailManifestItem.HUseResultName = "接收"
                    this.detailManifestItem.HUseResult = "A"
                } else if (e == '不合格') {
                    this.HUseResultValueList = ["挑选(全检)", "判退"]
                    this.detailManifestItem.HUseResultName = "挑选(全检)"
                    this.detailManifestItem.HUseResult = "E"
                } else if (e == '保留') {
                    this.HUseResultValueList = ["接收", "让步接收", "挑选(全检)", "判退"]
                    this.detailManifestItem.HUseResultName = "接收"
                    this.detailManifestItem.HUseResult = "A"
                }
                this.HUseResultChangeHandle(this.HUseResultValueList[0])
            },
            HUseResultChangeHandle(e) {
                this.detailManifestItem.HUseResult =
                    this.HUseResultList.find(elem => elem.text == e)?.value
            },
            async toDetail(item, index) {
                // 获取 物料明细
                try {
                    let res = await CommonUtils.doRequest2Async({
                        url: '/QCStockInCheckBill/DisBillEntryList_Webs_New_Json1',
                        data: {
                            HInterID: item.HSourceInterID,
                            HEntryID: item.HSourceEntryID,
                        }
                    })
                    let {
                        data,
                        count,
                        Message
                    } = res.data
                    if (count != 1) {
                        throw Message
                    }
                    console.log('data: ', data);
                    Object.assign(this.detailManifestItem, {
                        HMaterNumber: data[0].HMaterNumber,
                        HMaterName: data[0].HMaterName,
                        HMaterModel: data[0].HMaterModel,
                        HUnitName: data[0].HUnitName,
                        HWHName_B: data[0].HWHName_B,
                        HSPName_B: data[0].HSPName_B,
                        HBatchNo: data[0].HBatChNo.trim(),
                        HZJOrgName: data[0].HZJOrgName,
                        HZJOrgNumber: data[0].HZJOrgNumber,
                        HSupName: data[0].HSupName,
                        HUnitNumber: data[0].HUnitNumber,
                        HSupNumber: data[0].HSupNumber,
                        HWHNumber: data[0].HWHNumber,
                        HSPNumber: data[0].HSPNumber,
                        HSeQ: data[0].HSeQ,
                        HSourceInterID: data[0].HSourceInterID,
                        HSourceEntryID: data[0].HSourceEntryID,
                        HSourceBillNo: data[0].HSourceBillNo,
                        HWHID: data[0].HWHID,
                        HSPID: data[0].HSPID,
                        HSupID: data[0].HSupID,
                        HMaterID: data[0].HMaterID,
                        HSourceBillType: data[0].HSourceBillType,
                        HSLInterID: data[0].HSLInterID,
                        HSLEntryID: data[0].HSLEntryID,
                        HSLBillNo: data[0].HSLBillNo,
                        HSLSeQ: data[0].HSLSeQ,
                        HCheckQty: data[0].hqty,
                    })
                } catch (err) {
                    CommonUtils.showTips({
                        title: "温馨提示",
                        message: `获取明细信息错误: ${err}`
                    })
                }
                // }
                this.EnableSubmit = true
                // this.detailManifestCursor = index
                this.tabs = 2
            },
            async getCode(HSourceBillNo) {
                try {
                    let res = await CommonUtils.doRequest2Sync({
                        url: '/Kf_QCStockInCheckBill_Fast/BarCode_Json_SourceBillNo',
                        data: {
                            HBarCode: HSourceBillNo,
                            HOrgID: uni.getStorageSync('OrganizationID')
                        }
                    })
                    if (!res) {
                        return
                    }
                    let {
                        data,
                        Message,
                        count
                    } = res.data
                    if (count == 1) {
                        this.sourceBillInfo.HSourceInterID = data[0].HSourceInterID
                        this.sourceBillInfo.HSourceBillType = '1103'
                        this.materialManifest = data
                        this.tabs = 1
                    } else {
                        CommonUtils.showTips({
                            title: '温馨提示',
                            message: `初始化单据号错误: ${Message}`
                        })
                    }
                } catch (err) {
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: `初始化单据号错误: ${err}`
                    })
                }
            },
            toScanCode() {
                MpaasScan.scanCode((code) => {
                    console.log('HSourceBillNo: ', code);
                    if (!code) {
                        return
                    }
                    this.getCode(code)
                })
            },
            cmdAdd() {
                uni.redirectTo({
                    url: "/pages/ZLGL/lailiaojianyan_fast/Kf_QCStockInCheckBill_Fast"
                })
            },
            async cmdSubmit() { // 后端在单次上传文件提交后会删除本地文件,一次只能提交一个数据
                // 检查是否选中物料
                if (this.sourceBillInfo.HSourceInterID == 0) {
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: `未扫描源单,请先扫描源单后再提交...`
                    })
                    return
                }
                if (this.sourceBillInfo.HSourceEntryIDList.length == 0) {
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: `未选择检验物料,请选择至少一个检验物料...`
                    })
                    return
                }
                let HEntryIDStr = `${this.sourceBillInfo.HSourceEntryIDList.filter(item => item !== undefined && item !== null).join(',')}`
                try {
                    let res = await CommonUtils.doRequest2Sync({
                        url: 'WEBSController/set_SaveQCPOStockInCheckBill_Json',
                        data: {
                            HInterID: this.sourceBillInfo.HInterID,
                            HBillNo: this.sourceBillInfo.HBillNo,
                            HSourceBillType: this.sourceBillInfo.HSourceBillType,
                            HSourceBillNo: this.sourceBillInfo.HSourceBillNo,
                            HSourceInterID: this.sourceBillInfo.HSourceInterID,
                            sHSourceEntryID: HEntryIDStr,
                            HFirstCheckEmp: this.sourceBillInfo.HKeeperID,
                            HMaker: getUserInfo()["Czymc"]
                        },
                    })
                    let {
                        data,
                        count,
                        Message
                    } = res.data
                    if (count == 1) {
                        uni.hideLoading()
                        uni.showModal({
                            title: '提示',
                            content: res.data.Message + '。是否继续新增?',
                            success: (res) => {
                                if (res.confirm) {
                                    console.log('用户点击确定');
                                    uni.redirectTo({
                                        url: './kf_QCStockInCheckBill_Fast2'
                                    })
                                } else if (res.cancel) {
                                    console.log('用户点击取消');
                                    setTimeout(() => {
                                        uni.navigateBack();
                                    }, 50)
                                }
                            }
                        });
                    } else {
                        CommonUtils.showTips({
                            title: '温馨提示',
                            message: `上传失败: ${Message}`
                        })
                    }
                } catch (err) {
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: `上传失败: ${err}`
                    })
                    this.attachmentInfo = []
                }
            },
            cmdExit() {
                uni.navigateBack()
            },
            async GetMaxNumPDA() {
                try {
                    let res = await CommonUtils.doRequest2Async({
                        url: "/Web/GetMAXNumPDA",
                        data: {
                            HBillType: 7503
                        }
                    })
                    let {
                        data,
                        count,
                        Message
                    } = res.data
                    if (count == 1) {
                        this.sourceBillInfo.HBillNo = data[0]["HBillNo"]
                        this.sourceBillInfo.HInterID = data[0]["HInterID"]
                    } else {
                        CommonUtils.showTips({
                            title: '温馨提示',
                            message: `初始化单据号错误: ${Message}`
                        })
                    }
                } catch (err) {
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: `初始化单据号错误: ${err}`
                    })
                }
            },
            async getHEmpInfo() {
                try {
                    let res = await CommonUtils.doRequest2Async({
                        url: '/Web/GetEmployeeList_Json',
                        data: {
                            Employee: '',
                            HGroupID: 0,
                            HDeptID: uni.getStorageSync("HDeptID")
                        },
                    })
                    let {
                        data,
                        count,
                        Message
                    } = res.data
                    if (count == 1) {
                        this.HKeeperList = data
                        this.HKeeperNameList = Array.from(data).map(e => e.HName)
                    } else {
                        CommonUtils.showTips({
                            title: '温馨提示',
                            message: `初始化质检员错误: ${Message}`
                        })
                    }
                } catch (err) {
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: `初始化质检员错误: ${err}`
                    })
                }
            }
        },
        onLoad() {
            // 获取来料检验单最新单据号和单据内码
            this.GetMaxNumPDA()
            this.getHEmpInfo()
        }
    }
</script>
<style lang="scss">
    .tabs {
        width: 100%;
        display: flex;
        border-bottom: 1px solid #ddd;
        box-sizing: border-box;
        padding-top: 20rpx;
        view {
            width: 25%;
            font-size: 30rpx;
            color: #555;
            text-align: center;
            padding: 16rpx 0;
        }
        .on {
            color: #3a78ff;
            font-weight: bold;
            border-bottom: 3px solid #3a78ff;
        }
    }
    .bottom-btn {
        width: 100%;
        box-sizing: border-box;
        // 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;
        }
        .btn-d {
            background-color: #ff8901;
            color: #fff;
        }
    }
    .form-item-wrapper {
        display: flex;
        flex-direction: column;
        justify-content: center;
        box-sizing: border-box;
        gap: 10rpx;
        padding: 20rpx 30rpx;
        .form-item {
            display: flex;
            align-items: center;
            font-size: 30rpx;
            padding: 6rpx 0;
            gap: 12rpx;
            .title {
                width: 200rpx;
                text {
                    color: red;
                    font-weight: bold;
                }
            }
            .right {
                flex: 1;
                border-radius: 22rpx;
                border: 1px solid #acacac;
                position: relative;
                display: flex;
                picker {
                    width: 100%;
                }
                .uni-combox {
                    width: 100%;
                }
            }
            .disabled {
                border: 1px solid #e4e4e4;
                background-color: #e4e4e4;
            }
            .righton {
                flex: 1;
                border-radius: 22rpx;
                border: 1px solid #e4e4e4;
                background-color: #e4e4e4;
            }
            input {
                width: 100%;
                padding: 8rpx 20rpx;
                font-size: 30rpx;
            }
            textarea {
                width: 98%;
                padding: 8rpx 20rpx;
                font-size: 30rpx;
            }
        }
    }
    .card-item-wrapper {
        display: flex;
        flex-direction: column;
        justify-content: center;
        box-sizing: border-box;
        padding: 20rpx 20rpx;
        .uni-card {
            margin: 10rpx !important;
        }
        .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;
                }
            }
            .operation {
                display: flex;
                align-items: center;
                gap: 10rpx;
                .btn-a {
                    background-color: #3A78FF;
                    color: #fff;
                }
                .btn-b {
                    background-color: rgb(255, 87, 34);
                    color: #fff;
                }
                uni-button {}
            }
        }
        .more {
            color: #888;
            font-size: 24rpx;
            display: flex;
            border-top: 1px solid #eee;
            padding-top: 20rpx;
            .part {
                width: 50%;
                text-align: center;
            }
        }
    }
    .attachment-btns {
        display: flex;
        flex-direction: row;
        justify-content: flex-start;
        gap: 6rpx;
    }
    .card-selected {
        background-color: #a8c7fa;
        scale: 1.05;
    }
</style>
pages/index/tab4.vue
@@ -95,7 +95,7 @@
                        "text": "来料检验(批量)",
                        "url": "/pages/ZLGL/lailiaojianyan_fast/Kf_QCStockInCheckBill_Fast",
                        "id": 7,
                        "hidden": false
                        "hidden": true
                    },
                    {
                        "img": "../../static/icon/icon8.png",
@@ -189,6 +189,13 @@
                        "id": 20,
                        "hidden": false
                    },
                    {
                        "img": "../../static/icon/icon8.png",
                        "text": "来料检验(批量)",
                        "url": "/pages/ZLGL/lailiaojianyan_fast/Kf_QCStockInCheckBill_Fast2",
                        "id": 21,
                        "hidden": false
                    },
                ]
            }
        },