#
zhou zhou
昨天 8d3ebc610d048289f8ca4d8bc86ac11208a60fef
#
7个文件已修改
62个文件已删除
7个文件已添加
27545 ■■■■ 已修改文件
components/confirm-modal/confirm-modal.vue 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
locale/zh-Hans.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages.json 1171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/icon.vue 939 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/inspect/bad.vue 336 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/inspect/check.vue 466 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/login/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/other/transferView/orderDetlList.vue 367 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/other/transferView/orderList.vue 388 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/outbound/orderOut/orderList.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/outbound/orderOut/order_out_type.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/outbound/orderOutView/orderDetlList.vue 367 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/outbound/orderOutView/orderList.vue 388 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/outbound/orderOutView/order_out_type.vue 250 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/AGV/AGVPakin.vue 647 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/AGV/AGVPakin2.vue 651 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/AGV/AGVPakin3.vue 789 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/AGV/emptyOut.vue 632 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/AGV/emptyPakin.vue 577 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/backStock/backStockList.vue 478 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/backStock/backStocksOrder.vue 470 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/bcp/bcpDbList.vue 493 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/bcp/bcpDbOrder.vue 470 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/bcp/bcpDbOrderV2.vue 487 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/bcp/bcpOrder.vue 463 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/bcp/bcpOrder_xs.vue 463 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/bcp/orderCar.vue 281 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/bcp/orderCar_xs.vue 310 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/checkLocDetl/checkLocDetl.vue 342 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/checkLocDetl/checkLocDetl2.vue 342 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/checkLocDetl/locDetl.vue 351 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/checkLocDetl/locDetl2.vue 353 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/checkLocDetl/locDetlList.vue 336 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/checkLocDetl/locDetlList2.vue 337 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/checkLocDetl/locMove.vue 360 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/comOrder/checkOut.vue 302 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/comOrder/orderCar.vue 271 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/comOrder/orderIn.vue 508 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/comOrder/orderOut.vue 410 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/inStock/inStock.vue 287 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/mat/mat.vue 233 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/mat/matSelected.vue 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/order/orderCar.vue 281 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/order/orderList.vue 259 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/order/orderList2.vue 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/order/outOrder.vue 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/order/pakinOrderSelect.vue 469 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/order/pakinOrderSelectV2.vue 487 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/order/preview.vue 281 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/order/purchaseOrder.vue 179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/orderOut/bcpOrderOutSelect.vue 362 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/orderOut/bcpOrderOutSelect_2.vue 362 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/orderOut/orderCheck.vue 308 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/orderOut/orderCheck_2.vue 309 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/orderOut/orderList.vue 281 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/orderOut/orderOutSelect.vue 385 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/orderOut/orderOutSelectV2.vue 402 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/processOrder/orderCheck.vue 302 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/processOrder/orderCheck2.vue 289 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/processOrder/processList.vue 284 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/processOrder/processOrder.vue 366 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/stationManage/confirmProcessed.vue 423 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/stationManage/pickAgain.vue 361 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/stationManage/pickAgainDetl.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/stationManage/stationDetl.vue 1267 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/stationManage/stationManage.vue 493 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/utils/utils.js 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/waitOrder/waitOrderIn.vue 459 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/waitOrder/waitOrderOut.vue 366 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/wrkMast/DBList.vue 558 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/wrkMast/locMoveMast.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/wrkMast/waitPakin.vue 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/wrkMast/waitPakinLog.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/wrkMast/wrkDetl.vue 200 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/wrkMast/wrkMast.vue 513 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/wrkMast/wrkMastLog.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
components/confirm-modal/confirm-modal.vue
New file
@@ -0,0 +1,178 @@
<template>
    <view
        class="modal-mask"
        v-if="visible"
        @click="handleCancel"
    >
        <view
            class="modal-container"
            @click.stop
        >
            <view class="modal-header">
                <text
                    :class="'cuIcon-' + icon"
                    :style="{ fontSize: '48rpx', color: iconColor }"
                ></text>
                <text class="modal-title">{{ title }}</text>
            </view>
            <view class="modal-body">
                <text class="modal-message">
                    {{ message }}
                </text>
            </view>
            <view class="modal-footer">
                <button
                    class="modal-btn modal-btn-cancel"
                    @click="handleCancel"
                >
                    {{ cancelText }}
                </button>
                <button
                    class="modal-btn modal-btn-confirm"
                    @click="handleConfirm"
                    :disabled="isconfirm"
                    :loading="isconfirm"
                >
                    {{ confirmText }}
                </button>
            </view>
        </view>
    </view>
</template>
<script>
export default {
    name: 'ConfirmModal',
    props: {
        visible: {
            type: Boolean,
            default: false
        },
        title: {
            type: String,
            default: '提示'
        },
        message: {
            type: String,
            default: ''
        },
        icon: {
            type: String,
            default: 'deliver'
        },
        iconColor: {
            type: String,
            default: '#0081ff'
        },
        cancelText: {
            type: String,
            default: '取消'
        },
        confirmText: {
            type: String,
            default: '确定'
        },
        isconfirm: {
            type: Boolean,
            default: false
        }
    },
    methods: {
        handleCancel() {
            this.$emit('update:visible', false)
            this.$emit('cancel')
        },
        handleConfirm() {
            this.$emit('confirm')
        }
    }
}
</script>
<style scoped>
/* 弹窗遮罩层 */
.modal-mask {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: rgba(0, 0, 0, 0.5);
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 999;
}
/* 弹窗容器 */
.modal-container {
    width: 600rpx;
    background-color: #ffffff;
    border-radius: 24rpx;
    overflow: hidden;
    box-shadow: 0 8rpx 40rpx rgba(0, 0, 0, 0.15);
}
/* 弹窗头部 */
.modal-header {
    padding: 40rpx 30rpx 20rpx;
    display: flex;
    flex-direction: column;
    align-items: center;
    background: linear-gradient(135deg, #f0f7ff 0%, #e8f4ff 100%);
}
.modal-title {
    font-size: 34rpx;
    font-weight: bold;
    color: #333;
    /* margin-top: 16rpx; */
}
/* 弹窗内容 */
.modal-body {
    padding: 30rpx;
}
.modal-message {
    font-size: 30rpx;
    color: #666;
    text-align: center;
    display: block;
}
/* 弹窗底部按钮 */
.modal-footer {
    display: flex;
    border-top: 1rpx solid #eee;
}
.modal-btn {
    flex: 1;
    height: 100rpx;
    line-height: 100rpx;
    font-size: 32rpx;
    border: none;
    border-radius: 0;
    background-color: #fff;
}
.modal-btn::after {
    border: none;
}
.modal-btn-cancel {
    color: #999;
    border-right: 1rpx solid #eee;
}
.modal-btn-confirm {
    color: #fff;
    background: linear-gradient(135deg, #0081ff 0%, #1890ff 100%);
    font-weight: bold;
}
.modal-btn-confirm:active {
    background: linear-gradient(135deg, #0070dd 0%, #1480e8 100%);
}
.modal-btn-cancel:active {
    background-color: #f5f5f5;
}
</style>
locale/zh-Hans.json
@@ -54,7 +54,8 @@
        "productionMatCall":"生产叫料",
        "matDirectDelivery":"生产直送",
        "productDirectDelivery":"成品直出",
        "matPreparation":"生产备料"
        "matPreparation":"生产备料",
        "other":"综合"
        
        
    },
pages.json
@@ -1,770 +1,405 @@
{
    "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
        {
            "path": "pages/login/index",
            "style": {
                "navigationBarTitleText": "%page.login%",
                "navigationStyle": "custom"
            }
{
    "pages": [
        {
            "path": "pages/login/index",
            "style": {
                "navigationBarTitleText": "%page.login%",
                "navigationStyle": "custom"
            }
        },
        {
            "path": "pages/home/index",
            "style": {
                "navigationBarTitleText": "%page.index%"
            }
        },
        {
            "path": "pages/home/index",
            "style": {
                "navigationBarTitleText": "%page.index%"
            }
        },
        {
            "path": "pages/outbound/orderOut/order_out_type",
            "style": {
                "navigationBarTitleText": "单据类型"
            }
        },
        {
            "path": "pages/outbound/orderOut/orderList",
            "style": {
                "navigationBarTitleText": "单据列表",
                "enablePullDownRefresh": true
            }
        },
        {
            "path": "pages/outbound/orderOut/orderDetlList",
            "style": {
                "navigationBarTitleText": "单据明细列表"
            }
        },
        {
            "path": "pages/outbound/orderOut/outLocView",
            "style": {
                "navigationBarTitleText": "出库库位视图"
            }
        },
        {
            "path": "pages/emptyTray/outBound",
            "style": {
                "navigationBarTitleText": "空托出库"
            }
        },
        {
            "path": "pages/emptyTray/inBound",
            "style": {
                "navigationBarTitleText": "空托入库"
            }
        },
        {
            "path": "pages/outbound/orderPick",
            "style": {
                "navigationBarTitleText": "订单出库"
            }
        },
        {
            "path": "pages/outbound/orderOut",
            "style": {
                "navigationBarTitleText": "出库订单"
            }
        },
        {
            "path": "pages/outbound/orderOutItem",
            "style": {
                "navigationBarTitleText": "订单出库详情"
            }
        },
        {
            "path": "pages/outbound/matPreparation",
            "style": {
                "navigationBarTitleText": "生产备料"
            }
        },
        {
            "path": "pages/outbound/matPreparationItem",
            "style": {
                "navigationBarTitleText": "生产备料详情"
            }
        },
        {
            "path": "pages/inbound/orderIn",
            "style": {
                "navigationBarTitleText": "入库订单"
            }
        },
        {
            "path": "pages/inbound/orderInExecute",
            "style": {
                "navigationBarTitleText": "入库订单列表"
            }
        },
        {
            "path": "pages/inbound/orderInItem",
            "style": {
                "navigationBarTitleText": "入库订单详情"
            }
        },
        {
            "path": "pages/transfer/transferType",
            "style": {
                "navigationBarTitleText": "调拨类型"
            }
        },
        {
            "path": "pages/transfer/orderTransfer",
            "style": {
                "navigationBarTitleText": "调拨订单"
            }
        },
        {
            "path": "pages/transfer/orderTransferItem",
            "style": {
                "navigationBarTitleText": "调拨订单详情"
            }
        },
        {
            "path": "pages/transfer/matTransfer",
            "style": {
                "navigationBarTitleText": "移库"
            }
        },
        {
            "path": "pages/workInfo/taskInfo",
            "style": {
                "navigationBarTitleText": "工作任务"
            }
        },
        {
            "path": "pages/workInfo/stationInfo",
            "style": {
                "navigationBarTitleText": "站点信息"
            }
        },
        {
            "path": "pages/workInfo/locInfo",
            "style": {
                "navigationBarTitleText": "库位信息"
            }
        },
        {
            "path": "pages/inbound/buffStore",
            "style": {
                "navigationBarTitleText": "灌桶入库"
            }
        },
        {
            "path": "pages/outbound/matDirectDelivery",
            "style": {
                "navigationBarTitleText": "生产直送"
            }
        },
        {
            "path": "pages/outbound/productDirectDelivery",
            "style": {
                "navigationBarTitleText": "成品直出"
            }
        },
        {
            "path": "pages/outbound/productionMatCall",
            "style": {
                "navigationBarTitleText": "生产叫料"
            }
        },
        {
            "path": "pages/outbound/wavePick",
            "style": {
                "navigationBarTitleText": "波次拣货"
            }
        },
        {
            "path": "pages/check/checkOrder",
            "style": {
                "navigationBarTitleText": "盘点单"
            }
        },
        {
            "path": "pages/check/checkOrderItem",
            "style": {
                "navigationBarTitleText": "初盘"
            }
        },
        {
            "path": "pages/check/firstCheck",
            "style": {
                "navigationBarTitleText": "初盘"
            }
        },
        {
            "path": "pages/outbound/wavePickItem",
            "style": {
                "navigationBarTitleText": "波次拣货"
            }
        },
        {
            "path": "pages/rece/standard",
            "style": {
                "navigationBarTitleText": "标准收货"
            }
        },
        {
            "path": "pages/rece/other",
            "style": {
                "navigationBarTitleText": "单据收货"
            }
        },
        {
            "path": "pages/listing/disc",
            "style": {
                "navigationBarTitleText": "组盘"
            }
        },
        {
            "path": "pages/AGV/AGVStaBind",
            "style": {
                "navigationBarTitleText": "AGV站点绑定"
            }
        },
        {
            "path": "pages/AGV/StaUnBind",
            "style": {
                "navigationBarTitleText": "AGV站点解绑"
            }
        },
        {
            "path": "pages/AGV/StartInTask",
            "style": {
                "navigationBarTitleText": "AGV入库"
            }
        },
        {
            "path": "pages/AGV/BindAndInTask",
            "style": {
                "navigationBarTitleText": "AGV绑定&入库"
            }
        },
        {
            "path": "pages/listing/matnrPalletising",
            "style": {
                "navigationBarTitleText": "单据组托"
            }
        },
        {
            "path": "pages/listing/itemSelect",
            "style": {
                "navigationBarTitleText": "选择物料",
                "enablePullDownRefresh": true
            }
        },
        {
            "path": "pages/listing/untie",
            "style": {
                "navigationBarTitleText": "解绑"
            }
        },
        {
            "path": "pages/inspect/report",
            "style": {
                "navigationBarTitleText": "报检"
            }
        },
        {
            "path": "pages/inspect/check",
            "style": {
                "navigationBarTitleText": "质检解锁"
            }
        },
        {
            "path": "pages/inspect/bad",
            "style": {
                "navigationBarTitleText": "质检上锁"
            }
        },
        {
            "path": "pages/listing/labour",
            "style": {
                "navigationBarTitleText": "人工上架"
            }
        },
        {
            "path": "pages/listing/upper",
            "style": {
                "navigationBarTitleText": "上架"
            }
        },
        {
            "path": "pages/outbound/fastPicking",
            "style": {
                "navigationBarTitleText": "快速拣货"
            }
        },
        {
            "path": "pages/mat/matSelected",
            "style": {
                "navigationBarTitleText": "物料"
            }
        },
        {
            "path": "pages/mat/matQuery",
            "style": {
                "navigationBarTitleText": "物料"
            }
        },
        {
            "path": "pages/mat/matList",
            "style": {
                "navigationBarTitleText": "商品列表"
            }
        },
        {
            "path": "pages/login/logOut",
            "style": {
                "navigationBarTitleText": "退出登录"
            }
        },
        {
            "path": "pages/home/menuHome",
            "style": {
                "navigationBarTitleText": "主页",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/home/inOutManage",
            "style": {
                "navigationBarTitleText": "入出库管理",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/AGV/AGVPakin",
            "style": {
                "navigationBarTitleText": "AGV组托",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/order/orderList",
            "style": {
                "navigationBarTitleText": "订单列表",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/AGV/AGVPakin2",
            "style": {
                "navigationBarTitleText": "AGV组托",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/home/orderManage",
            "style": {
                "navigationBarTitleText": "单据管理",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/order/purchaseOrder",
            "style": {
                "navigationBarTitleText": "采购入库单",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/wrkMast/wrkMast",
            "style": {
                "navigationBarTitleText": "工作档查询维护",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/home/wrkMastManage",
            "style": {
                "navigationBarTitleText": "任务管理",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/wrkMast/waitPakin",
            "style": {
                "navigationBarTitleText": "入库通知档",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/wrkMast/wrkDetl",
            "style": {
                "navigationBarTitleText": "工作档明细",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/AGV/emptyPakin",
            "style": {
                "navigationBarTitleText": "空板入库",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/stationManage/stationManage",
            "style": {
                "navigationBarTitleText": "站点查询维护",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/order/outOrder",
            "style": {
                "navigationBarTitleText": "订单出库",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/AGV/AGVPakin3",
            "style": {
                "navigationBarTitleText": "组托入库",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/order/preview",
            "style": {
                "navigationBarTitleText": "出库预览",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/AGV/emptyOut",
            "style": {
                "navigationBarTitleText": "呼叫空货架",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/wrkMast/wrkMastLog",
            "style": {
                "navigationBarTitleText": "工作历史档",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/wrkMast/waitPakinLog",
            "style": {
                "navigationBarTitleText": "入库通知历史档",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/order/orderList2",
            "style": {
                "navigationBarTitleText": "订单列表",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/stationManage/stationDetl",
            "style": {
                "navigationBarTitleText": "站点详情",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/order/pakinOrderSelect",
            "style": {
                "navigationBarTitleText": "入库订单",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/order/pakinOrderSelectV2",
            "style": {
                "navigationBarTitleText": "入库订单",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/order/orderCar",
            "style": {
                "navigationBarTitleText": "待组托列表",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/orderOut/orderOutSelect",
            "style": {
                "navigationBarTitleText": "出库订单",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/orderOut/orderOutSelectV2",
            "style": {
                "navigationBarTitleText": "出库订单",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/orderOut/orderList",
            "style": {
                "navigationBarTitleText": "待出列表",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/orderOut/orderCheck",
            "style": {
                "navigationBarTitleText": "出库确认",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/orderOut/orderCheck_2",
            "style": {
                "navigationBarTitleText": "出库确认",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/checkLocDetl/checkLocDetl",
            "style": {
                "navigationBarTitleText": "盘点",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/checkLocDetl/locDetl",
            "style": {
                "navigationBarTitleText": "库存明细",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/checkLocDetl/locDetlList",
            "style": {
                "navigationBarTitleText": "库存明细",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/mat/mat",
            "style": {
                "navigationBarTitleText": "检索物料",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/mat/matSelected",
            "style": {
                "navigationBarTitleText": "商品详情",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/stationManage/pickAgain",
            "style": {
                "navigationBarTitleText": "再次拣料",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/stationManage/pickAgainDetl",
            "style": {
                "navigationBarTitleText": "再次拣料明细",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/bcp/bcpOrder",
            "style": {
                "navigationBarTitleText": "半入库单",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/bcp/bcpOrder_xs",
            "style": {
                "navigationBarTitleText": "半成品入库单_吸塑",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/bcp/bcpDbOrder",
            "style": {
                "navigationBarTitleText": "半成品调拨单",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/bcp/bcpDbOrderV2",
            "style": {
                "navigationBarTitleText": "半成品调拨单",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/bcp/orderCar",
            "style": {
                "navigationBarTitleText": "待组托列表",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/bcp/orderCar_xs",
            "style": {
                "navigationBarTitleText": "待组托列表_吸塑",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/home/locMastManage",
            "style": {
                "navigationBarTitleText": "库位管理",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/checkLocDetl/locMove",
            "style": {
                "navigationBarTitleText": "库位转移",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/bcp/bcpDbList",
            "style": {
                "navigationBarTitleText": "调拨库位",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/orderOut/bcpOrderOutSelect",
            "style": {
                "navigationBarTitleText": "半成品出库单",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/orderOut/bcpOrderOutSelect_2",
            "style": {
                "navigationBarTitleText": "半成品出库单_二厂",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/wrkMast/locMoveMast",
            "style": {
                "navigationBarTitleText": "调拨任务管理",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/phyz/wrkMast/DBList",
            "style": {
                "navigationBarTitleText": "调拨任务管理"
            }
        },
        {
            "path": "pages/phyz/processOrder/processOrder",
            "style": {
                "navigationBarTitleText": "半成品加工单"
            }
        },
        {
            "path": "pages/phyz/processOrder/processList",
            "style": {
                "navigationBarTitleText": "待加工列表"
            }
        },
        {
            "path": "pages/phyz/processOrder/orderCheck",
            "style": {
                "navigationBarTitleText": "加工出库"
            }
        },
        {
            "path": "pages/phyz/backStock/backStocksOrder",
            "style": {
                "navigationBarTitleText": "半成品回退单"
            }
        },
        {
            "path": "pages/phyz/backStock/backStockList",
            "style": {
                "navigationBarTitleText": "回调库位"
            }
        },
        {
            "path": "pages/phyz/stationManage/confirmProcessed",
            "style": {
                "navigationBarTitleText": "已加工确认"
            }
        },
        {
            "path": "pages/phyz/waitOrder/waitOrderIn",
            "style": {
                "navigationBarTitleText": "待包装入库单"
            }
        },
        {
            "path": "pages/phyz/waitOrder/waitOrderOut",
            "style": {
                "navigationBarTitleText": "待包装出库单"
            }
        },
        {
            "path": "pages/phyz/checkLocDetl/checkLocDetl2",
            "style": {
                "navigationBarTitleText": "库位盘点"
            }
        },
        {
            "path": "pages/phyz/checkLocDetl/locDetl2",
            "style": {
                "navigationBarTitleText": "库存明细"
            }
        },
        {
            "path": "pages/phyz/checkLocDetl/locDetlList2",
            "style": {
                "navigationBarTitleText": "库存明细"
            }
        },
        {
            "path": "pages/phyz/comOrder/orderIn",
            "style": {
                "navigationBarTitleText": "入库单"
            }
        },
        {
            "path": "pages/phyz/comOrder/orderOut",
            "style": {
                "navigationBarTitleText": "订单出库"
            }
        },
        {
            "path": "pages/phyz/comOrder/orderCar",
            "style": {
                "navigationBarTitleText": "待组托列表"
            }
        },
        {
            "path": "pages/phyz/comOrder/checkOut",
            "style": {
                "navigationBarTitleText": "出库确认"
            }
        },
        {
            "path": "pages/phyz/inStock/inStock",
            "style": {
                "navigationBarTitleText": "入库上架"
            }
        },
        {
            "path": "pages/listing/unPakin",
            "style": {
                "navigationBarTitleText": "组托解绑"
            }
        }
    ],
    "globalStyle": {
        "navigationBarTextStyle": "black",
        "navigationBarTitleText": "uni-app",
        "navigationBarBackgroundColor": "#F8F8F8",
        "backgroundColor": "#F8F8F8"
    },
    "uniIdRouter": {}
                {
                    "path": "pages/icon",
                    "style": {
                        "navigationBarTitleText": "单据列表"
                    }
                },
        {
            "path": "pages/other/transferView/orderList",
            "style": {
                "navigationBarTitleText": "单据列表"
            }
        },
        {
            "path": "pages/other/transferView/orderDetlList",
            "style": {
                "navigationBarTitleText": "单据明细列表",
                "enablePullDownRefresh": true
            }
        },
        {
            "path": "pages/outbound/orderOut/order_out_type",
            "style": {
                "navigationBarTitleText": "单据类型"
            }
        },
        {
            "path": "pages/outbound/orderOut/orderList",
            "style": {
                "navigationBarTitleText": "单据列表",
                "enablePullDownRefresh": true
            }
        },
        {
            "path": "pages/outbound/orderOut/orderDetlList",
            "style": {
                "navigationBarTitleText": "单据明细列表"
            }
        },
        {
            "path": "pages/outbound/orderOutView/order_out_type",
            "style": {
                "navigationBarTitleText": "单据类型"
            }
        },
        {
            "path": "pages/outbound/orderOutView/orderList",
            "style": {
                "navigationBarTitleText": "单据列表",
                "enablePullDownRefresh": true
            }
        },
        {
            "path": "pages/outbound/orderOutView/orderDetlList",
            "style": {
                "navigationBarTitleText": "单据明细列表"
            }
        },
        {
            "path": "pages/outbound/orderOut/outLocView",
            "style": {
                "navigationBarTitleText": "出库库位视图"
            }
        },
        {
            "path": "pages/emptyTray/outBound",
            "style": {
                "navigationBarTitleText": "空托出库"
            }
        },
        {
            "path": "pages/emptyTray/inBound",
            "style": {
                "navigationBarTitleText": "空托入库"
            }
        },
        {
            "path": "pages/outbound/orderPick",
            "style": {
                "navigationBarTitleText": "订单出库"
            }
        },
        {
            "path": "pages/outbound/orderOut",
            "style": {
                "navigationBarTitleText": "出库订单"
            }
        },
        {
            "path": "pages/outbound/orderOutItem",
            "style": {
                "navigationBarTitleText": "订单出库详情"
            }
        },
        {
            "path": "pages/outbound/matPreparation",
            "style": {
                "navigationBarTitleText": "生产备料"
            }
        },
        {
            "path": "pages/outbound/matPreparationItem",
            "style": {
                "navigationBarTitleText": "生产备料详情"
            }
        },
        {
            "path": "pages/inbound/orderIn",
            "style": {
                "navigationBarTitleText": "入库订单"
            }
        },
        {
            "path": "pages/inbound/orderInExecute",
            "style": {
                "navigationBarTitleText": "入库订单列表"
            }
        },
        {
            "path": "pages/inbound/orderInItem",
            "style": {
                "navigationBarTitleText": "入库订单详情"
            }
        },
        {
            "path": "pages/transfer/transferType",
            "style": {
                "navigationBarTitleText": "调拨类型"
            }
        },
        {
            "path": "pages/transfer/orderTransfer",
            "style": {
                "navigationBarTitleText": "调拨订单"
            }
        },
        {
            "path": "pages/transfer/orderTransferItem",
            "style": {
                "navigationBarTitleText": "调拨订单详情"
            }
        },
        {
            "path": "pages/transfer/matTransfer",
            "style": {
                "navigationBarTitleText": "移库"
            }
        },
        {
            "path": "pages/workInfo/taskInfo",
            "style": {
                "navigationBarTitleText": "工作任务"
            }
        },
        {
            "path": "pages/workInfo/stationInfo",
            "style": {
                "navigationBarTitleText": "站点信息"
            }
        },
        {
            "path": "pages/workInfo/locInfo",
            "style": {
                "navigationBarTitleText": "库位信息"
            }
        },
        {
            "path": "pages/inbound/buffStore",
            "style": {
                "navigationBarTitleText": "灌桶入库"
            }
        },
        {
            "path": "pages/outbound/matDirectDelivery",
            "style": {
                "navigationBarTitleText": "生产直送"
            }
        },
        {
            "path": "pages/outbound/productDirectDelivery",
            "style": {
                "navigationBarTitleText": "成品直出"
            }
        },
        {
            "path": "pages/outbound/productionMatCall",
            "style": {
                "navigationBarTitleText": "生产叫料"
            }
        },
        {
            "path": "pages/outbound/wavePick",
            "style": {
                "navigationBarTitleText": "波次拣货"
            }
        },
        {
            "path": "pages/check/checkOrder",
            "style": {
                "navigationBarTitleText": "盘点单"
            }
        },
        {
            "path": "pages/check/checkOrderItem",
            "style": {
                "navigationBarTitleText": "初盘"
            }
        },
        {
            "path": "pages/check/firstCheck",
            "style": {
                "navigationBarTitleText": "初盘"
            }
        },
        {
            "path": "pages/outbound/wavePickItem",
            "style": {
                "navigationBarTitleText": "波次拣货"
            }
        },
        {
            "path": "pages/rece/standard",
            "style": {
                "navigationBarTitleText": "标准收货"
            }
        },
        {
            "path": "pages/rece/other",
            "style": {
                "navigationBarTitleText": "单据收货"
            }
        },
        {
            "path": "pages/listing/disc",
            "style": {
                "navigationBarTitleText": "组盘"
            }
        },
        {
            "path": "pages/AGV/AGVStaBind",
            "style": {
                "navigationBarTitleText": "AGV站点绑定"
            }
        },
        {
            "path": "pages/AGV/StaUnBind",
            "style": {
                "navigationBarTitleText": "AGV站点解绑"
            }
        },
        {
            "path": "pages/AGV/StartInTask",
            "style": {
                "navigationBarTitleText": "AGV入库"
            }
        },
        {
            "path": "pages/AGV/BindAndInTask",
            "style": {
                "navigationBarTitleText": "AGV绑定&入库"
            }
        },
        {
            "path": "pages/listing/matnrPalletising",
            "style": {
                "navigationBarTitleText": "单据组托"
            }
        },
        {
            "path": "pages/listing/itemSelect",
            "style": {
                "navigationBarTitleText": "选择物料",
                "enablePullDownRefresh": true
            }
        },
        {
            "path": "pages/listing/untie",
            "style": {
                "navigationBarTitleText": "解绑"
            }
        },
        {
            "path": "pages/inspect/report",
            "style": {
                "navigationBarTitleText": "报检"
            }
        },
        {
            "path": "pages/inspect/check",
            "style": {
                "navigationBarTitleText": "质检解锁"
            }
        },
        {
            "path": "pages/inspect/bad",
            "style": {
                "navigationBarTitleText": "质检上锁"
            }
        },
        {
            "path": "pages/listing/labour",
            "style": {
                "navigationBarTitleText": "人工上架"
            }
        },
        {
            "path": "pages/listing/upper",
            "style": {
                "navigationBarTitleText": "上架"
            }
        },
        {
            "path": "pages/outbound/fastPicking",
            "style": {
                "navigationBarTitleText": "快速拣货"
            }
        },
        {
            "path": "pages/mat/matSelected",
            "style": {
                "navigationBarTitleText": "物料"
            }
        },
        {
            "path": "pages/mat/matQuery",
            "style": {
                "navigationBarTitleText": "物料"
            }
        },
        {
            "path": "pages/mat/matList",
            "style": {
                "navigationBarTitleText": "商品列表"
            }
        },
        {
            "path": "pages/login/logOut",
            "style": {
                "navigationBarTitleText": "退出登录"
            }
        },
        {
            "path": "pages/home/menuHome",
            "style": {
                "navigationBarTitleText": "主页",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/home/inOutManage",
            "style": {
                "navigationBarTitleText": "入出库管理",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/home/orderManage",
            "style": {
                "navigationBarTitleText": "单据管理",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/home/wrkMastManage",
            "style": {
                "navigationBarTitleText": "任务管理",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/home/locMastManage",
            "style": {
                "navigationBarTitleText": "库位管理",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/listing/unPakin",
            "style": {
                "navigationBarTitleText": "组托解绑"
            }
        }
    ],
    "globalStyle": {
        "navigationBarTextStyle": "black",
        "navigationBarTitleText": "uni-app",
        "navigationBarBackgroundColor": "#F8F8F8",
        "backgroundColor": "#F8F8F8"
    },
    "uniIdRouter": {}
}
pages/icon.vue
New file
@@ -0,0 +1,939 @@
<template>
    <view>
        <cu-custom bgColor="bg-gradual-blue" :isBack="true"><block slot="backText">返回</block><block slot="content">图标</block></cu-custom>
        <view class="cu-bar bg-white search fixed" :style="[{top:CustomBar + 'px'}]">
            <view class="search-form round">
                <text class="cuIcon-search"></text>
                <input type="text" placeholder="搜索cuIcon" confirm-type="search" @input="searchIcon"></input>
            </view>
        </view>
        <view class="cu-list grid col-3">
            <view class="cu-item" v-for="(item,index) in cuIcon" :key="index" v-if="item.isShow">
                <text class="lg text-gray" :class="'cuIcon-' + item.name"></text>
                <text>{{item.name}}</text>
            </view>
        </view>
    </view>
</template>
<script>
    export default {
        data() {
            return {
                CustomBar: this.CustomBar,
                cuIcon: [{
                    name: 'appreciate',
                    isShow: true
                }, {
                    name: 'check',
                    isShow: true
                }, {
                    name: 'close',
                    isShow: true
                }, {
                    name: 'edit',
                    isShow: true
                }, {
                    name: 'emoji',
                    isShow: true
                }, {
                    name: 'favorfill',
                    isShow: true
                }, {
                    name: 'favor',
                    isShow: true
                }, {
                    name: 'loading',
                    isShow: true
                }, {
                    name: 'locationfill',
                    isShow: true
                }, {
                    name: 'location',
                    isShow: true
                }, {
                    name: 'phone',
                    isShow: true
                }, {
                    name: 'roundcheckfill',
                    isShow: true
                }, {
                    name: 'roundcheck',
                    isShow: true
                }, {
                    name: 'roundclosefill',
                    isShow: true
                }, {
                    name: 'roundclose',
                    isShow: true
                }, {
                    name: 'roundrightfill',
                    isShow: true
                }, {
                    name: 'roundright',
                    isShow: true
                }, {
                    name: 'search',
                    isShow: true
                }, {
                    name: 'taxi',
                    isShow: true
                }, {
                    name: 'timefill',
                    isShow: true
                }, {
                    name: 'time',
                    isShow: true
                }, {
                    name: 'unfold',
                    isShow: true
                }, {
                    name: 'warnfill',
                    isShow: true
                }, {
                    name: 'warn',
                    isShow: true
                }, {
                    name: 'camerafill',
                    isShow: true
                }, {
                    name: 'camera',
                    isShow: true
                }, {
                    name: 'commentfill',
                    isShow: true
                }, {
                    name: 'comment',
                    isShow: true
                }, {
                    name: 'likefill',
                    isShow: true
                }, {
                    name: 'like',
                    isShow: true
                }, {
                    name: 'notificationfill',
                    isShow: true
                }, {
                    name: 'notification',
                    isShow: true
                }, {
                    name: 'order',
                    isShow: true
                }, {
                    name: 'samefill',
                    isShow: true
                }, {
                    name: 'same',
                    isShow: true
                }, {
                    name: 'deliver',
                    isShow: true
                }, {
                    name: 'evaluate',
                    isShow: true
                }, {
                    name: 'pay',
                    isShow: true
                }, {
                    name: 'send',
                    isShow: true
                }, {
                    name: 'shop',
                    isShow: true
                }, {
                    name: 'ticket',
                    isShow: true
                }, {
                    name: 'back',
                    isShow: true
                }, {
                    name: 'cascades',
                    isShow: true
                }, {
                    name: 'discover',
                    isShow: true
                }, {
                    name: 'list',
                    isShow: true
                }, {
                    name: 'more',
                    isShow: true
                }, {
                    name: 'scan',
                    isShow: true
                }, {
                    name: 'settings',
                    isShow: true
                }, {
                    name: 'questionfill',
                    isShow: true
                }, {
                    name: 'question',
                    isShow: true
                }, {
                    name: 'shopfill',
                    isShow: true
                }, {
                    name: 'form',
                    isShow: true
                }, {
                    name: 'pic',
                    isShow: true
                }, {
                    name: 'filter',
                    isShow: true
                }, {
                    name: 'footprint',
                    isShow: true
                }, {
                    name: 'top',
                    isShow: true
                }, {
                    name: 'pulldown',
                    isShow: true
                }, {
                    name: 'pullup',
                    isShow: true
                }, {
                    name: 'right',
                    isShow: true
                }, {
                    name: 'refresh',
                    isShow: true
                }, {
                    name: 'moreandroid',
                    isShow: true
                }, {
                    name: 'deletefill',
                    isShow: true
                }, {
                    name: 'refund',
                    isShow: true
                }, {
                    name: 'cart',
                    isShow: true
                }, {
                    name: 'qrcode',
                    isShow: true
                }, {
                    name: 'remind',
                    isShow: true
                }, {
                    name: 'delete',
                    isShow: true
                }, {
                    name: 'profile',
                    isShow: true
                }, {
                    name: 'home',
                    isShow: true
                }, {
                    name: 'cartfill',
                    isShow: true
                }, {
                    name: 'discoverfill',
                    isShow: true
                }, {
                    name: 'homefill',
                    isShow: true
                }, {
                    name: 'message',
                    isShow: true
                }, {
                    name: 'addressbook',
                    isShow: true
                }, {
                    name: 'link',
                    isShow: true
                }, {
                    name: 'lock',
                    isShow: true
                }, {
                    name: 'unlock',
                    isShow: true
                }, {
                    name: 'vip',
                    isShow: true
                }, {
                    name: 'weibo',
                    isShow: true
                }, {
                    name: 'activity',
                    isShow: true
                }, {
                    name: 'friendaddfill',
                    isShow: true
                }, {
                    name: 'friendadd',
                    isShow: true
                }, {
                    name: 'friendfamous',
                    isShow: true
                }, {
                    name: 'friend',
                    isShow: true
                }, {
                    name: 'goods',
                    isShow: true
                }, {
                    name: 'selection',
                    isShow: true
                }, {
                    name: 'explore',
                    isShow: true
                }, {
                    name: 'present',
                    isShow: true
                }, {
                    name: 'squarecheckfill',
                    isShow: true
                }, {
                    name: 'square',
                    isShow: true
                }, {
                    name: 'squarecheck',
                    isShow: true
                }, {
                    name: 'round',
                    isShow: true
                }, {
                    name: 'roundaddfill',
                    isShow: true
                }, {
                    name: 'roundadd',
                    isShow: true
                }, {
                    name: 'add',
                    isShow: true
                }, {
                    name: 'notificationforbidfill',
                    isShow: true
                }, {
                    name: 'explorefill',
                    isShow: true
                }, {
                    name: 'fold',
                    isShow: true
                }, {
                    name: 'game',
                    isShow: true
                }, {
                    name: 'redpacket',
                    isShow: true
                }, {
                    name: 'selectionfill',
                    isShow: true
                }, {
                    name: 'similar',
                    isShow: true
                }, {
                    name: 'appreciatefill',
                    isShow: true
                }, {
                    name: 'infofill',
                    isShow: true
                }, {
                    name: 'info',
                    isShow: true
                }, {
                    name: 'forwardfill',
                    isShow: true
                }, {
                    name: 'forward',
                    isShow: true
                }, {
                    name: 'rechargefill',
                    isShow: true
                }, {
                    name: 'recharge',
                    isShow: true
                }, {
                    name: 'vipcard',
                    isShow: true
                }, {
                    name: 'voice',
                    isShow: true
                }, {
                    name: 'voicefill',
                    isShow: true
                }, {
                    name: 'friendfavor',
                    isShow: true
                }, {
                    name: 'wifi',
                    isShow: true
                }, {
                    name: 'share',
                    isShow: true
                }, {
                    name: 'wefill',
                    isShow: true
                }, {
                    name: 'we',
                    isShow: true
                }, {
                    name: 'lightauto',
                    isShow: true
                }, {
                    name: 'lightforbid',
                    isShow: true
                }, {
                    name: 'lightfill',
                    isShow: true
                }, {
                    name: 'camerarotate',
                    isShow: true
                }, {
                    name: 'light',
                    isShow: true
                }, {
                    name: 'barcode',
                    isShow: true
                }, {
                    name: 'flashlightclose',
                    isShow: true
                }, {
                    name: 'flashlightopen',
                    isShow: true
                }, {
                    name: 'searchlist',
                    isShow: true
                }, {
                    name: 'service',
                    isShow: true
                }, {
                    name: 'sort',
                    isShow: true
                }, {
                    name: 'down',
                    isShow: true
                }, {
                    name: 'mobile',
                    isShow: true
                }, {
                    name: 'mobilefill',
                    isShow: true
                }, {
                    name: 'copy',
                    isShow: true
                }, {
                    name: 'countdownfill',
                    isShow: true
                }, {
                    name: 'countdown',
                    isShow: true
                }, {
                    name: 'noticefill',
                    isShow: true
                }, {
                    name: 'notice',
                    isShow: true
                }, {
                    name: 'upstagefill',
                    isShow: true
                }, {
                    name: 'upstage',
                    isShow: true
                }, {
                    name: 'babyfill',
                    isShow: true
                }, {
                    name: 'baby',
                    isShow: true
                }, {
                    name: 'brandfill',
                    isShow: true
                }, {
                    name: 'brand',
                    isShow: true
                }, {
                    name: 'choicenessfill',
                    isShow: true
                }, {
                    name: 'choiceness',
                    isShow: true
                }, {
                    name: 'clothesfill',
                    isShow: true
                }, {
                    name: 'clothes',
                    isShow: true
                }, {
                    name: 'creativefill',
                    isShow: true
                }, {
                    name: 'creative',
                    isShow: true
                }, {
                    name: 'female',
                    isShow: true
                }, {
                    name: 'keyboard',
                    isShow: true
                }, {
                    name: 'male',
                    isShow: true
                }, {
                    name: 'newfill',
                    isShow: true
                }, {
                    name: 'new',
                    isShow: true
                }, {
                    name: 'pullleft',
                    isShow: true
                }, {
                    name: 'pullright',
                    isShow: true
                }, {
                    name: 'rankfill',
                    isShow: true
                }, {
                    name: 'rank',
                    isShow: true
                }, {
                    name: 'bad',
                    isShow: true
                }, {
                    name: 'cameraadd',
                    isShow: true
                }, {
                    name: 'focus',
                    isShow: true
                }, {
                    name: 'friendfill',
                    isShow: true
                }, {
                    name: 'cameraaddfill',
                    isShow: true
                }, {
                    name: 'apps',
                    isShow: true
                }, {
                    name: 'paintfill',
                    isShow: true
                }, {
                    name: 'paint',
                    isShow: true
                }, {
                    name: 'picfill',
                    isShow: true
                }, {
                    name: 'refresharrow',
                    isShow: true
                }, {
                    name: 'colorlens',
                    isShow: true
                }, {
                    name: 'markfill',
                    isShow: true
                }, {
                    name: 'mark',
                    isShow: true
                }, {
                    name: 'presentfill',
                    isShow: true
                }, {
                    name: 'repeal',
                    isShow: true
                }, {
                    name: 'album',
                    isShow: true
                }, {
                    name: 'peoplefill',
                    isShow: true
                }, {
                    name: 'people',
                    isShow: true
                }, {
                    name: 'servicefill',
                    isShow: true
                }, {
                    name: 'repair',
                    isShow: true
                }, {
                    name: 'file',
                    isShow: true
                }, {
                    name: 'repairfill',
                    isShow: true
                }, {
                    name: 'taoxiaopu',
                    isShow: true
                }, {
                    name: 'weixin',
                    isShow: true
                }, {
                    name: 'attentionfill',
                    isShow: true
                }, {
                    name: 'attention',
                    isShow: true
                }, {
                    name: 'commandfill',
                    isShow: true
                }, {
                    name: 'command',
                    isShow: true
                }, {
                    name: 'communityfill',
                    isShow: true
                }, {
                    name: 'community',
                    isShow: true
                }, {
                    name: 'read',
                    isShow: true
                }, {
                    name: 'calendar',
                    isShow: true
                }, {
                    name: 'cut',
                    isShow: true
                }, {
                    name: 'magic',
                    isShow: true
                }, {
                    name: 'backwardfill',
                    isShow: true
                }, {
                    name: 'playfill',
                    isShow: true
                }, {
                    name: 'stop',
                    isShow: true
                }, {
                    name: 'tagfill',
                    isShow: true
                }, {
                    name: 'tag',
                    isShow: true
                }, {
                    name: 'group',
                    isShow: true
                }, {
                    name: 'all',
                    isShow: true
                }, {
                    name: 'backdelete',
                    isShow: true
                }, {
                    name: 'hotfill',
                    isShow: true
                }, {
                    name: 'hot',
                    isShow: true
                }, {
                    name: 'post',
                    isShow: true
                }, {
                    name: 'radiobox',
                    isShow: true
                }, {
                    name: 'rounddown',
                    isShow: true
                }, {
                    name: 'upload',
                    isShow: true
                }, {
                    name: 'writefill',
                    isShow: true
                }, {
                    name: 'write',
                    isShow: true
                }, {
                    name: 'radioboxfill',
                    isShow: true
                }, {
                    name: 'punch',
                    isShow: true
                }, {
                    name: 'shake',
                    isShow: true
                }, {
                    name: 'move',
                    isShow: true
                }, {
                    name: 'safe',
                    isShow: true
                }, {
                    name: 'activityfill',
                    isShow: true
                }, {
                    name: 'crownfill',
                    isShow: true
                }, {
                    name: 'crown',
                    isShow: true
                }, {
                    name: 'goodsfill',
                    isShow: true
                }, {
                    name: 'messagefill',
                    isShow: true
                }, {
                    name: 'profilefill',
                    isShow: true
                }, {
                    name: 'sound',
                    isShow: true
                }, {
                    name: 'sponsorfill',
                    isShow: true
                }, {
                    name: 'sponsor',
                    isShow: true
                }, {
                    name: 'upblock',
                    isShow: true
                }, {
                    name: 'weblock',
                    isShow: true
                }, {
                    name: 'weunblock',
                    isShow: true
                }, {
                    name: 'my',
                    isShow: true
                }, {
                    name: 'myfill',
                    isShow: true
                }, {
                    name: 'emojifill',
                    isShow: true
                }, {
                    name: 'emojiflashfill',
                    isShow: true
                }, {
                    name: 'flashbuyfill',
                    isShow: true
                }, {
                    name: 'text',
                    isShow: true
                }, {
                    name: 'goodsfavor',
                    isShow: true
                }, {
                    name: 'musicfill',
                    isShow: true
                }, {
                    name: 'musicforbidfill',
                    isShow: true
                }, {
                    name: 'card',
                    isShow: true
                }, {
                    name: 'triangledownfill',
                    isShow: true
                }, {
                    name: 'triangleupfill',
                    isShow: true
                }, {
                    name: 'roundleftfill-copy',
                    isShow: true
                }, {
                    name: 'font',
                    isShow: true
                }, {
                    name: 'title',
                    isShow: true
                }, {
                    name: 'recordfill',
                    isShow: true
                }, {
                    name: 'record',
                    isShow: true
                }, {
                    name: 'cardboardfill',
                    isShow: true
                }, {
                    name: 'cardboard',
                    isShow: true
                }, {
                    name: 'formfill',
                    isShow: true
                }, {
                    name: 'coin',
                    isShow: true
                }, {
                    name: 'cardboardforbid',
                    isShow: true
                }, {
                    name: 'circlefill',
                    isShow: true
                }, {
                    name: 'circle',
                    isShow: true
                }, {
                    name: 'attentionforbid',
                    isShow: true
                }, {
                    name: 'attentionforbidfill',
                    isShow: true
                }, {
                    name: 'attentionfavorfill',
                    isShow: true
                }, {
                    name: 'attentionfavor',
                    isShow: true
                }, {
                    name: 'titles',
                    isShow: true
                }, {
                    name: 'icloading',
                    isShow: true
                }, {
                    name: 'full',
                    isShow: true
                }, {
                    name: 'mail',
                    isShow: true
                }, {
                    name: 'peoplelist',
                    isShow: true
                }, {
                    name: 'goodsnewfill',
                    isShow: true
                }, {
                    name: 'goodsnew',
                    isShow: true
                }, {
                    name: 'medalfill',
                    isShow: true
                }, {
                    name: 'medal',
                    isShow: true
                }, {
                    name: 'newsfill',
                    isShow: true
                }, {
                    name: 'newshotfill',
                    isShow: true
                }, {
                    name: 'newshot',
                    isShow: true
                }, {
                    name: 'news',
                    isShow: true
                }, {
                    name: 'videofill',
                    isShow: true
                }, {
                    name: 'video',
                    isShow: true
                }, {
                    name: 'exit',
                    isShow: true
                }, {
                    name: 'skinfill',
                    isShow: true
                }, {
                    name: 'skin',
                    isShow: true
                }, {
                    name: 'moneybagfill',
                    isShow: true
                }, {
                    name: 'usefullfill',
                    isShow: true
                }, {
                    name: 'usefull',
                    isShow: true
                }, {
                    name: 'moneybag',
                    isShow: true
                }, {
                    name: 'redpacket_fill',
                    isShow: true
                }, {
                    name: 'subscription',
                    isShow: true
                }, {
                    name: 'loading1',
                    isShow: true
                }, {
                    name: 'github',
                    isShow: true
                }, {
                    name: 'global',
                    isShow: true
                }, {
                    name: 'settingsfill',
                    isShow: true
                }, {
                    name: 'back_android',
                    isShow: true
                }, {
                    name: 'expressman',
                    isShow: true
                }, {
                    name: 'evaluate_fill',
                    isShow: true
                }, {
                    name: 'group_fill',
                    isShow: true
                }, {
                    name: 'play_forward_fill',
                    isShow: true
                }, {
                    name: 'deliver_fill',
                    isShow: true
                }, {
                    name: 'notice_forbid_fill',
                    isShow: true
                }, {
                    name: 'fork',
                    isShow: true
                }, {
                    name: 'pick',
                    isShow: true
                }, {
                    name: 'wenzi',
                    isShow: true
                }, {
                    name: 'ellipse',
                    isShow: true
                }, {
                    name: 'qr_code',
                    isShow: true
                }, {
                    name: 'dianhua',
                    isShow: true
                }, {
                    name: 'cuIcon',
                    isShow: true
                }, {
                    name: 'loading2',
                    isShow: true
                }, {
                    name: 'btn',
                    isShow: true
                }]
            };
        },
        methods: {
            searchIcon(e) {
                let key = e.detail.value.toLowerCase();
                let list = this.cuIcon;
                for (let i = 0; i < list.length; i++) {
                    let a = key;
                    let b = list[i].name.toLowerCase();
                    if (b.search(a) != -1) {
                        list[i].isShow = true
                    } else {
                        list[i].isShow = false
                    }
                }
                this.cuIcon = list
            }
        }
    }
</script>
<style>
    page {
        padding-top: 50px;
    }
</style>
pages/inspect/bad.vue
@@ -3,33 +3,57 @@
        <form>
            <view class="cu-form-group margin-top">
                <view class="title">托盘码</view>
                <input placeholder="请扫描托盘码" v-model="container" focus></input>
                <text class='cuIcon-search text-blue' </text>
                <input
                    placeholder="请扫描托盘码"
                    v-model="container"
                    focus
                />
            </view>
            <view class="cu-form-group ">
            <view class="cu-form-group">
                <view class="title">物料标签</view>
                <input placeholder="请扫描物料标签" v-model="barcode"></input>
                <text class='cuIcon-search text-blue' @click="search"></text>
                <input
                    placeholder="请扫描物料标签"
                    v-model="barcode"
                />
                <text
                    class="cuIcon-search text-blue"
                    @click="search"
                ></text>
            </view>
        </form>
        <view class="flex solid-bottom padding-sm justify-between">
            <view class="text-blue">物料种类:{{ list.length }}</view>
            <view class="text-red">锁定数量:{{ allCount }}</view>
        </view>
        <view
            class="flex solid-bottom padding-sm justify-between"
            v-if="list.length"
        >
            <view class="text-blue">库位号:{{ list[0].locCode }}</view>
        </view>
        <view class="cu-list det menu sm-border  padding">
            <block v-for="(item, index) in list" :key="index">
        <view
            class="cu-list det menu sm-border padding"
            style="padding-bottom: 60px"
        >
            <block
                v-for="(item, index) in list"
                :key="index"
            >
                <view class="cu-bar bg-white solid-bottom margin-top-sm">
                    <view class="action">
                        <!-- <view class="index">
                            {{index+1}}
                        </view> -->
                        <view class="text-blue">
                            {{`${item.maktx}`}}
                            {{ `${item.maktx}` }}
                        </view>
                    </view>
                    <view class="action">
                        <view class='cu-tag radius bg-red'>不合格</view>
                    </view>
                    <!-- <view class="action">
                        <view class="cu-tag radius bg-red">不合格</view>
                    </view> -->
                    <!--     <view class="action" v-if="!isconfirm">
                        <text @click="remove(index)" class="cuIcon-close text-red" style="font-size: 24px;"></text>
@@ -41,7 +65,15 @@
                        <text class="text-black">物料编码:</text>
                    </view>
                    <view class="action">
                        <text class="text-grey ">{{item.maktxCode}}</text>
                        <text class="text-grey">{{ item.matnrCode }}</text>
                    </view>
                </view>
                <view class="cu-item">
                    <view class="content">
                        <text class="text-black">计划跟踪号:</text>
                    </view>
                    <view class="action">
                        <text class="text-grey">{{ item.platWorkCode }}</text>
                    </view>
                </view>
@@ -50,17 +82,16 @@
                        <text class="text-black">单号:</text>
                    </view>
                    <view class="action">
                        <text class="text-grey ">{{item.asnCode}}</text>
                        <text class="text-grey">{{ item.asnCode }}</text>
                    </view>
                </view>
                <view class="cu-item">
                    <view class="content">
                        <text class="text-black">供应商批次:</text>
                    </view>
                    <view class="action">
                        <text class="text-grey ">{{item.splrBatch}}</text>
                        <text class="text-grey">{{ item.splrBatch }}</text>
                    </view>
                </view>
@@ -69,151 +100,204 @@
                        <text class="text-black">库存单位:</text>
                    </view>
                    <view class="action">
                        <text class="text-grey ">{{item.stockUnit}}</text>
                        <text class="text-grey">{{ item.stockUnit }}</text>
                    </view>
                </view>
                <view class="cu-item">
                <!-- <view class="cu-item">
                    <view class="content">
                        <view class="cu-form-group padding-lr-0">
                            <view class="title text-blue">数量:</view>
                            <input class="text-right" type="number" placeholder="请输入数量" v-model="item.receiptQty"
                                focus></input>
                            <input
                                class="text-right"
                                type="number"
                                placeholder="请输入数量"
                                v-model="item.receiptQty"
                                focus
                            />
                        </view>
                    </view>
                </view>
                </view> -->
                <view class="margin-top-sm flex">
                    <uni-data-checkbox mode="tag" v-model="item.status" :localdata="types"></uni-data-checkbox>
                    <uni-data-checkbox
                        mode="tag"
                        v-model="item.status"
                        :localdata="types"
                    ></uni-data-checkbox>
                </view>
            </block>
        </view>
        <view class="cu-bar btn-group foot">
            <button class="cu-btn text-blue line-blue shadow" @click="clear">清空</button>
            <button class="cu-btn bg-blue shadow-blur" @click="confirm">上锁</button>
            <button
                v-if="hasButtonPermission('reset')"
                class="cu-btn text-blue line-blue shadow"
                @click="clear"
            >
                清空
            </button>
            <button
                v-if="hasButtonPermission('submit')"
                class="cu-btn bg-blue shadow-blur"
                @click="confirm"
            >
                上锁
            </button>
        </view>
        <ConfirmModal
            :visible="showModal"
            @update:visible="showModal = $event"
            icon="check"
            title="上锁确认"
            message="是否确定上锁?"
            cancelText="不需要"
            confirmText="确定"
            :isconfirm="isconfirm"
            @cancel="handleNo"
            @confirm="handleYes"
        ></ConfirmModal>
    </view>
</template>
<script>
    import {
        request
    } from '../../common/request.js'
import { request } from '../../common/request.js'
import ConfirmModal from '../../components/confirm-modal/confirm-modal.vue'
    export default {
        data() {
            return {
                barcode: '',
                container: '',
                list: [],
                range: [],
                isconfirm: false,
                types: [{
                        text: '待返修',
                        value: 1
                    },
                    {
                        text: '待报废',
                        value: 2
                    },
                    {
                        text: '降级使用',
                        value: 3
                    },
                    {
                        text: '待定',
                        value: 4
                    },
                ],
            }
export default {
    components: {
        ConfirmModal
    },
    data() {
        return {
            barcode: '',
            container: '',
            list: [],
            range: [],
            isconfirm: false,
            types: [
                {
                    text: '正常',
                    value: 1
                },
                {
                    text: '锁定',
                    value: 0
                }
            ],
            showModal: false,
            buttonPermissions: [] // 按钮权限列表
        }
    },
    computed: {
        allCount() {
            return this.list.reduce(
                (acc, row) => (row.status == 0 ? acc + 1 : acc),
                0
            )
        }
    },
    mounted() {
        this.buttonPermissions = uni.getStorageSync('buttonPermissions') || []
    },
    methods: {
        // 检查按钮权限
        hasButtonPermission(route) {
            return this.buttonPermissions.includes(route)
        },
        computed: {
        handleNo() {
            this.showModal = false
        },
        mounted() {},
        methods: {
            async search() {
                const {
                    code,
                    data,
                    msg
                } = await request('/defect/' + this.barcode, {}, "post")
        async handleYes() {
            this.isconfirm = true
            try {
                const { code, data, msg } = await request(
                    '/other/inspectConfirm',
                    {
                        matnrList: this.list
                    },
                    'post'
                )
                if (code === 200) {
                    const find = this.list.find(el => el.id === data.id);
                    !find && this.list.push(data)
                    uni.showToast({
                        title: '提交成功'
                    })
                    this.list = []
                    this.barcode = ''
                    this.container = ''
                } else {
                    uni.showToast({
                        title: msg,
                        icon: "none",
                        icon: 'none',
                        position: 'top'
                    })
                }
                // this.list = [{
                //     id: 1,
                //     maktx: '拉杆箱',
                //     maktxCode: '312312312',
                //     asnCode: 'asn123412',
                //     splrBatch: '3123123',
                //     stockUnit: '个',
                //     receiptQty: null
                // }]
            },
            async confirm() {
                // const {
                //     code,
                //     data,
                //     msg
                // } = await request('/waitPakin/unbind', {
                //     items: this.list,
                //     barcode: this.container
                // })
                // if (code === 200) {
                //     uni.showToast({
                //         title: '提交成功'
                //     })
                //     this.list = []
                //     this.barcode = ''
                //     this.isconfirm = false
                // } else {
                //     uni.showToast({
                //         title: msg,
                //         icon: "none",
                //         position: 'top'
                //     })
                // }
            },
            } finally {
                this.showModal = false
                this.isconfirm = false
            }
        },
        // 关闭AGV确认弹窗
        closeModal() {
            this.showModal = false
        },
        async search() {
            const { code, data, msg } = await request(
                '/other/inspectList',
                {
                    containerNo: this.container,
                    matnrCode: this.barcode
                },
                'post'
            )
            if (code === 200) {
                this.list = data
            } else {
                uni.showToast({
                    title: msg,
                    icon: 'none',
                    position: 'top'
                })
            }
        },
        async confirm() {
            if (this.allCount == 0) {
                uni.showToast({
                    title: '没有锁定的明细',
                    icon: 'none',
                    position: 'top'
                })
                return
            }
            this.showModal = true
        }
    }
}
</script>
<style>
    .index {
        border: 1px solid #e54d42;
        color: #e54d42;
        border-radius: 50%;
        display: block;
        width: 50rpx;
        height: 50rpx;
        line-height: 48rpx;
        text-align: center;
        margin-right: 20rpx;
        font-size: 30rpx;
    }
.index {
    border: 1px solid #e54d42;
    color: #e54d42;
    border-radius: 50%;
    display: block;
    width: 50rpx;
    height: 50rpx;
    line-height: 48rpx;
    text-align: center;
    margin-right: 20rpx;
    font-size: 30rpx;
}
    .text-blue {
        color: #0081ff !important;
.text-blue {
    color: #0081ff !important;
}
    }
    .item {
        position: relative;
        display: flex;
        min-height: 80upx;
        align-items: center;
    }
</style>
.item {
    position: relative;
    display: flex;
    min-height: 80upx;
    align-items: center;
}
</style>
pages/inspect/check.vue
@@ -2,258 +2,294 @@
    <view class="has-foot">
        <form>
            <view class="cu-form-group margin-top">
                <view class="title">容器号</view>
                <input placeholder="请扫描容器编码" v-model="isptCode" focus></input>
                <text class='cuIcon-search text-blue' @click="search"></text>
                <view class="title">托盘码</view>
                <input
                    placeholder="请扫描托盘码"
                    v-model="container"
                    focus
                />
            </view>
            <view class="cu-form-group ">
                <view class="title">物料号</view>
                <input placeholder="请扫描物料编码" v-model="barcode"></input>
                <text class='cuIcon-search text-blue' @click="scrollTo"></text>
            <view class="cu-form-group">
                <view class="title">物料标签</view>
                <input
                    placeholder="请扫描物料标签"
                    v-model="barcode"
                />
                <text
                    class="cuIcon-search text-blue"
                    @click="search"
                ></text>
            </view>
        </form>
        <view class="flex solid-bottom padding-sm justify-between">
            <view class="text-blue">物料种类:{{ list.length }}</view>
            <view class="text-red">锁定数量:{{ allCount }}</view>
        </view>
        <view
            class="flex solid-bottom padding-sm justify-between"
            v-if="list.length"
        >
            <view class="text-blue">库位号:{{ list[0].locCode }}</view>
        </view>
        <view class="padding-lr margin-top-sm">
            <block v-for="(item, index) in list" :key="index">
                <view class="cu-list det menu sm-border margin-bottom-sm " :class="[item.matnrCode===barcode&&'act']"
                    :ref="item.matnrCode+'ref'">
                    <view class="cu-bar bg-white solid-bottom ">
                        <view class="action">
                            <view class="index">
                                {{index+1}}
                            </view>
                            <view class="text-blue">
                                {{`${item.maktx}`}}
                            </view>
                        </view>
                        <view class="action">
                            <text @click="remove(index)" class="cuIcon-close text-red" style="font-size: 24px;"></text>
        <view
            class="cu-list det menu sm-border padding"
            style="padding-bottom: 60px"
        >
            <block
                v-for="(item, index) in list"
                :key="index"
            >
                <view class="cu-bar bg-white solid-bottom margin-top-sm">
                    <view class="action">
                        <!-- <view class="index">
                            {{index+1}}
                        </view> -->
                        <view class="text-blue">
                            {{ `${item.maktx}` }}
                        </view>
                    </view>
                    <view class="cu-item">
                        <view class="content">
                            <text class="text-black">ASN:</text>
                        </view>
                        <view class="action">
                            <text class="text-grey ">{{item.asnCode}}</text>
                    <!-- <view class="action">
                        <view class="cu-tag radius bg-red">不合格</view>
                    </view> -->
                    <!--     <view class="action" v-if="!isconfirm">
                        <text @click="remove(index)" class="cuIcon-close text-red" style="font-size: 24px;"></text>
                    </view> -->
                </view>
                <view class="cu-item">
                    <view class="content">
                        <text class="text-black">物料编码:</text>
                    </view>
                    <view class="action">
                        <text class="text-grey">{{ item.matnrCode }}</text>
                    </view>
                </view>
                <view class="cu-item">
                    <view class="content">
                        <text class="text-black">计划跟踪号:</text>
                    </view>
                    <view class="action">
                        <text class="text-grey">{{ item.platWorkCode }}</text>
                    </view>
                </view>
                <view class="cu-item">
                    <view class="content">
                        <text class="text-black">单号:</text>
                    </view>
                    <view class="action">
                        <text class="text-grey">{{ item.asnCode }}</text>
                    </view>
                </view>
                <view class="cu-item">
                    <view class="content">
                        <text class="text-black">供应商批次:</text>
                    </view>
                    <view class="action">
                        <text class="text-grey">{{ item.splrBatch }}</text>
                    </view>
                </view>
                <view class="cu-item">
                    <view class="content">
                        <text class="text-black">库存单位:</text>
                    </view>
                    <view class="action">
                        <text class="text-grey">{{ item.stockUnit }}</text>
                    </view>
                </view>
                <!-- <view class="cu-item">
                    <view class="content">
                        <view class="cu-form-group padding-lr-0">
                            <view class="title text-blue">数量:</view>
                            <input
                                class="text-right"
                                type="number"
                                placeholder="请输入数量"
                                v-model="item.receiptQty"
                                focus
                            />
                        </view>
                    </view>
                    <view class="cu-item">
                        <view class="content">
                            <text class="text-black">供应商:</text>
                        </view>
                        <view class="action">
                            <text class="text-grey ">{{item.splrName}}</text>
                        </view>
                    </view>
                    <view class="cu-item">
                        <view class="content">
                            <text class="text-black">供应商批次:</text>
                        </view>
                        <view class="action">
                            <text class="text-grey ">{{item.splrBatch}}</text>
                        </view>
                    </view>
                    <view class="cu-item">
                        <view class="content">
                            <text class="text-black">收货数量: <text class="text-grey ">{{item.rcptQty}}</text></text>
                        </view>
                        <view class="content">
                            <text class="text-black">送货数量: <text class="text-grey ">{{item.dlyQty}}</text></text>
                        </view>
                    </view>
                    <view class="cu-item">
                        <view class="content">
                            <view class="cu-form-group padding-lr-0">
                                <view class="title text-blue">合格数量:</view>
                                <input type="number" placeholder="请输入合格数量" v-model="item.safeQty"></input>
                            </view>
                        </view>
                    </view>
                    <view class="cu-item">
                        <view class="content">
                            <view class="cu-form-group padding-lr-0">
                                <view class="title text-blue">不合格数量:</view>
                                <input type="number" placeholder="请输入不合格数量" v-model="item.disQty"></input>
                            </view>
                        </view>
                    </view>
                    <view class="cu-item">
                        <view class="content">
                            <view class="cu-form-group padding-lr-0">
                                <view class="title text-blue">质检结论:</view>
                                <uni-data-select placement='top' v-model="item.isptResult" :localdata="range"
                                    placeholder="请输入质检结论"></uni-data-select>
                            </view>
                        </view>
                    </view>
                    <view class="cu-form-group align-start">
                        <view class="title text-blue">备注</view>
                        <textarea v-model="item.memo" placeholder="请输入备注"></textarea>
                    </view>
                    <!--     <view class="cu-form-group">
                    <uni-file-picker limit="9" title="照片"></uni-file-picker>
                </view> -->
                <view class="margin-top-sm flex">
                    <uni-data-checkbox
                        mode="tag"
                        v-model="item.status"
                        :localdata="types"
                    ></uni-data-checkbox>
                </view>
            </block>
        </view>
        <view class="cu-bar btn-group foot">
            <button class="cu-btn text-blue line-blue shadow" @click="clear">清空</button>
            <button class="cu-btn bg-blue shadow-blur" @click="confirm">解锁</button>
            <button
                v-if="hasButtonPermission('reset')"
                class="cu-btn text-blue line-blue shadow"
                @click="clear"
            >
                清空
            </button>
            <button
                v-if="hasButtonPermission('submit')"
                class="cu-btn bg-blue shadow-blur"
                @click="confirm"
            >
                解锁
            </button>
        </view>
        <ConfirmModal
            :visible="showModal"
            @update:visible="showModal = $event"
            icon="check"
            title="解锁确认"
            message="是否确定解锁?"
            cancelText="不需要"
            confirmText="确定"
            :isconfirm="isconfirm"
            @cancel="handleNo"
            @confirm="handleYes"
        ></ConfirmModal>
    </view>
</template>
<script>
    import {
        request
    } from '../../common/request.js'
    import {
        mapState,
        mapMutations,
        mapActions,
        mapGetters
    } from 'vuex';
    export default {
        data() {
            return {
                barcode: '',
                isptCode: '',
                list: [],
                range: [{
                    value: '1',
                    text: '合格'
                }, {
                    value: '2',
                    text: '不合格'
                }, {
                    value: '3',
                    text: '待定'
                }, {
                    value: '4',
                    text: '部分合格'
                }],
            }
        },
        computed: {
            ...mapState('user', ['dynamicFields']),
        },
        mounted() {},
        methods: {
            async search() {
                const {
                    code,
                    data,
                    msg
                } = await request('/inspect/query', {
                    isptCode: this.isptCode,
                })
                if (code === 200) {
                    this.list = data
                } else {
                    uni.showToast({
                        title: msg,
                        icon: "none",
                        position: 'top'
                    })
import { request } from '../../common/request.js'
import ConfirmModal from '../../components/confirm-modal/confirm-modal.vue'
export default {
    components: {
        ConfirmModal
    },
    data() {
        return {
            barcode: '',
            container: '',
            list: [],
            range: [],
            isconfirm: false,
            types: [
                {
                    text: '正常',
                    value: 1
                },
                {
                    text: '锁定',
                    value: 0
                }
            },
            remove(index) {
                this.list.splice(index, 1);
            },
            clear() {
                this.list = []
                this.barcode = ''
            },
            scrollTo() {
                const ref = this.$refs[`${this.barcode}ref`][0];
                uni.pageScrollTo({
                    scrollTop: ref.$el.offsetTop,
                    duration: 300
                })
            },
            async confirm() {
                const {
                    code,
                    data,
                    msg
                } = await request('/inspect/check/update', this.list)
            ],
            showModal: false,
            buttonPermissions: [] // 按钮权限列表
        }
    },
    computed: {
        allCount() {
            return this.list.reduce(
                (acc, row) => (row.status == 0 ? acc + 1 : acc),
                0
            )
        }
    },
    mounted() {
        this.buttonPermissions = uni.getStorageSync('buttonPermissions') || []
    },
    methods: {
        // 检查按钮权限
        hasButtonPermission(route) {
            return this.buttonPermissions.includes(route)
        },
        handleNo() {
            this.showModal = false
        },
        async handleYes() {
            this.isconfirm = true
            try {
                const { code, data, msg } = await request(
                    '/other/inspectConfirm2',
                    {
                        matnrList: this.list
                    },
                    'post'
                )
                if (code === 200) {
                    uni.showToast({
                        title: '质检成功'
                        title: '提交成功'
                    })
                    this.list = []
                    this.barcode = ''
                    this.container = ''
                } else {
                    uni.showToast({
                        title: msg,
                        icon: "none",
                        icon: 'none',
                        position: 'top'
                    })
                }
            },
            } finally {
                this.showModal = false
                this.isconfirm = false
            }
        },
        // 关闭AGV确认弹窗
        closeModal() {
            this.showModal = false
        },
        async search() {
            const { code, data, msg } = await request(
                '/other/inspectList',
                {
                    containerNo: this.container,
                    matnrCode: this.barcode
                },
                'post'
            )
            if (code === 200) {
                this.list = data
            } else {
                uni.showToast({
                    title: msg,
                    icon: 'none',
                    position: 'top'
                })
            }
        },
        async confirm() {
            this.showModal = true
        }
    }
}
</script>
<style>
    .index {
        border: 1px solid #e54d42;
        color: #e54d42;
        border-radius: 50%;
        display: block;
        width: 50rpx;
        height: 50rpx;
        line-height: 48rpx;
        text-align: center;
        margin-right: 20rpx;
        font-size: 30rpx;
    }
.index {
    border: 1px solid #e54d42;
    color: #e54d42;
    border-radius: 50%;
    display: block;
    width: 50rpx;
    height: 50rpx;
    line-height: 48rpx;
    text-align: center;
    margin-right: 20rpx;
    font-size: 30rpx;
}
    .text-blue {
        color: #0081ff !important;
.text-blue {
    color: #0081ff !important;
}
    }
    .act {
        border: 1px solid #e54d42;
    }
    .item {
        position: relative;
        display: flex;
        min-height: 80upx;
        align-items: center;
    }
    .uni-file-picker {
        width: 100%;
        margin-bottom: 10px;
    }
    .uni-select__selector {
        z-index: 999;
    }
</style>
.item {
    position: relative;
    display: flex;
    min-height: 80upx;
    align-items: center;
}
</style>
pages/login/index.vue
@@ -2,7 +2,7 @@
    
    <view class="bodyView">
        <view>
            <uni-nav-bar :fixed="true" :title="$t('page.login')" right-icon="gear" @clickRight="openSettings"></uni-nav-bar>
            <uni-nav-bar :fixed="true" :statusBar="true" :title="$t('page.login')" right-icon="gear" @clickRight="openSettings"></uni-nav-bar>
        </view>
        <view class="topView">
            <image src="/static/img/login_top.png" mode="aspectFill">                
pages/other/transferView/orderDetlList.vue
New file
@@ -0,0 +1,367 @@
<template>
    <view class="page-container">
        <!-- 订单信息头部 -->
        <view class="order-header" v-if="order">
            <view class="header-content">
                <view class="header-row">
                    <text class="header-label">单据号</text>
                    <text class="header-value">{{order.code}}</text>
                </view>
                <view class="header-row">
                    <text class="header-label">单据类型</text>
                    <text class="header-value">{{order.wkType$ || '-'}}</text>
                </view>
            </view>
        </view>
        <!-- 搜索框 -->
        <!-- <view class="search-bar">
            <uni-search-bar v-model="condition" placeholder=" 扫码 / 输入物料" bgColor="#F5F5F5" @confirm="search" @cancel="onCancelSearch" />
        </view> -->
        <!-- 明细列表 -->
        <view class="padding-lr margin-top-sm">
            <block v-for="(item, index) in filterList" :key="index">
                <view class="cu-list menu sm-border margin-bottom-sm" >
                    <view class="cu-bar bg-white solid-bottom">
                        <view class="action">
                            <view class="index">{{index+1}}</view>
                            <view class="text-blue">
                                编码: {{item.matnrCode}}
                            </view>
                        </view>
                        <view class="action">
                            <text :class="getRemaining(item) > 0 ? 'text-blue' : 'text-green'">
                                {{getRemaining(item) > 0 ? '剩余 ' + getRemaining(item) : '已完成'}}
                            </text>
                        </view>
                    </view>
                    <view class="cu-item">
                        <view class="content">
                            <text class="text-black">物料名称:</text>
                            <text class="text-grey text-sm margin-left-xs">{{item.maktx || '-'}}</text>
                        </view>
                    </view>
                    <view class="cu-item">
                        <view class="content">
                            <text class="text-black">规格:</text>
                            <text class="text-grey margin-left-xs">{{item.specs || '-'}}</text>
                        </view>
                        <view class="action">
                            <text class="text-black">批次:</text>
                            <text class="text-grey margin-left-xs">{{item.splrBatch || '-'}}</text>
                        </view>
                    </view>
                    <view class="cu-item">
                        <view class="content">
                            <text class="text-black">订单数量:</text>
                            <text class="text-blue margin-left-xs">{{item.anfme}}</text>
                        </view>
                        <view class="action">
                            <text class="text-black">已完成:</text>
                            <text class="text-green margin-left-xs">{{item.qty}}</text>
                        </view>
                    </view>
                </view>
            </block>
        </view>
        <!-- 空状态 -->
        <view class="empty-state" v-if="filterList.length === 0 && !loading">
            <uni-icons type="info" size="60" color="#CCCCCC"></uni-icons>
            <text class="empty-text">暂无明细数据</text>
        </view>
        <!-- 统计信息 -->
        <view class="stats-bar" v-if="menuList.length > 0">
            <view class="stats-item">
                <text class="stats-value">{{menuList.length}}</text>
                <text class="stats-label">总明细</text>
            </view>
            <view class="stats-divider"></view>
            <view class="stats-item">
                <text class="stats-value">{{pendingCount}}</text>
                <text class="stats-label">待处理</text>
            </view>
            <view class="stats-divider"></view>
            <view class="stats-item">
                <text class="stats-value">{{completedCount}}</text>
                <text class="stats-label">已完成</text>
            </view>
        </view>
    </view>
</template>
<script>
    import { request } from '@/common/request.js'
    export default {
        data() {
            return {
                data: '',
                condition: '',
                menuList: [],
                order: '',
                loading: false,
            }
        },
        computed: {
            // 过滤后的列表(优先显示有剩余数量的)
            filterList() {
                if (!this.condition.trim()) {
                    // 排序:有剩余数量的排前面
                    return [...this.menuList].sort((a, b) => {
                        if (a.ableQty > 0 && b.ableQty <= 0) return -1;
                        if (a.ableQty <= 0 && b.ableQty > 0) return 1;
                        return 0;
                    });
                }
                const keyword = this.condition.toLowerCase();
                return this.menuList.filter(item => {
                    return (item.matnr && item.matnr.toLowerCase().includes(keyword)) ||
                           (item.maktx && item.maktx.toLowerCase().includes(keyword)) ||
                           (item.batch && item.batch.toLowerCase().includes(keyword));
                });
            },
            // 待处理数量
            pendingCount() {
                return this.menuList.filter(item => item.enableQty > 0).length;
            },
            // 已完成数量
            completedCount() {
                return this.menuList.filter(item => item.enableQty <= 0).length;
            }
        },
        onLoad() {
            let that = this;
            const eventChannel = this.getOpenerEventChannel();
            if (eventChannel) {
                eventChannel.on('data', function(data) {
                    that.order = data.data;
                    that.getOrderNoList(that.order);
                });
            }
        },
        onShow() {
            if (this.order) {
                this.getOrderNoList(this.order);
            }
        },
        methods: {
            // 获取剩余数量
            getRemaining(item) {
                if (item.ableQty !== undefined && item.ableQty !== null) {
                    return Number(item.ableQty);
                }
                // 降级逻辑:订单数量 - 已完成数量
                return Number(item.anfme || 0) - Number(item.qty || 0);
            },
            // 搜索
            async search() {
                if (!this.condition.trim()) {
                    this.getOrderNoList(this.order);
                    return;
                }
                this.loading = true;
                try {
                    const res = await request('/orderDetl/search/pda/auth', {
                        condition: this.condition,
                        order: this.order.code
                    }, 'POST', true);
                    if (res.code === 200) {
                        let list = res.data || [];
                        list.forEach(item => {
                            if (item.enableQty === undefined || item.enableQty === null) {
                                item.enableQty = Number(item.anfme || 0) - Number(item.qty || 0);
                            }
                        });
                        this.menuList = list;
                    } else if (res.code === 403) {
                        uni.showToast({ title: res.msg, icon: "none", position: 'top' });
                        setTimeout(() => {
                            uni.reLaunch({ url: '../login/login' });
                        }, 1000);
                    } else {
                        uni.showToast({ title: res.msg, icon: "none", position: 'top' });
                    }
                } catch (err) {
                    // request.js 已经处理了错误提示
                } finally {
                    this.loading = false;
                }
            },
            // 取消搜索
            onCancelSearch() {
                this.condition = '';
                this.getOrderNoList(this.order);
            },
            // 获取订单明细列表
            async getOrderNoList(order) {
                if (!order || !order.code) return;
                this.loading = true;
                try {
                    const res = await request('/orderOut/detlList', {
                        orderNo: order.code
                    }, 'GET', true);
                    if (res.code === 200) {
                        let list = res.data || [];
                        list.forEach(item => {
                            if (item.enableQty === undefined || item.enableQty === null) {
                                item.enableQty = Number(item.anfme || 0) - Number(item.qty || 0);
                            }
                        });
                        this.menuList = list;
                    } else {
                        this.menuList = res.data || [];
                    }
                } catch (err) {
                    // request.js 已经处理了错误提示
                } finally {
                    this.loading = false;
                }
            },
            // 选择明细进行出库
            chose(item) {
                if (item.enableQty <= 0) {
                    uni.showToast({ title: '该明细已完成', icon: "none", position: 'top' });
                    return;
                }
                let that = this;
                uni.navigateTo({
                    url: "./outLocView",
                    success: function(res) {
                        res.eventChannel.emit('orderItem', {
                            item: item
                        });
                    },
                    events: {
                        acceptDataFromOpenedPage: function(data) {
                            // 返回后刷新数据
                        },
                    },
                });
            }
        }
    }
</script>
<style>
    /* 引入公共样式 */
    @import url('@/static/css/common.scss');
    .page-container {
        padding-bottom: 120rpx;
    }
    /* 订单头部 */
    .order-header {
        background: linear-gradient(135deg, #0081ff 0%, #1890ff 100%);
        padding: 16rpx 20rpx;
    }
    .header-content {
        background: rgba(255, 255, 255, 0.15);
        border-radius: 10rpx;
        padding: 12rpx 16rpx;
    }
    .header-row {
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding: 4rpx 0;
    }
    .header-label {
        font-size: 24rpx;
        color: rgba(255, 255, 255, 0.7);
    }
    .header-value {
        font-size: 26rpx;
        color: #ffffff;
        font-weight: 500;
    }
    /* 搜索栏 */
    .search-bar {
        padding: 0rpx 8rpx;
        background: #ffffff;
        box-shadow: 0 2rpx 8rpx rgba(0, 129, 255, 0.08);
    }
    /* 列表样式迁移 from rece/other.vue */
    .index {
        border: 1px solid #e54d42;
        color: #e54d42;
        border-radius: 50%;
        display: block;
        width: 50rpx;
        height: 50rpx;
        line-height: 48rpx;
        text-align: center;
        margin-right: 20rpx;
        font-size: 30rpx;
    }
    .act {
        border: 1px solid #e54d42;
    }
    .text-blue {
        color: #0081ff !important;
    }
    .text-green {
        color: #39b54a !important;
    }
    /* 空状态 */
    .empty-state {
        padding: 60rpx 0;
    }
    .empty-text {
        margin-top: 20rpx;
    }
    /* 统计栏 */
    .stats-bar {
        position: fixed;
        bottom: 0;
        left: 0;
        right: 0;
        display: flex;
        align-items: center;
        justify-content: space-around;
        background: #ffffff;
        padding: 16rpx 0;
        box-shadow: 0 -2rpx 12rpx rgba(0, 0, 0, 0.06);
    }
    .stats-item {
        display: flex;
        flex-direction: column;
        align-items: center;
        flex: 1;
    }
    .stats-value {
        font-size: 32rpx;
        color: #303133;
        font-weight: 600;
    }
    .stats-label {
        font-size: 20rpx;
        color: #909399;
        margin-top: 4rpx;
    }
    .stats-divider {
        width: 1rpx;
        height: 50rpx;
        background: #e8e8e8;
    }
</style>
pages/other/transferView/orderList.vue
New file
@@ -0,0 +1,388 @@
<template>
    <view class="page-container">
        <!-- 搜索框 -->
        <view class="search-bar">
            <uni-search-bar v-model="condition" placeholder=" 扫码 / 输入" bgColor="#F5F5F5" @confirm="search" @cancel="onCancelSearch" />
        </view>
        <!-- 订单列表 -->
        <view class="order-list">
            <view class="order-card" v-for="(item,i) in matList" :key="i" @click="toPrint(item)">
                <!-- 卡片头部 -->
                <view class="card-header">
                    <view class="order-badge" :class="getSettleClass(item.exceStatus)">
                        <text class="badge-text">{{item.exceStatus$ || '未知'}}</text>
                    </view>
                    <view class="order-no">
                        <text class="order-no-label">单据号</text>
                        <text class="order-no-value">{{item.code}}</text>
                    </view>
                </view>
                <!-- 卡片内容 -->
                <view class="card-body">
                    <view class="info-row">
                        <view class="info-item">
                            <text class="info-label">单据类型</text>
                            <text class="info-value">{{item.wkType$ || '-'}}</text>
                        </view>
                        <!-- <view class="info-item">
                            <text class="info-label">应出数量</text>
                            <text class="info-value">{{item.anfme || '-'}}</text>
                        </view> -->
                    </view>
                    <view class="info-row">
                        <view class="info-item">
                            <text class="info-label">应出数量</text>
                            <text class="info-value">{{item.anfme || '-'}}</text>
                        </view>
                        <view class="info-item">
                            <text class="info-label">完成数量</text>
                            <text class="info-value">{{item.qty || '-'}}</text>
                        </view>
                    </view>
                </view>
                <!-- 卡片底部 -->
                <view class="card-footer">
                    <text class="view-detail">查看详情</text>
                    <uni-icons type="right" size="14" color="#999"></uni-icons>
                </view>
            </view>
        </view>
        <!-- 空状态 -->
        <view class="empty-state" v-if="matList.length === 0 && !loading">
            <uni-icons type="search" size="60" color="#CCCCCC"></uni-icons>
            <text class="empty-text">暂无订单数据</text>
            <text class="empty-hint">下拉刷新试试</text>
        </view>
        <!-- 加载更多 -->
        <uni-load-more v-show="matList.length !== 0" :status="status" :icon-size="16" :content-text="contentText" />
    </view>
</template>
<script>
    import { request } from '@/common/request.js'
    export default {
        data() {
            return {
                tagList: [],
                matList: [],
                condition: '',
                loading: false,
                curr: 1,
                limit:5,
                status: 'more',
                contentText: {
                    contentdown: '上拉加载更多',
                    contentrefresh: '加载中',
                    contentnomore: '没有更多'
                },
                // 当前tagId
                tagIdNow: 1,
                orderTypeId:''
            }
        },
        // 下拉刷新
        onPullDownRefresh() {
            this.refreshData();
        },
        // 上拉加载更多
        onReachBottom() {
            if (this.status !== 'noMore') {
                this.status = 'loading';
                this.loadMoreData();
            }
        },
        onLoad() {
            let that = this
            const eventChannel = this.getOpenerEventChannel();
            if (eventChannel) {
                eventChannel.on('orderTypeId', function(data) {
                    that.orderTypeId = data.orderTypeId
                    console.log(data)
                })
            }
        },
        onShow() {
            // 每次进入页面重新加载
            this.refreshData();
        },
        methods: {
            // 刷新数据
            refreshData() {
                this.curr = 1;
                this.matList = [];
                this.status = 'more';
                this.loading = true;
                this.fetchOrderList(true);
            },
            // 加载更多数据
            loadMoreData() {
                this.fetchOrderList(false);
            },
            // 获取订单列表
            async fetchOrderList(isRefresh) {
                try {
                    const res = await request('/other/transferPage', {
                        curr: this.curr,
                        limit: this.limit,
                        orderNo: this.condition,
                        orderType: this.orderTypeId
                    }, 'GET', true);
                    if (res.code === 200) {
                        let records = res.data.records || [];
                        if (records.length > 0) {
                            if (isRefresh) {
                                this.matList = records;
                            } else {
                                this.matList = this.matList.concat(records);
                            }
                            this.curr = this.curr + 1;
                            this.status = 'more';
                        } else {
                            this.status = 'noMore';
                        }
                    } else if (res.code === 403) {
                        uni.showToast({ title: res.msg, icon: "none", position: 'top' });
                        setTimeout(() => {
                            uni.reLaunch({ url: '../login/login' });
                        }, 1000);
                    } else {
                        uni.showToast({ title: res.msg, icon: "none", position: 'top' });
                    }
                } catch (err) {
                    // request.js 已经处理了错误提示
                } finally {
                    this.loading = false;
                    uni.stopPullDownRefresh();
                }
            },
            // 搜索
            async search() {
                if (!this.condition.trim()) {
                    this.refreshData();
                    return;
                }
                this.loading = true;
                try {
                    const res = await request('/other/transferPage', {
                        curr: this.curr,
                        limit: this.limit,
                        orderNo: this.condition
                    }, 'GET', true);
                    if (res.code === 200) {
                        this.matList = res.data || [];
                        this.status = 'noMore';
                    } else if (res.code === 403) {
                        uni.showToast({ title: res.msg, icon: "none", position: 'top' });
                        setTimeout(() => {
                            uni.reLaunch({ url: '../login/login' });
                        }, 1000);
                    } else {
                        uni.showToast({ title: res.msg, icon: "none", position: 'top' });
                    }
                } catch (err) {
                    // request.js 已经处理了错误提示
                } finally {
                    this.loading = false;
                }
            },
            // 取消搜索
            onCancelSearch() {
                this.condition = '';
                this.refreshData();
            },
            // 根据状态返回样式类名
            getSettleClass(settle) {
                // settle: 1-待处理, 2-处理中, 3-已完成, 4-已取消 (根据实际情况调整)
                const classMap = {
                    1: 'badge-pending',
                    2: 'badge-processing',
                    3: 'badge-completed',
                    4: 'badge-cancelled'
                };
                return classMap[settle] || 'badge-default';
            },
            // 跳转到订单详情
            toPrint(item) {
                let that = this;
                uni.navigateTo({
                    url: "./orderDetlList",
                    success: function(res) {
                        res.eventChannel.emit('data', {
                            data: item
                        });
                    },
                    events: {
                        acceptDataFromOpenedPage: function(data) {
                            that.matnr = data.data;
                            that.findMat(that.matnr);
                        },
                    },
                });
            }
        }
    }
</script>
<style>
    @import url('@/static/css/wms.css/wms.css');
    .page-container {
        min-height: 100vh;
        background: #f5f7fa;
        padding-bottom: 20rpx;
    }
    .search-bar {
        padding: 0rpx 8rpx;
        background: #ffffff;
        box-shadow: 0 2rpx 12rpx rgba(0, 129, 255, 0.08);
    }
    .order-list {
        padding: 0 24rpx;
    }
    .order-card {
        background: #ffffff;
        border-radius: 16rpx;
        margin-top: 20rpx;
        box-shadow: 0 4rpx 20rpx rgba(0, 129, 255, 0.1);
        overflow: hidden;
        transition: transform 0.2s ease, box-shadow 0.2s ease;
        border: 1rpx solid #e4e7ed;
    }
    .order-card:active {
        transform: scale(0.98);
        box-shadow: 0 2rpx 10rpx rgba(0, 129, 255, 0.15);
    }
    .card-header {
        display: flex;
        align-items: center;
        padding: 24rpx 28rpx;
        background: linear-gradient(135deg, #0081ff 0%, #1890ff 100%);
    }
    .order-badge {
        padding: 6rpx 16rpx;
        border-radius: 20rpx;
        margin-right: 20rpx;
    }
    .badge-text {
        font-size: 22rpx;
        font-weight: 500;
        color: #ffffff;
    }
    /* 状态徽章颜色 */
    .badge-pending {
        background: rgba(255, 255, 255, 0.3);
    }
    .badge-processing {
        background: #ffc107;
    }
    .badge-completed {
        background: #28a745;
    }
    .badge-cancelled {
        background: #dc3545;
    }
    .badge-default {
        background: rgba(255, 255, 255, 0.25);
    }
    .order-no {
        flex: 1;
    }
    .order-no-label {
        font-size: 22rpx;
        color: rgba(255, 255, 255, 0.7);
        display: block;
    }
    .order-no-value {
        font-size: 28rpx;
        color: #ffffff;
        font-weight: 600;
        display: block;
        margin-top: 4rpx;
    }
    .card-body {
        padding: 24rpx 28rpx;
    }
    .info-row {
        display: flex;
        flex-wrap: wrap;
    }
    .info-item {
        width: 50%;
        margin-bottom: 16rpx;
    }
    .info-label {
        font-size: 24rpx;
        color: #909399;
        display: block;
    }
    .info-value {
        font-size: 28rpx;
        color: #303133;
        font-weight: 500;
        display: block;
        margin-top: 6rpx;
    }
    .card-footer {
        display: flex;
        align-items: center;
        justify-content: flex-end;
        padding: 20rpx 28rpx;
        border-top: 1rpx solid #f0f0f0;
    }
    .view-detail {
        font-size: 26rpx;
        color: #909399;
        margin-right: 8rpx;
    }
    /* 空状态 */
    .empty-state {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        padding: 120rpx 0;
    }
    .empty-text {
        font-size: 30rpx;
        color: #909399;
        margin-top: 30rpx;
    }
    .empty-hint {
        font-size: 24rpx;
        color: #c0c4cc;
        margin-top: 12rpx;
    }
</style>
pages/outbound/orderOut/orderList.vue
@@ -130,7 +130,8 @@
                    const res = await request('/orderOut/list', {
                        curr: this.curr,
                        limit: this.limit,
                        orderNo: this.condition
                        orderNo: this.condition,
                        orderType: this.orderTypeId
                    }, 'GET', true);
                    
                    if (res.code === 200) {
pages/outbound/orderOut/order_out_type.vue
@@ -82,7 +82,7 @@
                        color: this.colorList[index],
                        cuIcon: 'round',
                        url: `/outbound/orderOut/orderList`,
                        id: item.id
                        id: item.value
                    })
                })                
            } else {
pages/outbound/orderOutView/orderDetlList.vue
New file
@@ -0,0 +1,367 @@
<template>
    <view class="page-container">
        <!-- 订单信息头部 -->
        <view class="order-header" v-if="order">
            <view class="header-content">
                <view class="header-row">
                    <text class="header-label">单据号</text>
                    <text class="header-value">{{order.code}}</text>
                </view>
                <view class="header-row">
                    <text class="header-label">单据类型</text>
                    <text class="header-value">{{order.wkType$ || '-'}}</text>
                </view>
            </view>
        </view>
        <!-- 搜索框 -->
        <!-- <view class="search-bar">
            <uni-search-bar v-model="condition" placeholder=" 扫码 / 输入物料" bgColor="#F5F5F5" @confirm="search" @cancel="onCancelSearch" />
        </view> -->
        <!-- 明细列表 -->
        <view class="padding-lr margin-top-sm">
            <block v-for="(item, index) in filterList" :key="index">
                <view class="cu-list menu sm-border margin-bottom-sm" >
                    <view class="cu-bar bg-white solid-bottom">
                        <view class="action">
                            <view class="index">{{index+1}}</view>
                            <view class="text-blue">
                                编码: {{item.matnrCode}}
                            </view>
                        </view>
                        <view class="action">
                            <text :class="getRemaining(item) > 0 ? 'text-blue' : 'text-green'">
                                {{getRemaining(item) > 0 ? '剩余 ' + getRemaining(item) : '已完成'}}
                            </text>
                        </view>
                    </view>
                    <view class="cu-item">
                        <view class="content">
                            <text class="text-black">物料名称:</text>
                            <text class="text-grey text-sm margin-left-xs">{{item.maktx || '-'}}</text>
                        </view>
                    </view>
                    <view class="cu-item">
                        <view class="content">
                            <text class="text-black">规格:</text>
                            <text class="text-grey margin-left-xs">{{item.specs || '-'}}</text>
                        </view>
                        <view class="action">
                            <text class="text-black">批次:</text>
                            <text class="text-grey margin-left-xs">{{item.splrBatch || '-'}}</text>
                        </view>
                    </view>
                    <view class="cu-item">
                        <view class="content">
                            <text class="text-black">订单数量:</text>
                            <text class="text-blue margin-left-xs">{{item.anfme}}</text>
                        </view>
                        <view class="action">
                            <text class="text-black">已完成:</text>
                            <text class="text-green margin-left-xs">{{item.qty}}</text>
                        </view>
                    </view>
                </view>
            </block>
        </view>
        <!-- 空状态 -->
        <view class="empty-state" v-if="filterList.length === 0 && !loading">
            <uni-icons type="info" size="60" color="#CCCCCC"></uni-icons>
            <text class="empty-text">暂无明细数据</text>
        </view>
        <!-- 统计信息 -->
        <view class="stats-bar" v-if="menuList.length > 0">
            <view class="stats-item">
                <text class="stats-value">{{menuList.length}}</text>
                <text class="stats-label">总明细</text>
            </view>
            <view class="stats-divider"></view>
            <view class="stats-item">
                <text class="stats-value">{{pendingCount}}</text>
                <text class="stats-label">待处理</text>
            </view>
            <view class="stats-divider"></view>
            <view class="stats-item">
                <text class="stats-value">{{completedCount}}</text>
                <text class="stats-label">已完成</text>
            </view>
        </view>
    </view>
</template>
<script>
    import { request } from '@/common/request.js'
    export default {
        data() {
            return {
                data: '',
                condition: '',
                menuList: [],
                order: '',
                loading: false,
            }
        },
        computed: {
            // 过滤后的列表(优先显示有剩余数量的)
            filterList() {
                if (!this.condition.trim()) {
                    // 排序:有剩余数量的排前面
                    return [...this.menuList].sort((a, b) => {
                        if (a.ableQty > 0 && b.ableQty <= 0) return -1;
                        if (a.ableQty <= 0 && b.ableQty > 0) return 1;
                        return 0;
                    });
                }
                const keyword = this.condition.toLowerCase();
                return this.menuList.filter(item => {
                    return (item.matnr && item.matnr.toLowerCase().includes(keyword)) ||
                           (item.maktx && item.maktx.toLowerCase().includes(keyword)) ||
                           (item.batch && item.batch.toLowerCase().includes(keyword));
                });
            },
            // 待处理数量
            pendingCount() {
                return this.menuList.filter(item => item.enableQty > 0).length;
            },
            // 已完成数量
            completedCount() {
                return this.menuList.filter(item => item.enableQty <= 0).length;
            }
        },
        onLoad() {
            let that = this;
            const eventChannel = this.getOpenerEventChannel();
            if (eventChannel) {
                eventChannel.on('data', function(data) {
                    that.order = data.data;
                    that.getOrderNoList(that.order);
                });
            }
        },
        onShow() {
            if (this.order) {
                this.getOrderNoList(this.order);
            }
        },
        methods: {
            // 获取剩余数量
            getRemaining(item) {
                if (item.ableQty !== undefined && item.ableQty !== null) {
                    return Number(item.ableQty);
                }
                // 降级逻辑:订单数量 - 已完成数量
                return Number(item.anfme || 0) - Number(item.qty || 0);
            },
            // 搜索
            async search() {
                if (!this.condition.trim()) {
                    this.getOrderNoList(this.order);
                    return;
                }
                this.loading = true;
                try {
                    const res = await request('/orderDetl/search/pda/auth', {
                        condition: this.condition,
                        order: this.order.code
                    }, 'POST', true);
                    if (res.code === 200) {
                        let list = res.data || [];
                        list.forEach(item => {
                            if (item.enableQty === undefined || item.enableQty === null) {
                                item.enableQty = Number(item.anfme || 0) - Number(item.qty || 0);
                            }
                        });
                        this.menuList = list;
                    } else if (res.code === 403) {
                        uni.showToast({ title: res.msg, icon: "none", position: 'top' });
                        setTimeout(() => {
                            uni.reLaunch({ url: '../login/login' });
                        }, 1000);
                    } else {
                        uni.showToast({ title: res.msg, icon: "none", position: 'top' });
                    }
                } catch (err) {
                    // request.js 已经处理了错误提示
                } finally {
                    this.loading = false;
                }
            },
            // 取消搜索
            onCancelSearch() {
                this.condition = '';
                this.getOrderNoList(this.order);
            },
            // 获取订单明细列表
            async getOrderNoList(order) {
                if (!order || !order.code) return;
                this.loading = true;
                try {
                    const res = await request('/orderOut/detlList', {
                        orderNo: order.code
                    }, 'GET', true);
                    if (res.code === 200) {
                        let list = res.data || [];
                        list.forEach(item => {
                            if (item.enableQty === undefined || item.enableQty === null) {
                                item.enableQty = Number(item.anfme || 0) - Number(item.qty || 0);
                            }
                        });
                        this.menuList = list;
                    } else {
                        this.menuList = res.data || [];
                    }
                } catch (err) {
                    // request.js 已经处理了错误提示
                } finally {
                    this.loading = false;
                }
            },
            // 选择明细进行出库
            chose(item) {
                if (item.enableQty <= 0) {
                    uni.showToast({ title: '该明细已完成', icon: "none", position: 'top' });
                    return;
                }
                let that = this;
                uni.navigateTo({
                    url: "./outLocView",
                    success: function(res) {
                        res.eventChannel.emit('orderItem', {
                            item: item
                        });
                    },
                    events: {
                        acceptDataFromOpenedPage: function(data) {
                            // 返回后刷新数据
                        },
                    },
                });
            }
        }
    }
</script>
<style>
    /* 引入公共样式 */
    @import url('@/static/css/common.scss');
    .page-container {
        padding-bottom: 120rpx;
    }
    /* 订单头部 */
    .order-header {
        background: linear-gradient(135deg, #0081ff 0%, #1890ff 100%);
        padding: 16rpx 20rpx;
    }
    .header-content {
        background: rgba(255, 255, 255, 0.15);
        border-radius: 10rpx;
        padding: 12rpx 16rpx;
    }
    .header-row {
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding: 4rpx 0;
    }
    .header-label {
        font-size: 24rpx;
        color: rgba(255, 255, 255, 0.7);
    }
    .header-value {
        font-size: 26rpx;
        color: #ffffff;
        font-weight: 500;
    }
    /* 搜索栏 */
    .search-bar {
        padding: 0rpx 8rpx;
        background: #ffffff;
        box-shadow: 0 2rpx 8rpx rgba(0, 129, 255, 0.08);
    }
    /* 列表样式迁移 from rece/other.vue */
    .index {
        border: 1px solid #e54d42;
        color: #e54d42;
        border-radius: 50%;
        display: block;
        width: 50rpx;
        height: 50rpx;
        line-height: 48rpx;
        text-align: center;
        margin-right: 20rpx;
        font-size: 30rpx;
    }
    .act {
        border: 1px solid #e54d42;
    }
    .text-blue {
        color: #0081ff !important;
    }
    .text-green {
        color: #39b54a !important;
    }
    /* 空状态 */
    .empty-state {
        padding: 60rpx 0;
    }
    .empty-text {
        margin-top: 20rpx;
    }
    /* 统计栏 */
    .stats-bar {
        position: fixed;
        bottom: 0;
        left: 0;
        right: 0;
        display: flex;
        align-items: center;
        justify-content: space-around;
        background: #ffffff;
        padding: 16rpx 0;
        box-shadow: 0 -2rpx 12rpx rgba(0, 0, 0, 0.06);
    }
    .stats-item {
        display: flex;
        flex-direction: column;
        align-items: center;
        flex: 1;
    }
    .stats-value {
        font-size: 32rpx;
        color: #303133;
        font-weight: 600;
    }
    .stats-label {
        font-size: 20rpx;
        color: #909399;
        margin-top: 4rpx;
    }
    .stats-divider {
        width: 1rpx;
        height: 50rpx;
        background: #e8e8e8;
    }
</style>
pages/outbound/orderOutView/orderList.vue
New file
@@ -0,0 +1,388 @@
<template>
    <view class="page-container">
        <!-- 搜索框 -->
        <view class="search-bar">
            <uni-search-bar v-model="condition" placeholder=" 扫码 / 输入" bgColor="#F5F5F5" @confirm="search" @cancel="onCancelSearch" />
        </view>
        <!-- 订单列表 -->
        <view class="order-list">
            <view class="order-card" v-for="(item,i) in matList" :key="i" @click="toPrint(item)">
                <!-- 卡片头部 -->
                <view class="card-header">
                    <view class="order-badge" :class="getSettleClass(item.exceStatus)">
                        <text class="badge-text">{{item.exceStatus$ || '未知'}}</text>
                    </view>
                    <view class="order-no">
                        <text class="order-no-label">单据号</text>
                        <text class="order-no-value">{{item.code}}</text>
                    </view>
                </view>
                <!-- 卡片内容 -->
                <view class="card-body">
                    <view class="info-row">
                        <view class="info-item">
                            <text class="info-label">单据类型</text>
                            <text class="info-value">{{item.wkType$ || '-'}}</text>
                        </view>
                        <!-- <view class="info-item">
                            <text class="info-label">应出数量</text>
                            <text class="info-value">{{item.anfme || '-'}}</text>
                        </view> -->
                    </view>
                    <view class="info-row">
                        <view class="info-item">
                            <text class="info-label">应出数量</text>
                            <text class="info-value">{{item.anfme || '-'}}</text>
                        </view>
                        <view class="info-item">
                            <text class="info-label">完成数量</text>
                            <text class="info-value">{{item.qty || '-'}}</text>
                        </view>
                    </view>
                </view>
                <!-- 卡片底部 -->
                <view class="card-footer">
                    <text class="view-detail">查看详情</text>
                    <uni-icons type="right" size="14" color="#999"></uni-icons>
                </view>
            </view>
        </view>
        <!-- 空状态 -->
        <view class="empty-state" v-if="matList.length === 0 && !loading">
            <uni-icons type="search" size="60" color="#CCCCCC"></uni-icons>
            <text class="empty-text">暂无订单数据</text>
            <text class="empty-hint">下拉刷新试试</text>
        </view>
        <!-- 加载更多 -->
        <uni-load-more v-show="matList.length !== 0" :status="status" :icon-size="16" :content-text="contentText" />
    </view>
</template>
<script>
    import { request } from '@/common/request.js'
    export default {
        data() {
            return {
                tagList: [],
                matList: [],
                condition: '',
                loading: false,
                curr: 1,
                limit:5,
                status: 'more',
                contentText: {
                    contentdown: '上拉加载更多',
                    contentrefresh: '加载中',
                    contentnomore: '没有更多'
                },
                // 当前tagId
                tagIdNow: 1,
                orderTypeId:''
            }
        },
        // 下拉刷新
        onPullDownRefresh() {
            this.refreshData();
        },
        // 上拉加载更多
        onReachBottom() {
            if (this.status !== 'noMore') {
                this.status = 'loading';
                this.loadMoreData();
            }
        },
        onLoad() {
            let that = this
            const eventChannel = this.getOpenerEventChannel();
            if (eventChannel) {
                eventChannel.on('orderTypeId', function(data) {
                    that.orderTypeId = data.orderTypeId
                    console.log(data)
                })
            }
        },
        onShow() {
            // 每次进入页面重新加载
            this.refreshData();
        },
        methods: {
            // 刷新数据
            refreshData() {
                this.curr = 1;
                this.matList = [];
                this.status = 'more';
                this.loading = true;
                this.fetchOrderList(true);
            },
            // 加载更多数据
            loadMoreData() {
                this.fetchOrderList(false);
            },
            // 获取订单列表
            async fetchOrderList(isRefresh) {
                try {
                    const res = await request('/orderOut/list', {
                        curr: this.curr,
                        limit: this.limit,
                        orderNo: this.condition,
                        orderType: this.orderTypeId
                    }, 'GET', true);
                    if (res.code === 200) {
                        let records = res.data.records || [];
                        if (records.length > 0) {
                            if (isRefresh) {
                                this.matList = records;
                            } else {
                                this.matList = this.matList.concat(records);
                            }
                            this.curr = this.curr + 1;
                            this.status = 'more';
                        } else {
                            this.status = 'noMore';
                        }
                    } else if (res.code === 403) {
                        uni.showToast({ title: res.msg, icon: "none", position: 'top' });
                        setTimeout(() => {
                            uni.reLaunch({ url: '../login/login' });
                        }, 1000);
                    } else {
                        uni.showToast({ title: res.msg, icon: "none", position: 'top' });
                    }
                } catch (err) {
                    // request.js 已经处理了错误提示
                } finally {
                    this.loading = false;
                    uni.stopPullDownRefresh();
                }
            },
            // 搜索
            async search() {
                if (!this.condition.trim()) {
                    this.refreshData();
                    return;
                }
                this.loading = true;
                try {
                    const res = await request('/orderOut/list', {
                        curr: this.curr,
                        limit: this.limit,
                        orderNo: this.condition
                    }, 'GET', true);
                    if (res.code === 200) {
                        this.matList = res.data || [];
                        this.status = 'noMore';
                    } else if (res.code === 403) {
                        uni.showToast({ title: res.msg, icon: "none", position: 'top' });
                        setTimeout(() => {
                            uni.reLaunch({ url: '../login/login' });
                        }, 1000);
                    } else {
                        uni.showToast({ title: res.msg, icon: "none", position: 'top' });
                    }
                } catch (err) {
                    // request.js 已经处理了错误提示
                } finally {
                    this.loading = false;
                }
            },
            // 取消搜索
            onCancelSearch() {
                this.condition = '';
                this.refreshData();
            },
            // 根据状态返回样式类名
            getSettleClass(settle) {
                // settle: 1-待处理, 2-处理中, 3-已完成, 4-已取消 (根据实际情况调整)
                const classMap = {
                    1: 'badge-pending',
                    2: 'badge-processing',
                    3: 'badge-completed',
                    4: 'badge-cancelled'
                };
                return classMap[settle] || 'badge-default';
            },
            // 跳转到订单详情
            toPrint(item) {
                let that = this;
                uni.navigateTo({
                    url: "./orderDetlList",
                    success: function(res) {
                        res.eventChannel.emit('data', {
                            data: item
                        });
                    },
                    events: {
                        acceptDataFromOpenedPage: function(data) {
                            that.matnr = data.data;
                            that.findMat(that.matnr);
                        },
                    },
                });
            }
        }
    }
</script>
<style>
    @import url('@/static/css/wms.css/wms.css');
    .page-container {
        min-height: 100vh;
        background: #f5f7fa;
        padding-bottom: 20rpx;
    }
    .search-bar {
        padding: 0rpx 8rpx;
        background: #ffffff;
        box-shadow: 0 2rpx 12rpx rgba(0, 129, 255, 0.08);
    }
    .order-list {
        padding: 0 24rpx;
    }
    .order-card {
        background: #ffffff;
        border-radius: 16rpx;
        margin-top: 20rpx;
        box-shadow: 0 4rpx 20rpx rgba(0, 129, 255, 0.1);
        overflow: hidden;
        transition: transform 0.2s ease, box-shadow 0.2s ease;
        border: 1rpx solid #e4e7ed;
    }
    .order-card:active {
        transform: scale(0.98);
        box-shadow: 0 2rpx 10rpx rgba(0, 129, 255, 0.15);
    }
    .card-header {
        display: flex;
        align-items: center;
        padding: 24rpx 28rpx;
        background: linear-gradient(135deg, #0081ff 0%, #1890ff 100%);
    }
    .order-badge {
        padding: 6rpx 16rpx;
        border-radius: 20rpx;
        margin-right: 20rpx;
    }
    .badge-text {
        font-size: 22rpx;
        font-weight: 500;
        color: #ffffff;
    }
    /* 状态徽章颜色 */
    .badge-pending {
        background: rgba(255, 255, 255, 0.3);
    }
    .badge-processing {
        background: #ffc107;
    }
    .badge-completed {
        background: #28a745;
    }
    .badge-cancelled {
        background: #dc3545;
    }
    .badge-default {
        background: rgba(255, 255, 255, 0.25);
    }
    .order-no {
        flex: 1;
    }
    .order-no-label {
        font-size: 22rpx;
        color: rgba(255, 255, 255, 0.7);
        display: block;
    }
    .order-no-value {
        font-size: 28rpx;
        color: #ffffff;
        font-weight: 600;
        display: block;
        margin-top: 4rpx;
    }
    .card-body {
        padding: 24rpx 28rpx;
    }
    .info-row {
        display: flex;
        flex-wrap: wrap;
    }
    .info-item {
        width: 50%;
        margin-bottom: 16rpx;
    }
    .info-label {
        font-size: 24rpx;
        color: #909399;
        display: block;
    }
    .info-value {
        font-size: 28rpx;
        color: #303133;
        font-weight: 500;
        display: block;
        margin-top: 6rpx;
    }
    .card-footer {
        display: flex;
        align-items: center;
        justify-content: flex-end;
        padding: 20rpx 28rpx;
        border-top: 1rpx solid #f0f0f0;
    }
    .view-detail {
        font-size: 26rpx;
        color: #909399;
        margin-right: 8rpx;
    }
    /* 空状态 */
    .empty-state {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        padding: 120rpx 0;
    }
    .empty-text {
        font-size: 30rpx;
        color: #909399;
        margin-top: 30rpx;
    }
    .empty-hint {
        font-size: 24rpx;
        color: #c0c4cc;
        margin-top: 12rpx;
    }
</style>
pages/outbound/orderOutView/order_out_type.vue
New file
@@ -0,0 +1,250 @@
<template>
    <view>
        <scroll-view
            scroll-y
            class="page"
        >
            <view class="list-container">
                <view
                    class="list-item"
                    @click="toPage(item)"
                    :class="'bg-' + item.color"
                    :style="[
                        { animation: 'show ' + ((index + 1) * 0.2 + 1) + 's 1' }
                    ]"
                    v-for="(item, index) in elements"
                    :key="index"
                >
                    <view class="item-icon">
                        <text :class="'cuIcon-' + item.cuIcon"></text>
                    </view>
                    <view class="item-content">
                        <view class="item-title">{{ item.title }}</view>
                        <view class="item-desc">{{ item.name }}</view>
                    </view>
                    <view class="item-arrow">
                        <text class="cuIcon-right"></text>
                    </view>
                </view>
            </view>
            <view class="cu-tabbar-height"></view>
        </scroll-view>
    </view>
</template>
<script>
import { request } from '@/common/request.js'
export default {
    data() {
        return {
            buttonPermissions: [],
            elements: [
            ],
            colorList: [
                'cyan',
                'blue',
                'purple',
                'mauve',
                'pink',
                'brown',
                'red',
                'orange',
                'yellow',
                'olive'
            ]
        }
    },
    onLoad(option) {
        this.backGroundRepeat()
    },
    mounted() {
        // 获取按钮权限
        this.buttonPermissions = uni.getStorageSync('buttonPermissions') || []
        console.log('当前页面按钮权限:', this.buttonPermissions)
        this.getType(this.buttonPermissions)
    },
    methods: {
        async getType(type) {
            const { code, data, msg } = await request(
                '/orderOut/getType',
                {
                    type
                },
                'post'
            )
            if (code === 200) {
                data.map((item,index) => {
                    console.log(item,index)
                    this.elements.unshift({
                        title: item.label,
                        name: '',
                        color: this.colorList[index],
                        cuIcon: 'round',
                        url: `/outbound/orderOutView/orderList`,
                        id: item.value
                    })
                })
            } else {
                uni.showToast({
                    title: msg,
                    icon: 'none',
                    position: 'top'
                })
            }
        },
        backGroundRepeat() {
            let len = this.colorList.length
            let i = 0
            for (let k in this.elements) {
                if (i == len) {
                    i = 0
                }
                this.elements[k].color = this.colorList[i]
                i++
            }
        },
        toPage(item) {
            console.log(item)
            uni.navigateTo({
                url: `/pages${item.url}`,
                success(res) {
                    res.eventChannel.emit('orderTypeId', {
                        orderTypeId: item.id
                    })
                }
            })
        }
    }
}
</script>
<style>
.page {
    height: 100vh;
    background-color: #f5f5f5;
}
.list-container {
    padding: 20rpx 30rpx;
}
.list-item {
    display: flex;
    align-items: center;
    padding: 30rpx;
    margin-bottom: 20rpx;
    border-radius: 16rpx;
    box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.1);
}
.item-icon {
    width: 80rpx;
    height: 80rpx;
    border-radius: 50%;
    background-color: rgba(255, 255, 255, 0.3);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-right: 24rpx;
}
.item-icon text {
    font-size: 40rpx;
}
.item-content {
    flex: 1;
}
.item-title {
    font-size: 32rpx;
    font-weight: bold;
    margin-bottom: 8rpx;
}
.item-desc {
    font-size: 24rpx;
    opacity: 0.8;
}
.item-arrow {
    font-size: 32rpx;
    opacity: 0.6;
}
.bg-red {
    background-color: #e54d42;
    color: #ffffff;
}
.bg-orange {
    background-color: #f37b1d;
    color: #ffffff;
}
.bg-yellow {
    background-color: #fbbd08;
    color: #333333;
}
.bg-olive {
    background-color: #8dc63f;
    color: #ffffff;
}
.bg-green {
    background-color: #39b54a;
    color: #ffffff;
}
.bg-cyan {
    background-color: #1cbbb4;
    color: #ffffff;
}
.bg-blue {
    background-color: #0081ff;
    color: #ffffff;
}
.bg-purple {
    background-color: #6739b6;
    color: #ffffff;
}
.bg-mauve {
    background-color: #9c26b0;
    color: #ffffff;
}
.bg-pink {
    background-color: #e03997;
    color: #ffffff;
}
.bg-brown {
    background-color: #a5673f;
    color: #ffffff;
}
.bg-grey {
    background-color: #8799a3;
    color: #ffffff;
}
.bg-gray {
    background-color: #f0f0f0;
    color: #333333;
}
.bg-black {
    background-color: #333333;
    color: #ffffff;
}
.bg-white {
    background-color: #ffffff;
    color: #666666;
}
</style>
pages/phyz/AGV/AGVPakin.vue
File was deleted
pages/phyz/AGV/AGVPakin2.vue
File was deleted
pages/phyz/AGV/AGVPakin3.vue
File was deleted
pages/phyz/AGV/emptyOut.vue
File was deleted
pages/phyz/AGV/emptyPakin.vue
File was deleted
pages/phyz/backStock/backStockList.vue
File was deleted
pages/phyz/backStock/backStocksOrder.vue
File was deleted
pages/phyz/bcp/bcpDbList.vue
File was deleted
pages/phyz/bcp/bcpDbOrder.vue
File was deleted
pages/phyz/bcp/bcpDbOrderV2.vue
File was deleted
pages/phyz/bcp/bcpOrder.vue
File was deleted
pages/phyz/bcp/bcpOrder_xs.vue
File was deleted
pages/phyz/bcp/orderCar.vue
File was deleted
pages/phyz/bcp/orderCar_xs.vue
File was deleted
pages/phyz/checkLocDetl/checkLocDetl.vue
File was deleted
pages/phyz/checkLocDetl/checkLocDetl2.vue
File was deleted
pages/phyz/checkLocDetl/locDetl.vue
File was deleted
pages/phyz/checkLocDetl/locDetl2.vue
File was deleted
pages/phyz/checkLocDetl/locDetlList.vue
File was deleted
pages/phyz/checkLocDetl/locDetlList2.vue
File was deleted
pages/phyz/checkLocDetl/locMove.vue
File was deleted
pages/phyz/comOrder/checkOut.vue
File was deleted
pages/phyz/comOrder/orderCar.vue
File was deleted
pages/phyz/comOrder/orderIn.vue
File was deleted
pages/phyz/comOrder/orderOut.vue
File was deleted
pages/phyz/inStock/inStock.vue
File was deleted
pages/phyz/mat/mat.vue
File was deleted
pages/phyz/mat/matSelected.vue
File was deleted
pages/phyz/order/orderCar.vue
File was deleted
pages/phyz/order/orderList.vue
File was deleted
pages/phyz/order/orderList2.vue
File was deleted
pages/phyz/order/outOrder.vue
File was deleted
pages/phyz/order/pakinOrderSelect.vue
File was deleted
pages/phyz/order/pakinOrderSelectV2.vue
File was deleted
pages/phyz/order/preview.vue
File was deleted
pages/phyz/order/purchaseOrder.vue
File was deleted
pages/phyz/orderOut/bcpOrderOutSelect.vue
File was deleted
pages/phyz/orderOut/bcpOrderOutSelect_2.vue
File was deleted
pages/phyz/orderOut/orderCheck.vue
File was deleted
pages/phyz/orderOut/orderCheck_2.vue
File was deleted
pages/phyz/orderOut/orderList.vue
File was deleted
pages/phyz/orderOut/orderOutSelect.vue
File was deleted
pages/phyz/orderOut/orderOutSelectV2.vue
File was deleted
pages/phyz/processOrder/orderCheck.vue
File was deleted
pages/phyz/processOrder/orderCheck2.vue
File was deleted
pages/phyz/processOrder/processList.vue
File was deleted
pages/phyz/processOrder/processOrder.vue
File was deleted
pages/phyz/stationManage/confirmProcessed.vue
File was deleted
pages/phyz/stationManage/pickAgain.vue
File was deleted
pages/phyz/stationManage/pickAgainDetl.vue
File was deleted
pages/phyz/stationManage/stationDetl.vue
File was deleted
pages/phyz/stationManage/stationManage.vue
File was deleted
pages/phyz/utils/utils.js
File was deleted
pages/phyz/waitOrder/waitOrderIn.vue
File was deleted
pages/phyz/waitOrder/waitOrderOut.vue
File was deleted
pages/phyz/wrkMast/DBList.vue
File was deleted
pages/phyz/wrkMast/locMoveMast.vue
File was deleted
pages/phyz/wrkMast/waitPakin.vue
File was deleted
pages/phyz/wrkMast/waitPakinLog.vue
File was deleted
pages/phyz/wrkMast/wrkDetl.vue
File was deleted
pages/phyz/wrkMast/wrkMast.vue
File was deleted
pages/phyz/wrkMast/wrkMastLog.vue
File was deleted