<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">
|
<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.outBatchNo }}
|
</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.netWeight }}
|
</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.grossWeight }}
|
</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.trayWeight }}
|
</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.value5 }}
|
</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.netWeight }}
|
</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.value7 }}
|
</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>
|
<!-- </scroll-view>
|
</view>
|
</u-modal> -->
|
<!-- 连接和打印状态指示器 -->
|
<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>
|
</view>
|
</template>
|
<script>
|
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: '' // 错误信息
|
};
|
},
|
onLoad() {
|
this.getlist()
|
// 初始化SDK
|
jcapi.initSDK()
|
// 监听页码回调
|
jcapi.didReadPrintCountInfo(function(r) {
|
console.log(r)
|
})
|
|
// 监听错误回调
|
jcapi.didReadPrintErrorInfo((r) => {
|
console.log(r)
|
if (r.code == 23) {
|
// 打印机断开连接
|
this.connectedDevice = null
|
uni.showToast({
|
icon: 'none',
|
title: '打印机连接已断开,请重新连接',
|
duration: 2 * 1000
|
})
|
} else {
|
uni.showToast({
|
icon: 'none',
|
title: JSON.stringify(r),
|
duration: 2 * 1000
|
})
|
}
|
})
|
},
|
methods: {
|
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.workReporting
|
.getWorkshopOrder({
|
current: this.pageNum,
|
size: this.pageSize
|
})
|
.then((res) => {
|
this.list = res.data.records;
|
this.total = res.data.total;
|
if (this.pageSize >= this.total) {
|
this.status = "nomore";
|
} else {
|
this.status = "loadmore";
|
}
|
});
|
},
|
search(value) {
|
if (value) {
|
this.list = [];
|
this.pageSize = 10;
|
this.$u.api.workReporting
|
.getWorkshopOrder({
|
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() {
|
console.log('disconnected1111111111111')
|
if (!this.connectedDevice) {
|
this.connectionStatus = 'disconnected';
|
return false;
|
}
|
console.log('disconnected2222222222')
|
|
// 设置为连接中状态
|
this.connectionStatus = 'connecting';
|
console.log('disconnected33333333333')
|
|
// 增强连接状态检测
|
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];
|
}
|
|
this.printQueue.push(...items);
|
// 如果不在打印中,则开始处理队列
|
if (!this.printing) {
|
this.processPrintQueue();
|
}
|
},
|
|
// 处理打印队列
|
async processPrintQueue() {
|
while (this.printQueue.length > 0) {
|
console.log('111111111111111', this.printQueue.length)
|
|
// 检查连接状态
|
console.log('12222222222222222')
|
const isConnected = await this.checkBluetoothConnection();
|
console.log('isConnected',isConnected)
|
if (!isConnected) {
|
// 如果未连接,显示蓝牙连接对话框
|
this.searchDevice();
|
// 不是直接return,而是等待用户连接后再继续处理
|
return;
|
}
|
|
this.printing = true;
|
this.printStatus = 'printing';
|
|
// 取出队列中的第一个任务
|
const item = this.printQueue.shift();
|
console.log('打印的任务',item)
|
|
try {
|
// 执行打印
|
await this.printQrCode(item);
|
|
// 打印成功后继续处理下一个
|
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;
|
|
// 记录失败的任务,不重新添加到队列
|
this.failedPrintJobs = this.failedPrintJobs || [];
|
this.failedPrintJobs.push(item);
|
|
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);
|
}
|
}
|
});
|
},
|
|
// 打印全部信息
|
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() {
|
|
},
|
//打印二维码
|
async printQrCode(item) {
|
return new Promise(async (resolve, reject) => {
|
console.log('item de shuju ', item)
|
// const params = {
|
// rwMatlBindId: item.id
|
// };
|
try {
|
let res = {
|
data: {
|
ht:'1',
|
lj:'1',
|
ljms:'1',
|
fh:'1',
|
scdt:'1',
|
scph:'1',
|
fhdw:'1',
|
shdw:'1',
|
}}
|
// let res = await this.$u.api.dailyPaper.zongjianLabelInfo(params)
|
if (!res.data) {
|
this.$refs.uToast.show({
|
title: '未查询到该标签信息!',
|
type: 'warning '
|
})
|
reject(new Error('未查询到该标签信息'));
|
return
|
}
|
|
// 从API响应中提取所需数据
|
const {
|
ht,
|
lj,
|
ljms,
|
fh,
|
scdt,
|
scph,
|
fhdw,
|
shdw
|
} = res.data
|
|
// 初始化画板
|
jcapi.initDrawingBoard({
|
width: 70,
|
height: 49,
|
rotate: 90
|
});
|
|
// 绘制二维码
|
const qrContent =
|
`ht:${ht}\nlj:${lj}\nljms:${ljms}\nfh:${fh}\nscdt:${scdt}\nscph:${scph}\nfhdw:${fhdw}\nshdw:${shdw}`;
|
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, 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(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()
|
console.log('打印的数据',imageJsonObj)
|
|
// 设置打印任务
|
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) => {
|
console.log("打印计数回调:", printResult);
|
// 恢复原始回调
|
jcapi.didReadPrintCountInfo(originalPrintCountCallback);
|
// 结束当前打印任务
|
// 解析Promise表示打印完成
|
resolve();
|
};
|
// 设置临时回调
|
jcapi.didReadPrintCountInfo(tempPrintCountCallback);
|
|
// 添加打印超时处理
|
const printTimeout = setTimeout(() => {
|
jcapi.didReadPrintCountInfo(originalPrintCountCallback);
|
reject(new Error('打印超时未响应'));
|
}, 10000);
|
|
jcapi.printData(imageJsonObj, {
|
"printQuantity": 1,
|
}, function(r) {
|
if (r.code != 0) {
|
console.log("打印失败", r);
|
// 恢复原始回调
|
jcapi.didReadPrintCountInfo(originalPrintCountCallback);
|
// 结束当前打印任务
|
reject(new Error(r.msg || '打印失败'));
|
}
|
// ��印数据发送成功后等待打印计数回调确认实际打印完成
|
|
})
|
} else {
|
console.log("设置打印任务失败", r)
|
reject(new Error(r.msg || '设置打印任务失败'));
|
}
|
})
|
} catch (error) {
|
console.log(error)
|
reject(error);
|
}
|
});
|
},
|
tapQuery(item) {
|
this.maskShow = false
|
// 连接打印机
|
let _this = this;
|
console.log(item)
|
|
// 设置为连接中状态
|
this.connectionStatus = 'connecting';
|
|
jcapi.openPrinterByDevice({
|
address: item.address,
|
name: item.name,
|
deviceType: 0 // 设备类型:0-蓝牙,1-网络
|
}, function(r) {
|
if (r.code == 0) {
|
_this.connectedDevice = item
|
_this.connectionStatus = 'connected';
|
uni.showToast({
|
title: "连接成功",
|
duration: 1500
|
})
|
// 开始处理打印队列
|
console.log('打印队列',_this.printQueue)
|
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]
|
|
// 触发上一页 upData 函数(并携带参数)
|
prevPage.$vm.setNo(no)
|
|
// 返回上一页
|
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-search {
|
padding: 40rpx 30rpx 20rpx 30rpx;
|
}
|
|
.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;
|
}
|
|
.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-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-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 ._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-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-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 .s1 {
|
color: #d35651;
|
}
|
}
|
}
|
}
|
|
.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;
|
}
|
|
/* 模态框内容区域 */
|
.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-name {
|
font-size: 28rpx;
|
font-weight: 500;
|
color: #333333;
|
margin-bottom: 10rpx;
|
display: flex;
|
justify-content: space-between;
|
}
|
|
/* UUID文本样式 */
|
.device-uuid {
|
font-size: 24rpx;
|
color: #666666;
|
word-break: break-all;
|
}
|
|
/* 模态框标题 */
|
.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;
|
}
|
|
.status-indicator {
|
padding: 8rpx 16rpx;
|
font-size: 24rpx;
|
text-align: center;
|
color: #fff;
|
background-color: #666;
|
|
&.connected {
|
background-color: #07c160;
|
}
|
|
&.connecting {
|
background-color: #ff976a;
|
}
|
|
&.disconnected {
|
background-color: #f53f3f;
|
}
|
|
.print-status {
|
margin-left: 10rpx;
|
font-size: 22rpx;
|
}
|
}
|
</style>
|