【Vue】【uni-app】工单管理页面实现

news2024/9/20 10:46:29

用的是uni-app的uni-ui拓展组件实现的

功能是对工单进行一个展示,并对工单根据一些筛选条件进行搜索

目前是实现了除了日期之外的搜索功能,测试数据是下面这个tableData.js,都是我自己手写的,后端请求也稍微写了一些,不过没用上

export default [{
		"ID": "0001",
		"title": "火灾排查",
		"associateID": "00001",
		"kind": "紧急工单",
		"state": "待完成",
		"overdue": "否",
		"taskDate": "2023-01-02",
		"dispatchDate": "2023-01-02",
		"personID": "0001",
		"note": "xxxx",
	},
	{
		"ID": "0002",
		"title": "野狗出现",
		"associateID": "00001",
		"kind": "临时工单",
		"state": "已完成",
		"overdue": "否",
		"taskDate": "2023-01-02",
		"dispatchDate": "2023-01-02",
		"personID": "0003",
		"note": "xxxx",
	},
	{
		"ID": "0003",
		"title": "温度过高",
		"associateID": "00001",
		"kind": "紧急工单",
		"state": "已完成",
		"overdue": "否",
		"taskDate": "2023-01-02",
		"dispatchDate": "2023-01-02",
		"personID": "0005",
		"note": "xxxx",
	},
	{
		"ID": "0004",
		"title": "火灾排查",
		"associateID": "00001",
		"kind": "定时工单",
		"state": "逾期",
		"overdue": "否",
		"taskDate": "2023-01-02",
		"dispatchDate": "2023-01-02",
		"personID": "0002",
		"note": "xxxx",
	},
	{
		"ID": "0005",
		"title": "常规巡检",
		"associateID": "00001",
		"kind": "紧急工单",
		"state": "待完成",
		"overdue": "否",
		"taskDate": "2023-01-02",
		"dispatchDate": "2023-01-02",
		"personID": "0001",
		"note": "xxxx",
	},
	{
		"ID": "0006",
		"title": "常规巡检",
		"associateID": "00001",
		"kind": "紧急工单",
		"state": "待完成",
		"overdue": "否",
		"taskDate": "2023-01-02",
		"dispatchDate": "2023-01-02",
		"personID": "0001",
		"note": "xxxx",
	},
]

还有旁边的导航栏我给你们去掉一下,这样可以直接copy下来跑

 简陋代码如下:

<template>
<!-- 	<navgation /> -->
<!-- 	<view class="right"> -->
		<h2 class="section">工单管理</h2>
		<view class="section">
			<text>工单状态: </text>
			<view>
				<uni-data-checkbox v-model="state" :localdata="states" @change="inputState"></uni-data-checkbox>
			</view>
			<text>工单类型: </text>
			<view class="block">
				<uni-data-select v-model="kind" :localdata="kinds" @change="inputKind"></uni-data-select>
			</view>
		</view>
		<view class="section">
			<text>工单ID: </text>
			<view class="block">
				<uni-easyinput placeholder="请输入ID" @change="inputID"></uni-easyinput>
			</view>
			<text>负责人员ID: </text>
			<view class="block">
				<uni-easyinput placeholder="请输入ID" @change="inputPersonID"></uni-easyinput>
			</view>
			<text>关联养殖场ID: </text>
			<view class="block">
				<uni-easyinput placeholder="请输入ID" @change="inputAssociateID"></uni-easyinput>
			</view>
		</view>
		<view class="section">
			<text>派发日期: </text>
			<view class="block">
				<uni-datetime-picker type="range" v-model="dispatchDate"></uni-datetime-picker>
			</view>
		</view>
		<view class="section">
			<text>指定完成日期: </text>
			<view class="block">
				<uni-datetime-picker type="range" v-model="taskDate"></uni-datetime-picker>
			</view>
		</view>
		<view class="section">
			<view>
				<button type="primary" size="mini" @click="search">搜索</button>
			</view>
		</view>
		<view>
			<uni-table ref="table" :loading="loading" border stripe type="selection" emptyText="暂无更多数据"
				@selection-change="selectionChange">
				<uni-tr>
					<uni-th align="center">工单ID</uni-th>
					<uni-th align="center">工单标题</uni-th>
					<uni-th align="center">关联养殖场ID</uni-th>
					<uni-th align="center">工单类型</uni-th>
					<uni-th align="center">工单状态</uni-th>
					<uni-th align="center">逾期</uni-th>
					<uni-th align="center">指定完成日期</uni-th>
					<uni-th align="center">派发日期</uni-th>
					<uni-th align="center">负责人员ID</uni-th>
					<uni-th align="center">备注</uni-th>
					<uni-th align="center">操作</uni-th>
				</uni-tr>
				<uni-tr v-for="(item, index) in tableData" :key="index">
					<uni-td align="center">{{ item.ID }}</uni-td>
					<uni-td align="center">{{ item.title }}</uni-td>
					<uni-td align="center">{{ item.associateID }}</uni-td>
					<uni-td align="center">{{ item.kind }}</uni-td>
					<uni-td align="center">{{ item.state }}</uni-td>
					<uni-td align="center">{{ item.overdue }}</uni-td>
					<uni-td align="center">{{ item.taskDate }}</uni-td>
					<uni-td align="center">{{ item.dispatchDate }}</uni-td>
					<uni-td align="center">{{ item.personID }}</uni-td>
					<uni-td align="center">{{ item.note }}</uni-td>
					<uni-td align="center">
						<button size="mini" type="primary">详情</button>
						<button size="mini" type="warn">删除</button>
					</uni-td>
				</uni-tr>
			</uni-table>
			<view><uni-pagination show-icon :page-size="pageSize" :current="pageCurrent" :total="total"
					@change="change" /></view>
		</view>
<!-- 	</view> -->
</template>

<script>
	// import navigation from '../../components/navgation/navgation.vue';
	import tableData from '../../pages/WorkOrderManagement/tableData.js';
	export default {
		data() {
			return {
				state: 0,
				states: [{
					text: '全选',
					value: 0
				}, {
					text: '待完成',
					value: 1
				}, {
					text: '已完成',
					value: 2
				}, {
					text: '逾期',
					value: 3
				}],
				kind: '',
				kinds: [{
					text: '周期工单',
					value: 0
				}, {
					text: '临时工单',
					value: 1
				}, {
					text: '紧急工单',
					value: 2
				}],
				ID: "",
				personID: "",
				associateID: "",
				dispatchDate: [],
				taskDate: [],
				searchVal: '',
				tableData: [],
				// 每页数据量
				pageSize: 5,
				// 当前页
				pageCurrent: 1,
				// 数据总量
				total: 0,
				loading: false
			};
		},
		onLoad() {
			this.selectedIndexs = []
			this.getData(1)
		},
		methods: {
			inputID(e) {
				this.ID = e;
				this.searchVal = e;
			},
			inputPersonID(e) {
				this.personID = e;
				this.searchVal = e;
			},
			inputAssociateID(e) {
				this.associateID = e;
				this.searchVal = e;
			},
			inputState() {
				this.searchVal = this.states[this.state].text;
				if (this.searchVal == '全选') {
					this.searchVal = '';
				}
			},
			inputKind() {
				this.searchVal = this.kinds[this.kind].text;
			},
			// 多选处理
			selectedItems() {
				return this.selectedIndexs.map(i => this.tableData[i])
			},
			// 多选
			selectionChange(e) {
				this.selectedIndexs = e.detail.index
			},
			//批量删除
			delTable() {
				console.log(this.selectedItems())
			},
			// 分页触发
			change(e) {
				this.$refs.table.clearSelection()
				this.selectedIndexs.length = 0
				this.getData(e.current, this.searchVal)
			},
			// 搜索
			search() {
				this.getData(1, this.searchVal);
			},
			// 获取数据
			getData(pageCurrent, value = '') {
				this.loading = true
				this.pageCurrent = pageCurrent
				this.request({
					pageSize: this.pageSize,
					pageCurrent: pageCurrent,
					value: value,
					success: res => {
						// console.log('data', res);
						this.tableData = res.data
						this.total = res.total
						this.loading = false
					}
				})
			},
			// 伪request请求
			request(options) {
				const {
					pageSize,
					pageCurrent,
					success,
					value
				} = options;
				let total = tableData.length;
				let data = [];
				if (value) {
					// 如果有搜索值,根据条件筛选数据
					data = tableData.filter(item => {
						return (
							item.ID.includes(value) ||
							item.personID.includes(value) ||
							item.associateID.includes(value) ||
							item.kind.includes(value) ||
							item.state.includes(value)
						);
					});
					total = data.length;
				} else {
					// 如果没有搜索值,直接分页显示数据
					data = tableData;
				}
				data = data.slice((pageCurrent - 1) * pageSize, pageCurrent * pageSize);
				setTimeout(() => {
					typeof success === 'function' && success({
						data,
						total
					});
				}, 0);
			},
			// 向后端发送请求,暂没有使用
			fetchData() {
				// 向后端发送请求
				uni.request({
					url: 'https://your-backend-api-endpoint', // 替换为你的后端API地址
					method: 'GET',
					success: (res) => {
						// 请求成功处理逻辑
						if (res.statusCode === 200) {
							this.workOrders = res.data; // 将获取到的工单数据存储到data中的workOrders变量中
						} else {
							// 请求失败处理逻辑
							console.error('Request failed with status code', res.statusCode);
						}
					},
					fail: (error) => {
						// 网络请求失败处理逻辑
						console.error('Network request failed', error);
					}
				});
			}

		}
	}
</script>

<style lang="scss">
	.right {
		margin-top: 40rpx;
		margin-left: 440rpx;
	}

	.section {
		display: flex;
		align-items: center;
		column-gap: 20rpx;
		margin: 20rpx;
	}

	.block {
		width: 20%;
		border-radius: 10rpx;
	}

	button {
		margin: 10rpx;
		border-radius: 20rpx;
	}
</style>

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

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

相关文章

Windows上基于Tesseract OCR5.0官方语言库的LSTM字库训练

系列文章目录 Tesseract OCR引擎 文章目录 系列文章目录前言一、LSTM字库训练是什么&#xff1f;二、使用步骤1. 环境准备1.1下载Tesseract 程序并安装1.2下载Tesseract 训练字库1.3下载工具jTessBoxEditor 2. LSTM训练2.1 将要训练的图片(jpg/tif)合并成一个文件2.2 生成box文…

DreamScene2 免费WIndows 动态桌面壁纸播放软件启动无响应失败问题解决及安装使用帮助

高阶使用预览 启动失败场景还原 1. 系统信息 2. 启动错误描述 使用壁纸过程中突然出现异常卡断,使用任务管理器停止程序后,该程序就无法正常启动,点及启动后出现 转圈(任务管理器短暂出现进程) 后就消失不见 原因分析 经过推测后可能是 强制停止后 工作临时缓存目录与启动程序…

2023.11.10联赛 T3题解

题目大意 题目思路 感性理解一下&#xff0c;将一个数的平方变成多个数平方的和&#xff0c;为了使代价最小&#xff0c;这些数的大小应该尽可能的平均。 我们可以将 ∣ b i − a i ∣ |b_i-a_i| ∣bi​−ai​∣放入大根堆&#xff0c;同时将这个数划分的次数以及多划分一段减…

IDEA的这款API调试插件爱了

前言 Idea 是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它可以帮助开发人员更加高效地编写、调试和部署软件应用程序,Idea 还具有许多插件和扩展&#xff0c;可以根据开发人员的需要进行定制和扩展&#xff0c;从而提高开发效率,今天我们就来介绍一款…

【FastCAE源码阅读7】视图方向切换按钮实现原理

在FastCAE工具栏上有视图切换按钮&#xff0c;如下图所示&#xff1a; 本文介绍如何实现。 FastCAE集成了Python解析器&#xff0c;当单击按钮时&#xff0c;中间用Python执行的&#xff0c;最后调用MainWindow.dll库接口实现的。 具体的Python代码在Python模块的py文件夹下的…

统一消息分发中心设计

背景 我们核心业务中订单完成时&#xff0c;需要完成后续的连带业务&#xff0c;扣件库存库存、增加积分、通知商家等。 如下图的架构&#xff1a; 这样设计出来导致我们的核心业务和其他业务耦合&#xff0c;每次新增连带业务或者去掉连带业务都需要修改核心业务。 一方面&…

linux服务-配置ntp时间服务

参考博文&#xff1a; 如何部署NTP服务器 NTP时间服务器安装部署文档 NTP时间服务器部署以及时间同步设置 Centos7搭建NTP服务器及客户端同步时间 参考文档&#xff1a; GB_T 20520-2006 信息安全技术 公钥基础设施 时间戳规范&#xff1b; GM_T0033-2014 时间戳接口规范&…

芯片静态电流详细测试流程,纯干货分享

在芯片的众多测试项目中芯片的功耗测试可谓重中之重&#xff0c;因为芯片的功耗不仅关系着芯片的整体工作性能也对芯片的工作效率有着非常重大的影响。今天纳米软件就带你了解一下芯片测试项目功耗测试中的静态电流的测试。 01、什么是芯片的静态电流? 芯片的静态电流也叫做…

基于SSM的课程管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

CSS 移动端 1px(线条/边框) 不同机型上显示粗细不同,解决办法

由于不同的手机有不同的像素密度导致的。如果移动显示屏的分辨率始终是普通屏幕的2倍&#xff0c;1px的边框在devicePixelRatio2的移动显示屏下会显示成2px&#xff0c;所以在高清瓶下看着1px总是感觉变胖了 <!DOCTYPE html> <html lang"en"> <head&g…

Git Gui的使用及ssh协议-IEDA使用git

目录 一.Git Gui的使用 二.ssh协议 2.1 什么是ssh key 2.2 配置用户名和邮箱&#xff08;如果已经配置&#xff0c;就跳过&#xff09; 2.3 生成(或删除)秘钥 ​编辑 2.4 远程仓库绑定公钥 三.IEDA使用git 3.1 idea配置Git 3.2 项目上传Git 3.3 演示 一.Git Gu…

使用Java语言实现基本RS触发器

使用Java语言实现计算机程序来模拟基本RS触发器的工作过程&#xff0c;通过本账号2023年10月17日所发布博客“使用Java语言实现数字电路模拟器”中模拟基本逻辑门组成半加器电路的方法来模拟基本触发器的组成和时间延迟。 1 基本RS触发器电路结构 基本RS触发器&#xff08;又…

【入门Flink】- 08Flink时间语义和窗口概念

Flink-Windows 是将无限数据切割成有限的“数据块”进行处理&#xff0c;这就是所谓的“窗口”&#xff08;Window&#xff09;。 注意&#xff1a;Flink 中窗口并不是静态准备好的&#xff0c;而是动态创建——当有落在这个窗口区间范围的数据达到时&#xff0c;才创建对应的窗…

BI 数据可视化平台建设(1)—交叉表组件演变实战

作者&#xff1a;vivo 互联网大数据团队 - Zhu Jianchen 本文是vivo互联网大数据团队《BI数据可视化平台建设》系列文章第1篇 - 交叉表组件。 交叉表在数据分析里应用广泛&#xff0c;通过本文&#xff0c;你将了解到&#xff1a; 交叉表的基本概念&#xff0c;以及BI可视化平…

canal实操应用

一、MySQL的binlog日志 1.1、binlog的分类 binlog一般分为三类&#xff1a;statement语句级&#xff0c;记录一条一条的SQL&#xff0c;一条SQL可能更改多行&#xff0c;且SQL语句中如果用到now()函数或者random()函数&#xff0c;会存在数据不一致的问题。row行级&#xff0…

大容量疯了!居然想把磁带放到硬盘,100TB+是否可以实现?

1.引言 上一篇关于大容量硬盘的文章&#xff08;HDD最后的冲刺&#xff1a;大容量硬盘的奋力一搏&#xff09;中&#xff0c;我们针对大容量硬盘研发状态&#xff0c;小编最近又有了新发现。WDC希望可以通过HDD和磁带结合&#xff0c;把盘的容量提升到100TB。 2.数据大爆炸的…

C# Socket通信从入门到精通(7)——单个异步TCP服务器监听单个客户端C#代码实现

前言: 我们在开发TCP服务器程序的时候,有的时候需要一些异步的应用,比如我读取客户端发送的数据,但是服务器程序不能一直等待客户端数据发送过来,服务器要先做一些别的事情,这个时候C# Socket通信从入门到精通(5)——单个同步TCP服务器监听一个客户端C#代码实现这篇文…

低代码平台受欢迎度排行榜:揭秘市场热门之选

对于企业而言&#xff0c;低代码平台不仅仅是一个开发工具&#xff0c;它更是一个加速器&#xff0c;推动了企业的数字化转型进程。传统的开发模式下&#xff0c;业务部门与IT部门之间常常存在沟通障碍&#xff0c;导致需求难以实现或实现速度缓慢。而低代码平台打破了这种障碍…

C++学习贴---C++预处理器

文章目录 前言预处理器#define预处理条件编译#ifdef#ifndef#if、#elif、#else 和 #endif #和##运算符 预定义宏 前言 预处理器 预处理器是指一些指示编译器在实际编译之前所需要完成的指令。 预处理器负责处理以**井号&#xff08;#&#xff09;**开头的预处理指令&#xff0…

为啥$p(w|D)=p(y|X,w)$?

为啥 p ( w ∣ D ) p ( y ∣ X , w ) p(w|D)p(y|X,w) p(w∣D)p(y∣X,w)&#xff1f; p ( w ∣ X , y ) p ( w ∣ D ) p(w|X,y)p(w|D) p(w∣X,y)p(w∣D), p ( w ∣ D ) p ( D , w ) / p ( D ) p(w|D)p(D,w)/p(D) p(w∣D)p(D,w)/p(D)为啥 p ( D ∣ w ) p ( y ∣ X , w ) p(D|…