#
zhou zhou
10 小时以前 4e4414bc9d1604fd2a3ed443cb9484143eab7e2c
#
2个文件已添加
4个文件已修改
1034 ■■■■ 已修改文件
pages.json 114 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/listing/itemSelect.vue 179 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/listing/matnrPalletising.vue 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/outbound/orderOut/orderList.vue 394 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/outbound/orderOut/order_out_type.vue 248 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/css/wms.css/wms.css 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages.json
@@ -13,6 +13,18 @@
            }
        },
        {
            "path": "pages/outbound/orderOut/order_out_type",
            "style": {
                "navigationBarTitleText": "单据类型"
            }
        },
        {
            "path": "pages/outbound/orderOut/orderList",
            "style": {
                "navigationBarTitleText": "单据列表"
            }
        },
        {
            "path": "pages/emptyTray/outBound",
            "style": {
                "navigationBarTitleText": "空托出库"
@@ -220,7 +232,7 @@
            "path": "pages/listing/itemSelect",
            "style": {
                "navigationBarTitleText": "选择物料",
                "enablePullDownRefresh": false
                "enablePullDownRefresh": true
            }
        },
        {
@@ -400,35 +412,34 @@
                "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",
@@ -436,20 +447,20 @@
                "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",
@@ -457,27 +468,27 @@
                "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",
@@ -492,20 +503,20 @@
                "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",
@@ -541,27 +552,29 @@
                "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": "半成品调拨单",
@@ -595,30 +608,29 @@
                "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": "调拨任务管理",
@@ -722,22 +734,18 @@
            }
        },
        {
            "path" : "pages/phyz/inStock/inStock",
            "style" :
            {
                "navigationBarTitleText" : "入库上架"
            "path": "pages/phyz/inStock/inStock",
            "style": {
                "navigationBarTitleText": "入库上架"
            }
        },
        {
            "path": "pages/listing/unPakin",
            "style": {
                "navigationBarTitleText": "组托解绑"
            }
        }
        ,{
            "path" : "pages/listing/unPakin",
            "style" :
            {
                "navigationBarTitleText": "组托解绑"
            }
        }
    ],
    ],
    "globalStyle": {
        "navigationBarTextStyle": "black",
        "navigationBarTitleText": "uni-app",
pages/listing/itemSelect.vue
@@ -7,7 +7,7 @@
        
         
        <view>
            <view class="padding-lr margin-top-sm">
            <view class="padding-lr margin-top-sm" style="padding-bottom: 120upx;">
                <block v-for="(item, index) in matList" :key="index">
                    <view class="cu-list det menu sm-border margin-bottom-sm " :class="[item.selected === true &&'act']" @click="selectedItem(index)">
                        <view class="cu-bar bg-white solid-bottom " >
@@ -71,12 +71,21 @@
                        
                    </view>
                </block>
                <!-- 空状态 -->
                <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>
        </view>
        <view class="cu-bar btn-group foot">            
            <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="back">确定</button>
        </view>
        <!-- <uni-load-more v-show="matList.length != 0" :status="status" :icon-size="16" :content-text="contentText" /> -->
    </view>
</template>
@@ -97,14 +106,32 @@
                selectedList:[],
                repeatClick: false,
                matnrCode:'',
                asnCode:'',
                asnCode:'',
                // 分页相关
                curr: 1,
                pageSize: 5,
                loading: false,
                status: 'more',
                contentText: {
                    contentdown: '上拉加载更多',
                    contentrefresh: '加载中',
                    contentnomore: '没有更多'
                },
                // 保存查询参数
                lastReq: null
            }
        },
        // onReachBottom() {
        //     this.status = 'more';
        //     this.showMat(this.tagIdNow);
        // },
        // 下拉刷新
        onPullDownRefresh() {
            this.refreshData();
        },
        // 上拉加载更多
        onReachBottom() {
            if (this.status !== 'noMore' && !this.loading) {
                this.status = 'loading';
                this.loadMoreData();
            }
        },
        onLoad() {
            // 没啥用了
            let that = this
@@ -122,6 +149,22 @@
            
        },
        methods: {
            // 刷新数据
            refreshData() {
                this.curr = 1;
                this.matList = [];
                this.status = 'more';
                if (this.lastReq) {
                    this.getDet(this.lastReq, true);
                }
                uni.stopPullDownRefresh();
            },
            // 加载更多数据
            loadMoreData() {
                if (this.lastReq) {
                    this.getDet(this.lastReq, false);
                }
            },
            search(){
                let req = {
                    matnrCode: this.condition,
@@ -129,7 +172,11 @@
                    code: this.condition,
                    batch: this.condition
                }
                this.getDet(req);
                // 搜索时重置分页
                this.curr = 1;
                this.matList = [];
                this.status = 'more';
                this.getDet(req, true);
            },
            back() {
                for (var i = 0; i < this.matList.length; i++) {
@@ -150,35 +197,80 @@
                    this.matList[index].selected = !this.matList[index].selected
                }                
            },
            async getDet(req) {
            async getDet(req, isRefresh = true) {
                let that = this;
                uni.showLoading({
                    title:'加载中...'
                })
                const {
                    code,
                    data,
                    msg
                } = await request('/asnOrderItem/trackCode', {
                    matnrCode: req.matnrCode,
                    asnCode: req.asnCode,
                    code: req.code,
                    batch: req.batch
                }, "post")
                if (code === 200) {
                    for (var i = 0; i < data.length; i++) {
                        data[i].receiptQty =0;
                        data[i].selected = false;
                    }
                    this.matList = data
                } else {
                // 保存查询参数供刷新和加载更多使用
                this.lastReq = req;
                this.loading = true;
                if (isRefresh) {
                    uni.showLoading({
                        title:'加载中...'
                    })
                }
                try {
                    const {
                        code,
                        data,
                        msg
                    } = await request('/asnOrderItem/trackCode', {
                        matnrCode: req.matnrCode,
                        asnCode: req.asnCode,
                        code: req.code,
                        batch: req.batch,
                        curr: this.curr,
                        pageSize: this.pageSize
                    }, "post")
                    if (code === 200) {
                        let records = data.records || [];
                        let currentPage = data.current || 1;
                        let totalPages = data.pages || 1;
                        // 处理数据
                        for (var i = 0; i < records.length; i++) {
                            records[i].receiptQty = 0;
                            records[i].selected = false;
                        }
                        if (records.length > 0) {
                            if (isRefresh) {
                                this.matList = records;
                            } else {
                                this.matList = this.matList.concat(records);
                            }
                            this.curr = this.curr + 1;
                            // 判断是否还有更多数据
                            if (this.curr > totalPages) {
                                this.status = 'noMore';
                            } else {
                                this.status = 'more';
                            }
                        } else {
                            if (isRefresh) {
                                this.matList = [];
                            }
                            this.status = 'noMore';
                        }
                    } else {
                        uni.showToast({
                            title: msg,
                            icon: "none",
                            position: 'top'
                        })
                    }
                } catch (err) {
                    uni.showToast({
                        title: msg,
                        title: '网络请求失败',
                        icon: "none",
                        position: 'top'
                    })
                } finally {
                    this.loading = false;
                    uni.hideLoading();
                    uni.stopPullDownRefresh();
                }
                uni.hideLoading();
            },
            
        }
@@ -214,5 +306,26 @@
        display: flex;
        min-height: 80upx;
        align-items: center;
    }
    }
    /* 空状态 */
    .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/listing/matnrPalletising.vue
@@ -6,12 +6,12 @@
            <view class="cu-form-group margin-top">
                <view class="title">订单号</view>
                <input placeholder="请输入订单号" v-model="asnCode"></input>
                <text class='cuIcon-search text-blue' @click="search"></text>
                <!-- <text class='cuIcon-search text-blue' @click="search"></text> -->
            </view>
            <view class="cu-form-group">
                <view class="title">容器号</view>
                <input placeholder="请扫描容器编码" v-model="container" focus></input>
                <text class='cuIcon-search text-blue' @click="getList"></text>
                <input placeholder="请扫描容器编码" v-model="container" @input="getList" focus></input>
                <!-- <text class='cuIcon-search text-blue' @click="getList"></text> -->
            </view>            
            <view class="cu-form-group">
                <view class="title">物料号</view>
@@ -27,7 +27,7 @@
        
        </view>
        <view class="padding-lr margin-top-sm">
        <view class="padding-lr margin-top-sm" style="padding-bottom: 120upx;">
            <block v-for="(item, index) in list" :key="index">
                <view class="cu-list det menu sm-border margin-bottom-sm " :class="[item.trackCode===barcode&&'act']"
                    :ref="item.trackCode+'ref'">
@@ -154,7 +154,7 @@
                    <view class="form-item">
                        <text class="form-label">目标库区</text>
                        <view class="input-wrapper picker-wrapper">
                            <picker mode="selector" :range="rangeText" @change="pickerChange">
                            <picker class="picker" mode="selector" :range="rangeText" @change="pickerChange">
                                <view class="picker-view">
                                    <text>{{ whAreaId ? selectedText : '请选择库区' }}</text>
                                    <text class="cuIcon-right picker-arrow"></text>
@@ -205,7 +205,7 @@
        computed: {
            ...mapState('user', ['dynamicFields']),
            allCount() {
                return this.list.reduce((acc, row) => +row.anfme + acc, 0) || 0
                return this.list.reduce((acc, row) => +row.receiptQty + acc, 0) || 0
            },
            rangeText() {
                return this.range.map(item => item.text)
@@ -216,7 +216,7 @@
            }
        },
        mounted() {
            this.getRece()
            // this.getRece()
            // 获取按钮权限
            this.buttonPermissions = uni.getStorageSync('buttonPermissions') || [];
            console.log('当前页面按钮权限:', this.buttonPermissions);
@@ -323,11 +323,12 @@
                    barcode: this.container
                })
                if (code === 200) {
                    uni.showToast({
                        title: msg,
                        icon: "success",
                        position: 'top'
                    })
                    this.range = data.map(item => ({
                        value: item.id,
                        text:  item.name
                    }));
                    this.whAreaId = this.range[0].value
                } else {
                    uni.showToast({
                        title: msg,
@@ -534,7 +535,7 @@
            if (code === 200) {
                this.range = data.map(item => ({
                    value: item.id,
                    text: item.warehouseId$ + "-- " + item.name
                    text:  item.name
                }));
            }
        },
@@ -664,6 +665,9 @@
        color: #333;
        background-color: transparent;
    }
    .picker{
        width: 100%;
    }
    
    .picker-view {
        width: 100%;
@@ -672,7 +676,7 @@
        font-size: 30rpx;
        color: #333;
        display: flex;
        justify-content: space-between;
        justify-content:space-between;
        align-items: center;
    }
    
pages/outbound/orderOut/orderList.vue
New file
@@ -0,0 +1,394 @@
<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.settle)">
                        <text class="badge-text">{{item.settle$ || '未知'}}</text>
                    </view>
                    <view class="order-no">
                        <text class="order-no-label">单据号</text>
                        <text class="order-no-value">{{item.orderNo}}</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.docType$ || '-'}}</text>
                        </view>
                        <view class="info-item">
                            <text class="info-label">仓库</text>
                            <text class="info-value">{{item.itemName || '-'}}</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>
    export default {
        data() {
            return {
                tagList: [],
                matList: [],
                condition: '',
                loading: false,
                curr: 1,
                baseUrl: '',
                token: '',
                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
                })
            }
        },
        onShow() {
            this.baseUrl = uni.getStorageSync('baseUrl');
            this.token = uni.getStorageSync('token');
            // 每次进入页面重新加载
            this.refreshData();
        },
        methods: {
            // 刷新数据
            refreshData() {
                this.curr = 1;
                this.matList = [];
                this.status = 'more';
                this.loading = true;
                this.fetchOrderList(true);
            },
            // 加载更多数据
            loadMoreData() {
                this.fetchOrderList(false);
            },
            // 获取订单列表
            fetchOrderList(isRefresh) {
                let that = this;
                uni.request({
                    url: that.baseUrl + '/order/pakin/order/list/pda/page/auth',
                    data: {
                        curr: that.curr,
                        limit: 20,
                        tagId: that.tagIdNow
                    },
                    method: "GET",
                    header: {
                        'token': uni.getStorageSync('token'),
                    },
                    success(result) {
                        var res = result.data;
                        if (res.code === 200) {
                            let records = res.data.records || [];
                            if (records.length > 0) {
                                if (isRefresh) {
                                    that.matList = records;
                                } else {
                                    that.matList = that.matList.concat(records);
                                }
                                that.curr = that.curr + 1;
                                that.status = 'more';
                            } else {
                                that.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' });
                        }
                    },
                    fail(err) {
                        uni.showToast({ title: '网络请求失败', icon: "none", position: 'top' });
                    },
                    complete() {
                        that.loading = false;
                        uni.stopPullDownRefresh();
                    }
                });
            },
            // 搜索
            search() {
                if (!this.condition.trim()) {
                    this.refreshData();
                    return;
                }
                let that = this;
                that.loading = true;
                uni.request({
                    url: that.baseUrl + '/order/search/pda/auth',
                    data: {
                        condition: that.condition
                    },
                    method: "GET",
                    header: {
                        'token': uni.getStorageSync('token'),
                    },
                    success(result) {
                        var res = result.data;
                        if (res.code === 200) {
                            that.matList = res.data || [];
                            that.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' });
                        }
                    },
                    fail() {
                        uni.showToast({ title: '搜索请求失败', icon: "none", position: 'top' });
                    },
                    complete() {
                        that.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: "../order/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: linear-gradient(135deg, #f5f7fa 0%, #e4e8eb 100%);
        padding-bottom: 20rpx;
    }
    .search-bar {
        padding: 0rpx 14rpx;
        background: #ffffff;
        box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.08);
    }
    .order-list {
        padding: 0 24rpx;
    }
    .order-card {
        background: #ffffff;
        border-radius: 16rpx;
        margin-top: 20rpx;
        box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.08);
        overflow: hidden;
        transition: transform 0.2s ease, box-shadow 0.2s ease;
    }
    .order-card:active {
        transform: scale(0.98);
        box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.12);
    }
    .card-header {
        display: flex;
        align-items: center;
        padding: 24rpx 28rpx;
        background: linear-gradient(135deg, #667eea 0%, #764ba2 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/order_out_type.vue
New file
@@ -0,0 +1,248 @@
<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/orderOut/orderList`
                    })
                })
            } 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) {
            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>
static/css/wms.css/wms.css
@@ -3,56 +3,46 @@
    min-height: 80rpx;
    background-color: #FFF;
    margin: 20rpx 20rpx;
    padding: 20rpx;
    border-radius: 20rpx;
    box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.2);
    box-shadow: 0px 0px 30px 0px rgba(0,0,0,0.2);
}
.list:first-child {
    margin-top: 340rpx;
    margin-top: 320rpx;
}
.list:last-child {
    margin-bottom: 120rpx;
}
.list-left {
    display: flex;
    flex-direction: column;
    margin-left: 20rpx;
    width: 80vw;
}
.list-left-item {
    min-height: 40rpx;
    line-height: 40rpx;
    display: flex;
    padding: 2rpx;
}
.desc {
    min-height: 40rpx;
    display: flex;
    align-items: center;
    width: 25%;
}
.left-item {
    display: flex;
    flex-wrap: wrap;
    width: 75%;
    margin: 1px 1px 1px 1px;
    /* color: #409EFF; */
}
.left-item input {
    border-bottom: 1px solid #cecece;
}
.list-right {
    display: flex;
    /* width: 20vw; */
    width: 20vw;
    justify-content: space-between;
    align-items: center;
    /* margin-right: 20rpx; */
    margin-right: 20rpx;
}
.buttom {
    width: 100%;
    position: fixed;
@@ -63,16 +53,14 @@
    justify-content: space-between;
    height: 100rpx;
    background-color: #FFF;
    box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.2);
    box-shadow: 0px 0px 10px 0px rgba(0,0,0,0.2) ;
}
.popup {
    width: 80vw;
    min-height: 100rpx;
    background-color: #FFF;
    border-radius: 25rpx;
}
.title {
    height: 100rpx;
    line-height: 100rpx;
@@ -81,7 +69,6 @@
    text-align: center;
    font-size: 16px;
}
.popup-item {
    height: 80rpx;
    line-height: 80rpx;
@@ -89,14 +76,12 @@
    align-items: center;
    font-size: 14px;
}
.popup-item-left {
    width: 16vw;
    padding-right: 20rpx;
    text-align: right;
    color: #606266;
}
.popup-item-right {
    display: flex;
    align-items: center;
@@ -106,11 +91,9 @@
    border: 1px solid #E4E7ED;
    border-radius: 5rpx;
}
.popup-item-right input {
.popup-item-right input{
    color: #606266;
}
.btn {
    display: flex;
    height: 90rpx;
@@ -119,7 +102,6 @@
    justify-content: center;
    align-items: center;
}
.btn-left {
    display: flex;
    flex: 1;
@@ -129,7 +111,6 @@
    color: #606266;
    border-right: 1px solid #DCDFE6;
}
.btn-right {
    display: flex;
    flex: 1;
@@ -137,35 +118,7 @@
    align-items: center;
    color: #409EFF;
}
/* 搜索框 */
.search-bar {
    background-color: #f8f8f8;
}
.keyboard {
    width: 40px;
    height: 40px;
    background-size: 100%;
    position: absolute;
    z-index: 99;
    top: 5px;
    right: 5px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
}
.kb-bgtr {
    background-color: #55557f;
}
.kb-bgfa {
    background-color: #00aeec;
}
.has-foot {
    padding-bottom: 100rpx;
}