From 3f85e5410dda49e7e6a6292859649513f3644cb2 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 28 八月 2026 14:44:12 +0800
Subject: [PATCH] 天津豹鸣app 1.添加扫码查看设备变更记录功能
---
src/pages/works.vue | 129 +++++++++++++++++++++++++++++++-----------
1 files changed, 94 insertions(+), 35 deletions(-)
diff --git a/src/pages/works.vue b/src/pages/works.vue
index 65fd28a..3b7ffa7 100644
--- a/src/pages/works.vue
+++ b/src/pages/works.vue
@@ -1,28 +1,5 @@
<template>
<view class="content">
- <!-- OA鍔炲叕妯″潡 -->
- <view class="common-module oa-module"
- v-if="hasOaItems">
- <view class="module-header">
- <view class="module-title-container">
- <text class="module-title">OA鍔炲叕</text>
- </view>
- </view>
- <view class="module-content">
- <up-grid :border="false"
- col="4">
- <up-grid-item v-for="(item, index) in oaItems"
- :key="index"
- @click="handleCommonItemClick(item)">
- <view class="icon-container">
- <image :src="item.icon"
- class="item-icon"></image>
- </view>
- <text class="item-label">{{item.label}}</text>
- </up-grid-item>
- </up-grid>
- </view>
- </view>
<!-- 鍗忓悓鍔炲叕妯″潡 -->
<view class="common-module collaboration-module"
v-if="hasCollaborationItems">
@@ -331,7 +308,6 @@
import { userLoginFacotryList } from "@/api/login";
import { getProductWorkOrderById } from "@/api/productionManagement/productionReporting";
import DownloadProgressMask from "@/components/DownloadProgressMask.vue";
- import { OA_WORKBENCH_ITEMS } from "@/config/oaWorkbench.js";
import modal from "@/plugins/modal";
import useUserStore from "@/store/modules/user";
@@ -510,6 +486,21 @@
icon: "/static/images/icon/hetongguanli.svg",
label: "鍚堝悓绠$悊",
},
+ {
+ icon: "/static/images/icon/hetongguanli.svg",
+ label: "杞鐢宠",
+ path: "/pages/oa/HrManage/regular-apply/index",
+ },
+ {
+ icon: "/static/images/icon/renyuanxinzi.svg",
+ label: "璋冨姩鐢宠",
+ path: "/pages/oa/HrManage/transfer-apply/index",
+ },
+ {
+ icon: "/static/images/icon/gongchuguanli.svg",
+ label: "宸ヤ綔浜ゆ帴",
+ path: "/pages/oa/HrManage/work-handover/index",
+ },
]);
const qualityItems = reactive([
{
@@ -559,17 +550,22 @@
label: "瀹夊叏鍩硅鑰冩牳",
},
]);
- // OA鍔炲叕鍔熻兘鏁版嵁锛堢函鍓嶇閰嶇疆锛屼笉鍙備笌鍚庣鏉冮檺杩囨护锛�
- const oaItems = reactive(
- OA_WORKBENCH_ITEMS.map(item => ({ ...item }))
- );
-
// 鍗忓悓鍔炲叕鍔熻兘鏁版嵁
const collaborationItems = reactive([
- {
- icon: "/static/images/icon/xietongshenpi.svg",
- label: "鍗忓悓瀹℃壒",
- },
+ // {
+ // icon: "/static/images/icon/xietongshenpi.svg",
+ // label: "鍗忓悓瀹℃壒",
+ // },
+ {
+ icon: "/static/images/icon/guizhangzhidu.svg",
+ label: "瀹℃壒绠$悊",
+ path: "/pages/oa/ApproveManage/approve-template/index",
+ },
+ {
+ icon: "/static/images/icon/xietongshenpi.svg",
+ label: "鍗忓悓瀹℃壒",
+ path: "/pages/oa/ApproveManage/approve-list/index",
+ },
{
icon: "/static/images/icon/huiyiguanli.svg",
label: "浼氳绠$悊",
@@ -593,6 +589,26 @@
{
icon: "/static/images/icon/kehubaifang.svg",
label: "瀹㈡埛鎷滆",
+ },
+ {
+ icon: "/static/images/icon/qingjiaguanli.svg",
+ label: "璇峰亣鐢宠",
+ path: "/pages/oa/AttendManage/leave-apply/index",
+ },
+ {
+ icon: "/static/images/icon/dakaqiandao.svg",
+ label: "鍔犵彮鐢宠",
+ path: "/pages/oa/AttendManage/overtime-apply/index",
+ },
+ {
+ icon: "/static/images/icon/chuchaiguanli.svg",
+ label: "宸梾鎶ラ攢",
+ path: "/pages/oa/ReimburseManage/travel-reimburse/index",
+ },
+ {
+ icon: "/static/images/icon/baoxiaoguanli.svg",
+ label: "璐圭敤鎶ラ攢",
+ path: "/pages/oa/ReimburseManage/cost-reimburse/index",
},
]);
@@ -640,6 +656,10 @@
// label: '璁惧鍙拌处',
// },
{
+ icon: "/static/images/icon/saomashebei.svg",
+ label: "鎵爜鏌ヨ澶�",
+ },
+ {
icon: "/static/images/icon/yunxingguanli.svg",
label: "杩愯绠$悊",
},
@@ -656,6 +676,42 @@
label: "璁惧宸℃",
},
]);
+
+ // 鎵爜鏌ヨ澶囷細瑙f瀽 deviceId 鍚庤烦杞埌璁惧淇℃伅椤�
+ const getDeviceIdFromScan = scanResult => {
+ if (!scanResult) return null;
+ const match = scanResult.match(/deviceId=(\d+)/);
+ if (match && match[1]) return match[1];
+ if (/^\d+$/.test(scanResult.trim())) return scanResult.trim();
+ try {
+ const obj = JSON.parse(scanResult);
+ if (obj.deviceId) return String(obj.deviceId);
+ } catch (e) {
+ // 蹇界暐闈� JSON 鍐呭
+ }
+ return null;
+ };
+
+ const startScanDevice = () => {
+ uni.scanCode({
+ scanType: ["qrCode", "barCode"],
+ success: res => {
+ console.log("鎵爜缁撴灉:", res.result);
+ const deviceId = getDeviceIdFromScan(res.result);
+ if (!deviceId) {
+ uni.showToast({ title: "鏈瘑鍒埌璁惧ID", icon: "none" });
+ return;
+ }
+ uni.navigateTo({
+ url: `/pages/equipmentManagement/deviceInfo/index?deviceId=${deviceId}`,
+ });
+ },
+ fail: err => {
+ console.error("鎵爜澶辫触:", err);
+ uni.showToast({ title: "鎵爜澶辫触锛岃閲嶈瘯", icon: "none" });
+ },
+ });
+ };
// 澶勭悊甯哥敤鍔熻兘鐐瑰嚮
const handleCommonItemClick = item => {
@@ -922,6 +978,9 @@
uni.navigateTo({
url: "/pages/equipmentManagement/ledger/index",
});
+ break;
+ case "鎵爜鏌ヨ澶�":
+ startScanDevice();
break;
case "杩愯绠$悊":
uni.navigateTo({
@@ -1242,7 +1301,7 @@
// 鏀堕泦鎵�鏈夋湁鏉冮檺鐨勮彍鍗曟爣棰橈紙鏍规嵁 meta.title锛�
const allowedMenuTitles = new Set();
- const alwaysShowTitles = new Set(["閲囪喘閫�璐у崟", "渚涘簲鍟嗙鐞�"]);
+ const alwaysShowTitles = new Set(["閲囪喘閫�璐у崟", "渚涘簲鍟嗙鐞�", "鎵爜鏌ヨ澶�"]);
const collectMenuTitles = routes => {
if (!Array.isArray(routes)) return;
routes.forEach(route => {
@@ -1268,6 +1327,7 @@
// 閫氱敤杩囨护鍑芥暟
const filterArray = (targetArray, specialMapping) => {
const filtered = targetArray.filter(item => {
+ if (alwaysShowTitles.has(item.label)) return true;
let matched = allowedMenuTitles.has(item.label);
if (specialMapping && !matched && specialMapping[item.label]) {
matched = allowedMenuTitles.has(specialMapping[item.label]);
@@ -1303,7 +1363,6 @@
const hasAfterSalesServiceItems = computed(
() => afterSalesServiceItems.length > 0
);
- const hasOaItems = computed(() => oaItems.length > 0);
const hasCollaborationItems = computed(() => collaborationItems.length > 0);
const hasSafetyItems = computed(() => safetyItems.length > 0);
const hasQualityItems = computed(() => qualityItems.length > 0);
--
Gitblit v1.9.3