| New file |
| | |
| | | { |
| | | "version" : "1.0", |
| | | "configurations" : [ |
| | | { |
| | | "playground" : "standard", |
| | | "type" : "uni-app:app-android" |
| | | } |
| | | ] |
| | | } |
| | |
| | | { |
| | | "pages": [ //pagesæ°ç»ä¸ç¬¬ä¸é¡¹è¡¨ç¤ºåºç¨å¯å¨é¡µï¼åèï¼https://uniapp.dcloud.io/collocation/pages |
| | | "pages": [ |
| | | { |
| | | "path": "pages/login/login", |
| | | "style": { |
| | |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/mat/matQuery2", |
| | | "style": { |
| | | "navigationBarTitleText": "ç©æ" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/pakin/pakin", |
| | | "style": { |
| | | "navigationBarTitleText": "ç» æ" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/AGV/AGVPakin", |
| | | "path": "pages/order/orderList", |
| | | "style": { |
| | | "navigationBarTitleText": "AGVç»æ" |
| | | "navigationBarTitleText": "åæ®å表", |
| | | "enablePullDownRefresh": true |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/AGV/AGVPakinBing", |
| | | "path": "pages/order/orderDetlList", |
| | | "style": { |
| | | "navigationBarTitleText": "AGV䏿¶ç»å®" |
| | | "navigationBarTitleText": "åæ®æç»å表" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/AGV/AGVPakinOn", |
| | | "path": "pages/order/orderPakin2", |
| | | "style": { |
| | | "navigationBarTitleText": "AGV䏿¶ç»æ" |
| | | "navigationBarTitleText": "订åç»æ", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/AGV/AGVStart", |
| | | "path": "pages/AGV/agv_start", |
| | | "style": { |
| | | "navigationBarTitleText": "AGVå¯å¨å
¥åº" |
| | | "navigationBarTitleText": "AGV容å¨å
¥åº", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/AGV/AGVUnbind", |
| | | "path": "pages/AGV/agv_back", |
| | | "style": { |
| | | "navigationBarTitleText": "AGVå¨ä½è§£ç»" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/AGV/AGVUnbind2", |
| | | "style": { |
| | | "navigationBarTitleText": "AGVææè§£ç»" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/AGV/AGVDismantle", |
| | | "style": { |
| | | "navigationBarTitleText": "AGVææå¼å«" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/AGV/AGVBind", |
| | | "style": { |
| | | "navigationBarTitleText": "AGVå¨ä½ç»å®" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/AGV/AGV2F", |
| | | "style": { |
| | | "navigationBarTitleText": "AGV2楼æå
" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/tzsk/AGV/AGVPakin", |
| | | "style": { |
| | | "navigationBarTitleText": "AGVç»æ" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/tzsk/AGV/AGVPakinBing", |
| | | "style": { |
| | | "navigationBarTitleText": "AGV䏿¶ç»å®" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/tzsk/AGV/AGVPakinOn", |
| | | "style": { |
| | | "navigationBarTitleText": "AGV䏿¶ç»æ" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/tzsk/AGV/AGVStart", |
| | | "style": { |
| | | "navigationBarTitleText": "AGVå¯å¨å
¥åº" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/order/orderPakin", |
| | | "style": { |
| | | "navigationBarTitleText": "订åå
¥åº" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/pingku/POrderList", |
| | | "style": { |
| | | "navigationBarTitleText": "å¹³åºå
¥åº" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/pingku/PInventoryAdjustment", |
| | | "style": { |
| | | "navigationBarTitleText": "å¹³åºåºåè°æ´" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/pingku/POrderDetlList", |
| | | "style": { |
| | | "navigationBarTitleText": "订åå表" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/pingku/POrderPakin", |
| | | "style": { |
| | | "navigationBarTitleText": "å¹³åºä¸æ¶" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/pingku/POrderListOut", |
| | | "style": { |
| | | "navigationBarTitleText": "å¹³åºä¸æ¶" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/pingku/POrderDetlListOut", |
| | | "style": { |
| | | "navigationBarTitleText": "åºåºè®¢åå表" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/pingku/POrderPakinOut", |
| | | "style": { |
| | | "navigationBarTitleText": "å¹³åºä¸æ¶" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/order/orderPutOn", |
| | | "style": { |
| | | "navigationBarTitleText": "订å䏿¶" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/order/orderPutDown", |
| | | "style": { |
| | | "navigationBarTitleText": "订å䏿¶" |
| | | "navigationBarTitleText": "AGV容å¨ååº", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/stock/stockCheck", |
| | | "style": { |
| | | "navigationBarTitleText": "çç¹" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/print/printUNI", |
| | | "style": { |
| | | "navigationBarTitleText": "UNIæå°" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/print/print", |
| | | "style": { |
| | | "navigationBarTitleText": "æå°" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/stock/restock", |
| | | "style": { |
| | | "navigationBarTitleText": "补货" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/pakin/piking", |
| | | "style": { |
| | | "navigationBarTitleText": "çç¹/æ£æè½¬å
¨æ¿" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/pakin/putOn", |
| | | "style": { |
| | | "navigationBarTitleText": "ç»æä¸æ¶" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/pakin/mergeStore", |
| | | "style": { |
| | | "navigationBarTitleText": "å¹¶æ¿å
¥åº" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/pakin/leftovers", |
| | | "style": { |
| | | "navigationBarTitleText": "æ£æç«å°ç«" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/stock/changePallet", |
| | | "style": { |
| | | "navigationBarTitleText": "æ¢æ¿ç»å®" |
| | | } |
| | | }, |
| | | |
| | | { |
| | | "path": "pages/print/qr", |
| | | "style": { |
| | | "navigationBarTitleText": "äºç»´ç " |
| | | } |
| | | }, |
| | | |
| | | { |
| | | "path": "pages/mat/matList", |
| | | "style": { |
| | | "navigationBarTitleText": "ååå表" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/pakin/pickAgain", |
| | | "style": { |
| | | "navigationBarTitleText": "忬¡æ£æ" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/login/logOut", |
| | | "style": { |
| | | "navigationBarTitleText": "éåºç»å½" |
| | | } |
| | | }, |
| | | { |
| | | "path" : "pages/order/orderPakin2", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText" : "订åç»æ", |
| | | "enablePullDownRefresh" : false |
| | | } |
| | | } |
| | | ,{ |
| | | "path" : "pages/order/orderList", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText": "åæ®å表", |
| | | "enablePullDownRefresh": true |
| | | } |
| | | |
| | | }, |
| | | { |
| | | "path": "pages/order/orderDetlList", |
| | | "style": { |
| | | "navigationBarTitleText": "åæ®æç»å表" |
| | | } |
| | | }, |
| | | { |
| | | "path" : "pages/AGV/AGVSiteList", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText": "äº§çº¿å«æ", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | |
| | | }, |
| | | { |
| | | "path" : "pages/AGV/AGVLineCall", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText": "äº§çº¿å«æ", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | |
| | | }, |
| | | { |
| | | "path" : "pages/AGV/AGVSiteList2", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText": "äº§çº¿å«æ2", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | |
| | | }, |
| | | { |
| | | "path" : "pages/AGV/AGVLineCall2", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText": "äº§çº¿å«æ2", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | |
| | | }, |
| | | { |
| | | "path" : "pages/AGV/AGVFinishedCall", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText": "æåå¼å«", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | |
| | | }, |
| | | { |
| | | "path" : "pages/AGV/AGVStaBind", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText": "AGVç«ç»å®", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | |
| | | } |
| | | ], |
| | | ], |
| | | "globalStyle": { |
| | | "navigationBarTextStyle": "black", |
| | | "navigationBarTitleText": "uni-app", |
| New file |
| | |
| | | <template> |
| | | <view class="page-container"> |
| | | <!-- 表ååºå --> |
| | | <view class="form-section"> |
| | | <view class="form-item"> |
| | | <view class="form-label"> |
| | | <uni-icons type="scan" size="18" color="#667eea"></uni-icons> |
| | | <text class="label-text">æçç </text> |
| | | </view> |
| | | <view class="form-input-wrap"> |
| | | <input class="form-input" type="text" placeholder="æ«ç / è¾å
¥æçç " v-model="barcode" |
| | | :focus="barcodeFocus" @input="barcodeInput()" /> |
| | | <uni-icons v-if="barcode" type="clear" size="18" color="#c0c4cc" @click="clearBarcode"></uni-icons> |
| | | </view> |
| | | </view> |
| | | <view class="form-item"> |
| | | <view class="form-label"> |
| | | <uni-icons type="location" size="18" color="#667eea"></uni-icons> |
| | | <text class="label-text">æåä½</text> |
| | | </view> |
| | | <view class="form-input-wrap"> |
| | | <input class="form-input" type="text" placeholder="æ«ç / è¾å
¥æåä½" v-model="sourceSite" /> |
| | | <uni-icons v-if="sourceSite" type="clear" size="18" color="#c0c4cc" @click="sourceSite=''"></uni-icons> |
| | | </view> |
| | | </view> |
| | | <!-- <view class="form-item"> |
| | | <view class="form-label"> |
| | | <uni-icons type="navigate" size="18" color="#667eea"></uni-icons> |
| | | <text class="label-text">ç®æ ç«ç¹</text> |
| | | </view> |
| | | <view class="form-input-wrap"> |
| | | <picker class="picker-full" :range="targetSiteList" range-key="label" @change="onTargetSiteChange"> |
| | | <view class="picker-value"> |
| | | <text>{{selectedTargetSite.label || 'è¯·éæ©ç®æ ç«ç¹'}}</text> |
| | | <view><uni-icons type="bottom" size="14" color="#909399"></uni-icons></view> |
| | | </view> |
| | | </picker> |
| | | </view> |
| | | </view> --> |
| | | </view> |
| | | |
| | | <!-- åè¡¨å¤´é¨ --> |
| | | <view class="list-header" v-if="showDetl"> |
| | | <view class="header-left"> |
| | | <text class="header-title">ååå表</text> |
| | | <view class="count-badge" v-if="dataList.length > 0"> |
| | | <text class="count-text">{{dataList.length}}</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- ååå表 --> |
| | | <view class="list-container" v-if="showDetl"> |
| | | <view class="mat-card" v-for="(item, i) in dataList" :key="i"> |
| | | <!-- å¡çå¤´é¨ --> |
| | | <view class="card-top"> |
| | | <view class="card-index">{{i + 1}}</view> |
| | | <view class="mat-code-wrap"> |
| | | <text class="mat-code">{{item.matnr}}</text> |
| | | </view> |
| | | <!-- <view class="qty-badge"> |
| | | <text class="qty-text">{{item.anfme}}</text> |
| | | </view> --> |
| | | </view> |
| | | |
| | | <!-- å¡çå
容 --> |
| | | <view class="card-content"> |
| | | <view class="info-row"> |
| | | <view class="info-col"> |
| | | <text class="info-label">åå</text> |
| | | <text class="info-value">{{item.maktx || '-'}}</text> |
| | | </view> |
| | | </view> |
| | | <view class="info-row"> |
| | | <view class="info-col half"> |
| | | <text class="info-label">è§æ ¼</text> |
| | | <text class="info-value">{{item.specs || '-'}}</text> |
| | | </view> |
| | | <view class="info-col half"> |
| | | <text class="info-label">æ¹å·</text> |
| | | <text class="info-value highlight">{{item.batch || '-'}}</text> |
| | | </view> |
| | | </view> |
| | | <view class="info-row"> |
| | | <view class="info-col half"> |
| | | <text class="info-label">æ°é</text> |
| | | <text class="info-value qty">{{item.anfme}}</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- å¡çæä½ --> |
| | | <view class="card-actions"> |
| | | <view class="action-btn edit-btn" @click="revise(item, i)"> |
| | | <uni-icons type="compose" size="18" color="#667eea"></uni-icons> |
| | | <text class="action-text">ä¿®æ¹</text> |
| | | </view> |
| | | <view class="action-btn delete-btn" @click="remove(item, i, 'warn')"> |
| | | <uni-icons type="trash" size="18" color="#f56c6c"></uni-icons> |
| | | <text class="action-text delete-text">ç§»é¤</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- ç©ºç¶æ --> |
| | | <view class="empty-state" v-if="dataList.length === 0"> |
| | | <uni-icons type="cart" size="60" color="#CCCCCC"></uni-icons> |
| | | <text class="empty-text">ææ åå</text> |
| | | <text class="empty-hint">è¯·æ«æç©æç æ·»å åå</text> |
| | | </view> |
| | | |
| | | <!-- åºé¨å ä½ --> |
| | | <view class="bottom-placeholder"></view> |
| | | </view> |
| | | |
| | | <!-- åºé¨æä½æé® --> |
| | | <view class="bottom-bar"> |
| | | <view class="btn-reset" @click="reset('warn')"> |
| | | <uni-icons type="refresh" size="18" color="#909399"></uni-icons> |
| | | <text class="btn-text">éç½®</text> |
| | | </view> |
| | | <view class="btn-submit" :class="{'btn-disabled': isSubmitting || barcode === ''}" @click="combConfirm('warn')"> |
| | | <uni-icons type="checkbox" size="18" color="#ffffff"></uni-icons> |
| | | <text class="btn-text">确认å¼å«</text> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- å¼¹çªåºå --> |
| | | <!-- ä¿®æ¹æ°é --> |
| | | <uni-popup ref="revise" type="dialog"> |
| | | <view class="popup-card"> |
| | | <view class="popup-header"> |
| | | <text class="popup-title">ä¿®æ¹ä¿¡æ¯</text> |
| | | </view> |
| | | <view class="popup-body"> |
| | | <view class="popup-row"> |
| | | <text class="popup-label">ç¼ç </text> |
| | | <view class="popup-value disabled">{{editMatnr}}</view> |
| | | </view> |
| | | <view class="popup-row"> |
| | | <text class="popup-label">æ¹å·</text> |
| | | <input class="popup-value input" type="text" v-model="batch" placeholder="è¾å
¥æ¹å·" /> |
| | | </view> |
| | | <view class="popup-row"> |
| | | <text class="popup-label">æ°é</text> |
| | | <view class="popup-value number"> |
| | | <uni-number-box :value="count" :step='0.01' :max="9999999" color="#747474" @change="changeValue" /> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="popup-footer"> |
| | | <view class="popup-btn cancel" @click="reviseClose">åæ¶</view> |
| | | <view class="popup-btn confirm" @click="reviseConfirm()">确认</view> |
| | | </view> |
| | | </view> |
| | | </uni-popup> |
| | | |
| | | <!-- ç§»é¤ç¡®è®¤ --> |
| | | <uni-popup ref="alertDialog" type="dialog"> |
| | | <uni-popup-dialog :type="msgType" confirmText="ç§»é¤" :title="title" :content="content" |
| | | @confirm="removeConfirm()" @close="removeClose"></uni-popup-dialog> |
| | | </uni-popup> |
| | | |
| | | <!-- æç¤ºä¿¡æ¯å¼¹çª --> |
| | | <uni-popup ref="message" type="message"> |
| | | <uni-popup-message :type="msgType1" :message="messageText" :duration="2000"></uni-popup-message> |
| | | </uni-popup> |
| | | |
| | | <!-- ç¡®è®¤ç»æ --> |
| | | <uni-popup ref="combConfirm" type="dialog"> |
| | | <uni-popup-dialog :type="msgType" cancelText="åæ¶" confirmText="确认" :title="title" :content="content" |
| | | @confirm="comb" @close="combClose"></uni-popup-dialog> |
| | | </uni-popup> |
| | | |
| | | <!-- 确认éç½® --> |
| | | <uni-popup ref="resetConfirm" type="dialog"> |
| | | <uni-popup-dialog :type="msgType" cancelText="åæ¶" confirmText="确认" :title="title" :content="content" |
| | | @confirm="resetConfirm" @close="resetClose"></uni-popup-dialog> |
| | | </uni-popup> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | showDetl:false, |
| | | baseUrl: '', |
| | | token: '', |
| | | barcode: '', |
| | | dataList: [], |
| | | count: 0, |
| | | rowNum: '', |
| | | matnr: '', |
| | | editMatnr: '', |
| | | batch: '', |
| | | weight: '', |
| | | msgType1: 'success', |
| | | msgType: 'success', |
| | | messageText: '', |
| | | title: '', |
| | | content: '', |
| | | barcodeFocus: true, |
| | | matFocus: false, |
| | | matData: '', |
| | | removeNum: 0, |
| | | ck1: true, |
| | | ck2: false, |
| | | isFull: true, |
| | | isSubmitting: false, |
| | | sourceSite:'', |
| | | targetSiteList: [ |
| | | { label: '101', value: '101' }, |
| | | { label: '102', value: '102' } |
| | | ], |
| | | selectedTargetSite: { label: '101', value: '101' }, |
| | | type : 2 |
| | | } |
| | | }, |
| | | onLoad() { |
| | | |
| | | }, |
| | | onShow() { |
| | | this.baseUrl = uni.getStorageSync('baseUrl'); |
| | | this.token = uni.getStorageSync('token'); |
| | | }, |
| | | methods: { |
| | | onTargetSiteChange(e) { |
| | | const index = e.detail.value; |
| | | this.selectedTargetSite = this.targetSiteList[index]; |
| | | }, |
| | | clearBarcode() { |
| | | this.barcode = ''; |
| | | this.barcodeFocus = false; |
| | | setTimeout(() => { |
| | | this.barcodeFocus = true; |
| | | }, 100); |
| | | }, |
| | | clearMatnr() { |
| | | this.matnr = ''; |
| | | this.matFocus = false; |
| | | setTimeout(() => { |
| | | this.matFocus = true; |
| | | }, 100); |
| | | }, |
| | | isFrozen() { |
| | | this.isFull = !this.isFull |
| | | console.log(this.isFull); |
| | | }, |
| | | messageToggle(type) { |
| | | this.msgType1 = type |
| | | this.$refs.message.open() |
| | | }, |
| | | // barcode input äºä»¶ |
| | | barcodeInput() { |
| | | // ä¸è®¾ç½®å®æ¶å¨ ä¼åºç°æ«å
¥çå符串ä¸å
¨ |
| | | setTimeout(() => { |
| | | var len = this.barcode.length |
| | | if (len >= 9 && len <=8) { |
| | | uni.showToast({ |
| | | title: 'æçç æè¯¯è¯·éè¯', |
| | | icon: "none", |
| | | position: 'top' |
| | | }); |
| | | this.barcodeFocuss() |
| | | return; |
| | | } |
| | | this.focuss() |
| | | }, 200) |
| | | }, |
| | | // æçç æè¯¯éç½® |
| | | barcodeFocuss() { |
| | | let that = this; |
| | | that.barcodeFocus = false; |
| | | setTimeout(() => { |
| | | that.barcode = ''; |
| | | that.barcodeFocus = true; |
| | | }, 100); |
| | | }, |
| | | // ååå
æ æ¸
空éç½® |
| | | focuss() { |
| | | this.focus = false; |
| | | setTimeout(() => { |
| | | this.matnr = ''; |
| | | this.matFocus = true; |
| | | }, 100); |
| | | }, |
| | | // æç´¢ç©æ |
| | | findMat() { |
| | | let that = this |
| | | |
| | | uni.request({ |
| | | url: that.baseUrl + '/mat/auth', |
| | | data: { |
| | | matnr: that.matnr |
| | | }, |
| | | header: { |
| | | 'token': uni.getStorageSync('token') |
| | | }, |
| | | success(result) { |
| | | result = result.data |
| | | if (result.code === 200 && result.data) { |
| | | that.matData = result.data |
| | | that.matnr = '' |
| | | that.matData['batch'] = '' |
| | | uni.navigateTo({ |
| | | url: "../mat/matSelected", |
| | | // éè¿eventChannelå被æå¼é¡µé¢ä¼ éæ°æ® |
| | | success: function(res) { |
| | | res.eventChannel.emit('mat', { |
| | | data: result.data |
| | | }) |
| | | }, |
| | | // 为æå®äºä»¶æ·»å ä¸ä¸ªçå¬å¨ï¼è·å被æå¼é¡µé¢ä¼ éå°å½å页é¢çæ°æ® |
| | | events: { |
| | | matList: function(data) { |
| | | that.checkMat(data.data) |
| | | that.focuss() |
| | | }, |
| | | }, |
| | | }); |
| | | } else if (result.code == 403) { |
| | | uni.showToast({ |
| | | title: result.msg, |
| | | icon: "none", |
| | | position: 'top' |
| | | }) |
| | | setTimeout(() => { |
| | | uni.reLaunch({ |
| | | url: '../login/login' |
| | | }); |
| | | }, 1000); |
| | | } else { |
| | | uni.showToast({ |
| | | title: result.msg, |
| | | icon: "none", |
| | | position: 'top' |
| | | }) |
| | | } |
| | | |
| | | } |
| | | }); |
| | | |
| | | }, |
| | | selectMat() { |
| | | let that = this |
| | | uni.navigateTo({ |
| | | url: "../mat/matQuery", |
| | | success: function(res) { |
| | | // éè¿eventChannelå被æå¼é¡µé¢ä¼ éæ°æ® åå¦å¤ä¸ä¸ªé¡µé¢ä¼ éå¼ç |
| | | res.eventChannel.emit('commonUrl', { |
| | | commonUrl: '' |
| | | }) |
| | | }, |
| | | events: { |
| | | // 为æå®äºä»¶æ·»å ä¸ä¸ªçå¬å¨ï¼è·å被æå¼é¡µé¢ä¼ éå°å½å页é¢çæ°æ® å¦å¤ä¸ä¸ªé¡µé¢ä¼ è¿æ¥ç |
| | | acceptDataFromOpenedPage: function(data) { |
| | | that.matnr = data.data |
| | | that.findMat(that.matnr) |
| | | }, |
| | | }, |
| | | |
| | | |
| | | }); |
| | | that.matnr = '' |
| | | }, |
| | | checkMat(mat) { |
| | | var len = this.dataList.length |
| | | var add = true ,sameItem = false |
| | | for (var i = 0; i < len; i++) { |
| | | if (mat.matnr == this.dataList[i].matnr) { |
| | | for (var j = 0; j < len; j++) { |
| | | if (mat.batch == this.dataList[j].batch) { |
| | | sameItem = true |
| | | } |
| | | } |
| | | // ç¸åç©æ ä¸åæ¹å· æ°å å表 |
| | | if (mat.batch != this.dataList[i].batch) { |
| | | this.$forceUpdate() // 强å¶å·æ° |
| | | if (sameItem) { |
| | | add = false |
| | | } else { |
| | | add = true |
| | | } |
| | | |
| | | } else { |
| | | // ç¸åç©æç¸åæ¹å· æ°éç´¯å |
| | | this.dataList[i].anfme += mat.anfme |
| | | this.$forceUpdate() // 强å¶å·æ° |
| | | add = false |
| | | } |
| | | } |
| | | } |
| | | if (add) { |
| | | this.dataList.unshift(mat) |
| | | } |
| | | }, |
| | | // ä¿®æ¹æ¹å· |
| | | revise(item, i) { |
| | | this.editMatnr = this.dataList[i].matnr |
| | | this.count = this.dataList[i].anfme |
| | | this.batch = this.dataList[i].batch |
| | | this.weight = this.dataList[i].weight |
| | | this.rowNum = i |
| | | this.eject() |
| | | }, |
| | | eject(type) { |
| | | this.type = type |
| | | this.$refs.revise.open(type) |
| | | }, |
| | | // åè¡¨ç§»é¤æé® |
| | | remove(item, i, type) { |
| | | this.removeNum = i |
| | | this.msgType = type |
| | | this.title = '确认移é¤' |
| | | this.content = 'æ¯å¦ç§»é¤è¯¥ååï¼' |
| | | this.$refs.alertDialog.open(i) |
| | | }, |
| | | // ç¡®è®¤ç§»é¤ |
| | | removeConfirm() { |
| | | this.messageText = "ç§»é¤æå" |
| | | this.messageToggle('success') |
| | | this.dataList.splice(this.removeNum, 1) |
| | | }, |
| | | // åæ¶ç§»é¤ |
| | | removeClose() { |
| | | this.$refs.alertDialog.close() |
| | | }, |
| | | reviseConfirm() { |
| | | this.dataList[this.rowNum].anfme = this.count |
| | | this.dataList[this.rowNum].batch = this.batch |
| | | this.dataList[this.rowNum].weight = this.weight |
| | | this.editMatnr = '' |
| | | this.messageText = "ä¿®æ¹æå" |
| | | this.messageToggle('success') |
| | | this.$refs.revise.close() |
| | | }, |
| | | reviseClose() { |
| | | this.$refs.revise.close() |
| | | }, |
| | | changeValue(value) { |
| | | this.count = value |
| | | }, |
| | | combConfirm(type) { |
| | | if (this.isSubmitting || this.barcode === '') return; |
| | | this.msgType = type |
| | | this.title = '确认å¼å«' |
| | | this.content = '确认å¼å«ï¼' |
| | | this.$refs.combConfirm.open() |
| | | }, |
| | | combClose() { |
| | | this.$refs.combConfirm.close() |
| | | }, |
| | | comb() { |
| | | uni.vibrateShort(); |
| | | let that = this; |
| | | that.isSubmitting = true; |
| | | if (that.barcode === '') { |
| | | this.messageText = "è¯·æ«æç«ç¹æ¡ç " |
| | | this.messageToggle('error') |
| | | that.isSubmitting = false; |
| | | return; |
| | | } |
| | | uni.request({ |
| | | url: that.baseUrl + '/mobile/agv/start', |
| | | data: JSON.stringify({ |
| | | type : that.type, |
| | | barcode: that.barcode, |
| | | sourceSite:that.sourceSite |
| | | }), |
| | | method: 'POST', |
| | | header: { |
| | | 'token': uni.getStorageSync('token') |
| | | }, |
| | | success(result) { |
| | | var res = result.data |
| | | if (res.code === 200) { |
| | | that.resst(); |
| | | that.messageText = "å¼å«æå" |
| | | that.messageToggle('success') |
| | | } else if (res.code == 403) { |
| | | that.messageText = res.msg |
| | | that.messageToggle('error') |
| | | setTimeout(() => { |
| | | uni.reLaunch({ |
| | | url: '../login/login' |
| | | }); |
| | | }, 1000); |
| | | } else { |
| | | that.messageText = res.msg |
| | | that.messageToggle('error') |
| | | } |
| | | }, |
| | | fail: () => { |
| | | that.messageText = "ç½ç»è¯·æ±è¶
æ¶" |
| | | that.messageToggle('error') |
| | | }, |
| | | complete: () => { |
| | | that.isSubmitting = false; |
| | | } |
| | | }); |
| | | }, |
| | | reset(type) { |
| | | this.msgType = type |
| | | this.title = '确认éç½®' |
| | | this.content = 'æ¯å¦æ¸
ç©ºæææ°æ®ï¼' |
| | | this.$refs.resetConfirm.open() |
| | | }, |
| | | // 确认éç½® |
| | | resetConfirm() { |
| | | this.dataList = [] |
| | | this.barcode = '' |
| | | this.messageText = "éç½®å®æ" |
| | | this.messageToggle('success') |
| | | }, |
| | | // åæ¶éç½® |
| | | resetClose() { |
| | | |
| | | }, |
| | | // æ¸
空 |
| | | resst() { |
| | | // this.dataList = [] |
| | | this.barcode = '' |
| | | this.sourceSite = '' |
| | | this.barcodeFocuss() |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | /* å¼å
¥å
Œ
±æ ·å¼ */ |
| | | @import url('../../static/css/common.css'); |
| | | /* @import url('../../static/css/wms.css/wms.css'); */ |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <view class="page-container"> |
| | | <!-- 表ååºå --> |
| | | <view class="form-section"> |
| | | <view class="form-item"> |
| | | <view class="form-label"> |
| | | <uni-icons type="scan" size="18" color="#667eea"></uni-icons> |
| | | <text class="label-text">æçç </text> |
| | | </view> |
| | | <view class="form-input-wrap"> |
| | | <input class="form-input" type="text" placeholder="æ«ç / è¾å
¥æçç " v-model="barcode" |
| | | :focus="barcodeFocus" @input="barcodeInput()" /> |
| | | <uni-icons v-if="barcode" type="clear" size="18" color="#c0c4cc" @click="clearBarcode"></uni-icons> |
| | | </view> |
| | | </view> |
| | | <view class="form-item"> |
| | | <view class="form-label"> |
| | | <uni-icons type="location" size="18" color="#667eea"></uni-icons> |
| | | <text class="label-text">æåä½</text> |
| | | </view> |
| | | <view class="form-input-wrap"> |
| | | <input class="form-input" type="text" placeholder="æ«ç / è¾å
¥æåä½" v-model="sourceSite" /> |
| | | <uni-icons v-if="sourceSite" type="clear" size="18" color="#c0c4cc" @click="sourceSite=''"></uni-icons> |
| | | </view> |
| | | </view> |
| | | <!-- <view class="form-item"> |
| | | <view class="form-label"> |
| | | <uni-icons type="navigate" size="18" color="#667eea"></uni-icons> |
| | | <text class="label-text">ç®æ ç«ç¹</text> |
| | | </view> |
| | | <view class="form-input-wrap"> |
| | | <picker class="picker-full" :range="targetSiteList" range-key="label" @change="onTargetSiteChange"> |
| | | <view class="picker-value"> |
| | | <text>{{selectedTargetSite.label || 'è¯·éæ©ç®æ ç«ç¹'}}</text> |
| | | <view><uni-icons type="bottom" size="14" color="#909399"></uni-icons></view> |
| | | </view> |
| | | </picker> |
| | | </view> |
| | | </view> --> |
| | | </view> |
| | | |
| | | <!-- åè¡¨å¤´é¨ --> |
| | | <view class="list-header" v-if="showDetl"> |
| | | <view class="header-left"> |
| | | <text class="header-title">ååå表</text> |
| | | <view class="count-badge" v-if="dataList.length > 0"> |
| | | <text class="count-text">{{dataList.length}}</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- ååå表 --> |
| | | <view class="list-container" v-if="showDetl"> |
| | | <view class="mat-card" v-for="(item, i) in dataList" :key="i"> |
| | | <!-- å¡çå¤´é¨ --> |
| | | <view class="card-top"> |
| | | <view class="card-index">{{i + 1}}</view> |
| | | <view class="mat-code-wrap"> |
| | | <text class="mat-code">{{item.matnr}}</text> |
| | | </view> |
| | | <!-- <view class="qty-badge"> |
| | | <text class="qty-text">{{item.anfme}}</text> |
| | | </view> --> |
| | | </view> |
| | | |
| | | <!-- å¡çå
容 --> |
| | | <view class="card-content"> |
| | | <view class="info-row"> |
| | | <view class="info-col"> |
| | | <text class="info-label">åå</text> |
| | | <text class="info-value">{{item.maktx || '-'}}</text> |
| | | </view> |
| | | </view> |
| | | <view class="info-row"> |
| | | <view class="info-col half"> |
| | | <text class="info-label">è§æ ¼</text> |
| | | <text class="info-value">{{item.specs || '-'}}</text> |
| | | </view> |
| | | <view class="info-col half"> |
| | | <text class="info-label">æ¹å·</text> |
| | | <text class="info-value highlight">{{item.batch || '-'}}</text> |
| | | </view> |
| | | </view> |
| | | <view class="info-row"> |
| | | <view class="info-col half"> |
| | | <text class="info-label">æ°é</text> |
| | | <text class="info-value qty">{{item.anfme}}</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- å¡çæä½ --> |
| | | <view class="card-actions"> |
| | | <view class="action-btn edit-btn" @click="revise(item, i)"> |
| | | <uni-icons type="compose" size="18" color="#667eea"></uni-icons> |
| | | <text class="action-text">ä¿®æ¹</text> |
| | | </view> |
| | | <view class="action-btn delete-btn" @click="remove(item, i, 'warn')"> |
| | | <uni-icons type="trash" size="18" color="#f56c6c"></uni-icons> |
| | | <text class="action-text delete-text">ç§»é¤</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- ç©ºç¶æ --> |
| | | <view class="empty-state" v-if="dataList.length === 0"> |
| | | <uni-icons type="cart" size="60" color="#CCCCCC"></uni-icons> |
| | | <text class="empty-text">ææ åå</text> |
| | | <text class="empty-hint">è¯·æ«æç©æç æ·»å åå</text> |
| | | </view> |
| | | |
| | | <!-- åºé¨å ä½ --> |
| | | <view class="bottom-placeholder"></view> |
| | | </view> |
| | | |
| | | <!-- åºé¨æä½æé® --> |
| | | <view class="bottom-bar"> |
| | | <view class="btn-reset" @click="reset('warn')"> |
| | | <uni-icons type="refresh" size="18" color="#909399"></uni-icons> |
| | | <text class="btn-text">éç½®</text> |
| | | </view> |
| | | <view class="btn-submit" :class="{'btn-disabled': isSubmitting || barcode === ''}" @click="combConfirm('warn')"> |
| | | <uni-icons type="checkbox" size="18" color="#ffffff"></uni-icons> |
| | | <text class="btn-text">确认å¼å«</text> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- å¼¹çªåºå --> |
| | | <!-- ä¿®æ¹æ°é --> |
| | | <uni-popup ref="revise" type="dialog"> |
| | | <view class="popup-card"> |
| | | <view class="popup-header"> |
| | | <text class="popup-title">ä¿®æ¹ä¿¡æ¯</text> |
| | | </view> |
| | | <view class="popup-body"> |
| | | <view class="popup-row"> |
| | | <text class="popup-label">ç¼ç </text> |
| | | <view class="popup-value disabled">{{editMatnr}}</view> |
| | | </view> |
| | | <view class="popup-row"> |
| | | <text class="popup-label">æ¹å·</text> |
| | | <input class="popup-value input" type="text" v-model="batch" placeholder="è¾å
¥æ¹å·" /> |
| | | </view> |
| | | <view class="popup-row"> |
| | | <text class="popup-label">æ°é</text> |
| | | <view class="popup-value number"> |
| | | <uni-number-box :value="count" :step='0.01' :max="9999999" color="#747474" @change="changeValue" /> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="popup-footer"> |
| | | <view class="popup-btn cancel" @click="reviseClose">åæ¶</view> |
| | | <view class="popup-btn confirm" @click="reviseConfirm()">确认</view> |
| | | </view> |
| | | </view> |
| | | </uni-popup> |
| | | |
| | | <!-- ç§»é¤ç¡®è®¤ --> |
| | | <uni-popup ref="alertDialog" type="dialog"> |
| | | <uni-popup-dialog :type="msgType" confirmText="ç§»é¤" :title="title" :content="content" |
| | | @confirm="removeConfirm()" @close="removeClose"></uni-popup-dialog> |
| | | </uni-popup> |
| | | |
| | | <!-- æç¤ºä¿¡æ¯å¼¹çª --> |
| | | <uni-popup ref="message" type="message"> |
| | | <uni-popup-message :type="msgType1" :message="messageText" :duration="2000"></uni-popup-message> |
| | | </uni-popup> |
| | | |
| | | <!-- ç¡®è®¤ç»æ --> |
| | | <uni-popup ref="combConfirm" type="dialog"> |
| | | <uni-popup-dialog :type="msgType" cancelText="åæ¶" confirmText="确认" :title="title" :content="content" |
| | | @confirm="comb" @close="combClose"></uni-popup-dialog> |
| | | </uni-popup> |
| | | |
| | | <!-- 确认éç½® --> |
| | | <uni-popup ref="resetConfirm" type="dialog"> |
| | | <uni-popup-dialog :type="msgType" cancelText="åæ¶" confirmText="确认" :title="title" :content="content" |
| | | @confirm="resetConfirm" @close="resetClose"></uni-popup-dialog> |
| | | </uni-popup> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | showDetl:false, |
| | | baseUrl: '', |
| | | token: '', |
| | | barcode: '', |
| | | dataList: [], |
| | | count: 0, |
| | | rowNum: '', |
| | | matnr: '', |
| | | editMatnr: '', |
| | | batch: '', |
| | | weight: '', |
| | | msgType1: 'success', |
| | | msgType: 'success', |
| | | messageText: '', |
| | | title: '', |
| | | content: '', |
| | | barcodeFocus: true, |
| | | matFocus: false, |
| | | matData: '', |
| | | removeNum: 0, |
| | | ck1: true, |
| | | ck2: false, |
| | | isFull: true, |
| | | isSubmitting: false, |
| | | sourceSite:'', |
| | | targetSiteList: [ |
| | | { label: '101', value: '101' }, |
| | | { label: '102', value: '102' } |
| | | ], |
| | | selectedTargetSite: { label: '101', value: '101' }, |
| | | type : 1 |
| | | } |
| | | }, |
| | | onLoad() { |
| | | |
| | | }, |
| | | onShow() { |
| | | this.baseUrl = uni.getStorageSync('baseUrl'); |
| | | this.token = uni.getStorageSync('token'); |
| | | }, |
| | | methods: { |
| | | onTargetSiteChange(e) { |
| | | const index = e.detail.value; |
| | | this.selectedTargetSite = this.targetSiteList[index]; |
| | | }, |
| | | clearBarcode() { |
| | | this.barcode = ''; |
| | | this.barcodeFocus = false; |
| | | setTimeout(() => { |
| | | this.barcodeFocus = true; |
| | | }, 100); |
| | | }, |
| | | clearMatnr() { |
| | | this.matnr = ''; |
| | | this.matFocus = false; |
| | | setTimeout(() => { |
| | | this.matFocus = true; |
| | | }, 100); |
| | | }, |
| | | isFrozen() { |
| | | this.isFull = !this.isFull |
| | | console.log(this.isFull); |
| | | }, |
| | | messageToggle(type) { |
| | | this.msgType1 = type |
| | | this.$refs.message.open() |
| | | }, |
| | | // barcode input äºä»¶ |
| | | barcodeInput() { |
| | | // ä¸è®¾ç½®å®æ¶å¨ ä¼åºç°æ«å
¥çå符串ä¸å
¨ |
| | | setTimeout(() => { |
| | | var len = this.barcode.length |
| | | if (len >= 9 && len <=8) { |
| | | uni.showToast({ |
| | | title: 'æçç æè¯¯è¯·éè¯', |
| | | icon: "none", |
| | | position: 'top' |
| | | }); |
| | | this.barcodeFocuss() |
| | | return; |
| | | } |
| | | this.focuss() |
| | | }, 200) |
| | | }, |
| | | // æçç æè¯¯éç½® |
| | | barcodeFocuss() { |
| | | let that = this; |
| | | that.barcodeFocus = false; |
| | | setTimeout(() => { |
| | | that.barcode = ''; |
| | | that.barcodeFocus = true; |
| | | }, 100); |
| | | }, |
| | | // ååå
æ æ¸
空éç½® |
| | | focuss() { |
| | | this.focus = false; |
| | | setTimeout(() => { |
| | | this.matnr = ''; |
| | | this.matFocus = true; |
| | | }, 100); |
| | | }, |
| | | // æç´¢ç©æ |
| | | findMat() { |
| | | let that = this |
| | | |
| | | uni.request({ |
| | | url: that.baseUrl + '/mat/auth', |
| | | data: { |
| | | matnr: that.matnr |
| | | }, |
| | | header: { |
| | | 'token': uni.getStorageSync('token') |
| | | }, |
| | | success(result) { |
| | | result = result.data |
| | | if (result.code === 200 && result.data) { |
| | | that.matData = result.data |
| | | that.matnr = '' |
| | | that.matData['batch'] = '' |
| | | uni.navigateTo({ |
| | | url: "../mat/matSelected", |
| | | // éè¿eventChannelå被æå¼é¡µé¢ä¼ éæ°æ® |
| | | success: function(res) { |
| | | res.eventChannel.emit('mat', { |
| | | data: result.data |
| | | }) |
| | | }, |
| | | // 为æå®äºä»¶æ·»å ä¸ä¸ªçå¬å¨ï¼è·å被æå¼é¡µé¢ä¼ éå°å½å页é¢çæ°æ® |
| | | events: { |
| | | matList: function(data) { |
| | | that.checkMat(data.data) |
| | | that.focuss() |
| | | }, |
| | | }, |
| | | }); |
| | | } else if (result.code == 403) { |
| | | uni.showToast({ |
| | | title: result.msg, |
| | | icon: "none", |
| | | position: 'top' |
| | | }) |
| | | setTimeout(() => { |
| | | uni.reLaunch({ |
| | | url: '../login/login' |
| | | }); |
| | | }, 1000); |
| | | } else { |
| | | uni.showToast({ |
| | | title: result.msg, |
| | | icon: "none", |
| | | position: 'top' |
| | | }) |
| | | } |
| | | |
| | | } |
| | | }); |
| | | |
| | | }, |
| | | selectMat() { |
| | | let that = this |
| | | uni.navigateTo({ |
| | | url: "../mat/matQuery", |
| | | success: function(res) { |
| | | // éè¿eventChannelå被æå¼é¡µé¢ä¼ éæ°æ® åå¦å¤ä¸ä¸ªé¡µé¢ä¼ éå¼ç |
| | | res.eventChannel.emit('commonUrl', { |
| | | commonUrl: '' |
| | | }) |
| | | }, |
| | | events: { |
| | | // 为æå®äºä»¶æ·»å ä¸ä¸ªçå¬å¨ï¼è·å被æå¼é¡µé¢ä¼ éå°å½å页é¢çæ°æ® å¦å¤ä¸ä¸ªé¡µé¢ä¼ è¿æ¥ç |
| | | acceptDataFromOpenedPage: function(data) { |
| | | that.matnr = data.data |
| | | that.findMat(that.matnr) |
| | | }, |
| | | }, |
| | | |
| | | |
| | | }); |
| | | that.matnr = '' |
| | | }, |
| | | checkMat(mat) { |
| | | var len = this.dataList.length |
| | | var add = true ,sameItem = false |
| | | for (var i = 0; i < len; i++) { |
| | | if (mat.matnr == this.dataList[i].matnr) { |
| | | for (var j = 0; j < len; j++) { |
| | | if (mat.batch == this.dataList[j].batch) { |
| | | sameItem = true |
| | | } |
| | | } |
| | | // ç¸åç©æ ä¸åæ¹å· æ°å å表 |
| | | if (mat.batch != this.dataList[i].batch) { |
| | | this.$forceUpdate() // 强å¶å·æ° |
| | | if (sameItem) { |
| | | add = false |
| | | } else { |
| | | add = true |
| | | } |
| | | |
| | | } else { |
| | | // ç¸åç©æç¸åæ¹å· æ°éç´¯å |
| | | this.dataList[i].anfme += mat.anfme |
| | | this.$forceUpdate() // 强å¶å·æ° |
| | | add = false |
| | | } |
| | | } |
| | | } |
| | | if (add) { |
| | | this.dataList.unshift(mat) |
| | | } |
| | | }, |
| | | // ä¿®æ¹æ¹å· |
| | | revise(item, i) { |
| | | this.editMatnr = this.dataList[i].matnr |
| | | this.count = this.dataList[i].anfme |
| | | this.batch = this.dataList[i].batch |
| | | this.weight = this.dataList[i].weight |
| | | this.rowNum = i |
| | | this.eject() |
| | | }, |
| | | eject(type) { |
| | | this.type = type |
| | | this.$refs.revise.open(type) |
| | | }, |
| | | // åè¡¨ç§»é¤æé® |
| | | remove(item, i, type) { |
| | | this.removeNum = i |
| | | this.msgType = type |
| | | this.title = '确认移é¤' |
| | | this.content = 'æ¯å¦ç§»é¤è¯¥ååï¼' |
| | | this.$refs.alertDialog.open(i) |
| | | }, |
| | | // ç¡®è®¤ç§»é¤ |
| | | removeConfirm() { |
| | | this.messageText = "ç§»é¤æå" |
| | | this.messageToggle('success') |
| | | this.dataList.splice(this.removeNum, 1) |
| | | }, |
| | | // åæ¶ç§»é¤ |
| | | removeClose() { |
| | | this.$refs.alertDialog.close() |
| | | }, |
| | | reviseConfirm() { |
| | | this.dataList[this.rowNum].anfme = this.count |
| | | this.dataList[this.rowNum].batch = this.batch |
| | | this.dataList[this.rowNum].weight = this.weight |
| | | this.editMatnr = '' |
| | | this.messageText = "ä¿®æ¹æå" |
| | | this.messageToggle('success') |
| | | this.$refs.revise.close() |
| | | }, |
| | | reviseClose() { |
| | | this.$refs.revise.close() |
| | | }, |
| | | changeValue(value) { |
| | | this.count = value |
| | | }, |
| | | combConfirm(type) { |
| | | if (this.isSubmitting || this.barcode === '' || this.sourceSite === '') return; |
| | | this.msgType = type |
| | | this.title = '确认å¼å«' |
| | | this.content = '确认å¼å«ï¼' |
| | | this.$refs.combConfirm.open() |
| | | }, |
| | | combClose() { |
| | | this.$refs.combConfirm.close() |
| | | }, |
| | | comb() { |
| | | uni.vibrateShort(); |
| | | let that = this; |
| | | that.isSubmitting = true; |
| | | uni.request({ |
| | | url: that.baseUrl + '/mobile/agv/start', |
| | | data: JSON.stringify({ |
| | | type : that.type, |
| | | barcode: that.barcode, |
| | | sourceSite:that.sourceSite |
| | | }), |
| | | method: 'POST', |
| | | header: { |
| | | 'token': uni.getStorageSync('token') |
| | | }, |
| | | success(result) { |
| | | var res = result.data |
| | | if (res.code === 200) { |
| | | that.resst(); |
| | | that.messageText = "å¼å«æå" |
| | | that.messageToggle('success') |
| | | } else if (res.code == 403) { |
| | | that.messageText = res.msg |
| | | that.messageToggle('error') |
| | | setTimeout(() => { |
| | | uni.reLaunch({ |
| | | url: '../login/login' |
| | | }); |
| | | }, 1000); |
| | | } else { |
| | | that.messageText = res.msg |
| | | that.messageToggle('error') |
| | | } |
| | | }, |
| | | fail: () => { |
| | | that.messageText = "ç½ç»è¯·æ±è¶
æ¶" |
| | | that.messageToggle('error') |
| | | }, |
| | | complete: () => { |
| | | that.isSubmitting = false; |
| | | } |
| | | }); |
| | | }, |
| | | reset(type) { |
| | | this.msgType = type |
| | | this.title = '确认éç½®' |
| | | this.content = 'æ¯å¦æ¸
ç©ºæææ°æ®ï¼' |
| | | this.$refs.resetConfirm.open() |
| | | }, |
| | | // 确认éç½® |
| | | resetConfirm() { |
| | | this.dataList = [] |
| | | this.barcode = '' |
| | | this.messageText = "éç½®å®æ" |
| | | this.messageToggle('success') |
| | | }, |
| | | // åæ¶éç½® |
| | | resetClose() { |
| | | |
| | | }, |
| | | // æ¸
空 |
| | | resst() { |
| | | // this.dataList = [] |
| | | this.barcode = '' |
| | | this.sourceSite = '' |
| | | this.barcodeFocuss() |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | /* å¼å
¥å
Œ
±æ ·å¼ */ |
| | | @import url('../../static/css/common.css'); |
| | | /* @import url('../../static/css/wms.css/wms.css'); */ |
| | | </style> |
| | |
| | | |
| | | <!-- åè½èå --> |
| | | <view class="menu-section"> |
| | | <view class="menu-grid"> |
| | | <view class="menu-item" v-for="(item, index) in elements" :key="index" |
| | | @click="navigateTo(item)" :style="{animationDelay: (index * 0.1) + 's'}"> |
| | | <view class="menu-card" :class="'card-' + item.color"> |
| | | <view class="card-icon"> |
| | | <uni-icons :type="getIconType(item)" size="32" color="#ffffff"></uni-icons> |
| | | <!-- å类模å¼ï¼æ¾ç¤ºåç±»æ é¢åæå èå --> |
| | | <template v-if="useCategoryMode"> |
| | | <!-- åç±»èå --> |
| | | <view class="category-section" v-for="(category, catIndex) in categorizedMenus" :key="category.key"> |
| | | <!-- åç±»å¤´é¨ - æ¸åè²å¡ç飿 ¼ --> |
| | | <view class="category-card" :class="'category-card-' + category.color" @click="toggleCategory(category.key)"> |
| | | <view class="category-card-icon"> |
| | | <uni-icons :type="category.icon" size="24" color="#ffffff"></uni-icons> |
| | | </view> |
| | | <view class="card-info"> |
| | | <text class="card-title">{{item.title}}</text> |
| | | <text class="card-desc">{{item.name}}</text> |
| | | <view class="category-card-info"> |
| | | <text class="category-card-title">{{category.name}}</text> |
| | | <text class="category-card-count">{{category.items.length}} 个åè½</text> |
| | | </view> |
| | | <view class="card-arrow"> |
| | | <uni-icons type="right" size="16" color="rgba(255,255,255,0.6)"></uni-icons> |
| | | <view class="category-card-arrow" :class="{'expanded': expandedCategories.includes(category.key)}"> |
| | | <uni-icons type="down" size="20" color="rgba(255,255,255,0.8)"></uni-icons> |
| | | </view> |
| | | </view> |
| | | <!-- åèå项 - ç½è²å¡çé
å·¦ä¾§å½©è²æç¤ºæ¡ --> |
| | | <view class="sub-menu-container" v-show="expandedCategories.includes(category.key)"> |
| | | <view class="sub-menu-item" v-for="(item, index) in category.items" :key="item.name" |
| | | @click="navigateTo(item)" :style="{animationDelay: (index * 0.06) + 's'}"> |
| | | <view class="sub-menu-card"> |
| | | <view class="sub-menu-indicator" :class="'indicator-' + item.color"></view> |
| | | <view class="sub-menu-icon" :class="'icon-bg-' + item.color"> |
| | | <uni-icons :type="getIconType(item)" size="24" color="#ffffff"></uni-icons> |
| | | </view> |
| | | <view class="sub-menu-info"> |
| | | <text class="sub-menu-title">{{item.title}}</text> |
| | | <text class="sub-menu-desc">{{item.name}}</text> |
| | | </view> |
| | | <view class="sub-menu-arrow"> |
| | | <uni-icons type="right" size="16" color="#c0c4cc"></uni-icons> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- æªåç±»èååéåºå --> |
| | | <view class="uncategorized-section" v-if="uncategorizedMenus.length > 0"> |
| | | <view class="section-divider"> |
| | | <view class="divider-line"></view> |
| | | <text class="divider-text">å
¶ä»</text> |
| | | <view class="divider-line"></view> |
| | | </view> |
| | | <view class="menu-grid-flat"> |
| | | <view class="menu-item-flat" v-for="(item, index) in uncategorizedMenus" :key="item.name" |
| | | @click="navigateTo(item)" :style="{animationDelay: (index * 0.1) + 's'}"> |
| | | <view class="menu-card-flat" :class="'card-flat-' + item.color"> |
| | | <view class="card-flat-icon"> |
| | | <uni-icons :type="getIconType(item)" size="28" color="#ffffff"></uni-icons> |
| | | </view> |
| | | <view class="card-flat-info"> |
| | | <text class="card-flat-title">{{item.title}}</text> |
| | | <text class="card-flat-desc">{{item.name}}</text> |
| | | </view> |
| | | <view class="card-flat-arrow"> |
| | | <uni-icons type="right" size="16" color="rgba(255,255,255,0.6)"></uni-icons> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <!-- å¹³éºæ¨¡å¼ï¼ç´æ¥æ¾ç¤ºææèå --> |
| | | <template v-else> |
| | | <view class="menu-grid-flat"> |
| | | <view class="menu-item-flat" v-for="(item, index) in elements" :key="item.name" |
| | | @click="navigateTo(item)" :style="{animationDelay: (index * 0.1) + 's'}"> |
| | | <view class="menu-card-flat" :class="'card-flat-' + item.color"> |
| | | <view class="card-flat-icon"> |
| | | <uni-icons :type="getIconType(item)" size="28" color="#ffffff"></uni-icons> |
| | | </view> |
| | | <view class="card-flat-info"> |
| | | <text class="card-flat-title">{{item.title}}</text> |
| | | <text class="card-flat-desc">{{item.name}}</text> |
| | | </view> |
| | | <view class="card-flat-arrow"> |
| | | <uni-icons type="right" size="16" color="rgba(255,255,255,0.6)"></uni-icons> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </view> |
| | | |
| | | <!-- åºé¨çæ --> |
| | | <view class="footer"> |
| | | <text class="footer-text">WMS Mobile v1.0</text> |
| | | <text class="footer-text">© 2025 WMS Mobile v2.0</text> |
| | | </view> |
| | | </view> |
| | | </template> |
| | |
| | | token: '', |
| | | icon: '', |
| | | elements: [], |
| | | // æ¯å¦ä½¿ç¨å类模å¼ï¼true: ä¸ä¸å±æå è忍¡å¼, false: å¹³éºè忍¡å¼ï¼ |
| | | useCategoryMode: true, |
| | | // é»è®¤èåæ°æ®ï¼ç¨äºå端æ è¿åæ¶ï¼ |
| | | elements2: [ |
| | | { |
| | | title: 'ç»æ', |
| | |
| | | color: 'purple', |
| | | cuIcon: '', |
| | | url: '/order/orderList' |
| | | }, |
| | | { |
| | | title: 'AGV容å¨å
¥åº', |
| | | name: 'agv_start', |
| | | color: 'blue', |
| | | cuIcon: '', |
| | | url: '/AGV/agv_start' |
| | | }, |
| | | { |
| | | title: 'AGV容å¨ååº', |
| | | name: 'agv_back', |
| | | color: 'orange', |
| | | cuIcon: '', |
| | | url: '/AGV/agv_back' |
| | | }, |
| | | { |
| | | title: 'åºåæ¥è¯¢', |
| | |
| | | 'orderPutDown': 'bottom', |
| | | 'restock': 'refresh', |
| | | 'stockCheck': 'checkbox', |
| | | } |
| | | 'agv_start': 'navigate', |
| | | 'agv_back': 'refresh', |
| | | }, |
| | | // èååç±»é
ç½®ï¼ä»
å类模å¼ä½¿ç¨ï¼ |
| | | // key: åç±»å¯ä¸æ è¯ |
| | | // name: åç±»æ¾ç¤ºåç§° |
| | | // color: åç±»å¾æ é¢è² |
| | | // icon: åç±»å¾æ |
| | | // menuNames: 该åç±»å
å«çèånameå表 |
| | | categoryConfig: [ |
| | | { |
| | | key: 'pakin_category', |
| | | name: 'å
¥åºç®¡ç', |
| | | color: 'cyan', |
| | | icon: 'upload', |
| | | menuNames: ['pakin', 'orderPakin'] |
| | | }, |
| | | { |
| | | key: 'agv_category', |
| | | name: 'AGV管ç', |
| | | color: 'blue', |
| | | icon: 'navigate', |
| | | menuNames: ['agv_start', 'agv_back'] |
| | | }, |
| | | { |
| | | key: 'stock_category', |
| | | name: 'åºå管ç', |
| | | color: 'green', |
| | | icon: 'search', |
| | | menuNames: ['stockQuery'] |
| | | } |
| | | ], |
| | | // ä¸åä¸åç±»çèå项ï¼å¦éåºç»å½ï¼å§ç»åç¬æ¾ç¤ºï¼ |
| | | excludeFromCategory: ['logOut'], |
| | | // å½åå±å¼çåç±»å表 |
| | | expandedCategories: [] |
| | | }; |
| | | }, |
| | | computed: { |
| | | // åç±»åçèåæ°æ®ï¼è¿æ»¤æç©ºåç±»ï¼ |
| | | categorizedMenus() { |
| | | return this.categoryConfig.map(category => { |
| | | const items = this.elements.filter(item => |
| | | category.menuNames.includes(item.name) |
| | | ); |
| | | return { |
| | | ...category, |
| | | items: items |
| | | }; |
| | | }).filter(category => category.items.length > 0); |
| | | }, |
| | | // æªåç±»çèåï¼ä¸å¨ä»»ä½åç±»ä¸æå¨æé¤å表ä¸ï¼ |
| | | uncategorizedMenus() { |
| | | const allCategorizedNames = this.categoryConfig.flatMap(c => c.menuNames); |
| | | return this.elements.filter(item => |
| | | !allCategorizedNames.includes(item.name) || this.excludeFromCategory.includes(item.name) |
| | | ); |
| | | } |
| | | }, |
| | | onShow() { |
| | | this.baseUrl = uni.getStorageSync('baseUrl'); |
| | |
| | | this.getAuth(); |
| | | }, |
| | | methods: { |
| | | // 忢åç±»å±å¼/æ¶èµ· |
| | | toggleCategory(categoryKey) { |
| | | const index = this.expandedCategories.indexOf(categoryKey); |
| | | if (index > -1) { |
| | | this.expandedCategories.splice(index, 1); |
| | | } else { |
| | | this.expandedCategories.push(categoryKey); |
| | | } |
| | | }, |
| | | // è·å徿 ç±»å |
| | | getIconType(item) { |
| | | return this.iconMap[item.name] || 'circle'; |
| | |
| | | position: relative; |
| | | } |
| | | |
| | | .menu-grid { |
| | | /* åç±»åºå */ |
| | | .category-section { |
| | | margin-bottom: 24rpx; |
| | | } |
| | | |
| | | /* åç±»å¡ç - æ¸åè²é£æ ¼ */ |
| | | .category-card { |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 24rpx 28rpx; |
| | | border-radius: 20rpx; |
| | | box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.15); |
| | | transition: transform 0.2s ease, box-shadow 0.2s ease; |
| | | } |
| | | |
| | | .category-card:active { |
| | | transform: scale(0.98); |
| | | box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.2); |
| | | } |
| | | |
| | | .category-card-icon { |
| | | width: 56rpx; |
| | | height: 56rpx; |
| | | background: rgba(255, 255, 255, 0.25); |
| | | border-radius: 14rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | margin-right: 20rpx; |
| | | } |
| | | |
| | | .category-card-info { |
| | | flex: 1; |
| | | display: flex; |
| | | flex-direction: column; |
| | | } |
| | | |
| | | .menu-item { |
| | | margin-bottom: 20rpx; |
| | | animation: slideUp 0.5s ease forwards; |
| | | .category-card-title { |
| | | font-size: 32rpx; |
| | | color: #ffffff; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .category-card-count { |
| | | font-size: 24rpx; |
| | | color: rgba(255, 255, 255, 0.7); |
| | | margin-top: 4rpx; |
| | | } |
| | | |
| | | .category-card-arrow { |
| | | width: 44rpx; |
| | | height: 44rpx; |
| | | background: rgba(255, 255, 255, 0.15); |
| | | border-radius: 50%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | transition: transform 0.3s ease; |
| | | } |
| | | |
| | | .category-card-arrow.expanded { |
| | | transform: rotate(180deg); |
| | | } |
| | | |
| | | /* åç±»å¡çé¢è² */ |
| | | .category-card-cyan { |
| | | background: linear-gradient(135deg, #1cbbb4 0%, #16a085 100%); |
| | | } |
| | | |
| | | .category-card-blue { |
| | | background: linear-gradient(135deg, #0081ff 0%, #00bcd4 100%); |
| | | } |
| | | |
| | | .category-card-green { |
| | | background: linear-gradient(135deg, #39b54a 0%, #8dc63f 100%); |
| | | } |
| | | |
| | | .category-card-purple { |
| | | background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| | | } |
| | | |
| | | .category-card-orange { |
| | | background: linear-gradient(135deg, #f37b1d 0%, #fbbd08 100%); |
| | | } |
| | | |
| | | /* åèåå®¹å¨ */ |
| | | .sub-menu-container { |
| | | padding: 16rpx 0 0 0; |
| | | } |
| | | |
| | | .sub-menu-item { |
| | | margin-bottom: 16rpx; |
| | | animation: slideUp 0.4s ease forwards; |
| | | opacity: 0; |
| | | transform: translateY(20rpx); |
| | | transform: translateY(16rpx); |
| | | } |
| | | |
| | | @keyframes slideUp { |
| | |
| | | } |
| | | } |
| | | |
| | | .menu-card { |
| | | /* åèåå¡ç - ç½åºé
å½©è²æç¤ºæ¡ */ |
| | | .sub-menu-card { |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 28rpx 24rpx; |
| | | border-radius: 20rpx; |
| | | box-shadow: 0 8rpx 30rpx rgba(0, 0, 0, 0.12); |
| | | padding: 20rpx 24rpx; |
| | | background: #ffffff; |
| | | border-radius: 16rpx; |
| | | box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); |
| | | position: relative; |
| | | overflow: hidden; |
| | | transition: transform 0.2s ease, box-shadow 0.2s ease; |
| | | } |
| | | |
| | | .menu-card:active { |
| | | .sub-menu-card:active { |
| | | transform: scale(0.98); |
| | | box-shadow: 0 4rpx 15rpx rgba(0, 0, 0, 0.15); |
| | | box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.12); |
| | | } |
| | | |
| | | .card-icon { |
| | | width: 80rpx; |
| | | height: 80rpx; |
| | | background: rgba(255, 255, 255, 0.25); |
| | | border-radius: 20rpx; |
| | | /* å·¦ä¾§å½©è²æç¤ºæ¡ */ |
| | | .sub-menu-indicator { |
| | | position: absolute; |
| | | left: 0; |
| | | top: 0; |
| | | bottom: 0; |
| | | width: 6rpx; |
| | | border-radius: 0 6rpx 6rpx 0; |
| | | } |
| | | |
| | | .indicator-cyan { background: linear-gradient(180deg, #1cbbb4 0%, #16a085 100%); } |
| | | .indicator-purple { background: linear-gradient(180deg, #667eea 0%, #764ba2 100%); } |
| | | .indicator-blue { background: linear-gradient(180deg, #0081ff 0%, #00bcd4 100%); } |
| | | .indicator-green { background: linear-gradient(180deg, #39b54a 0%, #8dc63f 100%); } |
| | | .indicator-orange { background: linear-gradient(180deg, #f37b1d 0%, #fbbd08 100%); } |
| | | .indicator-red { background: linear-gradient(180deg, #e54d42 0%, #f37b1d 100%); } |
| | | .indicator-pink { background: linear-gradient(180deg, #e03997 0%, #f37b1d 100%); } |
| | | .indicator-mauve { background: linear-gradient(180deg, #9c26b0 0%, #667eea 100%); } |
| | | .indicator-brown { background: linear-gradient(180deg, #a5673f 0%, #8799a3 100%); } |
| | | .indicator-olive { background: linear-gradient(180deg, #8dc63f 0%, #39b54a 100%); } |
| | | .indicator-yellow { background: linear-gradient(180deg, #fbbd08 0%, #f37b1d 100%); } |
| | | .indicator-grey { background: linear-gradient(180deg, #8799a3 0%, #606266 100%); } |
| | | |
| | | /* åèå徿 èæ¯ */ |
| | | .sub-menu-icon { |
| | | width: 56rpx; |
| | | height: 56rpx; |
| | | border-radius: 14rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | margin-right: 24rpx; |
| | | margin-left: 12rpx; |
| | | margin-right: 20rpx; |
| | | } |
| | | |
| | | .card-info { |
| | | .icon-bg-cyan { background: linear-gradient(135deg, #1cbbb4 0%, #16a085 100%); } |
| | | .icon-bg-purple { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); } |
| | | .icon-bg-blue { background: linear-gradient(135deg, #0081ff 0%, #00bcd4 100%); } |
| | | .icon-bg-green { background: linear-gradient(135deg, #39b54a 0%, #8dc63f 100%); } |
| | | .icon-bg-orange { background: linear-gradient(135deg, #f37b1d 0%, #fbbd08 100%); } |
| | | .icon-bg-red { background: linear-gradient(135deg, #e54d42 0%, #f37b1d 100%); } |
| | | .icon-bg-pink { background: linear-gradient(135deg, #e03997 0%, #f37b1d 100%); } |
| | | .icon-bg-mauve { background: linear-gradient(135deg, #9c26b0 0%, #667eea 100%); } |
| | | .icon-bg-brown { background: linear-gradient(135deg, #a5673f 0%, #8799a3 100%); } |
| | | .icon-bg-olive { background: linear-gradient(135deg, #8dc63f 0%, #39b54a 100%); } |
| | | .icon-bg-yellow { background: linear-gradient(135deg, #fbbd08 0%, #f37b1d 100%); } |
| | | .icon-bg-grey { background: linear-gradient(135deg, #8799a3 0%, #606266 100%); } |
| | | |
| | | .sub-menu-info { |
| | | flex: 1; |
| | | display: flex; |
| | | flex-direction: column; |
| | | } |
| | | |
| | | .sub-menu-title { |
| | | font-size: 30rpx; |
| | | color: #303133; |
| | | font-weight: 500; |
| | | } |
| | | |
| | | .sub-menu-desc { |
| | | font-size: 24rpx; |
| | | color: #909399; |
| | | margin-top: 4rpx; |
| | | } |
| | | |
| | | .sub-menu-arrow { |
| | | width: 36rpx; |
| | | height: 36rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | /* æªåç±»èååºå */ |
| | | .uncategorized-section { |
| | | margin-top: 20rpx; |
| | | } |
| | | |
| | | .section-divider { |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 20rpx 0 24rpx; |
| | | } |
| | | |
| | | .divider-line { |
| | | flex: 1; |
| | | height: 2rpx; |
| | | background: linear-gradient(90deg, transparent 0%, #dcdfe6 50%, transparent 100%); |
| | | } |
| | | |
| | | .divider-text { |
| | | padding: 0 24rpx; |
| | | font-size: 26rpx; |
| | | color: #909399; |
| | | } |
| | | |
| | | /* å¹³éºæ¨¡å¼èå */ |
| | | .menu-grid-flat { |
| | | display: flex; |
| | | flex-direction: column; |
| | | } |
| | | |
| | | .menu-item-flat { |
| | | margin-bottom: 20rpx; |
| | | animation: slideUp 0.5s ease forwards; |
| | | opacity: 0; |
| | | transform: translateY(20rpx); |
| | | } |
| | | |
| | | .menu-card-flat { |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 24rpx 24rpx; |
| | | border-radius: 18rpx; |
| | | box-shadow: 0 6rpx 24rpx rgba(0, 0, 0, 0.12); |
| | | transition: transform 0.2s ease, box-shadow 0.2s ease; |
| | | } |
| | | |
| | | .menu-card-flat:active { |
| | | transform: scale(0.98); |
| | | box-shadow: 0 3rpx 12rpx rgba(0, 0, 0, 0.15); |
| | | } |
| | | |
| | | .card-flat-icon { |
| | | width: 64rpx; |
| | | height: 64rpx; |
| | | background: rgba(255, 255, 255, 0.25); |
| | | border-radius: 16rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | margin-right: 20rpx; |
| | | } |
| | | |
| | | .card-flat-info { |
| | | flex: 1; |
| | | } |
| | | |
| | | .card-title { |
| | | font-size: 32rpx; |
| | | .card-flat-title { |
| | | font-size: 30rpx; |
| | | color: #ffffff; |
| | | font-weight: 600; |
| | | display: block; |
| | | } |
| | | |
| | | .card-desc { |
| | | .card-flat-desc { |
| | | font-size: 24rpx; |
| | | color: rgba(255, 255, 255, 0.7); |
| | | display: block; |
| | | margin-top: 6rpx; |
| | | margin-top: 4rpx; |
| | | } |
| | | |
| | | .card-arrow { |
| | | width: 40rpx; |
| | | height: 40rpx; |
| | | .card-flat-arrow { |
| | | width: 36rpx; |
| | | height: 36rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | /* å¡çé¢è² */ |
| | | .card-cyan { |
| | | background: linear-gradient(135deg, #1cbbb4 0%, #16a085 100%); |
| | | } |
| | | |
| | | .card-purple { |
| | | background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| | | } |
| | | |
| | | .card-blue { |
| | | background: linear-gradient(135deg, #0081ff 0%, #00bcd4 100%); |
| | | } |
| | | |
| | | .card-green { |
| | | background: linear-gradient(135deg, #39b54a 0%, #8dc63f 100%); |
| | | } |
| | | |
| | | .card-orange { |
| | | background: linear-gradient(135deg, #f37b1d 0%, #fbbd08 100%); |
| | | } |
| | | |
| | | .card-red { |
| | | background: linear-gradient(135deg, #e54d42 0%, #f37b1d 100%); |
| | | } |
| | | |
| | | .card-pink { |
| | | background: linear-gradient(135deg, #e03997 0%, #f37b1d 100%); |
| | | } |
| | | |
| | | .card-mauve { |
| | | background: linear-gradient(135deg, #9c26b0 0%, #667eea 100%); |
| | | } |
| | | |
| | | .card-brown { |
| | | background: linear-gradient(135deg, #a5673f 0%, #8799a3 100%); |
| | | } |
| | | |
| | | .card-olive { |
| | | background: linear-gradient(135deg, #8dc63f 0%, #39b54a 100%); |
| | | } |
| | | |
| | | .card-yellow { |
| | | background: linear-gradient(135deg, #fbbd08 0%, #f37b1d 100%); |
| | | } |
| | | |
| | | .card-grey { |
| | | background: linear-gradient(135deg, #8799a3 0%, #606266 100%); |
| | | } |
| | | /* å¹³éºå¡çé¢è² */ |
| | | .card-flat-cyan { background: linear-gradient(135deg, #1cbbb4 0%, #16a085 100%); } |
| | | .card-flat-purple { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); } |
| | | .card-flat-blue { background: linear-gradient(135deg, #0081ff 0%, #00bcd4 100%); } |
| | | .card-flat-green { background: linear-gradient(135deg, #39b54a 0%, #8dc63f 100%); } |
| | | .card-flat-orange { background: linear-gradient(135deg, #f37b1d 0%, #fbbd08 100%); } |
| | | .card-flat-red { background: linear-gradient(135deg, #e54d42 0%, #f37b1d 100%); } |
| | | .card-flat-pink { background: linear-gradient(135deg, #e03997 0%, #f37b1d 100%); } |
| | | .card-flat-mauve { background: linear-gradient(135deg, #9c26b0 0%, #667eea 100%); } |
| | | .card-flat-brown { background: linear-gradient(135deg, #a5673f 0%, #8799a3 100%); } |
| | | .card-flat-olive { background: linear-gradient(135deg, #8dc63f 0%, #39b54a 100%); } |
| | | .card-flat-yellow { background: linear-gradient(135deg, #fbbd08 0%, #f37b1d 100%); } |
| | | .card-flat-grey { background: linear-gradient(135deg, #8799a3 0%, #606266 100%); } |
| | | |
| | | /* åºé¨ */ |
| | | .footer { |
| | |
| | | </script> |
| | | |
| | | <style> |
| | | /* å¼å
¥å
Œ
±æ ·å¼ */ |
| | | @import url('../../static/css/common.css'); |
| | | |
| | | .page-container { |
| | | min-height: 100vh; |
| | | background: linear-gradient(135deg, #f5f7fa 0%, #e4e8eb 100%); |
| | | padding-bottom: 120rpx; |
| | | } |
| | | |
| | |
| | | |
| | | /* ç©ºç¶æ */ |
| | | .empty-state { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | padding: 60rpx 0; |
| | | } |
| | | |
| | | .empty-text { |
| | | font-size: 26rpx; |
| | | color: #909399; |
| | | margin-top: 20rpx; |
| | | } |
| | | |
| | |
| | | </script> |
| | | |
| | | <style> |
| | | /* å¼å
¥å
Œ
±æ ·å¼ */ |
| | | @import url('../../static/css/common.css'); |
| | | @import url('../../static/css/wms.css/wms.css'); |
| | | |
| | | page { |
| | | height: 100%; |
| | | background: #f5f7fa; |
| | | } |
| | | |
| | | .page-container { |
| | | min-height: 100vh; |
| | | background: linear-gradient(135deg, #f5f7fa 0%, #e4e8eb 100%); |
| | | padding-bottom: 110rpx; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | /* 表ååºå */ |
| | | .form-section { |
| | | background: #ffffff; |
| | | padding: 12rpx 20rpx; |
| | | box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.06); |
| | | } |
| | | |
| | | .form-item { |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 12rpx 0; |
| | | border-bottom: 1rpx solid #f0f0f0; |
| | | } |
| | | |
| | | .form-item:last-child { |
| | | border-bottom: none; |
| | | } |
| | | |
| | | .form-label { |
| | | display: flex; |
| | | align-items: center; |
| | | width: 140rpx; |
| | | flex-shrink: 0; |
| | | } |
| | | |
| | | .label-text { |
| | | font-size: 26rpx; |
| | | color: #303133; |
| | | margin-left: 6rpx; |
| | | } |
| | | |
| | | .form-input-wrap { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | background: #f5f7fa; |
| | | border-radius: 6rpx; |
| | | padding: 0 16rpx; |
| | | height: 60rpx; |
| | | } |
| | | |
| | | .form-input { |
| | | flex: 1; |
| | | height: 60rpx; |
| | | font-size: 26rpx; |
| | | color: #303133; |
| | | } |
| | | |
| | | /* åè¡¨å¤´é¨ */ |
| | | .list-header { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | padding: 16rpx 20rpx; |
| | | background: #ffffff; |
| | | margin-top: 12rpx; |
| | | box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04); |
| | | } |
| | | |
| | | .header-left { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .header-title { |
| | | font-size: 28rpx; |
| | | color: #303133; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .count-badge { |
| | | background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| | | border-radius: 16rpx; |
| | | padding: 2rpx 12rpx; |
| | | margin-left: 12rpx; |
| | | } |
| | | |
| | | .count-text { |
| | | font-size: 20rpx; |
| | | color: #ffffff; |
| | | font-weight: 500; |
| | | } |
| | | |
| | | |
| | | .header-right { |
| | | display: flex; |
| | |
| | | .review-status { |
| | | font-size: 22rpx; |
| | | color: #909399; |
| | | } |
| | | |
| | | /* ååå表 */ |
| | | .list-container { |
| | | padding: 0 20rpx; |
| | | } |
| | | |
| | | .mat-card { |
| | | background: #ffffff; |
| | | border-radius: 12rpx; |
| | | margin-top: 12rpx; |
| | | box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05); |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .card-top { |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 14rpx 16rpx; |
| | | background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| | | } |
| | | |
| | | .card-index { |
| | | width: 36rpx; |
| | | height: 36rpx; |
| | | background: rgba(255, 255, 255, 0.25); |
| | | border-radius: 50%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | font-size: 22rpx; |
| | | color: #ffffff; |
| | | font-weight: 600; |
| | | margin-right: 12rpx; |
| | | } |
| | | |
| | | .mat-code-wrap { |
| | | flex: 1; |
| | | } |
| | | |
| | | .mat-code { |
| | | font-size: 26rpx; |
| | | color: #ffffff; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .review-badge { |
| | |
| | | color: #ffffff; |
| | | } |
| | | |
| | | /* å¡çå
容 */ |
| | | .card-content { |
| | | padding: 12rpx 16rpx; |
| | | } |
| | | |
| | | .info-row { |
| | | display: flex; |
| | | margin-bottom: 8rpx; |
| | | } |
| | | |
| | | .info-row:last-child { |
| | | margin-bottom: 0; |
| | | } |
| | | |
| | | .info-col { |
| | | flex: 1; |
| | | } |
| | | |
| | | .info-col.half { |
| | | width: 50%; |
| | | flex: none; |
| | | } |
| | | |
| | | .info-label { |
| | | font-size: 20rpx; |
| | | color: #909399; |
| | | display: block; |
| | | } |
| | | |
| | | .info-value { |
| | | font-size: 24rpx; |
| | | color: #303133; |
| | | display: block; |
| | | margin-top: 2rpx; |
| | | } |
| | | |
| | | .info-value.highlight { |
| | | color: #667eea; |
| | | font-weight: 500; |
| | | } |
| | | |
| | | .info-value.qty { |
| | | font-size: 28rpx; |
| | | color: #303133; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | /* å¡çæä½ */ |
| | | .card-actions { |
| | | display: flex; |
| | | border-top: 1rpx solid #f0f0f0; |
| | | } |
| | | |
| | | .action-btn { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | padding: 14rpx 0; |
| | | } |
| | | |
| | | .edit-btn { |
| | | border-right: 1rpx solid #f0f0f0; |
| | | } |
| | | |
| | | .action-text { |
| | | font-size: 24rpx; |
| | | color: #667eea; |
| | | margin-left: 6rpx; |
| | | } |
| | | |
| | | .delete-text { |
| | | color: #f56c6c; |
| | | } |
| | | |
| | | /* ç©ºç¶æ */ |
| | | .empty-state { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | padding: 60rpx 0; |
| | | } |
| | | |
| | | .empty-text { |
| | | font-size: 26rpx; |
| | | color: #909399; |
| | | margin-top: 16rpx; |
| | | } |
| | | |
| | | .empty-hint { |
| | | font-size: 22rpx; |
| | | color: #c0c4cc; |
| | | margin-top: 8rpx; |
| | | } |
| | | |
| | | .bottom-placeholder { |
| | | height: 20rpx; |
| | | } |
| | | |
| | | /* åºé¨æä½æ */ |
| | | .bottom-bar { |
| | | position: fixed; |
| | | bottom: 0; |
| | | left: 0; |
| | | right: 0; |
| | | display: flex; |
| | | padding: 16rpx 20rpx; |
| | | background: #ffffff; |
| | | box-shadow: 0 -2rpx 12rpx rgba(0, 0, 0, 0.06); |
| | | } |
| | | |
| | | .btn-reset { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | width: 160rpx; |
| | | height: 72rpx; |
| | | background: #f5f7fa; |
| | | border-radius: 36rpx; |
| | | margin-right: 16rpx; |
| | | } |
| | | |
| | | .btn-reset .btn-text { |
| | | font-size: 26rpx; |
| | | color: #909399; |
| | | margin-left: 6rpx; |
| | | } |
| | | |
| | | .btn-submit { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | height: 72rpx; |
| | | background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| | | border-radius: 36rpx; |
| | | } |
| | | |
| | | .btn-submit .btn-text { |
| | | font-size: 28rpx; |
| | | color: #ffffff; |
| | | font-weight: 500; |
| | | margin-left: 6rpx; |
| | | } |
| | | |
| | | .btn-disabled { |
| | | background: #c0c4cc; |
| | | opacity: 0.6; |
| | | } |
| | | |
| | | /* å¼¹çªæ ·å¼ */ |
| | | .popup-card { |
| | | width: 600rpx; |
| | | background: #ffffff; |
| | | border-radius: 16rpx; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .popup-header { |
| | | padding: 24rpx; |
| | | text-align: center; |
| | | border-bottom: 1rpx solid #f0f0f0; |
| | | background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| | | } |
| | | |
| | | .popup-title { |
| | | font-size: 30rpx; |
| | | color: #ffffff; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .popup-body { |
| | | padding: 24rpx; |
| | | } |
| | | |
| | | .popup-row { |
| | | display: flex; |
| | | align-items: center; |
| | | margin-bottom: 20rpx; |
| | | height: 70rpx; |
| | | } |
| | | |
| | | .popup-row:last-child { |
| | | margin-bottom: 0; |
| | | } |
| | | |
| | | .popup-label { |
| | | width: 80rpx; |
| | | font-size: 26rpx; |
| | | color: #606266; |
| | | flex-shrink: 0; |
| | | } |
| | | |
| | | .popup-value { |
| | | flex: 1; |
| | | height: 70rpx; |
| | | background: #f5f7fa; |
| | | border-radius: 8rpx; |
| | | padding: 0 16rpx; |
| | | font-size: 26rpx; |
| | | color: #303133; |
| | | display: flex; |
| | | align-items: center; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .popup-value.disabled { |
| | | color: #909399; |
| | | background: #f0f0f0; |
| | | } |
| | | |
| | | .popup-value.input { |
| | | padding: 0 16rpx; |
| | | } |
| | | |
| | | .popup-value.number { |
| | | justify-content: center; |
| | | background: transparent; |
| | | padding: 0; |
| | | } |
| | | |
| | | .popup-footer { |
| | | display: flex; |
| | | border-top: 1rpx solid #f0f0f0; |
| | | } |
| | | |
| | | .popup-btn { |
| | | flex: 1; |
| | | height: 90rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | font-size: 28rpx; |
| | | } |
| | | |
| | | .popup-btn.cancel { |
| | | color: #909399; |
| | | border-right: 1rpx solid #f0f0f0; |
| | | } |
| | | |
| | | .popup-btn.confirm { |
| | | color: #667eea; |
| | | font-weight: 600; |
| | | } |
| | | </style> |
| | |
| | | <uni-icons type="refresh" size="18" color="#909399"></uni-icons> |
| | | <text class="btn-text">éç½®</text> |
| | | </view> |
| | | <view class="btn-submit" :class="{'btn-disabled': dataList.length === 0}" @click="combConfirm('warn')"> |
| | | <view class="btn-submit" :class="{'btn-disabled': isSubmitting || dataList.length === 0}" @click="combConfirm('warn')"> |
| | | <uni-icons type="checkbox" size="18" color="#ffffff"></uni-icons> |
| | | <text class="btn-text">ç¡®è®¤ç»æ</text> |
| | | </view> |
| | |
| | | removeNum: 0, |
| | | ck1: true, |
| | | ck2: false, |
| | | isFull: true |
| | | isFull: true, |
| | | isSubmitting: false |
| | | } |
| | | }, |
| | | onLoad() { |
| | |
| | | this.count = value |
| | | }, |
| | | combConfirm(type) { |
| | | if (this.dataList.length === 0) return; |
| | | if (this.isSubmitting || this.dataList.length === 0) return; |
| | | this.msgType = type |
| | | this.title = 'ç¡®è®¤ç»æ' |
| | | this.content = '确认å°ååç»æå
¥åºï¼' |
| | |
| | | comb() { |
| | | uni.vibrateShort(); |
| | | let that = this; |
| | | that.isSubmitting = true; |
| | | if (that.barcode === '') { |
| | | this.messageText = "è¯·æ«ææçæ¡ç " |
| | | this.messageToggle('error') |
| | | that.isSubmitting = false; |
| | | return; |
| | | } |
| | | if (that.dataList.length === 0) { |
| | | this.messageText = "请添å ååå表" |
| | | this.messageToggle('error') |
| | | that.isSubmitting = false; |
| | | return; |
| | | } |
| | | for (var i = 0; i < that.dataList.length; i++) { |
| | | if (that.dataList[i].anfme == 0 || that.dataList[i].anfme == '') { |
| | | this.messageText = that.dataList[i].matnr + 'ç»ææ°éä¸è½ä¸º0' |
| | | this.messageToggle('error') |
| | | that.isSubmitting = false; |
| | | return; |
| | | } |
| | | } |
| | |
| | | that.messageText = res.msg |
| | | that.messageToggle('error') |
| | | } |
| | | }, |
| | | fail: () => { |
| | | that.messageText = "ç½ç»è¯·æ±è¶
æ¶" |
| | | that.messageToggle('error') |
| | | }, |
| | | complete: () => { |
| | | that.isSubmitting = false; |
| | | } |
| | | }); |
| | | }, |
| | |
| | | </script> |
| | | |
| | | <style> |
| | | /* å¼å
¥å
Œ
±æ ·å¼ */ |
| | | @import url('../../static/css/common.css'); |
| | | @import url('../../static/css/wms.css/wms.css'); |
| | | |
| | | page { |
| | | height: 100%; |
| | | background: #f5f7fa; |
| | | } |
| | | |
| | | .page-container { |
| | | min-height: 100vh; |
| | | background: linear-gradient(135deg, #f5f7fa 0%, #e4e8eb 100%); |
| | | padding-bottom: 110rpx; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | /* 表ååºå */ |
| | | .form-section { |
| | | background: #ffffff; |
| | | padding: 12rpx 20rpx; |
| | | box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.06); |
| | | } |
| | | |
| | | .form-item { |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 12rpx 0; |
| | | border-bottom: 1rpx solid #f0f0f0; |
| | | } |
| | | |
| | | .form-item:last-child { |
| | | border-bottom: none; |
| | | } |
| | | |
| | | .form-label { |
| | | display: flex; |
| | | align-items: center; |
| | | width: 140rpx; |
| | | flex-shrink: 0; |
| | | } |
| | | |
| | | .label-text { |
| | | font-size: 26rpx; |
| | | color: #303133; |
| | | margin-left: 6rpx; |
| | | } |
| | | |
| | | .form-input-wrap { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | background: #f5f7fa; |
| | | border-radius: 6rpx; |
| | | padding: 0 16rpx; |
| | | height: 60rpx; |
| | | } |
| | | |
| | | .form-input { |
| | | flex: 1; |
| | | height: 60rpx; |
| | | font-size: 26rpx; |
| | | color: #303133; |
| | | } |
| | | |
| | | /* åè¡¨å¤´é¨ */ |
| | | .list-header { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | padding: 16rpx 20rpx; |
| | | background: #ffffff; |
| | | margin-top: 12rpx; |
| | | box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04); |
| | | } |
| | | |
| | | .header-left { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .header-title { |
| | | font-size: 28rpx; |
| | | color: #303133; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .count-badge { |
| | | background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| | | border-radius: 16rpx; |
| | | padding: 2rpx 12rpx; |
| | | margin-left: 12rpx; |
| | | } |
| | | |
| | | .count-text { |
| | | font-size: 20rpx; |
| | | color: #ffffff; |
| | | font-weight: 500; |
| | | } |
| | | |
| | | /* ååå表 */ |
| | | .list-container { |
| | | padding: 0 20rpx; |
| | | } |
| | | |
| | | .mat-card { |
| | | background: #ffffff; |
| | | border-radius: 12rpx; |
| | | margin-top: 12rpx; |
| | | box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05); |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .card-top { |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 14rpx 16rpx; |
| | | background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| | | } |
| | | |
| | | .card-index { |
| | | width: 36rpx; |
| | | height: 36rpx; |
| | | background: rgba(255, 255, 255, 0.25); |
| | | border-radius: 50%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | font-size: 22rpx; |
| | | color: #ffffff; |
| | | font-weight: 600; |
| | | margin-right: 12rpx; |
| | | } |
| | | |
| | | .mat-code-wrap { |
| | | flex: 1; |
| | | } |
| | | |
| | | .mat-code { |
| | | font-size: 26rpx; |
| | | color: #ffffff; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .qty-badge { |
| | | background: rgba(255, 255, 255, 0.3); |
| | | padding: 4rpx 14rpx; |
| | | border-radius: 16rpx; |
| | | } |
| | | |
| | | .qty-text { |
| | | font-size: 24rpx; |
| | | color: #ffffff; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | /* å¡çå
容 */ |
| | | .card-content { |
| | | padding: 12rpx 16rpx; |
| | | } |
| | | |
| | | .info-row { |
| | | display: flex; |
| | | margin-bottom: 8rpx; |
| | | } |
| | | |
| | | .info-row:last-child { |
| | | margin-bottom: 0; |
| | | } |
| | | |
| | | .info-col { |
| | | flex: 1; |
| | | } |
| | | |
| | | .info-col.half { |
| | | width: 50%; |
| | | flex: none; |
| | | } |
| | | |
| | | .info-label { |
| | | font-size: 20rpx; |
| | | color: #909399; |
| | | display: block; |
| | | } |
| | | |
| | | .info-value { |
| | | font-size: 24rpx; |
| | | color: #303133; |
| | | display: block; |
| | | margin-top: 2rpx; |
| | | } |
| | | |
| | | .info-value.highlight { |
| | | color: #667eea; |
| | | font-weight: 500; |
| | | } |
| | | |
| | | .info-value.qty { |
| | | font-size: 28rpx; |
| | | color: #303133; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | /* å¡çæä½ */ |
| | | .card-actions { |
| | | display: flex; |
| | | border-top: 1rpx solid #f0f0f0; |
| | | } |
| | | |
| | | .action-btn { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | padding: 14rpx 0; |
| | | } |
| | | |
| | | .edit-btn { |
| | | border-right: 1rpx solid #f0f0f0; |
| | | } |
| | | |
| | | .action-text { |
| | | font-size: 24rpx; |
| | | color: #667eea; |
| | | margin-left: 6rpx; |
| | | } |
| | | |
| | | .delete-text { |
| | | color: #f56c6c; |
| | | } |
| | | |
| | | /* ç©ºç¶æ */ |
| | | .empty-state { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | padding: 80rpx 0; |
| | | } |
| | | |
| | | .empty-text { |
| | | font-size: 26rpx; |
| | | color: #909399; |
| | | margin-top: 16rpx; |
| | | } |
| | | |
| | | .empty-hint { |
| | | font-size: 22rpx; |
| | | color: #c0c4cc; |
| | | margin-top: 8rpx; |
| | | } |
| | | |
| | | .bottom-placeholder { |
| | | height: 20rpx; |
| | | } |
| | | |
| | | /* åºé¨æä½æ */ |
| | | .bottom-bar { |
| | | position: fixed; |
| | | bottom: 0; |
| | | left: 0; |
| | | right: 0; |
| | | display: flex; |
| | | padding: 16rpx 20rpx; |
| | | background: #ffffff; |
| | | box-shadow: 0 -2rpx 12rpx rgba(0, 0, 0, 0.06); |
| | | } |
| | | |
| | | .btn-reset { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | width: 160rpx; |
| | | height: 72rpx; |
| | | background: #f5f7fa; |
| | | border-radius: 36rpx; |
| | | margin-right: 16rpx; |
| | | } |
| | | |
| | | .btn-reset .btn-text { |
| | | font-size: 26rpx; |
| | | color: #909399; |
| | | margin-left: 6rpx; |
| | | } |
| | | |
| | | .btn-submit { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | height: 72rpx; |
| | | background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| | | border-radius: 36rpx; |
| | | } |
| | | |
| | | .btn-submit .btn-text { |
| | | font-size: 28rpx; |
| | | color: #ffffff; |
| | | font-weight: 500; |
| | | margin-left: 6rpx; |
| | | } |
| | | |
| | | .btn-disabled { |
| | | opacity: 0.6; |
| | | } |
| | | |
| | | /* å¼¹çªæ ·å¼ */ |
| | | .popup-card { |
| | | width: 600rpx; |
| | | background: #ffffff; |
| | | border-radius: 16rpx; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .popup-header { |
| | | padding: 24rpx; |
| | | text-align: center; |
| | | border-bottom: 1rpx solid #f0f0f0; |
| | | background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| | | } |
| | | |
| | | .popup-title { |
| | | font-size: 30rpx; |
| | | color: #ffffff; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .popup-body { |
| | | padding: 24rpx; |
| | | } |
| | | |
| | | .popup-row { |
| | | display: flex; |
| | | align-items: center; |
| | | margin-bottom: 20rpx; |
| | | height: 70rpx; |
| | | } |
| | | |
| | | .popup-row:last-child { |
| | | margin-bottom: 0; |
| | | } |
| | | |
| | | .popup-label { |
| | | width: 80rpx; |
| | | font-size: 26rpx; |
| | | color: #606266; |
| | | flex-shrink: 0; |
| | | } |
| | | |
| | | .popup-value { |
| | | flex: 1; |
| | | height: 70rpx; |
| | | background: #f5f7fa; |
| | | border-radius: 8rpx; |
| | | padding: 0 16rpx; |
| | | font-size: 26rpx; |
| | | color: #303133; |
| | | display: flex; |
| | | align-items: center; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .popup-value.disabled { |
| | | color: #909399; |
| | | background: #f0f0f0; |
| | | } |
| | | |
| | | .popup-value.input { |
| | | padding: 0 16rpx; |
| | | } |
| | | |
| | | .popup-value.number { |
| | | justify-content: center; |
| | | background: transparent; |
| | | padding: 0; |
| | | } |
| | | |
| | | .popup-footer { |
| | | display: flex; |
| | | border-top: 1rpx solid #f0f0f0; |
| | | } |
| | | |
| | | .popup-btn { |
| | | flex: 1; |
| | | height: 90rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | font-size: 28rpx; |
| | | } |
| | | |
| | | .popup-btn.cancel { |
| | | color: #909399; |
| | | border-right: 1rpx solid #f0f0f0; |
| | | } |
| | | |
| | | .popup-btn.confirm { |
| | | color: #667eea; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | </style> |
| | |
| | | </script> |
| | | |
| | | <style> |
| | | page { |
| | | background: #f5f7fa; |
| | | } |
| | | |
| | | .page-container { |
| | | min-height: 100vh; |
| | | background: linear-gradient(135deg, #f5f7fa 0%, #e4e8eb 100%); |
| | | padding-bottom: 110rpx; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | /* 表ååºå */ |
| | | .form-section { |
| | | background: #ffffff; |
| | | padding: 12rpx 20rpx; |
| | | box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.06); |
| | | } |
| | | |
| | | .form-item { |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 12rpx 0; |
| | | border-bottom: 1rpx solid #f0f0f0; |
| | | } |
| | | |
| | | .form-item:last-child { |
| | | border-bottom: none; |
| | | } |
| | | |
| | | /* å¼å
¥å
Œ
±æ ·å¼ */ |
| | | @import url('../../static/css/common.css'); |
| | | |
| | | /* 页é¢ç¹ææ ·å¼ */ |
| | | .form-label { |
| | | display: flex; |
| | | align-items: center; |
| | | width: 140rpx; |
| | | flex-shrink: 0; |
| | | } |
| | | |
| | | .label-text { |
| | | font-size: 26rpx; |
| | | color: #303133; |
| | | margin-left: 6rpx; |
| | | } |
| | | |
| | | .form-input-wrap { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | background: #f5f7fa; |
| | | border-radius: 6rpx; |
| | | padding: 0 16rpx; |
| | | height: 60rpx; |
| | | } |
| | | |
| | | .form-input { |
| | | flex: 1; |
| | | height: 60rpx; |
| | | font-size: 26rpx; |
| | | color: #303133; |
| | | } |
| | | |
| | | /* åè¡¨å¤´é¨ */ |
| | | .list-header { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | padding: 16rpx 20rpx; |
| | | background: #ffffff; |
| | | margin-top: 12rpx; |
| | | box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04); |
| | | } |
| | | |
| | | .header-left { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .header-title { |
| | | font-size: 28rpx; |
| | | color: #303133; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .count-badge { |
| | | background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| | | border-radius: 16rpx; |
| | | padding: 2rpx 12rpx; |
| | | margin-left: 12rpx; |
| | | } |
| | | |
| | | .count-text { |
| | | font-size: 20rpx; |
| | | color: #ffffff; |
| | | font-weight: 500; |
| | | } |
| | | |
| | | /* åºåå表 */ |
| | | .list-container { |
| | | padding: 0 20rpx; |
| | | } |
| | | |
| | | /* åºåå¡ç - 使ç¨card-headerèécard-top */ |
| | | .stock-card { |
| | | background: #ffffff; |
| | | border-radius: 12rpx; |
| | |
| | | } |
| | | |
| | | .card-index { |
| | | width: 36rpx; |
| | | height: 36rpx; |
| | | background: rgba(255, 255, 255, 0.3); |
| | | border-radius: 50%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | font-size: 22rpx; |
| | | color: #ffffff; |
| | | font-weight: 600; |
| | | margin-right: 12rpx; |
| | | } |
| | | |
| | | .loc-info { |
| | |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .qty-badge { |
| | | background: rgba(255, 255, 255, 0.3); |
| | | padding: 4rpx 14rpx; |
| | | border-radius: 16rpx; |
| | | } |
| | | |
| | | .qty-text { |
| | | font-size: 24rpx; |
| | | color: #ffffff; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | /* å¡çå
容 */ |
| | | .card-body { |
| | | padding: 12rpx 16rpx; |
| | | } |
| | | |
| | | .info-row { |
| | | display: flex; |
| | | margin-bottom: 8rpx; |
| | | } |
| | | |
| | | .info-row:last-child { |
| | | margin-bottom: 0; |
| | | } |
| | | |
| | | .info-col { |
| | | flex: 1; |
| | | } |
| | | |
| | | .info-col.half { |
| | | width: 50%; |
| | | flex: none; |
| | | } |
| | | |
| | | .info-label { |
| | | font-size: 20rpx; |
| | | color: #909399; |
| | | display: block; |
| | | } |
| | | |
| | | .info-value { |
| | | font-size: 24rpx; |
| | | color: #303133; |
| | | display: block; |
| | | margin-top: 2rpx; |
| | | } |
| | | |
| | | .info-value.code { |
| | |
| | | |
| | | .info-value.batch { |
| | | color: #667eea; |
| | | } |
| | | |
| | | .info-value.qty { |
| | | font-size: 28rpx; |
| | | color: #303133; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | /* ç©ºç¶æ */ |
| | | .empty-state { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | padding: 80rpx 0; |
| | | } |
| | | |
| | | .empty-text { |
| | | font-size: 26rpx; |
| | | color: #909399; |
| | | margin-top: 16rpx; |
| | | } |
| | | |
| | | .empty-hint { |
| | | font-size: 22rpx; |
| | | color: #c0c4cc; |
| | | margin-top: 8rpx; |
| | | } |
| | | |
| | | .bottom-placeholder { |
| | | height: 20rpx; |
| | | } |
| | | |
| | | /* åºé¨æä½æ */ |
| | | .bottom-bar { |
| | | position: fixed; |
| | | bottom: 0; |
| | | left: 0; |
| | | right: 0; |
| | | display: flex; |
| | | padding: 16rpx 20rpx; |
| | | background: #ffffff; |
| | | box-shadow: 0 -2rpx 12rpx rgba(0, 0, 0, 0.06); |
| | | } |
| | | |
| | | .btn-reset { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | width: 160rpx; |
| | | height: 72rpx; |
| | | background: #f5f7fa; |
| | | border-radius: 36rpx; |
| | | margin-right: 16rpx; |
| | | } |
| | | |
| | | .btn-reset .btn-text { |
| | | font-size: 26rpx; |
| | | color: #909399; |
| | | margin-left: 6rpx; |
| | | } |
| | | |
| | | .btn-submit { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | height: 72rpx; |
| | | background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| | | border-radius: 36rpx; |
| | | } |
| | | |
| | | .btn-submit .btn-text { |
| | | font-size: 28rpx; |
| | | color: #ffffff; |
| | | font-weight: 500; |
| | | margin-left: 6rpx; |
| | | } |
| | | </style> |
| New file |
| | |
| | | /** |
| | | * å
Œ
±æ ·å¼ - åºäº agv_start.vue æ½ç¦» |
| | | * éç¨äºï¼agv_start.vue, orderPakin2.vue, orderDetlList.vue çé¡µé¢ |
| | | */ |
| | | |
| | | /* ==================== 页é¢åºç¡æ ·å¼ ==================== */ |
| | | page { |
| | | height: 100%; |
| | | background: #f5f7fa; |
| | | } |
| | | |
| | | .page-container { |
| | | min-height: 100vh; |
| | | background: linear-gradient(135deg, #f5f7fa 0%, #e4e8eb 100%); |
| | | padding-bottom: 110rpx; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | /* ==================== 表ååºåæ ·å¼ ==================== */ |
| | | .form-section { |
| | | background: #ffffff; |
| | | padding: 12rpx 20rpx; |
| | | box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.06); |
| | | } |
| | | |
| | | .form-item { |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 12rpx 0; |
| | | border-bottom: 1rpx solid #f0f0f0; |
| | | } |
| | | |
| | | .form-item:last-child { |
| | | border-bottom: none; |
| | | } |
| | | |
| | | .form-label { |
| | | display: flex; |
| | | align-items: center; |
| | | flex-shrink: 0; |
| | | white-space: nowrap; |
| | | margin-right: 16rpx; |
| | | } |
| | | |
| | | .label-text { |
| | | font-size: 26rpx; |
| | | color: #303133; |
| | | margin-left: 6rpx; |
| | | } |
| | | |
| | | .form-input-wrap { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | background: #f5f7fa; |
| | | border-radius: 6rpx; |
| | | padding: 0 16rpx; |
| | | height: 60rpx; |
| | | } |
| | | |
| | | .form-input { |
| | | flex: 1; |
| | | height: 60rpx; |
| | | font-size: 26rpx; |
| | | color: #303133; |
| | | } |
| | | |
| | | /* Picker æ ·å¼ */ |
| | | .picker-full { |
| | | flex: 1; |
| | | width: 100%; |
| | | } |
| | | |
| | | .picker-value { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | height: 60rpx; |
| | | font-size: 26rpx; |
| | | color: #303133; |
| | | } |
| | | |
| | | .picker-value text { |
| | | flex: 1; |
| | | } |
| | | |
| | | /* ==================== åè¡¨å¤´é¨æ ·å¼ ==================== */ |
| | | .list-header { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | padding: 16rpx 20rpx; |
| | | background: #ffffff; |
| | | margin-top: 12rpx; |
| | | box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04); |
| | | } |
| | | |
| | | .header-left { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .header-title { |
| | | font-size: 28rpx; |
| | | color: #303133; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .count-badge { |
| | | background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| | | border-radius: 16rpx; |
| | | padding: 2rpx 12rpx; |
| | | margin-left: 12rpx; |
| | | } |
| | | |
| | | .count-text { |
| | | font-size: 20rpx; |
| | | color: #ffffff; |
| | | font-weight: 500; |
| | | } |
| | | |
| | | /* ==================== ååå¡çæ ·å¼ ==================== */ |
| | | .list-container { |
| | | padding: 0 20rpx; |
| | | } |
| | | |
| | | .mat-card { |
| | | background: #ffffff; |
| | | border-radius: 12rpx; |
| | | margin-top: 12rpx; |
| | | box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05); |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .card-top { |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 14rpx 16rpx; |
| | | background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| | | } |
| | | |
| | | .card-index { |
| | | width: 36rpx; |
| | | height: 36rpx; |
| | | background: rgba(255, 255, 255, 0.25); |
| | | border-radius: 50%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | font-size: 22rpx; |
| | | color: #ffffff; |
| | | font-weight: 600; |
| | | margin-right: 12rpx; |
| | | } |
| | | |
| | | .mat-code-wrap { |
| | | flex: 1; |
| | | } |
| | | |
| | | .mat-code { |
| | | font-size: 26rpx; |
| | | color: #ffffff; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .qty-badge { |
| | | background: rgba(255, 255, 255, 0.3); |
| | | padding: 4rpx 14rpx; |
| | | border-radius: 16rpx; |
| | | } |
| | | |
| | | .qty-text { |
| | | font-size: 24rpx; |
| | | color: #ffffff; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | /* ==================== å¡çå
å®¹æ ·å¼ ==================== */ |
| | | .card-content { |
| | | padding: 12rpx 16rpx; |
| | | } |
| | | |
| | | .info-row { |
| | | display: flex; |
| | | margin-bottom: 8rpx; |
| | | } |
| | | |
| | | .info-row:last-child { |
| | | margin-bottom: 0; |
| | | } |
| | | |
| | | .info-col { |
| | | flex: 1; |
| | | } |
| | | |
| | | .info-col.half { |
| | | width: 50%; |
| | | flex: none; |
| | | } |
| | | |
| | | .info-label { |
| | | font-size: 20rpx; |
| | | color: #909399; |
| | | display: block; |
| | | } |
| | | |
| | | .info-value { |
| | | font-size: 24rpx; |
| | | color: #303133; |
| | | display: block; |
| | | margin-top: 2rpx; |
| | | } |
| | | |
| | | .info-value.highlight { |
| | | color: #667eea; |
| | | font-weight: 500; |
| | | } |
| | | |
| | | .info-value.qty { |
| | | font-size: 28rpx; |
| | | color: #303133; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | /* ==================== å¡çæä½æé®æ ·å¼ ==================== */ |
| | | .card-actions { |
| | | display: flex; |
| | | border-top: 1rpx solid #f0f0f0; |
| | | } |
| | | |
| | | .action-btn { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | padding: 14rpx 0; |
| | | } |
| | | |
| | | .edit-btn { |
| | | border-right: 1rpx solid #f0f0f0; |
| | | } |
| | | |
| | | .action-text { |
| | | font-size: 24rpx; |
| | | color: #667eea; |
| | | margin-left: 6rpx; |
| | | } |
| | | |
| | | .delete-text { |
| | | color: #f56c6c; |
| | | } |
| | | |
| | | /* ==================== ç©ºç¶ææ ·å¼ ==================== */ |
| | | .empty-state { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | padding: 80rpx 0; |
| | | } |
| | | |
| | | .empty-text { |
| | | font-size: 26rpx; |
| | | color: #909399; |
| | | margin-top: 16rpx; |
| | | } |
| | | |
| | | .empty-hint { |
| | | font-size: 22rpx; |
| | | color: #c0c4cc; |
| | | margin-top: 8rpx; |
| | | } |
| | | |
| | | .bottom-placeholder { |
| | | height: 20rpx; |
| | | } |
| | | |
| | | /* ==================== åºé¨æä½æ æ ·å¼ ==================== */ |
| | | .bottom-bar { |
| | | position: fixed; |
| | | bottom: 0; |
| | | left: 0; |
| | | right: 0; |
| | | display: flex; |
| | | padding: 16rpx 20rpx; |
| | | background: #ffffff; |
| | | box-shadow: 0 -2rpx 12rpx rgba(0, 0, 0, 0.06); |
| | | } |
| | | |
| | | .btn-reset { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | width: 160rpx; |
| | | height: 72rpx; |
| | | background: #f5f7fa; |
| | | border-radius: 36rpx; |
| | | margin-right: 16rpx; |
| | | } |
| | | |
| | | .btn-reset .btn-text { |
| | | font-size: 26rpx; |
| | | color: #909399; |
| | | margin-left: 6rpx; |
| | | } |
| | | |
| | | .btn-submit { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | height: 72rpx; |
| | | background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| | | border-radius: 36rpx; |
| | | } |
| | | |
| | | .btn-submit .btn-text { |
| | | font-size: 28rpx; |
| | | color: #ffffff; |
| | | font-weight: 500; |
| | | margin-left: 6rpx; |
| | | } |
| | | |
| | | .btn-disabled { |
| | | background: #c0c4cc; |
| | | opacity: 0.6; |
| | | } |
| | | |
| | | /* ==================== å¼¹çªæ ·å¼ ==================== */ |
| | | .popup-card { |
| | | width: 600rpx; |
| | | background: #ffffff; |
| | | border-radius: 16rpx; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .popup-header { |
| | | padding: 24rpx; |
| | | text-align: center; |
| | | border-bottom: 1rpx solid #f0f0f0; |
| | | background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| | | } |
| | | |
| | | .popup-title { |
| | | font-size: 30rpx; |
| | | color: #ffffff; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .popup-body { |
| | | padding: 24rpx; |
| | | } |
| | | |
| | | .popup-row { |
| | | display: flex; |
| | | align-items: center; |
| | | margin-bottom: 20rpx; |
| | | height: 70rpx; |
| | | } |
| | | |
| | | .popup-row:last-child { |
| | | margin-bottom: 0; |
| | | } |
| | | |
| | | .popup-label { |
| | | width: 80rpx; |
| | | font-size: 26rpx; |
| | | color: #606266; |
| | | flex-shrink: 0; |
| | | } |
| | | |
| | | .popup-value { |
| | | flex: 1; |
| | | height: 70rpx; |
| | | background: #f5f7fa; |
| | | border-radius: 8rpx; |
| | | padding: 0 16rpx; |
| | | font-size: 26rpx; |
| | | color: #303133; |
| | | display: flex; |
| | | align-items: center; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .popup-value.disabled { |
| | | color: #909399; |
| | | background: #f0f0f0; |
| | | } |
| | | |
| | | .popup-value.input { |
| | | padding: 0 16rpx; |
| | | } |
| | | |
| | | .popup-value.number { |
| | | justify-content: center; |
| | | background: transparent; |
| | | padding: 0; |
| | | } |
| | | |
| | | .popup-footer { |
| | | display: flex; |
| | | border-top: 1rpx solid #f0f0f0; |
| | | } |
| | | |
| | | .popup-btn { |
| | | flex: 1; |
| | | height: 90rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | font-size: 28rpx; |
| | | } |
| | | |
| | | .popup-btn.cancel { |
| | | color: #909399; |
| | | border-right: 1rpx solid #f0f0f0; |
| | | } |
| | | |
| | | .popup-btn.confirm { |
| | | color: #667eea; |
| | | font-weight: 600; |
| | | } |