UniApp 生产批次管理模块技术文档

UniApp 生产批次管理模块技术文档

1. 运行卡入站页面 (RunCardIn)

1.1 页面结构

<template><!-- 页面容器 --><view class="runCardIn" :style="{ paddingTop: padding }"><!-- 页头组件 --><pageHeader :title="$t('MENU:MES:WAP:TRACKIN')"></pageHeader><!-- 搜索输入框 --><view class="search"><input v-model="runCardId" type="search" :placeholder="$t('PMSG012005')"@confirm="getLotDataByLotId"/></view><!-- 主体内容 --><view class="main" v-if="isShowItem"><!-- 信息展示区 --><van-cell class='jc_between' :title="$t('PLBL003REPAIRORDER')" :value="lotDataInfo.woId" /><!-- 动态操作区 --><van-cell v-if="lotDataInfo.stepName == 'R'":title="$t('维修工序')" :value="serviceProcName"/><!-- 条件显示区块 --><view class="hide-box" v-if="selectedOpCat === 'D'"><van-cell title="去投电极" is-link @click="toFeedingElePage"/></view></view></view>
</template>

1.2 核心功能实现

1.2.1 页面初始化
onLoad(option) {// 获取状态栏高度const statusBarHeight = uni.getStorageSync("statusBarHeight");this.padding = `${statusBarHeight + 28}px`;// 接收参数初始化this.operatorEmpNo = option.operatorEmpNothis.runCardId = option.lotId// 自动查询数据if(this.runCardId) {this.getLotDataByLotId()}
}
1.2.2 数据获取方法
// 根据批次ID获取数据
getLotDataByLotId() {uni.showLoading({ title: "loading..." });this.$http.get(`${API}/query?lotId=${this.runCardId}`).then((res) => {this.lotDataInfo = res.datathis.handleProcessData(res.data)}).catch(err => this.handleError(err))
}// 处理工艺数据
handleProcessData(data) {if (data.stepName === 'R') {this.getRepairProcedure("R")} else {this.getstation(data.processName)}
}

1.3 关键技术点

1.3.1 多语言实现
<!-- 使用$t方法进行国际化 -->
<van-cell :title="$t('LBL101BATCHNO')" />
1.3.2 条件渲染
<!-- 根据工序类型显示不同内容 -->
<view v-if="selectedIsEqp==='Y'"><van-cell :title="$t('设备编号')" :value="deviceCode" required />
</view>
1.3.3 表单验证
beforeRunCardOutSubmitCheck() {// 设备校验if(this.selectedIsEqp==='Y' && !this.deviceCode) {this.$toast("设备编码不能为空")return}// 工序校验if (!this.selectedOpId) {this.$toast("请先选择工序")return}// 提交前确认this.$refs.removeDialog.open()
}

2. 投料界面 (MaterialFeeding)

2.1 页面结构

<template><view class="receMaterial"><!-- 弹窗组件 --><van-dialog :show="showGetMateDialog"@close="showGetMateDialog = false"><view class="content"><van-cell :title="$t('料号')" :label="mateInfo.mtrlPartNo" /><van-cell :title="$t('数量:')"><input v-model="qty" type="digit" placeholder="请输入投料数量"/></van-cell></view></van-dialog></view>
</template>

2.2 核心功能实现

2.2.1 条码扫描处理
checkBarcode() {if (!this.mateBarcode) returnthis.$http.get(`${API}/scan?barcode=${this.mateBarcode}`).then(res => {this.mateInfo = res.datathis.showDialog()})
}
2.2.2 数据提交
post() {// 数量验证if (this.qty <= 0 || this.qty > this.mateInfo.mtrlQty) {this.$toast("数量无效")return}// 构造请求参数const params = {woId: this.woId,qty: this.qty,mtrlBarcode: this.mateInfo.mtrlBarcode}this.$http.post(`${API}/post`, params).then(() => this.handleSuccess())
}

2.3 关键技术点

2.3.1 折叠面板
<u-collapse @change="handleCollapseChange"><u-collapse-item v-for="item in lotMaterial" :title="item.materialNo"><text>{{ `(${item.scanNum}/${item.totalNum})` }}</text></u-collapse-item>
</u-collapse>
2.3.2 状态管理
// 更新物料状态
updateMaterialStatus() {this.lotMaterial.forEach(item => {item.status = item.scanNum >= item.totalNum ? '完成' : '进行中'})
}

3. 通用技术方案

3.1 样式穿透方案

/* Less语法 */
/deep/ .custom-dialog {width: 800px !important;
}/* CSS原生语法 */
::v-deep .van-cell__title {font-weight: bold;
}

3.2 页面适配方案

// 获取状态栏高度
const statusBarHeight = uni.getSystemInfoSync().statusBarHeight
this.padding = `${statusBarHeight + 28}px`// 响应式布局
@media (max-width: 768px) {.container {flex-direction: column;}
}

3.3 数据缓存策略

// 缓存工艺数据
cacheProcessData(data) {uni.setStorageSync('processData', JSON.stringify(data))
}// 读取缓存
getCachedData() {return JSON.parse(uni.getStorageSync('processData') || '{}')
}

4. 组件库使用规范

4.1 Vant组件使用

组件用途关键属性
<van-cell>信息展示单元title, value, is-link
<van-dialog>模态弹窗:show, @confirm, @cancel
<van-collapse>可折叠内容区v-model, accordion
<van-button>按钮组件type, size, @click

4.2 UniApp API使用

// 页面跳转
uni.navigateTo({url: `/pages/detail?id=${id}`
})// 显示加载状态
uni.showLoading({title: '加载中...',mask: true
})// 获取系统信息
const systemInfo = uni.getSystemInfoSync()

5. 最佳实践建议

5.1 性能优化

  1. 数据分页加载:对长列表实现滚动加载
  2. 图片懒加载:使用<image>的lazy-load属性
  3. 组件按需加载:配置Vant的按需引入

5.2 安全规范

  1. 对用户输入进行XSS过滤
  2. 敏感数据加密存储
  3. 接口请求添加权限验证

5.3 异常处理

// 统一错误处理
this.$http.post(url, data).catch(error => {console.error('[API Error]', error)this.$toast(error.message || '请求失败')})

附录:技术栈说明

技术项版本用途
UniApp3.0+跨端开发框架
Vant Weapp1.10+移动端组件库
Vue.js2.6+前端框架
Axios0.21+HTTP客户端
Less3.12+CSS预处理器
ESLint7.32+代码质量检查

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/82902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

针对Helsinki-NLP/opus-mt-zh-en模型进行双向互翻的微调

引言  题目听起来有点怪怪的&#xff0c;但是实际上就是对Helsinki-NLP/opus-mt-en-es模型进行微调。但是这个模型是单向的&#xff0c;只支持中到英的翻译&#xff0c;反之则不行。这样的话&#xff0c;如果要做中英双向互翻就需要两个模型&#xff0c;那模型体积直接大了两倍…

Object转Map集合

对象与 Map 转换详解&#xff1a; Object.entries() 和 Object.fromEntries() 1&#xff0c;Object.fromEntries() 的主要用途就是将键值对集合&#xff08;如 Map&#xff09;转换为普通对象。 2&#xff0c;Object.entries() 返回一个二维数组&#xff0c;其中每个子数组包…

优先队列用法

第 5 行定义了一个队首是最大值的优先队列,第 10 行的输出如下: 27 - wuhan 21 - shanghai 11 - beijing 第 13 行定义了一个队首是最小值的优先队列,第 19 行的输出如下: 11 - beijing 21 - shanghai 27 - wuhan #include <bits/stdc.h> using namespace std; int…

Spring Boot3.4.1 集成redis

Spring Boot3.4.1 集成redis 第一步 引入依赖 <!-- redis 缓存操作 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- pool 对象池 …

Replacing iptables with eBPF in Kubernetes with Cilium

source: https://archive.fosdem.org/2020/schedule/event/replacing_iptables_with_ebpf/attachments/slides/3622/export/events/attachments/replacing_iptables_with_ebpf/slides/3622/Cilium_FOSDEM_2020.pdf 使用Cilium&#xff0c;结合eBPF、Envoy、Istio和Hubble等技术…

英一真题阅读单词笔记 05年

2005 年 Text 1 第一段 序号 单词 音标 词义 1 fat [ft] a. 丰厚的&#xff0c;巨额的&#xff1b;肥胖的 2 pay [peɪ] n. 薪水 3 rise [raɪz] n. 上涨&#xff0c;增加&#xff1b;斜坡 4 pleasure [pleʒə(r)] n. 快乐&#xff1b;乐事 5 pleasure a…

FastAPI集成APsecheduler的BackgroundScheduler+mongodb(精简)

项目架构&#xff1a; FastAPI(folder) >app(folder) >core(folder) >models(folder) >routers(folder) >utils(folder) main.py(file) 1 utils文件夹下新建schedulers.py from apscheduler.schedulers.background import BackgroundScheduler from apschedu…

聊一聊接口测试中耗时请求如何合理安排?

目录 一、异步处理与轮询机制 轮询检查机制 二、 并行化测试执行 三、模拟与桩技术&#xff08;Mock/Stub&#xff09; 四、动态超时与重试策略 五、测试架构设计优化 分层测试策略 并行化执行 网络优化 六、测试用例分层管理 金字塔策略 七、 缓存与数据复用 响应…

深入详解DICOMweb:WADO与STOW-RS的技术解析与实现

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家、CSDN平台优质创作者&#xff0c;高级开发工程师&#xff0c;数学专业&#xff0c;10年以上C/C, C#, Java等多种编程语言开发经验&#xff0c;拥有高级工程师证书&#xff1b;擅长C/C、C#等开发语言&#xff0c;熟悉Java常用开…

Splunk Validated Architecture (SVA):构建企业级可观测性与安全的基石

Splunk Validated Architecture (SVA) 是 Splunk 官方提供的一套经过严格测试、性能验证和最佳实践指导的参考架构蓝图。它并非单一固定方案&#xff0c;而是根据企业数据规模、性能需求、高可用性目标和合规要求&#xff0c;提供一系列可落地的部署模型。SVA 的核心价值在于为…

Armv7l或树莓派32位RPI 4B编译faiss

pip3 install faiss-cpu当然找不到预编译的包 手动下载 git clone https://github.com/facebookresearch/faiss.git cd faiss #能需要切换到特定版本标签&#xff0c;例如 v1.7.1&#xff0c;这个版本Cmake 3.18可以过&#xff0c;因为apt install安装的cmake只更新到这里&am…

C++之string的模拟实现

string 手写C字符串类类的基本结构与成员变量一、构造函数与析构函数二、赋值运算符重载三、迭代器支持四、内存管理与扩容机制五、字符串操作函数六、运算符重载总结 手写C字符串类 从零实现一个简易版std::string 类的基本结构与成员变量 namespace zzh { class string { …

修改Docker镜像源

配置文件位置&#xff1a; sudo vim /etc/docker/daemon.json Docker 或 containerd 的镜像加速器配置&#xff0c;旨在提高从 Docker Hub 拉取镜像的速度。 { "features": { "buildkit": true, "containerd-snapshotter": true }, …

服务器带宽线路的区别(GIA、CN2、BGP、CMI等)

服务器带宽线路的区别&#xff08;GIA、CN2、BGP、CMI等&#xff09; 一、BGP线路 1. 定义与技术特点 BGP&#xff08;Border Gateway Protocol&#xff0c;边界网关协议&#xff09;是一种用于不同自治系统&#xff08;AS&#xff09;之间交换路由信息的协议&#xff0c;属…

从0到1搭建AI绘画模型:Stable Diffusion微调全流程避坑指南

从0到1搭建AI绘画模型&#xff1a;Stable Diffusion微调全流程避坑指南 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 从0到1搭建AI绘画模型&#xff1a;Stable Diffusion微调全流程避坑指南摘要引言一、数据集构…

VSCode + GD32F407 构建烧录

前言 最近调试一块 GD32F407VET6&#xff08;168Mhz&#xff0c;8Mhz晶振&#xff09; 板子时&#xff0c;踩了一些“启动失败”的坑。本以为是时钟配置有误&#xff0c;最后发现是链接脚本&#xff08;.ld 文件&#xff09;没有配置好&#xff0c;导致程序根本没能正常执行 ma…

AI绘画提示词:从零开始掌握Prompt Engineering的艺术

文章目录 什么是AI绘画提示词&#xff1f;提示词的基本结构主体描述场景/背景风格指定技术参数负面提示人物肖像模板风景模板 高级技巧权重调整混合风格颜色控制情绪氛围 常见问题与解决方法手部变形问题构图不理想风格不够突出 提示词示例库科幻场景奇幻人物静物画 结语 在当今…

在 Linux 上安装 Minikube:轻松搭建本地 Kubernetes 单节点集群

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、Minikube 是什么&#xff1f; Minikube 是 Kubernetes 官方推出的轻量级工具&#xff0c;专为开发者设计&#xff0c;用于在本地快速搭建单节点 Kube…

day41 python图像识别任务

目录 一、数据预处理&#xff1a;为模型打下坚实基础 二、模型构建&#xff1a;多层感知机的实现 三、训练过程&#xff1a;迭代优化与性能评估 四、测试结果&#xff1a;模型性能的最终检验 五、总结与展望 在深度学习的旅程中&#xff0c;多层感知机&#xff08;MLP&…

JS数组 concat() 与扩展运算符的深度解析与最佳实践

文章目录 前言一、语法对比1. Array.prototype.concat()2. 扩展运算符&#xff08;解构赋值&#xff09; 二、性能差异&#xff08;大规模数组&#xff09;关键差异原因 三、适用场景建议总结 前言 最近工作中遇到了一个大规模数组合并相关的问题&#xff0c;在数据合并时有些…