|  |  | 
 |  |  | <template> | 
 |  |  |   <view class="page"> | 
 |  |  |     <view class="finishProductIn-locno-bg" /> | 
 |  |  |     <u-navbar | 
 |  |  |       title="核磅记录" | 
 |  |  |       :background="background" | 
 |  |  |       :border-bottom="false" | 
 |  |  |       :title-bold="true" | 
 |  |  |       title-color="#000" | 
 |  |  |       back-icon-color="#000" | 
 |  |  |     > | 
 |  |  |       <view class="navbar-right" slot="right" @click="goPrintAll"> | 
 |  |  |         全部打印 | 
 |  |  |       </view> | 
 |  |  |     </u-navbar> | 
 |  |  |     <view class="wrap"> | 
 |  |  |       <!-- 连接和打印状态指示器 --> | 
 |  |  |       <view | 
 |  |  |         class="status-indicator" | 
 |  |  |         :class="{ | 
 |  |  |     <view class="page"> | 
 |  |  |         <view class="finishProductIn-locno-bg" /> | 
 |  |  |         <u-navbar title="核磅记录" :background="background" :border-bottom="false" :title-bold="true" title-color="#000" | 
 |  |  |             back-icon-color="#000"> | 
 |  |  |             <view class="navbar-right" slot="right" @click="goPrintAll"> | 
 |  |  |                 全部打印 | 
 |  |  |             </view> | 
 |  |  |         </u-navbar> | 
 |  |  |         <view class="wrap"> | 
 |  |  |             <!-- 连接和打印状态指示器 --> | 
 |  |  |             <view class="status-indicator" :class="{ | 
 |  |  |           connected: connectionStatus === 'connected', | 
 |  |  |           connecting: connectionStatus === 'connecting', | 
 |  |  |           disconnected: connectionStatus === 'disconnected', | 
 |  |  |         }" | 
 |  |  |       > | 
 |  |  |         <text class="status-text">{{ getConnectionStatusText() }}</text> | 
 |  |  |         <text class="print-status" v-if="printStatus !== 'idle'" | 
 |  |  |           >- {{ getPrintStatusText() }}</text | 
 |  |  |         > | 
 |  |  |       </view> | 
 |  |  |       <scroll-view | 
 |  |  |         class="finishProductIn-locno-scroll-list" | 
 |  |  |         scroll-y="true" | 
 |  |  |         @scrolltolower="getmoreList()" | 
 |  |  |       > | 
 |  |  |         <u-cell-group | 
 |  |  |           class="finishProductIn-locno-scroll-list-group" | 
 |  |  |           :border="false" | 
 |  |  |         > | 
 |  |  |           <view | 
 |  |  |             class="content" | 
 |  |  |             v-for="(item, index) in list" | 
 |  |  |             :key="item.locNo" | 
 |  |  |             :index="index" | 
 |  |  |             @click="selectNo(item)" | 
 |  |  |           > | 
 |  |  |             <view class="content-header"> | 
 |  |  |               <view class="content-header-title">{{ index + 1 }}</view> | 
 |  |  |             </view> | 
 |  |  |             <view class="content-body"> | 
 |  |  |               <view class="row-list"> | 
 |  |  |                 <view class="_label"> | 
 |  |  |                   <view class="_label-icon-1"> </view> | 
 |  |  |                   <view class="_label-name">批次号:</view> | 
 |  |  |                 </view> | 
 |  |  |                 <view class="_content"> | 
 |  |  |                   {{ item.batchNo }} | 
 |  |  |                 </view> | 
 |  |  |               </view> | 
 |  |  |               <view class="row-list"> | 
 |  |  |                 <view class="_label"> | 
 |  |  |                   <view class="_label-icon-2"> </view> | 
 |  |  |                   <view class="_label-name">产品描述:</view> | 
 |  |  |                 </view> | 
 |  |  |                 <view class="_content"> | 
 |  |  |                   {{ item.partDescription }} | 
 |  |  |                 </view> | 
 |  |  |               </view> | 
 |  |  |               <view class="row-list"> | 
 |  |  |                 <view class="_label"> | 
 |  |  |                   <view class="_label-icon-3"> </view> | 
 |  |  |                   <view class="_label-name">零件号:</view> | 
 |  |  |                 </view> | 
 |  |  |                 <view class="_content"> | 
 |  |  |                   {{ item.partNo }} | 
 |  |  |                 </view> | 
 |  |  |               </view> | 
 |  |  |               <view class="row-list"> | 
 |  |  |                 <view class="_label"> | 
 |  |  |                   <view class="_label-icon-1"> </view> | 
 |  |  |                   <view class="_label-name">毛重:</view> | 
 |  |  |                 </view> | 
 |  |  |                 <view class="_content"> | 
 |  |  |                   {{ item.newGrossWeight }} | 
 |  |  |                 </view> | 
 |  |  |               </view> | 
 |  |  |               <view class="row-list"> | 
 |  |  |                 <view class="_label"> | 
 |  |  |                   <view class="_label-icon-2"> </view> | 
 |  |  |                   <view class="_label-name">盘重:</view> | 
 |  |  |                 </view> | 
 |  |  |                 <view class="_content"> | 
 |  |  |                   {{ item.newWeight }} | 
 |  |  |                 </view> | 
 |  |  |               </view> | 
 |  |  |               <view class="row-list"> | 
 |  |  |                 <view class="_label"> | 
 |  |  |                   <view class="_label-icon-3"> </view> | 
 |  |  |                   <view class="_label-name">净重:</view> | 
 |  |  |                 </view> | 
 |  |  |                 <view class="_content"> | 
 |  |  |                   {{ item.newNetWeight }} | 
 |  |  |                 </view> | 
 |  |  |               </view> | 
 |  |  |               <view class="row-list"> | 
 |  |  |                 <view class="_label"> | 
 |  |  |                   <view class="_label-icon-1"> </view> | 
 |  |  |                   <view class="_label-name">核磅重量:</view> | 
 |  |  |                 </view> | 
 |  |  |                 <view class="_content"> | 
 |  |  |                   {{ item.verificationWeight }} | 
 |  |  |                 </view> | 
 |  |  |               </view> | 
 |  |  |               <view class="row-list"> | 
 |  |  |                 <view class="_label"> | 
 |  |  |                   <view class="_label-icon-2"> </view> | 
 |  |  |                   <view class="_label-name">叉车盘重:</view> | 
 |  |  |                 </view> | 
 |  |  |                 <view class="_content"> | 
 |  |  |                   {{ item.forkliftWeight }} | 
 |  |  |                 </view> | 
 |  |  |               </view> | 
 |  |  |             </view> | 
 |  |  |           </view> | 
 |  |  |         </u-cell-group> | 
 |  |  |         <view class="loadmore" @click="getmoreList()"> | 
 |  |  |           <u-loadmore | 
 |  |  |             :status="status" | 
 |  |  |             :load-text="loadText" | 
 |  |  |             @loadmore="getmoreList()" | 
 |  |  |           /> | 
 |  |  |         </view> | 
 |  |  |       </scroll-view> | 
 |  |  |     </view> | 
 |  |  |     <u-toast ref="uToast" /> | 
 |  |  |     <u-modal v-model="maskShow" title="" :show-confirm-button="false"> | 
 |  |  |       <view @touchmove.stop.prevent="moveHandle" @click="maskclose"> | 
 |  |  |         <scroll-view | 
 |  |  |           class="uni-scroll_box" | 
 |  |  |           scroll-y | 
 |  |  |           @touchmove.stop.prevent="moveHandle" | 
 |  |  |           @click.stop="moveHandle" | 
 |  |  |         > | 
 |  |  |           <view class="modal-title">选择蓝牙设备</view> | 
 |  |  |           <view v-if="listDevice.length === 0" class="empty-tip">暂无设备</view> | 
 |  |  |           <view | 
 |  |  |             v-for="(item, index) in listDevice" | 
 |  |  |             :key="index" | 
 |  |  |             @click="tapQuery(item)" | 
 |  |  |             class="device-item" | 
 |  |  |           > | 
 |  |  |             <view class="device-name"> | 
 |  |  |               <text>名称:</text> | 
 |  |  |               <text>{{ item.name || "未知设备" }}</text> | 
 |  |  |             </view> | 
 |  |  |             <view class="device-uuid"> | 
 |  |  |               <text>UUID:</text> | 
 |  |  |               <text>{{ item.address || "无地址" }}</text> | 
 |  |  |             </view> | 
 |  |  |           </view> | 
 |  |  |         </scroll-view> | 
 |  |  |       </view> | 
 |  |  |     </u-modal> | 
 |  |  |   </view> | 
 |  |  |         }"> | 
 |  |  |                 <text class="status-text">{{ getConnectionStatusText() }}</text> | 
 |  |  |                 <text class="print-status" v-if="printStatus !== 'idle'">- {{ getPrintStatusText() }}</text> | 
 |  |  |             </view> | 
 |  |  |             <scroll-view class="finishProductIn-locno-scroll-list" scroll-y="true" @scrolltolower="getmoreList()"> | 
 |  |  |                 <u-cell-group class="finishProductIn-locno-scroll-list-group" :border="false"> | 
 |  |  |                     <view class="content" v-for="(item, index) in list" :key="item.locNo" :index="index" | 
 |  |  |                         @click="selectNo(item)"> | 
 |  |  |                         <view class="content-header"> | 
 |  |  |                             <view class="content-header-title">{{ index + 1 }}</view> | 
 |  |  |                         </view> | 
 |  |  |                         <view class="content-body"> | 
 |  |  |                             <view class="row-list"> | 
 |  |  |                                 <view class="_label"> | 
 |  |  |                                     <view class="_label-icon-1"> </view> | 
 |  |  |                                     <view class="_label-name">批次号:</view> | 
 |  |  |                                 </view> | 
 |  |  |                                 <view class="_content"> | 
 |  |  |                                     {{ item.batchNo }} | 
 |  |  |                                 </view> | 
 |  |  |                             </view> | 
 |  |  |                             <view class="row-list"> | 
 |  |  |                                 <view class="_label"> | 
 |  |  |                                     <view class="_label-icon-2"> </view> | 
 |  |  |                                     <view class="_label-name">产品描述:</view> | 
 |  |  |                                 </view> | 
 |  |  |                                 <view class="_content"> | 
 |  |  |                                     {{ item.partDescription }} | 
 |  |  |                                 </view> | 
 |  |  |                             </view> | 
 |  |  |                             <view class="row-list"> | 
 |  |  |                                 <view class="_label"> | 
 |  |  |                                     <view class="_label-icon-3"> </view> | 
 |  |  |                                     <view class="_label-name">零件号:</view> | 
 |  |  |                                 </view> | 
 |  |  |                                 <view class="_content"> | 
 |  |  |                                     {{ item.partNo }} | 
 |  |  |                                 </view> | 
 |  |  |                             </view> | 
 |  |  |                             <view class="row-list"> | 
 |  |  |                                 <view class="_label"> | 
 |  |  |                                     <view class="_label-icon-1"> </view> | 
 |  |  |                                     <view class="_label-name">毛重:</view> | 
 |  |  |                                 </view> | 
 |  |  |                                 <view class="_content"> | 
 |  |  |                                     {{ item.newGrossWeight }} | 
 |  |  |                                 </view> | 
 |  |  |                             </view> | 
 |  |  |                             <view class="row-list"> | 
 |  |  |                                 <view class="_label"> | 
 |  |  |                                     <view class="_label-icon-2"> </view> | 
 |  |  |                                     <view class="_label-name">盘重:</view> | 
 |  |  |                                 </view> | 
 |  |  |                                 <view class="_content"> | 
 |  |  |                                     {{ item.newWeight }} | 
 |  |  |                                 </view> | 
 |  |  |                             </view> | 
 |  |  |                             <view class="row-list"> | 
 |  |  |                                 <view class="_label"> | 
 |  |  |                                     <view class="_label-icon-3"> </view> | 
 |  |  |                                     <view class="_label-name">净重:</view> | 
 |  |  |                                 </view> | 
 |  |  |                                 <view class="_content"> | 
 |  |  |                                     {{ item.newNetWeight }} | 
 |  |  |                                 </view> | 
 |  |  |                             </view> | 
 |  |  |                             <view class="row-list"> | 
 |  |  |                                 <view class="_label"> | 
 |  |  |                                     <view class="_label-icon-1"> </view> | 
 |  |  |                                     <view class="_label-name">核磅重量:</view> | 
 |  |  |                                 </view> | 
 |  |  |                                 <view class="_content"> | 
 |  |  |                                     {{ item.verificationWeight }} | 
 |  |  |                                 </view> | 
 |  |  |                             </view> | 
 |  |  |                             <view class="row-list"> | 
 |  |  |                                 <view class="_label"> | 
 |  |  |                                     <view class="_label-icon-2"> </view> | 
 |  |  |                                     <view class="_label-name">叉车盘重:</view> | 
 |  |  |                                 </view> | 
 |  |  |                                 <view class="_content"> | 
 |  |  |                                     {{ item.forkliftWeight }} | 
 |  |  |                                 </view> | 
 |  |  |                             </view> | 
 |  |  |                         </view> | 
 |  |  |                     </view> | 
 |  |  |                 </u-cell-group> | 
 |  |  |                 <view class="loadmore" @click="getmoreList()"> | 
 |  |  |                     <u-loadmore :status="status" :load-text="loadText" @loadmore="getmoreList()" /> | 
 |  |  |                 </view> | 
 |  |  |             </scroll-view> | 
 |  |  |         </view> | 
 |  |  |         <u-toast ref="uToast" /> | 
 |  |  |         <u-modal v-model="maskShow" title="" :show-confirm-button="false"> | 
 |  |  |             <view @touchmove.stop.prevent="moveHandle" @click="maskclose"> | 
 |  |  |                 <scroll-view class="uni-scroll_box" scroll-y @touchmove.stop.prevent="moveHandle" | 
 |  |  |                     @click.stop="moveHandle"> | 
 |  |  |                     <view class="modal-title">选择蓝牙设备</view> | 
 |  |  |                     <view v-if="listDevice.length === 0" class="empty-tip">暂无设备</view> | 
 |  |  |                     <view v-for="(item, index) in listDevice" :key="index" @click="tapQuery(item)" class="device-item"> | 
 |  |  |                         <view class="device-name"> | 
 |  |  |                             <text>名称:</text> | 
 |  |  |                             <text>{{ item.name || "未知设备" }}</text> | 
 |  |  |                         </view> | 
 |  |  |                         <view class="device-uuid"> | 
 |  |  |                             <text>UUID:</text> | 
 |  |  |                             <text>{{ item.address || "无地址" }}</text> | 
 |  |  |                         </view> | 
 |  |  |                     </view> | 
 |  |  |                 </scroll-view> | 
 |  |  |             </view> | 
 |  |  |         </u-modal> | 
 |  |  |     </view> | 
 |  |  | </template> | 
 |  |  | <script> | 
 |  |  | import content_bg from "@/static/custom/finishProductIn/locNoBg.png"; | 
 |  |  | const jcapi = uni.requireNativePlugin("JCSDK-JCApiModule"); | 
 |  |  |     import content_bg from "@/static/custom/finishProductIn/locNoBg.png"; | 
 |  |  |     const jcapi = uni.requireNativePlugin("JCSDK-JCApiModule"); | 
 |  |  |  | 
 |  |  | // 二维码类型 | 
 |  |  | const QrCodeType = { | 
 |  |  |   QrCode: 31, | 
 |  |  |   PDF417: 32, | 
 |  |  |   DataMatrix: 33, | 
 |  |  |   AZTEC: 34, | 
 |  |  | }; | 
 |  |  | // 线条类型 | 
 |  |  | const LineType = { | 
 |  |  |   Solid: 1, // 实线 | 
 |  |  |   Dotted: 2, // 虚线(默认虚实1:1相间) | 
 |  |  | }; | 
 |  |  | // 换行方式 | 
 |  |  | const LineModeType = { | 
 |  |  |   Justified: 1, // 宽高固定,内容自适应(字号/字间距/行间距按比例缩放) | 
 |  |  |   AutoHeight: 2, // 宽度固定,高度自适应 | 
 |  |  |   Fixed: 4, // 宽高固定,超出部分裁剪 | 
 |  |  |   Adapt: 6, // 宽高固定,内容超过时预设宽高自动缩小 | 
 |  |  | }; | 
 |  |  | export default { | 
 |  |  |   data() { | 
 |  |  |     return { | 
 |  |  |       background: { | 
 |  |  |         backgroundImage: `url(${content_bg})`, | 
 |  |  |         backgroundAttachment: "fixed", | 
 |  |  |         backgroundSize: "100% auto", | 
 |  |  |         backgroundRepeat: "no-repeat", | 
 |  |  |       }, | 
 |  |  |       keywords: "", | 
 |  |  |       list: [], | 
 |  |  |       total: 0, | 
 |  |  |       pageNum: 1, | 
 |  |  |       pageSize: 10, | 
 |  |  |       status: "loading", | 
 |  |  |       loadText: { | 
 |  |  |         loadmore: "加载更多...", | 
 |  |  |         loading: "努力加载中...", | 
 |  |  |         nomore: "没有更多了", | 
 |  |  |       }, | 
 |  |  |       maskShow: false, | 
 |  |  |       listDevice: [], //蓝牙设备数据 | 
 |  |  |       printQueue: [], // 打印队列 | 
 |  |  |       printing: false, // 是否正在打印 | 
 |  |  |       printDensity: 3, // 默认打印浓度 | 
 |  |  |       labelType: 1, // 默认标签类型 | 
 |  |  |       // 1:间隙纸 | 
 |  |  |       // 2:黑标纸 | 
 |  |  |       // 3:连续纸 | 
 |  |  |       // 4:定孔纸 | 
 |  |  |       // 5:透明纸 | 
 |  |  |       printMode: 2, // 默认打印模式 | 
 |  |  |       //    1:热敏 | 
 |  |  |       //     2:热转印 | 
 |  |  |       connectedDevice: null, // 已连接的打印机 | 
 |  |  |       connectionStatus: "disconnected", // 连接状态: disconnected, connecting, connected | 
 |  |  |       printStatus: "idle", // 打印状态: idle, printing, error | 
 |  |  |       errorMessage: "", // 错误信息 | 
 |  |  |       verificationNo: "", | 
 |  |  |       failedPrintJobs: [], | 
 |  |  |     }; | 
 |  |  |   }, | 
 |  |  |   onLoad(options) { | 
 |  |  |     this.verificationNo = JSON.parse( | 
 |  |  |       decodeURIComponent(options.verificationNo) | 
 |  |  |     ); | 
 |  |  |     this.getlist(); | 
 |  |  |     // 初始化SDK | 
 |  |  |     jcapi.initSDK(); | 
 |  |  |     // 二维码类型 | 
 |  |  |     const QrCodeType = { | 
 |  |  |         QrCode: 31, | 
 |  |  |         PDF417: 32, | 
 |  |  |         DataMatrix: 33, | 
 |  |  |         AZTEC: 34, | 
 |  |  |     }; | 
 |  |  |     // 线条类型 | 
 |  |  |     const LineType = { | 
 |  |  |         Solid: 1, // 实线 | 
 |  |  |         Dotted: 2, // 虚线(默认虚实1:1相间) | 
 |  |  |     }; | 
 |  |  |     // 换行方式 | 
 |  |  |     const LineModeType = { | 
 |  |  |         Justified: 1, // 宽高固定,内容自适应(字号/字间距/行间距按比例缩放) | 
 |  |  |         AutoHeight: 2, // 宽度固定,高度自适应 | 
 |  |  |         Fixed: 4, // 宽高固定,超出部分裁剪 | 
 |  |  |         Adapt: 6, // 宽高固定,内容超过时预设宽高自动缩小 | 
 |  |  |     }; | 
 |  |  |     export default { | 
 |  |  |         data() { | 
 |  |  |             return { | 
 |  |  |                 background: { | 
 |  |  |                     backgroundImage: `url(${content_bg})`, | 
 |  |  |                     backgroundAttachment: "fixed", | 
 |  |  |                     backgroundSize: "100% auto", | 
 |  |  |                     backgroundRepeat: "no-repeat", | 
 |  |  |                 }, | 
 |  |  |                 keywords: "", | 
 |  |  |                 list: [], | 
 |  |  |                 total: 0, | 
 |  |  |                 pageNum: 1, | 
 |  |  |                 pageSize: 10, | 
 |  |  |                 status: "loading", | 
 |  |  |                 loadText: { | 
 |  |  |                     loadmore: "加载更多...", | 
 |  |  |                     loading: "努力加载中...", | 
 |  |  |                     nomore: "没有更多了", | 
 |  |  |                 }, | 
 |  |  |                 maskShow: false, | 
 |  |  |                 listDevice: [], //蓝牙设备数据 | 
 |  |  |                 printQueue: [], // 打印队列 | 
 |  |  |                 printing: false, // 是否正在打印 | 
 |  |  |                 printDensity: 3, // 默认打印浓度 | 
 |  |  |                 labelType: 1, // 默认标签类型 | 
 |  |  |                 // 1:间隙纸 | 
 |  |  |                 // 2:黑标纸 | 
 |  |  |                 // 3:连续纸 | 
 |  |  |                 // 4:定孔纸 | 
 |  |  |                 // 5:透明纸 | 
 |  |  |                 printMode: 2, // 默认打印模式 | 
 |  |  |                 //    1:热敏 | 
 |  |  |                 //     2:热转印 | 
 |  |  |                 connectedDevice: null, // 已连接的打印机 | 
 |  |  |                 connectionStatus: "disconnected", // 连接状态: disconnected, connecting, connected | 
 |  |  |                 printStatus: "idle", // 打印状态: idle, printing, error | 
 |  |  |                 errorMessage: "", // 错误信息 | 
 |  |  |                 verificationNo: "", | 
 |  |  |                 failedPrintJobs: [], | 
 |  |  |             }; | 
 |  |  |         }, | 
 |  |  |         onLoad(options) { | 
 |  |  |             this.verificationNo = JSON.parse( | 
 |  |  |                 decodeURIComponent(options.verificationNo) | 
 |  |  |             ); | 
 |  |  |             this.getlist(); | 
 |  |  |             // 初始化SDK | 
 |  |  |             jcapi.initSDK(); | 
 |  |  |  | 
 |  |  |     // 尝试恢复之前的蓝牙连接状态 | 
 |  |  |     this.restoreBluetoothConnection(); | 
 |  |  |             // 尝试恢复之前的蓝牙连接状态 | 
 |  |  |             this.restoreBluetoothConnection(); | 
 |  |  |  | 
 |  |  |     // 监听页码回调 | 
 |  |  |     jcapi.didReadPrintCountInfo(function (r) { | 
 |  |  |       console.log("页码", r); | 
 |  |  |     }); | 
 |  |  |             // 监听页码回调 | 
 |  |  |             jcapi.didReadPrintCountInfo(function(r) { | 
 |  |  |                 console.log("页码", r); | 
 |  |  |             }); | 
 |  |  |  | 
 |  |  |     // 监听错误回调 | 
 |  |  |     jcapi.didReadPrintErrorInfo((r) => { | 
 |  |  |       console.log("错误", r); | 
 |  |  |       if (r.code == 23) { | 
 |  |  |         // 打印机断开连接 | 
 |  |  |         this.connectedDevice = null; | 
 |  |  |         // 清除本地存储的连接信息 | 
 |  |  |         uni.removeStorageSync("bluetoothConnection"); | 
 |  |  |         uni.showToast({ | 
 |  |  |           icon: "none", | 
 |  |  |           title: "打印机连接已断开,请重新连接", | 
 |  |  |           duration: 2 * 1000, | 
 |  |  |         }); | 
 |  |  |       } else { | 
 |  |  |         uni.showToast({ | 
 |  |  |           icon: "none", | 
 |  |  |           title: JSON.stringify(r), | 
 |  |  |           duration: 2 * 1000, | 
 |  |  |         }); | 
 |  |  |       } | 
 |  |  |     }); | 
 |  |  |   }, | 
 |  |  |   methods: { | 
 |  |  |     restoreBluetoothConnection() { | 
 |  |  |       try { | 
 |  |  |         // 从本地存储获取之前保存的连接信息 | 
 |  |  |         const savedConnection = uni.getStorageSync("bluetoothConnection"); | 
 |  |  |         if (savedConnection && savedConnection.address) { | 
 |  |  |           console.log("尝试恢复蓝牙连接:", savedConnection); | 
 |  |  |           // 设置为连接中状态 | 
 |  |  |           this.connectionStatus = "connecting"; | 
 |  |  |             // 监听错误回调 | 
 |  |  |             jcapi.didReadPrintErrorInfo((r) => { | 
 |  |  |                 console.log("错误", r); | 
 |  |  |                 if (r.code == 23) { | 
 |  |  |                     // 打印机断开连接 | 
 |  |  |                     this.connectedDevice = null; | 
 |  |  |                     // 清除本地存储的连接信息 | 
 |  |  |                     uni.removeStorageSync("bluetoothConnection"); | 
 |  |  |                     uni.showToast({ | 
 |  |  |                         icon: "none", | 
 |  |  |                         title: "打印机连接已断开,请重新连接", | 
 |  |  |                         duration: 2 * 1000, | 
 |  |  |                     }); | 
 |  |  |                 } else { | 
 |  |  |                     uni.showToast({ | 
 |  |  |                         icon: "none", | 
 |  |  |                         title: JSON.stringify(r), | 
 |  |  |                         duration: 2 * 1000, | 
 |  |  |                     }); | 
 |  |  |                 } | 
 |  |  |             }); | 
 |  |  |         }, | 
 |  |  |         methods: { | 
 |  |  |             restoreBluetoothConnection() { | 
 |  |  |                 try { | 
 |  |  |                     // 从本地存储获取之前保存的连接信息 | 
 |  |  |                     const savedConnection = uni.getStorageSync("bluetoothConnection"); | 
 |  |  |                     if (savedConnection && savedConnection.address) { | 
 |  |  |                         console.log("尝试恢复蓝牙连接:", savedConnection); | 
 |  |  |                         // 设置为连接中状态 | 
 |  |  |                         this.connectionStatus = "connecting"; | 
 |  |  |  | 
 |  |  |           // 尝试重新连接 | 
 |  |  |           jcapi.openPrinterByDevice( | 
 |  |  |             { | 
 |  |  |               address: savedConnection.address, | 
 |  |  |               name: savedConnection.name, | 
 |  |  |               deviceType: 0, // 设备类型:0-蓝牙,1-网络 | 
 |  |  |             }, | 
 |  |  |             (r) => { | 
 |  |  |               if (r.code == 0) { | 
 |  |  |                 this.connectedDevice = savedConnection; | 
 |  |  |                 this.connectionStatus = "connected"; | 
 |  |  |                 console.log("蓝牙连接已恢复"); | 
 |  |  |               } else { | 
 |  |  |                 this.connectionStatus = "disconnected"; | 
 |  |  |                 // 如果重连失败,清除保存的连接信息 | 
 |  |  |                 uni.removeStorageSync("bluetoothConnection"); | 
 |  |  |                 console.log("蓝牙重连失败:", r); | 
 |  |  |               } | 
 |  |  |             } | 
 |  |  |           ); | 
 |  |  |         } | 
 |  |  |       } catch (e) { | 
 |  |  |         console.error("恢复蓝牙连接失败:", e); | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |     getmoreList() { | 
 |  |  |       if (this.pageSize >= this.total) { | 
 |  |  |         this.status = "nomore"; | 
 |  |  |         return; | 
 |  |  |       } | 
 |  |  |       this.status = "loading"; | 
 |  |  |       setTimeout(() => { | 
 |  |  |         this.pageSize += this.pageSize; | 
 |  |  |         this.getlist(); | 
 |  |  |       }, 1000); | 
 |  |  |     }, | 
 |  |  |     getlist() { | 
 |  |  |       this.$u.api.NuclearScaleEntry.queryPacking({ | 
 |  |  |         current: this.pageNum, | 
 |  |  |         size: this.pageSize, | 
 |  |  |         verificationNo: this.verificationNo, | 
 |  |  |       }).then((res) => { | 
 |  |  |         this.list = res.data; | 
 |  |  |         this.total = res.data.length; | 
 |  |  |         if (this.pageSize >= this.total) { | 
 |  |  |           this.status = "nomore"; | 
 |  |  |         } else { | 
 |  |  |           this.status = "loadmore"; | 
 |  |  |         } | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |     search(value) { | 
 |  |  |       if (value) { | 
 |  |  |         this.list = []; | 
 |  |  |         this.pageSize = 10; | 
 |  |  |         this.$u.api.NuclearScaleEntry.queryPacking({ | 
 |  |  |           current: this.pageNum, | 
 |  |  |           size: this.pageSize, | 
 |  |  |           moNo: value, | 
 |  |  |         }).then((res) => { | 
 |  |  |           this.list = res.data.records; | 
 |  |  |           this.total = res.data.total; | 
 |  |  |           if (this.pageSize >= this.total) { | 
 |  |  |             this.status = "nomore"; | 
 |  |  |           } else { | 
 |  |  |             this.status = "loadmore"; | 
 |  |  |           } | 
 |  |  |         }); | 
 |  |  |       } else { | 
 |  |  |         this.getlist(); | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |     // 检查蓝牙连接状态 | 
 |  |  |     async checkBluetoothConnection() { | 
 |  |  |       if (!this.connectedDevice) { | 
 |  |  |         this.connectionStatus = "disconnected"; | 
 |  |  |         return false; | 
 |  |  |       } | 
 |  |  |                         // 尝试重新连接 | 
 |  |  |                         jcapi.openPrinterByDevice({ | 
 |  |  |                                 address: savedConnection.address, | 
 |  |  |                                 name: savedConnection.name, | 
 |  |  |                                 deviceType: 0, // 设备类型:0-蓝牙,1-网络 | 
 |  |  |                             }, | 
 |  |  |                             (r) => { | 
 |  |  |                                 if (r.code == 0) { | 
 |  |  |                                     this.connectedDevice = savedConnection; | 
 |  |  |                                     this.connectionStatus = "connected"; | 
 |  |  |                                     console.log("蓝牙连接已恢复"); | 
 |  |  |                                 } else { | 
 |  |  |                                     this.connectionStatus = "disconnected"; | 
 |  |  |                                     // 如果重连失败,清除保存的连接信息 | 
 |  |  |                                     uni.removeStorageSync("bluetoothConnection"); | 
 |  |  |                                     console.log("蓝牙重连失败:", r); | 
 |  |  |                                 } | 
 |  |  |                             } | 
 |  |  |                         ); | 
 |  |  |                     } | 
 |  |  |                 } catch (e) { | 
 |  |  |                     console.error("恢复蓝牙连接失败:", e); | 
 |  |  |                 } | 
 |  |  |             }, | 
 |  |  |             getmoreList() { | 
 |  |  |                 if (this.pageSize >= this.total) { | 
 |  |  |                     this.status = "nomore"; | 
 |  |  |                     return; | 
 |  |  |                 } | 
 |  |  |                 this.status = "loading"; | 
 |  |  |                 setTimeout(() => { | 
 |  |  |                     this.pageSize += this.pageSize; | 
 |  |  |                     this.getlist(); | 
 |  |  |                 }, 1000); | 
 |  |  |             }, | 
 |  |  |             getlist() { | 
 |  |  |                 this.$u.api.NuclearScaleEntry.queryPacking({ | 
 |  |  |                     current: this.pageNum, | 
 |  |  |                     size: this.pageSize, | 
 |  |  |                     verificationNo: this.verificationNo, | 
 |  |  |                 }).then((res) => { | 
 |  |  |                     this.list = res.data; | 
 |  |  |                     this.total = res.data.length; | 
 |  |  |                     if (this.pageSize >= this.total) { | 
 |  |  |                         this.status = "nomore"; | 
 |  |  |                     } else { | 
 |  |  |                         this.status = "loadmore"; | 
 |  |  |                     } | 
 |  |  |                 }); | 
 |  |  |             }, | 
 |  |  |             search(value) { | 
 |  |  |                 if (value) { | 
 |  |  |                     this.list = []; | 
 |  |  |                     this.pageSize = 10; | 
 |  |  |                     this.$u.api.NuclearScaleEntry.queryPacking({ | 
 |  |  |                         current: this.pageNum, | 
 |  |  |                         size: this.pageSize, | 
 |  |  |                         moNo: value, | 
 |  |  |                     }).then((res) => { | 
 |  |  |                         this.list = res.data.records; | 
 |  |  |                         this.total = res.data.total; | 
 |  |  |                         if (this.pageSize >= this.total) { | 
 |  |  |                             this.status = "nomore"; | 
 |  |  |                         } else { | 
 |  |  |                             this.status = "loadmore"; | 
 |  |  |                         } | 
 |  |  |                     }); | 
 |  |  |                 } else { | 
 |  |  |                     this.getlist(); | 
 |  |  |                 } | 
 |  |  |             }, | 
 |  |  |             // 检查蓝牙连接状态 | 
 |  |  |             async checkBluetoothConnection() { | 
 |  |  |                 if (!this.connectedDevice) { | 
 |  |  |                     this.connectionStatus = "disconnected"; | 
 |  |  |                     return false; | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |       // 设置为连接中状态 | 
 |  |  |       this.connectionStatus = "connecting"; | 
 |  |  |                 // 设置为连接中状态 | 
 |  |  |                 this.connectionStatus = "connecting"; | 
 |  |  |  | 
 |  |  |       // 增强连接状态检测 | 
 |  |  |       return new Promise((resolve) => { | 
 |  |  |         // 简化连接状态检测,直接使用已记录的连接状态 | 
 |  |  |         if (this.connectedDevice) { | 
 |  |  |           this.connectionStatus = "connected"; | 
 |  |  |           resolve(true); | 
 |  |  |         } else { | 
 |  |  |           this.connectionStatus = "disconnected"; | 
 |  |  |           uni.showToast({ | 
 |  |  |             icon: "none", | 
 |  |  |             title: "打印机未连接,请先连接", | 
 |  |  |             duration: 2000, | 
 |  |  |           }); | 
 |  |  |           resolve(false); | 
 |  |  |         } | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |                 // 增强连接状态检测 | 
 |  |  |                 return new Promise((resolve) => { | 
 |  |  |                     // 简化连接状态检测,直接使用已记录的连接状态 | 
 |  |  |                     if (this.connectedDevice) { | 
 |  |  |                         this.connectionStatus = "connected"; | 
 |  |  |                         resolve(true); | 
 |  |  |                     } else { | 
 |  |  |                         this.connectionStatus = "disconnected"; | 
 |  |  |                         uni.showToast({ | 
 |  |  |                             icon: "none", | 
 |  |  |                             title: "打印机未连接,请先连接", | 
 |  |  |                             duration: 2000, | 
 |  |  |                         }); | 
 |  |  |                         resolve(false); | 
 |  |  |                     } | 
 |  |  |                 }); | 
 |  |  |             }, | 
 |  |  |  | 
 |  |  |     // 添加到打印队列 | 
 |  |  |     addToPrintQueue(items) { | 
 |  |  |       if (!Array.isArray(items)) { | 
 |  |  |         items = [items]; | 
 |  |  |       } | 
 |  |  |             // 添加到打印队列 | 
 |  |  |             addToPrintQueue(items) { | 
 |  |  |                 if (!Array.isArray(items)) { | 
 |  |  |                     items = [items]; | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |       this.printQueue.push(...items); | 
 |  |  |       // 如果不在打印中,则开始处理队列 | 
 |  |  |       if (!this.printing) { | 
 |  |  |         this.processPrintQueue(); | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |                 this.printQueue.push(...items); | 
 |  |  |                 // 如果不在打印中,则开始处理队列 | 
 |  |  |                 if (!this.printing) { | 
 |  |  |                     this.processPrintQueue(); | 
 |  |  |                 } | 
 |  |  |             }, | 
 |  |  |  | 
 |  |  |     // 处理打印队列 | 
 |  |  |     async processPrintQueue() { | 
 |  |  |       while (this.printQueue.length > 0) { | 
 |  |  |         // 检查连接状态 | 
 |  |  |         const isConnected = await this.checkBluetoothConnection(); | 
 |  |  |         if (!isConnected) { | 
 |  |  |           // 如果未连接,显示蓝牙连接对话框 | 
 |  |  |           this.searchDevice(); | 
 |  |  |           // 不是直接return,而是等待用户连接后再继续处理 | 
 |  |  |           return; | 
 |  |  |         } | 
 |  |  |             // 处理打印队列 | 
 |  |  |             async processPrintQueue() { | 
 |  |  |                 while (this.printQueue.length > 0) { | 
 |  |  |                     // 检查连接状态 | 
 |  |  |                     const isConnected = await this.checkBluetoothConnection(); | 
 |  |  |                     if (!isConnected) { | 
 |  |  |                         // 如果未连接,显示蓝牙连接对话框 | 
 |  |  |                         this.searchDevice(); | 
 |  |  |                         // 不是直接return,而是等待用户连接后再继续处理 | 
 |  |  |                         return; | 
 |  |  |                     } | 
 |  |  |  | 
 |  |  |         this.printing = true; | 
 |  |  |         this.printStatus = "printing"; | 
 |  |  |                     this.printing = true; | 
 |  |  |                     this.printStatus = "printing"; | 
 |  |  |  | 
 |  |  |         // 取出队列中的第一个任务 | 
 |  |  |         const item = this.printQueue.shift(); | 
 |  |  |                     // 取出队列中的第一个任务 | 
 |  |  |                     const item = this.printQueue.shift(); | 
 |  |  |  | 
 |  |  |         try { | 
 |  |  |           // 执行打印 | 
 |  |  |           await this.printQrCode(item); | 
 |  |  |                     try { | 
 |  |  |                         // 执行打印 | 
 |  |  |                         await this.printQrCode(item); | 
 |  |  |  | 
 |  |  |           // 打印成功后继续处理下一个 | 
 |  |  |           uni.showToast({ | 
 |  |  |             title: "打印成功", | 
 |  |  |             icon: "success", | 
 |  |  |             duration: 1000, | 
 |  |  |           }); | 
 |  |  |                         // 打印成功后继续处理下一个 | 
 |  |  |                         uni.showToast({ | 
 |  |  |                             title: "打印成功", | 
 |  |  |                             icon: "success", | 
 |  |  |                             duration: 1000, | 
 |  |  |                         }); | 
 |  |  |  | 
 |  |  |           // 短暂延迟,避免打印机缓存溢出 | 
 |  |  |           await new Promise((resolve) => setTimeout(resolve, 1000)); | 
 |  |  |         } catch (error) { | 
 |  |  |           console.error("打印出错:", error); | 
 |  |  |           this.printStatus = "error"; | 
 |  |  |           this.errorMessage = error.message || "打印时发生未知错误"; | 
 |  |  |           this.printing = false; | 
 |  |  |                         // 短暂延迟,避免打印机缓存溢出 | 
 |  |  |                         await new Promise((resolve) => setTimeout(resolve, 1000)); | 
 |  |  |                     } catch (error) { | 
 |  |  |                         console.error("打印出错:", error); | 
 |  |  |                         this.printStatus = "error"; | 
 |  |  |                         this.errorMessage = error.message || "打印时发生未知错误"; | 
 |  |  |                         this.printing = false; | 
 |  |  |  | 
 |  |  |           // 记录失败的任务,不重新添加到队列 | 
 |  |  |           this.failedPrintJobs = this.failedPrintJobs || []; | 
 |  |  |           this.failedPrintJobs.push(item); | 
 |  |  |                         // 记录失败的任务,不重新添加到队列 | 
 |  |  |                         this.failedPrintJobs = this.failedPrintJobs || []; | 
 |  |  |                         this.failedPrintJobs.push(item); | 
 |  |  |  | 
 |  |  |           uni.showToast({ | 
 |  |  |             title: `打印失败: ${this.errorMessage}`, | 
 |  |  |             icon: "none", | 
 |  |  |             duration: 2000, | 
 |  |  |           }); | 
 |  |  |           // 继续处理下一个任务 | 
 |  |  |           continue; | 
 |  |  |         } | 
 |  |  |       } | 
 |  |  |                         uni.showToast({ | 
 |  |  |                             title: `打印失败: ${this.errorMessage}`, | 
 |  |  |                             icon: "none", | 
 |  |  |                             duration: 2000, | 
 |  |  |                         }); | 
 |  |  |                         // 继续处理下一个任务 | 
 |  |  |                         continue; | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |       this.printing = false; | 
 |  |  |       this.printStatus = "idle"; | 
 |  |  |     }, | 
 |  |  |     // 打印单个信息 | 
 |  |  |     selectNo(item) { | 
 |  |  |       let that = this; | 
 |  |  |       uni.showModal({ | 
 |  |  |         title: "提示", | 
 |  |  |         content: "是否打印装箱单?", | 
 |  |  |         showCancel: true, | 
 |  |  |         success: async function (res) { | 
 |  |  |           if (res.confirm) { | 
 |  |  |             // 添加到打印队列 | 
 |  |  |             that.addToPrintQueue(item); | 
 |  |  |           } | 
 |  |  |         }, | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |                 this.printing = false; | 
 |  |  |                 this.printStatus = "idle"; | 
 |  |  |             }, | 
 |  |  |             // 打印单个信息 | 
 |  |  |             selectNo(item) { | 
 |  |  |                 let that = this; | 
 |  |  |                 uni.showModal({ | 
 |  |  |                     title: "提示", | 
 |  |  |                     content: "是否打印装箱单?", | 
 |  |  |                     showCancel: true, | 
 |  |  |                     success: async function(res) { | 
 |  |  |                         if (res.confirm) { | 
 |  |  |                             // 添加到打印队列 | 
 |  |  |                             that.addToPrintQueue(item); | 
 |  |  |                         } | 
 |  |  |                     }, | 
 |  |  |                 }); | 
 |  |  |             }, | 
 |  |  |  | 
 |  |  |     // 打印全部信息 | 
 |  |  |     goPrintAll() { | 
 |  |  |       let that = this; | 
 |  |  |       uni.showModal({ | 
 |  |  |         title: "提示", | 
 |  |  |         content: `是否打印全部${that.list.length}条装箱单?`, | 
 |  |  |         showCancel: true, | 
 |  |  |         success: async function (res) { | 
 |  |  |           if (res.confirm) { | 
 |  |  |             // 添加到打印队列 | 
 |  |  |             that.addToPrintQueue([...that.list]); | 
 |  |  |           } | 
 |  |  |         }, | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |     moveHandle() {}, | 
 |  |  |     maskclose() {}, | 
 |  |  |     //打印二维码 | 
 |  |  |     printQrCode(item) { | 
 |  |  |       return new Promise(async (resolve, reject) => { | 
 |  |  |         // const params = { | 
 |  |  |         //     rwMatlBindId: item.id | 
 |  |  |         // }; | 
 |  |  |         try { | 
 |  |  |           // let res = await this.$u.api.dailyPaper.zongjianLabelInfo(params) | 
 |  |  |           if (!item) { | 
 |  |  |             this.$refs.uToast.show({ | 
 |  |  |               title: "未查询到该标签信息!", | 
 |  |  |               type: "warning ", | 
 |  |  |             }); | 
 |  |  |             reject(new Error("未查询到该标签信息")); | 
 |  |  |             return; | 
 |  |  |           } | 
 |  |  |             // 打印全部信息 | 
 |  |  |             goPrintAll() { | 
 |  |  |                 let that = this; | 
 |  |  |                 uni.showModal({ | 
 |  |  |                     title: "提示", | 
 |  |  |                     content: `是否打印全部${that.list.length}条装箱单?`, | 
 |  |  |                     showCancel: true, | 
 |  |  |                     success: async function(res) { | 
 |  |  |                         if (res.confirm) { | 
 |  |  |                             // 添加到打印队列 | 
 |  |  |                             that.addToPrintQueue([...that.list]); | 
 |  |  |                         } | 
 |  |  |                     }, | 
 |  |  |                 }); | 
 |  |  |             }, | 
 |  |  |             moveHandle() {}, | 
 |  |  |             maskclose() {}, | 
 |  |  |             //打印二维码 | 
 |  |  |             printQrCode(item) { | 
 |  |  |                 return new Promise(async (resolve, reject) => { | 
 |  |  |                     // const params = { | 
 |  |  |                     //     rwMatlBindId: item.id | 
 |  |  |                     // }; | 
 |  |  |                     try { | 
 |  |  |                         // let res = await this.$u.api.dailyPaper.zongjianLabelInfo(params) | 
 |  |  |                         if (!item) { | 
 |  |  |                             this.$refs.uToast.show({ | 
 |  |  |                                 title: "未查询到该标签信息!", | 
 |  |  |                                 type: "warning ", | 
 |  |  |                             }); | 
 |  |  |                             reject(new Error("未查询到该标签信息")); | 
 |  |  |                             return; | 
 |  |  |                         } | 
 |  |  |  | 
 |  |  |           const ht = item.contractNo; | 
 |  |  |           const lj = item.partNo; | 
 |  |  |           const ljms = item.ccontrProModel; | 
 |  |  |           const fh = item.newNetWeight; | 
 |  |  |           const scdt = item.productionDate; | 
 |  |  |           const scph = item.batchNo; | 
 |  |  |           const shdw = item.customerName; | 
 |  |  |           const fhdw = "江东合金技术有限公司"; | 
 |  |  |                         const ht = item.contractNo; | 
 |  |  |                         const lj = item.partNo; | 
 |  |  |                         const ljms = item.ccontrProModel; | 
 |  |  |                         const fh = item.newNetWeight; | 
 |  |  |                         const scdt = item.productionDate; | 
 |  |  |                         const scph = item.batchNo; | 
 |  |  |                         const shdw = item.customerName; | 
 |  |  |                         const fhdw = "江东合金技术有限公司"; | 
 |  |  |  | 
 |  |  |           // 初始化画板 | 
 |  |  |           jcapi.initDrawingBoard({ | 
 |  |  |             width: 70, | 
 |  |  |             height: 49, | 
 |  |  |             rotate: 90, | 
 |  |  |           }); | 
 |  |  |                         // 初始化画板 | 
 |  |  |                         jcapi.initDrawingBoard({ | 
 |  |  |                             width: 70, | 
 |  |  |                             height: 49, | 
 |  |  |                             rotate: 90, | 
 |  |  |                         }); | 
 |  |  |  | 
 |  |  |           // 绘制二维码 | 
 |  |  |           const qrContent = { | 
 |  |  |             company: item.customerNo, | 
 |  |  |             line_no: item.lineNo, | 
 |  |  |             lot_batch_no: item.batchNo, | 
 |  |  |             order_no: item.contractNo, | 
 |  |  |             part_no: item.partNo, | 
 |  |  |             total_qty: item.newNetWeight, | 
 |  |  |             qty_arrived: item.newNetWeight, | 
 |  |  |             release_no: item.relNo, | 
 |  |  |           }; | 
 |  |  |                         // 绘制二维码 | 
 |  |  |                         const qrContent = { | 
 |  |  |                             company: item.customerNo, | 
 |  |  |                             line_no: item.lineNo, | 
 |  |  |                             lot_batch_no: item.batchNo, | 
 |  |  |                             order_no: item.contractNo, | 
 |  |  |                             part_no: item.partNo, | 
 |  |  |                             total_qty: item.newNetWeight, | 
 |  |  |                             qty_arrived: item.newNetWeight, | 
 |  |  |                             release_no: item.relNo, | 
 |  |  |                         }; | 
 |  |  |  | 
 |  |  |           jcapi.drawLabelQrCode({ | 
 |  |  |             x: 43.5, | 
 |  |  |             y: 2, | 
 |  |  |             width: 24, | 
 |  |  |             height: 24, | 
 |  |  |             value: qrContent, | 
 |  |  |             rotate: 0, | 
 |  |  |             codeType: QrCodeType.QrCode, | 
 |  |  |           }); | 
 |  |  |                         jcapi.drawLabelQrCode({ | 
 |  |  |                             x: 43.5, | 
 |  |  |                             y: 2, | 
 |  |  |                             width: 24, | 
 |  |  |                             height: 24, | 
 |  |  |                             value: qrContent, | 
 |  |  |                             rotate: 0, | 
 |  |  |                             codeType: QrCodeType.QrCode, | 
 |  |  |                         }); | 
 |  |  |  | 
 |  |  |           // 绘制横线 | 
 |  |  |           this.getDrawLabelLine(1, 1, 67, 0.5, 0, LineType.Solid); | 
 |  |  |           this.getDrawLabelLine(1, 6, 42, 0.3, 0, LineType.Solid); | 
 |  |  |           this.getDrawLabelLine(1, 11, 42, 0.3, 0, LineType.Solid); | 
 |  |  |           this.getDrawLabelLine(1, 16, 42, 0.3, 0, LineType.Solid); | 
 |  |  |           this.getDrawLabelLine(1, 21, 42, 0.3, 0, LineType.Solid); | 
 |  |  |           this.getDrawLabelLine(1, 27, 67, 0.3, 0, LineType.Solid); | 
 |  |  |           this.getDrawLabelLine(1, 32, 67, 0.3, 0, LineType.Solid); | 
 |  |  |           this.getDrawLabelLine(1, 37, 67, 0.3, 0, LineType.Solid); | 
 |  |  |           this.getDrawLabelLine(1, 42, 67, 0.3, 0, LineType.Solid); | 
 |  |  |           this.getDrawLabelLine(1, 47, 67, 0.5, 0, LineType.Solid); | 
 |  |  |                         // 绘制横线 | 
 |  |  |                         this.getDrawLabelLine(1, 1, 67, 0.5, 0, LineType.Solid); | 
 |  |  |                         this.getDrawLabelLine(1, 6, 42, 0.3, 0, LineType.Solid); | 
 |  |  |                         this.getDrawLabelLine(1, 11, 42, 0.3, 0, LineType.Solid); | 
 |  |  |                         this.getDrawLabelLine(1, 16, 42, 0.3, 0, LineType.Solid); | 
 |  |  |                         this.getDrawLabelLine(1, 23, 42, 0.3, 0, LineType.Solid); | 
 |  |  |                         this.getDrawLabelLine(1, 27.5, 67, 0.3, 0, LineType.Solid); | 
 |  |  |                         this.getDrawLabelLine(1, 32, 67, 0.3, 0, LineType.Solid); | 
 |  |  |                         this.getDrawLabelLine(1, 37, 67, 0.3, 0, LineType.Solid); | 
 |  |  |                         this.getDrawLabelLine(1, 42, 67, 0.3, 0, LineType.Solid); | 
 |  |  |                         this.getDrawLabelLine(1, 47, 67, 0.5, 0, LineType.Solid); | 
 |  |  |  | 
 |  |  |           //绘制竖线 | 
 |  |  |           this.getDrawLabelLine(1, 1, 0.5, 46, 0, LineType.Solid); // 竖线1 | 
 |  |  |           this.getDrawLabelLine(43, 1, 0.3, 26, 0, LineType.Solid); // 竖线2 | 
 |  |  |           this.getDrawLabelLine(68, 1, 0.5, 46, 0, LineType.Solid); // 竖线3 | 
 |  |  |                         //绘制竖线 | 
 |  |  |                         this.getDrawLabelLine(1, 1, 0.5, 46, 0, LineType.Solid); // 竖线1 | 
 |  |  |                         this.getDrawLabelLine(43, 1, 0.3, 26, 0, LineType.Solid); // 竖线2 | 
 |  |  |                         this.getDrawLabelLine(68, 1, 0.5, 46, 0, LineType.Solid); // 竖线3 | 
 |  |  |  | 
 |  |  |           // 绘制文本 | 
 |  |  |           this.getDrawLabelText( | 
 |  |  |             3, | 
 |  |  |             2.5, | 
 |  |  |             40, | 
 |  |  |             8, | 
 |  |  |             "中天科技装箱清单", | 
 |  |  |             2.5, | 
 |  |  |             0, | 
 |  |  |             LineModeType.AutoHeight, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             1, | 
 |  |  |             1, | 
 |  |  |             1 | 
 |  |  |           ); | 
 |  |  |           this.getDrawLabelText( | 
 |  |  |             2, | 
 |  |  |             7, | 
 |  |  |             25, | 
 |  |  |             8, | 
 |  |  |             "合同号:", | 
 |  |  |             2.5, | 
 |  |  |             0, | 
 |  |  |             LineModeType.AutoHeight, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             1, | 
 |  |  |             1 | 
 |  |  |           ); | 
 |  |  |           this.getDrawLabelText( | 
 |  |  |             2, | 
 |  |  |             12, | 
 |  |  |             25, | 
 |  |  |             8, | 
 |  |  |             "零件号:", | 
 |  |  |             2.5, | 
 |  |  |             0, | 
 |  |  |             LineModeType.AutoHeight, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             1, | 
 |  |  |             1 | 
 |  |  |           ); | 
 |  |  |           this.getDrawLabelText( | 
 |  |  |             2, | 
 |  |  |             17, | 
 |  |  |             25, | 
 |  |  |             8, | 
 |  |  |             "零件描述:", | 
 |  |  |             2.5, | 
 |  |  |             0, | 
 |  |  |             LineModeType.AutoHeight, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             1, | 
 |  |  |             1 | 
 |  |  |           ); | 
 |  |  |           this.getDrawLabelText( | 
 |  |  |             2, | 
 |  |  |             22.5, | 
 |  |  |             25, | 
 |  |  |             8, | 
 |  |  |             "发货/装箱数:", | 
 |  |  |             2.5, | 
 |  |  |             0, | 
 |  |  |             LineModeType.AutoHeight, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             1, | 
 |  |  |             1 | 
 |  |  |           ); | 
 |  |  |           this.getDrawLabelText( | 
 |  |  |             2, | 
 |  |  |             27.5, | 
 |  |  |             25, | 
 |  |  |             8, | 
 |  |  |             "生产日期:", | 
 |  |  |             2.5, | 
 |  |  |             0, | 
 |  |  |             LineModeType.AutoHeight, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             1, | 
 |  |  |             1 | 
 |  |  |           ); | 
 |  |  |           this.getDrawLabelText( | 
 |  |  |             2, | 
 |  |  |             32.5, | 
 |  |  |             25, | 
 |  |  |             8, | 
 |  |  |             "生产批号:", | 
 |  |  |             2.5, | 
 |  |  |             0, | 
 |  |  |             LineModeType.AutoHeight, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             1, | 
 |  |  |             1 | 
 |  |  |           ); | 
 |  |  |           this.getDrawLabelText( | 
 |  |  |             2, | 
 |  |  |             37.5, | 
 |  |  |             25, | 
 |  |  |             8, | 
 |  |  |             "发货单位:", | 
 |  |  |             2.5, | 
 |  |  |             0, | 
 |  |  |             LineModeType.AutoHeight, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             1, | 
 |  |  |             1 | 
 |  |  |           ); | 
 |  |  |           this.getDrawLabelText( | 
 |  |  |             2, | 
 |  |  |             42.5, | 
 |  |  |             25, | 
 |  |  |             8, | 
 |  |  |             "收货单位:", | 
 |  |  |             2.5, | 
 |  |  |             0, | 
 |  |  |             LineModeType.AutoHeight, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             1, | 
 |  |  |             1 | 
 |  |  |           ); | 
 |  |  |                         // 绘制文本 | 
 |  |  |                         this.getDrawLabelText( | 
 |  |  |                             3, | 
 |  |  |                             2.5, | 
 |  |  |                             40, | 
 |  |  |                             8, | 
 |  |  |                             "中天科技装箱清单", | 
 |  |  |                             2.5, | 
 |  |  |                             0, | 
 |  |  |                             LineModeType.AutoHeight, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             1, | 
 |  |  |                             1, | 
 |  |  |                             1 | 
 |  |  |                         ); | 
 |  |  |                         this.getDrawLabelText( | 
 |  |  |                             2, | 
 |  |  |                             7, | 
 |  |  |                             25, | 
 |  |  |                             8, | 
 |  |  |                             "合同号:", | 
 |  |  |                             2.5, | 
 |  |  |                             0, | 
 |  |  |                             LineModeType.AutoHeight, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             1, | 
 |  |  |                             1 | 
 |  |  |                         ); | 
 |  |  |                         this.getDrawLabelText( | 
 |  |  |                             2, | 
 |  |  |                             12, | 
 |  |  |                             25, | 
 |  |  |                             8, | 
 |  |  |                             "零件号:", | 
 |  |  |                             2.5, | 
 |  |  |                             0, | 
 |  |  |                             LineModeType.AutoHeight, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             1, | 
 |  |  |                             1 | 
 |  |  |                         ); | 
 |  |  |                         this.getDrawLabelText( | 
 |  |  |                             2, | 
 |  |  |                             17, | 
 |  |  |                             25, | 
 |  |  |                             8, | 
 |  |  |                             "零件描述:", | 
 |  |  |                             2.5, | 
 |  |  |                             0, | 
 |  |  |                             LineModeType.AutoHeight, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             1, | 
 |  |  |                             1 | 
 |  |  |                         ); | 
 |  |  |                         this.getDrawLabelText( | 
 |  |  |                             2, | 
 |  |  |                             23.5, | 
 |  |  |                             25, | 
 |  |  |                             8, | 
 |  |  |                             "发货/装箱数:", | 
 |  |  |                             2.5, | 
 |  |  |                             0, | 
 |  |  |                             LineModeType.AutoHeight, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             1, | 
 |  |  |                             1 | 
 |  |  |                         ); | 
 |  |  |                         this.getDrawLabelText( | 
 |  |  |                             2, | 
 |  |  |                             28.5, | 
 |  |  |                             25, | 
 |  |  |                             8, | 
 |  |  |                             "生产日期:", | 
 |  |  |                             2.5, | 
 |  |  |                             0, | 
 |  |  |                             LineModeType.AutoHeight, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             1, | 
 |  |  |                             1 | 
 |  |  |                         ); | 
 |  |  |                         this.getDrawLabelText( | 
 |  |  |                             2, | 
 |  |  |                             32.5, | 
 |  |  |                             25, | 
 |  |  |                             8, | 
 |  |  |                             "生产批号:", | 
 |  |  |                             2.5, | 
 |  |  |                             0, | 
 |  |  |                             LineModeType.AutoHeight, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             1, | 
 |  |  |                             1 | 
 |  |  |                         ); | 
 |  |  |                         this.getDrawLabelText( | 
 |  |  |                             2, | 
 |  |  |                             37.5, | 
 |  |  |                             25, | 
 |  |  |                             8, | 
 |  |  |                             "发货单位:", | 
 |  |  |                             2.5, | 
 |  |  |                             0, | 
 |  |  |                             LineModeType.AutoHeight, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             1, | 
 |  |  |                             1 | 
 |  |  |                         ); | 
 |  |  |                         this.getDrawLabelText( | 
 |  |  |                             2, | 
 |  |  |                             42.5, | 
 |  |  |                             25, | 
 |  |  |                             8, | 
 |  |  |                             "收货单位:", | 
 |  |  |                             2.5, | 
 |  |  |                             0, | 
 |  |  |                             LineModeType.AutoHeight, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             1, | 
 |  |  |                             1 | 
 |  |  |                         ); | 
 |  |  |  | 
 |  |  |           // 填充参数值 | 
 |  |  |           this.getDrawLabelText( | 
 |  |  |             11, | 
 |  |  |             7, | 
 |  |  |             30, | 
 |  |  |             8, | 
 |  |  |             ht, | 
 |  |  |             2.5, | 
 |  |  |             0, | 
 |  |  |             LineModeType.AutoHeight, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             1 | 
 |  |  |           ); | 
 |  |  |           this.getDrawLabelText( | 
 |  |  |             11, | 
 |  |  |             12, | 
 |  |  |             32, | 
 |  |  |             8, | 
 |  |  |             lj, | 
 |  |  |             2.5, | 
 |  |  |             0, | 
 |  |  |             LineModeType.AutoHeight, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             1 | 
 |  |  |           ); | 
 |  |  |           this.getDrawLabelText( | 
 |  |  |             14, | 
 |  |  |             17, | 
 |  |  |             30, | 
 |  |  |             8, | 
 |  |  |             ljms, | 
 |  |  |             2.5, | 
 |  |  |             0, | 
 |  |  |             LineModeType.AutoHeight, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             1 | 
 |  |  |           ); | 
 |  |  |           this.getDrawLabelText( | 
 |  |  |             17, | 
 |  |  |             22.5, | 
 |  |  |             27, | 
 |  |  |             8, | 
 |  |  |             fh, | 
 |  |  |             2.5, | 
 |  |  |             0, | 
 |  |  |             LineModeType.AutoHeight, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             1 | 
 |  |  |           ); | 
 |  |  |           this.getDrawLabelText( | 
 |  |  |             14, | 
 |  |  |             27.5, | 
 |  |  |             55, | 
 |  |  |             8, | 
 |  |  |             scdt, | 
 |  |  |             2.5, | 
 |  |  |             0, | 
 |  |  |             LineModeType.AutoHeight, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             1 | 
 |  |  |           ); | 
 |  |  |           this.getDrawLabelText( | 
 |  |  |             14, | 
 |  |  |             32.7, | 
 |  |  |             55, | 
 |  |  |             8, | 
 |  |  |             scph, | 
 |  |  |             2.5, | 
 |  |  |             0, | 
 |  |  |             LineModeType.AutoHeight, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             1 | 
 |  |  |           ); | 
 |  |  |           this.getDrawLabelText( | 
 |  |  |             14, | 
 |  |  |             37.5, | 
 |  |  |             55, | 
 |  |  |             8, | 
 |  |  |             fhdw, | 
 |  |  |             2.5, | 
 |  |  |             0, | 
 |  |  |             LineModeType.AutoHeight, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             1 | 
 |  |  |           ); | 
 |  |  |           this.getDrawLabelText( | 
 |  |  |             14, | 
 |  |  |             42.5, | 
 |  |  |             55, | 
 |  |  |             8, | 
 |  |  |             shdw, | 
 |  |  |             2.5, | 
 |  |  |             0, | 
 |  |  |             LineModeType.AutoHeight, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             0, | 
 |  |  |             1 | 
 |  |  |           ); | 
 |  |  |           // 生成打印数据 | 
 |  |  |           let imageJsonObj = jcapi.generateLabelJson(); | 
 |  |  |                         // 填充参数值 | 
 |  |  |                         this.getDrawLabelText( | 
 |  |  |                             11, | 
 |  |  |                             7, | 
 |  |  |                             30, | 
 |  |  |                             8, | 
 |  |  |                             ht, | 
 |  |  |                             2.5, | 
 |  |  |                             0, | 
 |  |  |                             LineModeType.AutoHeight, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             1 | 
 |  |  |                         ); | 
 |  |  |                         this.getDrawLabelText( | 
 |  |  |                             11, | 
 |  |  |                             12, | 
 |  |  |                             32, | 
 |  |  |                             8, | 
 |  |  |                             lj, | 
 |  |  |                             2.5, | 
 |  |  |                             0, | 
 |  |  |                             LineModeType.AutoHeight, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             1 | 
 |  |  |                         ); | 
 |  |  |                         this.getDrawLabelText( | 
 |  |  |                             14, | 
 |  |  |                             17, | 
 |  |  |                             30, | 
 |  |  |                             8, | 
 |  |  |                             ljms, | 
 |  |  |                             2.5, | 
 |  |  |                             0, | 
 |  |  |                             LineModeType.AutoHeight, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             1 | 
 |  |  |                         ); | 
 |  |  |                         this.getDrawLabelText( | 
 |  |  |                             17, | 
 |  |  |                             23.5, | 
 |  |  |                             27, | 
 |  |  |                             8, | 
 |  |  |                             fh, | 
 |  |  |                             2.5, | 
 |  |  |                             0, | 
 |  |  |                             LineModeType.AutoHeight, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             1 | 
 |  |  |                         ); | 
 |  |  |                         this.getDrawLabelText( | 
 |  |  |                             14, | 
 |  |  |                             28.5, | 
 |  |  |                             55, | 
 |  |  |                             8, | 
 |  |  |                             scdt, | 
 |  |  |                             2.5, | 
 |  |  |                             0, | 
 |  |  |                             LineModeType.AutoHeight, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             1 | 
 |  |  |                         ); | 
 |  |  |                         this.getDrawLabelText( | 
 |  |  |                             14, | 
 |  |  |                             32.7, | 
 |  |  |                             55, | 
 |  |  |                             8, | 
 |  |  |                             scph, | 
 |  |  |                             2.5, | 
 |  |  |                             0, | 
 |  |  |                             LineModeType.AutoHeight, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             1 | 
 |  |  |                         ); | 
 |  |  |                         this.getDrawLabelText( | 
 |  |  |                             14, | 
 |  |  |                             37.5, | 
 |  |  |                             55, | 
 |  |  |                             8, | 
 |  |  |                             fhdw, | 
 |  |  |                             2.5, | 
 |  |  |                             0, | 
 |  |  |                             LineModeType.AutoHeight, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             1 | 
 |  |  |                         ); | 
 |  |  |                         this.getDrawLabelText( | 
 |  |  |                             14, | 
 |  |  |                             42.5, | 
 |  |  |                             55, | 
 |  |  |                             8, | 
 |  |  |                             shdw, | 
 |  |  |                             2.5, | 
 |  |  |                             0, | 
 |  |  |                             LineModeType.AutoHeight, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             0, | 
 |  |  |                             1 | 
 |  |  |                         ); | 
 |  |  |                         // 生成打印数据 | 
 |  |  |                         let imageJsonObj = jcapi.generateLabelJson(); | 
 |  |  |  | 
 |  |  |           // 设置打印任务 | 
 |  |  |           jcapi.startJob( | 
 |  |  |             { | 
 |  |  |               totalCount: 1, | 
 |  |  |               density: this.printDensity, | 
 |  |  |               labelType: this.labelType, | 
 |  |  |               printMode: this.printMode, | 
 |  |  |             }, | 
 |  |  |             function (r) { | 
 |  |  |               if (r.code == 0) { | 
 |  |  |                 // 打印数据 | 
 |  |  |                 // 存储原始打印计数回调 | 
 |  |  |                 const originalPrintCountCallback = | 
 |  |  |                   jcapi.didReadPrintCountInfo._callback; | 
 |  |  |                 // 临时打印计数回调,用于确认打印完成 | 
 |  |  |                 const tempPrintCountCallback = (printResult) => { | 
 |  |  |                   // 恢复原始回调 | 
 |  |  |                   jcapi.didReadPrintCountInfo(originalPrintCountCallback); | 
 |  |  |                   // 清除打印超时 | 
 |  |  |                   clearTimeout(printTimeout); | 
 |  |  |                   // 结束当前打印任务 | 
 |  |  |                   // 解析Promise表示打印完成 | 
 |  |  |                   resolve(); | 
 |  |  |                 }; | 
 |  |  |                 // 设置临时回调 | 
 |  |  |                 jcapi.didReadPrintCountInfo(tempPrintCountCallback); | 
 |  |  |                         // 设置打印任务 | 
 |  |  |                         jcapi.startJob({ | 
 |  |  |                                 totalCount: 1, | 
 |  |  |                                 density: this.printDensity, | 
 |  |  |                                 labelType: this.labelType, | 
 |  |  |                                 printMode: this.printMode, | 
 |  |  |                             }, | 
 |  |  |                             function(r) { | 
 |  |  |                                 if (r.code == 0) { | 
 |  |  |                                     // 打印数据 | 
 |  |  |                                     // 存储原始打印计数回调 | 
 |  |  |                                     const originalPrintCountCallback = | 
 |  |  |                                         jcapi.didReadPrintCountInfo._callback; | 
 |  |  |                                     // 临时打印计数回调,用于确认打印完成 | 
 |  |  |                                     const tempPrintCountCallback = (printResult) => { | 
 |  |  |                                         // 恢复原始回调 | 
 |  |  |                                         jcapi.didReadPrintCountInfo(originalPrintCountCallback); | 
 |  |  |                                         // 清除打印超时 | 
 |  |  |                                         clearTimeout(printTimeout); | 
 |  |  |                                         // 结束当前打印任务 | 
 |  |  |                                         // 解析Promise表示打印完成 | 
 |  |  |                                         resolve(); | 
 |  |  |                                     }; | 
 |  |  |                                     // 设置临时回调 | 
 |  |  |                                     jcapi.didReadPrintCountInfo(tempPrintCountCallback); | 
 |  |  |  | 
 |  |  |                 // 添加打印超时处理 | 
 |  |  |                 const printTimeout = setTimeout(() => { | 
 |  |  |                   jcapi.didReadPrintCountInfo(originalPrintCountCallback); | 
 |  |  |                   reject(new Error("打印超时未响应")); | 
 |  |  |                 }, 20000); | 
 |  |  |                                     // 添加打印超时处理 | 
 |  |  |                                     const printTimeout = setTimeout(() => { | 
 |  |  |                                         jcapi.didReadPrintCountInfo(originalPrintCountCallback); | 
 |  |  |                                         reject(new Error("打印超时未响应")); | 
 |  |  |                                     }, 20000); | 
 |  |  |  | 
 |  |  |                 jcapi.printData( | 
 |  |  |                   imageJsonObj, | 
 |  |  |                   { | 
 |  |  |                     printQuantity: 1, | 
 |  |  |                   }, | 
 |  |  |                   function (r) { | 
 |  |  |                     if (r.code != 0) { | 
 |  |  |                       // 恢复原始回调 | 
 |  |  |                       jcapi.didReadPrintCountInfo(originalPrintCountCallback); | 
 |  |  |                       // 结束当前打印任务 | 
 |  |  |                       reject(new Error(r.msg || "打印失败")); | 
 |  |  |                     } | 
 |  |  |                     // 打印数据发送成功后等待打印计数回调确认实际打印完成 | 
 |  |  |                   } | 
 |  |  |                 ); | 
 |  |  |               } else { | 
 |  |  |                 reject(new Error(r.msg || "设置打印任务失败")); | 
 |  |  |               } | 
 |  |  |             } | 
 |  |  |           ); | 
 |  |  |         } catch (error) { | 
 |  |  |           reject(error); | 
 |  |  |         } | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |     tapQuery(item) { | 
 |  |  |       this.maskShow = false; | 
 |  |  |       // 连接打印机 | 
 |  |  |       let _this = this; | 
 |  |  |                                     jcapi.printData( | 
 |  |  |                                         imageJsonObj, { | 
 |  |  |                                             printQuantity: 1, | 
 |  |  |                                         }, | 
 |  |  |                                         function(r) { | 
 |  |  |                                             if (r.code != 0) { | 
 |  |  |                                                 // 恢复原始回调 | 
 |  |  |                                                 jcapi.didReadPrintCountInfo( | 
 |  |  |                                                     originalPrintCountCallback); | 
 |  |  |                                                 // 结束当前打印任务 | 
 |  |  |                                                 reject(new Error(r.msg || "打印失败")); | 
 |  |  |                                             } | 
 |  |  |                                             // 打印数据发送成功后等待打印计数回调确认实际打印完成 | 
 |  |  |                                         } | 
 |  |  |                                     ); | 
 |  |  |                                 } else { | 
 |  |  |                                     reject(new Error(r.msg || "设置打印任务失败")); | 
 |  |  |                                 } | 
 |  |  |                             } | 
 |  |  |                         ); | 
 |  |  |                     } catch (error) { | 
 |  |  |                         reject(error); | 
 |  |  |                     } | 
 |  |  |                 }); | 
 |  |  |             }, | 
 |  |  |             tapQuery(item) { | 
 |  |  |                 this.maskShow = false; | 
 |  |  |                 // 连接打印机 | 
 |  |  |                 let _this = this; | 
 |  |  |  | 
 |  |  |       // 设置为连接中状态 | 
 |  |  |       this.connectionStatus = "connecting"; | 
 |  |  |                 // 设置为连接中状态 | 
 |  |  |                 this.connectionStatus = "connecting"; | 
 |  |  |  | 
 |  |  |       jcapi.openPrinterByDevice( | 
 |  |  |         { | 
 |  |  |           address: item.address, | 
 |  |  |           name: item.name, | 
 |  |  |           deviceType: 0, // 设备类型:0-蓝牙,1-网络 | 
 |  |  |         }, | 
 |  |  |         function (r) { | 
 |  |  |           // 在tapQuery方法中,连接成功时添加保存连接信息的代码 | 
 |  |  |           if (r.code == 0) { | 
 |  |  |             _this.connectedDevice = item; | 
 |  |  |             _this.connectionStatus = "connected"; | 
 |  |  |             // 保存连接信息到本地存储 | 
 |  |  |             uni.setStorageSync("bluetoothConnection", item); | 
 |  |  |             uni.showToast({ | 
 |  |  |               title: "连接成功", | 
 |  |  |               duration: 1500, | 
 |  |  |             }); | 
 |  |  |             // 开始处理打印队列 | 
 |  |  |             if (_this.printQueue.length > 0) { | 
 |  |  |               _this.processPrintQueue(); | 
 |  |  |             } | 
 |  |  |           } else { | 
 |  |  |             _this.connectionStatus = "disconnected"; | 
 |  |  |             uni.showToast({ | 
 |  |  |               title: "连接失败: " + (r.msg || "未知错误"), | 
 |  |  |               icon: "none", | 
 |  |  |               duration: 2000, | 
 |  |  |             }); | 
 |  |  |           } | 
 |  |  |         } | 
 |  |  |       ); | 
 |  |  |     }, | 
 |  |  |     //打印相关 | 
 |  |  |     searchDevice() { | 
 |  |  |       let _this = this; | 
 |  |  |       uni.openBluetoothAdapter({ | 
 |  |  |         // 确认蓝牙是否打开 | 
 |  |  |         success(r) { | 
 |  |  |           uni.showLoading({ | 
 |  |  |             title: "搜索中...", | 
 |  |  |           }); | 
 |  |  |           // 未授予蓝牙相关权限和未打开手机定位会搜索不到设备 | 
 |  |  |           jcapi.getBluetoothDevices(function (r) { | 
 |  |  |             console.log("device:" + JSON.stringify(r)); | 
 |  |  |             // 搜索到设备回调 | 
 |  |  |             uni.hideLoading(); | 
 |  |  |             // 如果之前有连接的设备但不在搜索结果中,说明设备已更换 | 
 |  |  |             if ( | 
 |  |  |               _this.connectedDevice && | 
 |  |  |               !r.some((dev) => dev.address === _this.connectedDevice.address) | 
 |  |  |             ) { | 
 |  |  |               _this.connectedDevice = null; | 
 |  |  |               uni.showToast({ | 
 |  |  |                 icon: "none", | 
 |  |  |                 title: "已连接的蓝牙设备已更换,请重新选择", | 
 |  |  |                 duration: 2000, | 
 |  |  |               }); | 
 |  |  |             } | 
 |  |  |             _this.listDevice = r; | 
 |  |  |             _this.maskShow = true; | 
 |  |  |           }); | 
 |  |  |         }, | 
 |  |  |         fail(e) { | 
 |  |  |           uni.showModal({ | 
 |  |  |             title: "提示", | 
 |  |  |             content: "打开蓝牙失败,请检查蓝牙是否开启", | 
 |  |  |             showCancel: false, | 
 |  |  |           }); | 
 |  |  |           console.log("开启蓝牙设备失败" + e); | 
 |  |  |         }, | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |     // 绘制横线 | 
 |  |  |     getDrawLabelLine(x, y, width, height, rotate, lineType) { | 
 |  |  |       jcapi.drawLabelLine({ | 
 |  |  |         x: x, | 
 |  |  |         y: y, | 
 |  |  |         width: width, | 
 |  |  |         height: height, | 
 |  |  |         rotate: rotate, | 
 |  |  |         lineType: lineType, | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |     // 填冲文字标题 | 
 |  |  |     getDrawLabelText( | 
 |  |  |       x, | 
 |  |  |       y, | 
 |  |  |       width, | 
 |  |  |       height, | 
 |  |  |       value, | 
 |  |  |       fontSize, | 
 |  |  |       rotate, | 
 |  |  |       lineMode, | 
 |  |  |       lineSpace, | 
 |  |  |       letterSpace, | 
 |  |  |       textAlignHorizontal, | 
 |  |  |       textAlignVertical, | 
 |  |  |       bold | 
 |  |  |     ) { | 
 |  |  |       jcapi.drawLabelText({ | 
 |  |  |         x: x, | 
 |  |  |         y: y, | 
 |  |  |         width: width, | 
 |  |  |         height: height, | 
 |  |  |         value: value, | 
 |  |  |         fontSize: fontSize, | 
 |  |  |         rotate: rotate, | 
 |  |  |         lineMode: lineMode, | 
 |  |  |         lineSpace: lineSpace, | 
 |  |  |         letterSpace: letterSpace, | 
 |  |  |         textAlignHorizontal: textAlignHorizontal, | 
 |  |  |         textAlignVertical: textAlignVertical, | 
 |  |  |         bold: bold, | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |     getConnectionStatusText() { | 
 |  |  |       switch (this.connectionStatus) { | 
 |  |  |         case "connected": | 
 |  |  |           return "蓝牙已连接"; | 
 |  |  |         case "connecting": | 
 |  |  |           return "蓝牙连接中..."; | 
 |  |  |         default: | 
 |  |  |           return "蓝牙未连接"; | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |     getPrintStatusText() { | 
 |  |  |       switch (this.printStatus) { | 
 |  |  |         case "printing": | 
 |  |  |           const total = this.printQueue.length + 1; // 队列中剩余 + 当前正在打印 | 
 |  |  |           const current = total - this.printQueue.length; | 
 |  |  |           return `打印中(${current}/${total})`; | 
 |  |  |         case "error": | 
 |  |  |           return `打印错误: ${this.errorMessage}`; | 
 |  |  |         default: | 
 |  |  |           return "就绪"; | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |     //刷新上一个页面 | 
 |  |  |     refreshLastPage(no) { | 
 |  |  |       // 告知 A.vue 更新数据 | 
 |  |  |       // 获取页面栈 | 
 |  |  |       let pages = getCurrentPages(); | 
 |  |  |                 jcapi.openPrinterByDevice({ | 
 |  |  |                         address: item.address, | 
 |  |  |                         name: item.name, | 
 |  |  |                         deviceType: 0, // 设备类型:0-蓝牙,1-网络 | 
 |  |  |                     }, | 
 |  |  |                     function(r) { | 
 |  |  |                         // 在tapQuery方法中,连接成功时添加保存连接信息的代码 | 
 |  |  |                         if (r.code == 0) { | 
 |  |  |                             _this.connectedDevice = item; | 
 |  |  |                             _this.connectionStatus = "connected"; | 
 |  |  |                             // 保存连接信息到本地存储 | 
 |  |  |                             uni.setStorageSync("bluetoothConnection", item); | 
 |  |  |                             uni.showToast({ | 
 |  |  |                                 title: "连接成功", | 
 |  |  |                                 duration: 1500, | 
 |  |  |                             }); | 
 |  |  |                             // 开始处理打印队列 | 
 |  |  |                             if (_this.printQueue.length > 0) { | 
 |  |  |                                 _this.processPrintQueue(); | 
 |  |  |                             } | 
 |  |  |                         } else { | 
 |  |  |                             _this.connectionStatus = "disconnected"; | 
 |  |  |                             uni.showToast({ | 
 |  |  |                                 title: "连接失败: " + (r.msg || "未知错误"), | 
 |  |  |                                 icon: "none", | 
 |  |  |                                 duration: 2000, | 
 |  |  |                             }); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 ); | 
 |  |  |             }, | 
 |  |  |             //打印相关 | 
 |  |  |             searchDevice() { | 
 |  |  |                 let _this = this; | 
 |  |  |                 uni.openBluetoothAdapter({ | 
 |  |  |                     // 确认蓝牙是否打开 | 
 |  |  |                     success(r) { | 
 |  |  |                         uni.showLoading({ | 
 |  |  |                             title: "搜索中...", | 
 |  |  |                         }); | 
 |  |  |                         // 未授予蓝牙相关权限和未打开手机定位会搜索不到设备 | 
 |  |  |                         jcapi.getBluetoothDevices(function(r) { | 
 |  |  |                             console.log("device:" + JSON.stringify(r)); | 
 |  |  |                             // 搜索到设备回调 | 
 |  |  |                             uni.hideLoading(); | 
 |  |  |                             // 如果之前有连接的设备但不在搜索结果中,说明设备已更换 | 
 |  |  |                             if ( | 
 |  |  |                                 _this.connectedDevice && | 
 |  |  |                                 !r.some((dev) => dev.address === _this.connectedDevice.address) | 
 |  |  |                             ) { | 
 |  |  |                                 _this.connectedDevice = null; | 
 |  |  |                                 uni.showToast({ | 
 |  |  |                                     icon: "none", | 
 |  |  |                                     title: "已连接的蓝牙设备已更换,请重新选择", | 
 |  |  |                                     duration: 2000, | 
 |  |  |                                 }); | 
 |  |  |                             } | 
 |  |  |                             _this.listDevice = r; | 
 |  |  |                             _this.maskShow = true; | 
 |  |  |                         }); | 
 |  |  |                     }, | 
 |  |  |                     fail(e) { | 
 |  |  |                         uni.showModal({ | 
 |  |  |                             title: "提示", | 
 |  |  |                             content: "打开蓝牙失败,请检查蓝牙是否开启", | 
 |  |  |                             showCancel: false, | 
 |  |  |                         }); | 
 |  |  |                         console.log("开启蓝牙设备失败" + e); | 
 |  |  |                     }, | 
 |  |  |                 }); | 
 |  |  |             }, | 
 |  |  |             // 绘制横线 | 
 |  |  |             getDrawLabelLine(x, y, width, height, rotate, lineType) { | 
 |  |  |                 jcapi.drawLabelLine({ | 
 |  |  |                     x: x, | 
 |  |  |                     y: y, | 
 |  |  |                     width: width, | 
 |  |  |                     height: height, | 
 |  |  |                     rotate: rotate, | 
 |  |  |                     lineType: lineType, | 
 |  |  |                 }); | 
 |  |  |             }, | 
 |  |  |             // 填冲文字标题 | 
 |  |  |             getDrawLabelText( | 
 |  |  |                 x, | 
 |  |  |                 y, | 
 |  |  |                 width, | 
 |  |  |                 height, | 
 |  |  |                 value, | 
 |  |  |                 fontSize, | 
 |  |  |                 rotate, | 
 |  |  |                 lineMode, | 
 |  |  |                 lineSpace, | 
 |  |  |                 letterSpace, | 
 |  |  |                 textAlignHorizontal, | 
 |  |  |                 textAlignVertical, | 
 |  |  |                 bold | 
 |  |  |             ) { | 
 |  |  |                 jcapi.drawLabelText({ | 
 |  |  |                     x: x, | 
 |  |  |                     y: y, | 
 |  |  |                     width: width, | 
 |  |  |                     height: height, | 
 |  |  |                     value: value, | 
 |  |  |                     fontSize: fontSize, | 
 |  |  |                     rotate: rotate, | 
 |  |  |                     lineMode: lineMode, | 
 |  |  |                     lineSpace: lineSpace, | 
 |  |  |                     letterSpace: letterSpace, | 
 |  |  |                     textAlignHorizontal: textAlignHorizontal, | 
 |  |  |                     textAlignVertical: textAlignVertical, | 
 |  |  |                     bold: bold, | 
 |  |  |                 }); | 
 |  |  |             }, | 
 |  |  |             getConnectionStatusText() { | 
 |  |  |                 switch (this.connectionStatus) { | 
 |  |  |                     case "connected": | 
 |  |  |                         return "蓝牙已连接"; | 
 |  |  |                     case "connecting": | 
 |  |  |                         return "蓝牙连接中..."; | 
 |  |  |                     default: | 
 |  |  |                         return "蓝牙未连接"; | 
 |  |  |                 } | 
 |  |  |             }, | 
 |  |  |             getPrintStatusText() { | 
 |  |  |                 switch (this.printStatus) { | 
 |  |  |                     case "printing": | 
 |  |  |                         const total = this.printQueue.length + 1; // 队列中剩余 + 当前正在打印 | 
 |  |  |                         const current = total - this.printQueue.length; | 
 |  |  |                         return `打印中(${current}/${total})`; | 
 |  |  |                     case "error": | 
 |  |  |                         return `打印错误: ${this.errorMessage}`; | 
 |  |  |                     default: | 
 |  |  |                         return "就绪"; | 
 |  |  |                 } | 
 |  |  |             }, | 
 |  |  |             //刷新上一个页面 | 
 |  |  |             refreshLastPage(no) { | 
 |  |  |                 // 告知 A.vue 更新数据 | 
 |  |  |                 // 获取页面栈 | 
 |  |  |                 let pages = getCurrentPages(); | 
 |  |  |  | 
 |  |  |       // 获取上一页栈 | 
 |  |  |       let prevPage = pages[pages.length - 2]; | 
 |  |  |                 // 获取上一页栈 | 
 |  |  |                 let prevPage = pages[pages.length - 2]; | 
 |  |  |  | 
 |  |  |       // 触发上一页 upData 函数(并携带参数) | 
 |  |  |       prevPage.$vm.setNo(no); | 
 |  |  |                 // 触发上一页 upData 函数(并携带参数) | 
 |  |  |                 prevPage.$vm.setNo(no); | 
 |  |  |  | 
 |  |  |       // 返回上一页 | 
 |  |  |       uni.navigateBack({ | 
 |  |  |         delta: 1, | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |   }, | 
 |  |  | }; | 
 |  |  |                 // 返回上一页 | 
 |  |  |                 uni.navigateBack({ | 
 |  |  |                     delta: 1, | 
 |  |  |                 }); | 
 |  |  |             }, | 
 |  |  |         }, | 
 |  |  |     }; | 
 |  |  | </script> | 
 |  |  | <style lang="scss"> | 
 |  |  | .finishProductIn-locno-bg { | 
 |  |  |   background-color: #f6f9ff; | 
 |  |  |   background-image: url("~@/static/custom/finishProductIn/locNoBg.png"); | 
 |  |  |   // background: linear-gradient(180deg,rgba(206,227,254,1),rgba(206,227,254,1) 20%,rgba(206,227,254,0.5) 40%,rgba(206,227,254,0.25) 60%,rgba(206,227,254,0.08) 80%,rgba(206,227,254,0)); | 
 |  |  |   padding: 0 20rpx; | 
 |  |  |   background-attachment: fixed; | 
 |  |  |   background-size: 100% auto; | 
 |  |  |   background-repeat: no-repeat; | 
 |  |  |   position: fixed; | 
 |  |  |   top: 0; | 
 |  |  |   bottom: 0; | 
 |  |  |   width: 100%; | 
 |  |  |   z-index: -1; | 
 |  |  | } | 
 |  |  |     .finishProductIn-locno-bg { | 
 |  |  |         background-color: #f6f9ff; | 
 |  |  |         background-image: url("~@/static/custom/finishProductIn/locNoBg.png"); | 
 |  |  |         // background: linear-gradient(180deg,rgba(206,227,254,1),rgba(206,227,254,1) 20%,rgba(206,227,254,0.5) 40%,rgba(206,227,254,0.25) 60%,rgba(206,227,254,0.08) 80%,rgba(206,227,254,0)); | 
 |  |  |         padding: 0 20rpx; | 
 |  |  |         background-attachment: fixed; | 
 |  |  |         background-size: 100% auto; | 
 |  |  |         background-repeat: no-repeat; | 
 |  |  |         position: fixed; | 
 |  |  |         top: 0; | 
 |  |  |         bottom: 0; | 
 |  |  |         width: 100%; | 
 |  |  |         z-index: -1; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | .finishProductIn-locno-search { | 
 |  |  |   padding: 40rpx 30rpx 20rpx 30rpx; | 
 |  |  | } | 
 |  |  |     .finishProductIn-locno-search { | 
 |  |  |         padding: 40rpx 30rpx 20rpx 30rpx; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | .wrap .finishProductIn-locno-scroll-list { | 
 |  |  |   height: calc(100vh - var(--window-top) - var(--window-bottom) - 242rpx); | 
 |  |  |   width: 100%; | 
 |  |  | } | 
 |  |  |     .wrap .finishProductIn-locno-scroll-list { | 
 |  |  |         height: calc(100vh - var(--window-top) - var(--window-bottom) - 242rpx); | 
 |  |  |         width: 100%; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | .finishProductIn-locno-scroll-list-group { | 
 |  |  |   ::v-deep .u-cell-item-box { | 
 |  |  |     background-color: rgba(250, 252, 255, 0.36) !important; | 
 |  |  |     padding: 0rpx 30rpx; | 
 |  |  |   } | 
 |  |  |     .finishProductIn-locno-scroll-list-group { | 
 |  |  |         ::v-deep .u-cell-item-box { | 
 |  |  |             background-color: rgba(250, 252, 255, 0.36) !important; | 
 |  |  |             padding: 0rpx 30rpx; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |   .content { | 
 |  |  |     font-size: 12px; | 
 |  |  |     background-color: #ffffff; | 
 |  |  |     box-sizing: border-box; | 
 |  |  |     border-radius: 10rpx; | 
 |  |  |     margin: 0rpx 0rpx 16rpx; | 
 |  |  |     padding: 20rpx 8rpx; | 
 |  |  |     box-shadow: none; | 
 |  |  |     display: flex; | 
 |  |  |     align-items: center; | 
 |  |  |         .content { | 
 |  |  |             font-size: 12px; | 
 |  |  |             background-color: #ffffff; | 
 |  |  |             box-sizing: border-box; | 
 |  |  |             border-radius: 10rpx; | 
 |  |  |             margin: 0rpx 0rpx 16rpx; | 
 |  |  |             padding: 20rpx 8rpx; | 
 |  |  |             box-shadow: none; | 
 |  |  |             display: flex; | 
 |  |  |             align-items: center; | 
 |  |  |  | 
 |  |  |     .content-header { | 
 |  |  |       width: 40rpx; | 
 |  |  |       height: 90rpx; | 
 |  |  |       display: flex; | 
 |  |  |       align-items: center; | 
 |  |  |             .content-header { | 
 |  |  |                 width: 40rpx; | 
 |  |  |                 height: 90rpx; | 
 |  |  |                 display: flex; | 
 |  |  |                 align-items: center; | 
 |  |  |  | 
 |  |  |       .content-header-icon { | 
 |  |  |         background-image: url("~@/static/custom/moveWareHouse/header_icon.png"); | 
 |  |  |         background-size: 100% auto; | 
 |  |  |         background-repeat: no-repeat; | 
 |  |  |         height: 28rpx; | 
 |  |  |         width: 28rpx; | 
 |  |  |       } | 
 |  |  |                 .content-header-icon { | 
 |  |  |                     background-image: url("~@/static/custom/moveWareHouse/header_icon.png"); | 
 |  |  |                     background-size: 100% auto; | 
 |  |  |                     background-repeat: no-repeat; | 
 |  |  |                     height: 28rpx; | 
 |  |  |                     width: 28rpx; | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |       .content-header-title { | 
 |  |  |         margin-left: 11rpx; | 
 |  |  |         font-size: 26rpx; | 
 |  |  |         font-weight: bold; | 
 |  |  |         color: #3d52f5; | 
 |  |  |       } | 
 |  |  |     } | 
 |  |  |                 .content-header-title { | 
 |  |  |                     margin-left: 11rpx; | 
 |  |  |                     font-size: 26rpx; | 
 |  |  |                     font-weight: bold; | 
 |  |  |                     color: #3d52f5; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |     .content-body { | 
 |  |  |       flex: 1; | 
 |  |  |       background: #f5f9ff; | 
 |  |  |       border-radius: 10rpx; | 
 |  |  |       padding: 0rpx 23rpx; | 
 |  |  |             .content-body { | 
 |  |  |                 flex: 1; | 
 |  |  |                 background: #f5f9ff; | 
 |  |  |                 border-radius: 10rpx; | 
 |  |  |                 padding: 0rpx 23rpx; | 
 |  |  |  | 
 |  |  |       .row-list { | 
 |  |  |         height: 60rpx; | 
 |  |  |         display: flex; | 
 |  |  |         flex-direction: row; | 
 |  |  |         padding: 0px; | 
 |  |  |         align-items: center; | 
 |  |  |       } | 
 |  |  |                 .row-list { | 
 |  |  |                     height: 60rpx; | 
 |  |  |                     display: flex; | 
 |  |  |                     flex-direction: row; | 
 |  |  |                     padding: 0px; | 
 |  |  |                     align-items: center; | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |       .row-list ._label { | 
 |  |  |         display: flex; | 
 |  |  |         flex: 0.8; | 
 |  |  |         color: #909399; | 
 |  |  |         align-items: center; | 
 |  |  |                 .row-list ._label { | 
 |  |  |                     display: flex; | 
 |  |  |                     flex: 0.8; | 
 |  |  |                     color: #909399; | 
 |  |  |                     align-items: center; | 
 |  |  |  | 
 |  |  |         ._label-icon-1 { | 
 |  |  |           background-image: url("~@/static/custom/moveWareHouse/label-icon-1.png"); | 
 |  |  |           background-size: 100% auto; | 
 |  |  |           background-repeat: no-repeat; | 
 |  |  |           height: 26rpx; | 
 |  |  |           width: 26rpx; | 
 |  |  |         } | 
 |  |  |                     ._label-icon-1 { | 
 |  |  |                         background-image: url("~@/static/custom/moveWareHouse/label-icon-1.png"); | 
 |  |  |                         background-size: 100% auto; | 
 |  |  |                         background-repeat: no-repeat; | 
 |  |  |                         height: 26rpx; | 
 |  |  |                         width: 26rpx; | 
 |  |  |                     } | 
 |  |  |  | 
 |  |  |         ._label-icon-2 { | 
 |  |  |           background-image: url("~@/static/custom/moveWareHouse/label-icon-2.png"); | 
 |  |  |           background-size: 100% auto; | 
 |  |  |           background-repeat: no-repeat; | 
 |  |  |           height: 26rpx; | 
 |  |  |           width: 26rpx; | 
 |  |  |         } | 
 |  |  |                     ._label-icon-2 { | 
 |  |  |                         background-image: url("~@/static/custom/moveWareHouse/label-icon-2.png"); | 
 |  |  |                         background-size: 100% auto; | 
 |  |  |                         background-repeat: no-repeat; | 
 |  |  |                         height: 26rpx; | 
 |  |  |                         width: 26rpx; | 
 |  |  |                     } | 
 |  |  |  | 
 |  |  |         ._label-icon-3 { | 
 |  |  |           background-image: url("~@/static/custom/moveWareHouse/label-icon-3.png"); | 
 |  |  |           background-size: 100% auto; | 
 |  |  |           background-repeat: no-repeat; | 
 |  |  |           height: 26rpx; | 
 |  |  |           width: 26rpx; | 
 |  |  |         } | 
 |  |  |                     ._label-icon-3 { | 
 |  |  |                         background-image: url("~@/static/custom/moveWareHouse/label-icon-3.png"); | 
 |  |  |                         background-size: 100% auto; | 
 |  |  |                         background-repeat: no-repeat; | 
 |  |  |                         height: 26rpx; | 
 |  |  |                         width: 26rpx; | 
 |  |  |                     } | 
 |  |  |  | 
 |  |  |         ._label-name { | 
 |  |  |           margin-left: 11rpx; | 
 |  |  |           font-size: 26rpx; | 
 |  |  |           font-weight: 500; | 
 |  |  |           color: #666666; | 
 |  |  |         } | 
 |  |  |       } | 
 |  |  |                     ._label-name { | 
 |  |  |                         margin-left: 11rpx; | 
 |  |  |                         font-size: 26rpx; | 
 |  |  |                         font-weight: 500; | 
 |  |  |                         color: #666666; | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |       .row-list ._content { | 
 |  |  |         flex: 1.5; | 
 |  |  |         text-align: right; | 
 |  |  |         color: #909399; | 
 |  |  |         font-size: 24rpx; | 
 |  |  |       } | 
 |  |  |                 .row-list ._content { | 
 |  |  |                     flex: 1.5; | 
 |  |  |                     text-align: right; | 
 |  |  |                     color: #909399; | 
 |  |  |                     font-size: 24rpx; | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |       .row-list .s1 { | 
 |  |  |         color: #d35651; | 
 |  |  |       } | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  | } | 
 |  |  |                 .row-list .s1 { | 
 |  |  |                     color: #d35651; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | .navbar-right { | 
 |  |  |   font-weight: 500; | 
 |  |  |   font-size: 13px; | 
 |  |  |   color: #0b0b0b; | 
 |  |  |   line-height: 36rpx; | 
 |  |  |   margin-right: 32rpx; | 
 |  |  | } | 
 |  |  |     .navbar-right { | 
 |  |  |         font-weight: 500; | 
 |  |  |         font-size: 13px; | 
 |  |  |         color: #0b0b0b; | 
 |  |  |         line-height: 36rpx; | 
 |  |  |         margin-right: 32rpx; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | /* 模态框样式优化 */ | 
 |  |  | .u-modal { | 
 |  |  |   --modal-width: 85% !important; | 
 |  |  |   --modal-radius: 16rpx !important; | 
 |  |  |   --modal-bg-color: #ffffff !important; | 
 |  |  | } | 
 |  |  |     /* 模态框样式优化 */ | 
 |  |  |     .u-modal { | 
 |  |  |         --modal-width: 85% !important; | 
 |  |  |         --modal-radius: 16rpx !important; | 
 |  |  |         --modal-bg-color: #ffffff !important; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | /* 模态框内容区域 */ | 
 |  |  | .uni-scroll_box { | 
 |  |  |   height: 500rpx !important; | 
 |  |  |   padding: 20rpx; | 
 |  |  | } | 
 |  |  |     /* 模态框内容区域 */ | 
 |  |  |     .uni-scroll_box { | 
 |  |  |         height: 500rpx !important; | 
 |  |  |         padding: 20rpx; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | /* 设备列表项样式 */ | 
 |  |  | .device-item { | 
 |  |  |   background-color: #f5f9ff; | 
 |  |  |   border-radius: 12rpx; | 
 |  |  |   padding: 20rpx; | 
 |  |  |   margin-bottom: 16rpx; | 
 |  |  |   box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05); | 
 |  |  | } | 
 |  |  |     /* 设备列表项样式 */ | 
 |  |  |     .device-item { | 
 |  |  |         background-color: #f5f9ff; | 
 |  |  |         border-radius: 12rpx; | 
 |  |  |         padding: 20rpx; | 
 |  |  |         margin-bottom: 16rpx; | 
 |  |  |         box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | /* 设备名称样式 */ | 
 |  |  | .device-name { | 
 |  |  |   font-size: 28rpx; | 
 |  |  |   font-weight: 500; | 
 |  |  |   color: #333333; | 
 |  |  |   margin-bottom: 10rpx; | 
 |  |  |   display: flex; | 
 |  |  |   justify-content: space-between; | 
 |  |  | } | 
 |  |  |     /* 设备名称样式 */ | 
 |  |  |     .device-name { | 
 |  |  |         font-size: 28rpx; | 
 |  |  |         font-weight: 500; | 
 |  |  |         color: #333333; | 
 |  |  |         margin-bottom: 10rpx; | 
 |  |  |         display: flex; | 
 |  |  |         justify-content: space-between; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | /* UUID文本样式 */ | 
 |  |  | .device-uuid { | 
 |  |  |   font-size: 28rpx; | 
 |  |  |   font-weight: 500; | 
 |  |  |   color: #333333; | 
 |  |  |   margin-bottom: 10rpx; | 
 |  |  |   display: flex; | 
 |  |  |   justify-content: space-between; | 
 |  |  | } | 
 |  |  |     /* UUID文本样式 */ | 
 |  |  |     .device-uuid { | 
 |  |  |         font-size: 28rpx; | 
 |  |  |         font-weight: 500; | 
 |  |  |         color: #333333; | 
 |  |  |         margin-bottom: 10rpx; | 
 |  |  |         display: flex; | 
 |  |  |         justify-content: space-between; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | /* 模态框标题 */ | 
 |  |  | .modal-title { | 
 |  |  |   font-size: 32rpx; | 
 |  |  |   font-weight: bold; | 
 |  |  |   color: #333333; | 
 |  |  |   text-align: center; | 
 |  |  |   margin-bottom: 20rpx; | 
 |  |  |   padding-bottom: 10rpx; | 
 |  |  |   border-bottom: 1rpx solid #eeeeee; | 
 |  |  | } | 
 |  |  |     /* 模态框标题 */ | 
 |  |  |     .modal-title { | 
 |  |  |         font-size: 32rpx; | 
 |  |  |         font-weight: bold; | 
 |  |  |         color: #333333; | 
 |  |  |         text-align: center; | 
 |  |  |         margin-bottom: 20rpx; | 
 |  |  |         padding-bottom: 10rpx; | 
 |  |  |         border-bottom: 1rpx solid #eeeeee; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | /* 空状态提示 */ | 
 |  |  | .empty-tip { | 
 |  |  |   text-align: center; | 
 |  |  |   padding: 100rpx 0; | 
 |  |  |   color: #999999; | 
 |  |  |   font-size: 28rpx; | 
 |  |  | } | 
 |  |  |     /* 空状态提示 */ | 
 |  |  |     .empty-tip { | 
 |  |  |         text-align: center; | 
 |  |  |         padding: 100rpx 0; | 
 |  |  |         color: #999999; | 
 |  |  |         font-size: 28rpx; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | .status-indicator { | 
 |  |  |   padding: 8rpx 16rpx; | 
 |  |  |   font-size: 24rpx; | 
 |  |  |   text-align: center; | 
 |  |  |   color: #fff; | 
 |  |  |   background-color: #666; | 
 |  |  |     .status-indicator { | 
 |  |  |         padding: 8rpx 16rpx; | 
 |  |  |         font-size: 24rpx; | 
 |  |  |         text-align: center; | 
 |  |  |         color: #fff; | 
 |  |  |         background-color: #666; | 
 |  |  |  | 
 |  |  |   &.connected { | 
 |  |  |     background-color: #07c160; | 
 |  |  |   } | 
 |  |  |         &.connected { | 
 |  |  |             background-color: #07c160; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |   &.connecting { | 
 |  |  |     background-color: #ff976a; | 
 |  |  |   } | 
 |  |  |         &.connecting { | 
 |  |  |             background-color: #ff976a; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |   &.disconnected { | 
 |  |  |     background-color: #f53f3f; | 
 |  |  |   } | 
 |  |  |         &.disconnected { | 
 |  |  |             background-color: #f53f3f; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |   .print-status { | 
 |  |  |     margin-left: 10rpx; | 
 |  |  |     font-size: 22rpx; | 
 |  |  |   } | 
 |  |  | } | 
 |  |  |         .print-status { | 
 |  |  |             margin-left: 10rpx; | 
 |  |  |             font-size: 22rpx; | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | </style> |