| | |
| | | }
|
| | | },
|
| | | {
|
| | | "path": "pages/outbound/orderOut/order_out_type",
|
| | | "style": {
|
| | | "navigationBarTitleText": "单据类型"
|
| | | }
|
| | | },
|
| | | {
|
| | | "path": "pages/outbound/orderOut/orderList",
|
| | | "style": {
|
| | | "navigationBarTitleText": "单据列表"
|
| | | }
|
| | | },
|
| | | {
|
| | | "path": "pages/emptyTray/outBound",
|
| | | "style": {
|
| | | "navigationBarTitleText": "空托出库"
|
| | |
| | | "path": "pages/listing/itemSelect",
|
| | | "style": {
|
| | | "navigationBarTitleText": "选择物料",
|
| | | "enablePullDownRefresh": false
|
| | | "enablePullDownRefresh": true
|
| | | }
|
| | | },
|
| | | {
|
| | |
| | | "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",
|
| | |
| | | "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",
|
| | |
| | | "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",
|
| | |
| | | "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",
|
| | |
| | | "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": "半成品调拨单",
|
| | |
| | | "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": "调拨任务管理",
|
| | |
| | | }
|
| | | },
|
| | | {
|
| | | "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",
|
| | |
| | | |
| | | |
| | | <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 " > |
| | |
| | | |
| | | </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> |
| | | |
| | |
| | | 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 |
| | |
| | | |
| | | }, |
| | | 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, |
| | |
| | | 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++) { |
| | |
| | | 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(); |
| | | }, |
| | | |
| | | } |
| | |
| | | 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> |
| | |
| | | <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> |
| | |
| | | |
| | | </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'"> |
| | |
| | | <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> |
| | |
| | | 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) |
| | |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.getRece() |
| | | // this.getRece() |
| | | // 获取按钮权限 |
| | | this.buttonPermissions = uni.getStorageSync('buttonPermissions') || []; |
| | | console.log('当前页面按钮权限:', this.buttonPermissions); |
| | |
| | | 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, |
| | |
| | | if (code === 200) { |
| | | this.range = data.map(item => ({ |
| | | value: item.id, |
| | | text: item.warehouseId$ + "-- " + item.name |
| | | text: item.name |
| | | })); |
| | | } |
| | | }, |
| | |
| | | color: #333; |
| | | background-color: transparent; |
| | | } |
| | | .picker{ |
| | | width: 100%; |
| | | } |
| | | |
| | | .picker-view { |
| | | width: 100%; |
| | |
| | | font-size: 30rpx; |
| | | color: #333; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | justify-content:space-between; |
| | | align-items: center; |
| | | } |
| | | |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| | |
| | | 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;
|
| | |
| | | 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;
|
| | |
| | | text-align: center;
|
| | | font-size: 16px;
|
| | | }
|
| | |
|
| | | .popup-item {
|
| | | height: 80rpx;
|
| | | line-height: 80rpx;
|
| | |
| | | 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;
|
| | |
| | | border: 1px solid #E4E7ED;
|
| | | border-radius: 5rpx;
|
| | | }
|
| | |
|
| | | .popup-item-right input {
|
| | | .popup-item-right input{
|
| | | color: #606266;
|
| | | }
|
| | |
|
| | | .btn {
|
| | | display: flex;
|
| | | height: 90rpx;
|
| | |
| | | justify-content: center;
|
| | | align-items: center;
|
| | | }
|
| | |
|
| | | .btn-left {
|
| | | display: flex;
|
| | | flex: 1;
|
| | |
| | | color: #606266;
|
| | | border-right: 1px solid #DCDFE6;
|
| | | }
|
| | |
|
| | | .btn-right {
|
| | | display: flex;
|
| | | flex: 1;
|
| | |
| | | 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;
|
| | | } |