From e449a5408265e4bd1f6c66f5be28a42efac444ee Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期日, 20 九月 2026 15:22:46 +0800
Subject: [PATCH] 天津豹鸣app 1.需求修改
---
src/pages/works.vue | 379 +++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 344 insertions(+), 35 deletions(-)
diff --git a/src/pages/works.vue b/src/pages/works.vue
index 2759b3e..d2d6986 100644
--- a/src/pages/works.vue
+++ b/src/pages/works.vue
@@ -23,6 +23,29 @@
</up-grid>
</view>
</view>
+ <!-- 椤圭洰绠$悊妯″潡 -->
+ <view class="common-module project-module"
+ v-if="hasProjectItems">
+ <view class="module-header">
+ <view class="module-title-container">
+ <text class="module-title">椤圭洰绠$悊</text>
+ </view>
+ </view>
+ <view class="module-content">
+ <up-grid :border="false"
+ col="4">
+ <up-grid-item v-for="(item, index) in projectItems"
+ :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 marketing-module"
v-if="hasMarketingItems">
@@ -276,6 +299,29 @@
</up-grid>
</view>
</view>
+ <!-- 杞﹁締绠$悊妯″潡 -->
+ <view class="common-module vehicle-module"
+ v-if="hasVehicleItems">
+ <view class="module-header">
+ <view class="module-title-container">
+ <text class="module-title">杞﹁締绠$悊</text>
+ </view>
+ </view>
+ <view class="module-content">
+ <up-grid :border="false"
+ col="4">
+ <up-grid-item v-for="(item, index) in vehicleItems"
+ :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="hasSafetyItems">
@@ -336,20 +382,44 @@
// 宸ヨ壓璁捐鍔熻兘鏁版嵁
const designItems = reactive([
{
- icon: "/static/images/icon/xiaoshoubaojia.svg",
+ icon: "/static/images/icon/jichucanshu.svg",
label: "鍩虹鍙傛暟",
},
{
- icon: "/static/images/icon/xiaoshoubaojia.svg",
+ icon: "/static/images/icon/gongxuguanli.svg",
label: "宸ュ簭绠$悊",
},
{
- icon: "/static/images/icon/xiaoshoubaojia.svg",
+ icon: "/static/images/icon/bom.svg",
label: "BOM",
},
{
- icon: "/static/images/icon/xiaoshoubaojia.svg",
+ icon: "/static/images/icon/gongyiluxian.svg",
label: "宸ヨ壓璺嚎",
+ },
+ ]);
+
+ // 椤圭洰绠$悊鍔熻兘鏁版嵁
+ const projectItems = reactive([
+ {
+ icon: "/static/images/icon/xiangmuguanli.svg",
+ label: "椤圭洰绠$悊",
+ },
+ ]);
+
+ // 杞﹁締绠$悊鍔熻兘鏁版嵁
+ const vehicleItems = reactive([
+ {
+ icon: "/static/images/icon/cheliangguanli.svg",
+ label: "杞﹁締绠$悊",
+ },
+ {
+ icon: "/static/images/icon/jiayoukaguanli.svg",
+ label: "鍔犳补鍗$鐞�",
+ },
+ {
+ icon: "/static/images/icon/jiayoujilu.svg",
+ label: "鍔犳补璁板綍",
},
]);
@@ -370,6 +440,22 @@
{
icon: "/static/images/icon/kehuwanglai.svg",
label: "瀹㈡埛寰�鏉�",
+ },
+ {
+ icon: "/static/images/icon/zhaotoubiaoguanli.svg",
+ label: "鎷涙姇鏍囩鐞�",
+ },
+ {
+ icon: "/static/images/icon/susongguanli.svg",
+ label: "璇夎绠$悊",
+ },
+ {
+ icon: "/static/images/icon/fahuotaizhang.svg",
+ label: "鍙戣揣鍙拌处",
+ },
+ {
+ icon: "/static/images/icon/hetongguanli.svg",
+ label: "閿�鍞悎鍚�",
},
]);
@@ -444,11 +530,11 @@
// 妗f绠$悊鍔熻兘鏁版嵁
const archiveManagementItems = reactive([
{
- icon: "/static/images/icon/gongyingshangdangan.svg",
+ icon: "/static/images/icon/jieyuedengji.svg",
label: "鍊熼槄鐧昏",
},
{
- icon: "/static/images/icon/hetongguanli.svg",
+ icon: "/static/images/icon/guihuandengji.svg",
label: "褰掕繕鐧昏",
},
]);
@@ -468,7 +554,7 @@
// 浠撳偍鐗╂祦鍔熻兘鏁版嵁
const warehouseLogisticsItems = reactive([
{
- icon: "/static/images/icon/xiaoshoutaizhang.svg",
+ icon: "/static/images/icon/kucunguanli.svg",
label: "搴撳瓨绠$悊",
},
]);
@@ -486,6 +572,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([
{
@@ -499,6 +600,10 @@
{
icon: "/static/images/icon/chuchangjianyan.svg",
label: "鍑哄巶妫�楠�",
+ },
+ {
+ icon: "/static/images/icon/baobiaoguanli.svg",
+ label: "鎶ヨ〃绠$悊",
},
]);
const safetyItems = reactive([
@@ -537,10 +642,20 @@
]);
// 鍗忓悓鍔炲叕鍔熻兘鏁版嵁
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: "浼氳绠$悊",
@@ -565,38 +680,71 @@
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",
+ },
+ {
+ icon: "/static/images/icon/kuandaiyutongxin.svg",
+ label: "瀹藉甫涓庨�氫俊绠$悊",
+ },
+ {
+ icon: "/static/images/icon/fangwuzulin.svg",
+ label: "鎴垮眿绉熻祦绠$悊",
+ },
]);
// 鐢熶骇绠℃帶鍔熻兘鏁版嵁
const productionItems = reactive([
{
- icon: "/static/images/icon/shengchandingdan@2x.svg",
- label: "鐢熶骇璁㈠崟",
- },
- // {
- // icon: "/static/images/icon/shengchanpaigong@2x.svg",
- // label: "鐢熶骇娲惧伐",
- // },
- // {
- // icon: "/static/images/icon/shengchanpaichan@2x.svg",
- // label: "宸ュ簭鎺掍骇",
- // },
- {
- icon: "/static/images/icon/shengchanbaogong.svg",
+ icon: "/static/images/icon/shengchanjihua.svg",
label: "涓荤敓浜ц鍒�",
},
+ {
+ icon: "/static/images/icon/shengchandingdan.svg",
+ label: "鐢熶骇璁㈠崟",
+ },
+ {
+ icon: "/static/images/icon/shengchanzhuisu.svg",
+ label: "鐢熶骇杩芥函",
+ },
+ {
+ icon: "/static/images/icon/shengchanshikuang.svg",
+ label: "宸ュ簭鐢熶骇瀹炲喌",
+ },
+ {
+ icon: "/static/images/icon/shengchanpaichan.svg",
+ label: "鐢熶骇鎺掍骇",
+ },
+
{
icon: "/static/images/icon/shengchanbaogong.svg",
label: "鐢熶骇鎶ュ伐",
},
{
- icon: "/static/images/icon/shengchanbaogong.svg",
- label: "鐢熶骇宸ュ崟",
+ icon: "/static/images/icon/baogongtaizhang.svg",
+ label: "鎶ュ伐鍙拌处",
},
- // {
- // icon: "/static/images/icon/shengchanhesuan@2x.svg",
- // label: "鐢熶骇鏍哥畻",
- // },
+ {
+ icon: "/static/images/icon/shengchanhesuan.svg",
+ label: "鐢熶骇鏍哥畻",
+ },
]);
// 璁惧绠$悊鍔熻兘鏁版嵁
@@ -605,6 +753,10 @@
// icon: '/static/images/icon/shebeitaizhang@2x.svg',
// label: '璁惧鍙拌处',
// },
+ {
+ icon: "/static/images/icon/saomashebei.svg",
+ label: "鎵爜鏌ヨ澶�",
+ },
{
icon: "/static/images/icon/yunxingguanli.svg",
label: "杩愯绠$悊",
@@ -623,8 +775,48 @@
},
]);
+ // 鎵爜鏌ヨ澶囷細瑙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 => {
+ if (item.path) {
+ uni.navigateTo({ url: item.path });
+ return;
+ }
// 鏍规嵁涓嶅悓鐨勫姛鑳介」杩涜璺宠浆
switch (item.label) {
case "瀹㈡埛妗f":
@@ -665,6 +857,61 @@
case "瀹㈡埛寰�鏉�":
uni.navigateTo({
url: "/pages/sales/receiptPaymentLedger/index",
+ });
+ break;
+ case "椤圭洰绠$悊":
+ uni.navigateTo({
+ url: "/pages/projectManagement/project/index",
+ });
+ break;
+ case "鎷涙姇鏍囩鐞�":
+ uni.navigateTo({
+ url: "/pages/sales/biddingManagement/index",
+ });
+ break;
+ case "璇夎绠$悊":
+ uni.navigateTo({
+ url: "/pages/sales/lawsuitManagement/index",
+ });
+ break;
+ case "鍙戣揣鍙拌处":
+ uni.navigateTo({
+ url: "/pages/sales/deliveryLedger/index",
+ });
+ break;
+ case "閿�鍞悎鍚�":
+ uni.navigateTo({
+ url: "/pages/sales/contractManagement/index",
+ });
+ break;
+ case "鎶ヨ〃绠$悊":
+ uni.navigateTo({
+ url: "/pages/qualityManagement/inspectionReport/index",
+ });
+ break;
+ case "杞﹁締绠$悊":
+ uni.navigateTo({
+ url: "/pages/inventoryManagement/vehicleInfo/index",
+ });
+ break;
+ case "鍔犳补鍗$鐞�":
+ uni.navigateTo({
+ url: "/pages/inventoryManagement/fuelCard/index",
+ });
+ break;
+ case "鍔犳补璁板綍":
+ uni.navigateTo({
+ url: "/pages/inventoryManagement/fuelRecord/index",
+ });
+ break;
+ case "瀹藉甫涓庨�氫俊绠$悊":
+ uni.navigateTo({
+ url: "/pages/cooperativeOffice/broadbandCommunication/index",
+ });
+ break;
+ case "鎴垮眿绉熻祦绠$悊":
+ uni.navigateTo({
+ url: "/pages/cooperativeOffice/houseLeaseManagement/index",
});
break;
case "閲囪喘鍙拌处":
@@ -837,9 +1084,9 @@
url: "/pages/productionManagement/productionDispatching/index",
});
break;
- case "宸ュ簭鎺掍骇":
+ case "宸ヨ壓璺嚎":
uni.navigateTo({
- url: "/pages/productionManagement/processScheduling/index",
+ url: "/pages/productionManagement/processRoute/index",
});
break;
case "鐢熶骇宸ュ崟":
@@ -852,18 +1099,41 @@
url: "/pages/productionManagement/mainProductionPlan/index",
});
break;
+ case "鐢熶骇鎺掍骇":
+ uni.navigateTo({
+ url: "/pages/productionManagement/productionScheduling/index",
+ });
+ break;
case "鐢熶骇鎶ュ伐":
getcode();
+ break;
+ case "鎶ュ伐鍙拌处":
+ uni.navigateTo({
+ url: "/pages/productionManagement/productionReporting/ledger",
+ });
break;
case "鐢熶骇鏍哥畻":
uni.navigateTo({
url: "/pages/productionManagement/productionAccounting/index",
});
break;
+ case "鐢熶骇杩芥函":
+ uni.navigateTo({
+ url: "/pages/productionManagement/productionTraceability/index",
+ });
+ break;
+ case "宸ュ簭鐢熶骇瀹炲喌":
+ uni.navigateTo({
+ url: "/pages/productionManagement/processStatistics/index",
+ });
+ break;
case "璁惧鍙拌处":
uni.navigateTo({
url: "/pages/equipmentManagement/ledger/index",
});
+ break;
+ case "鎵爜鏌ヨ澶�":
+ startScanDevice();
break;
case "杩愯绠$悊":
uni.navigateTo({
@@ -1046,7 +1316,7 @@
factoryList.value = [];
});
}
- const getcode = () => {
+ const getcode = async () => {
uni.scanCode({
success: async res => {
// 瑙f瀽浜岀淮鐮佸唴瀹�
@@ -1070,6 +1340,11 @@
// 鏂版帴鍙h繑鍥炵殑鏄崟涓璞★紝涓嶆槸鏁扮粍
const workData = workRes.data;
console.log("宸ュ崟鏁版嵁:", workData);
+
+ if (workData.endOrder === true) {
+ modal.msgError("璇ヨ鍗曞凡缁撴潫锛屾棤娉曟姤宸�");
+ return;
+ }
orderRow = JSON.stringify(workData);
@@ -1179,7 +1454,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 => {
@@ -1200,11 +1475,15 @@
specialMapping: { 瑙勭珷鍒跺害: "瑙勭珷鍒跺害绠$悊" },
},
purchase: { specialMapping: { 渚涘簲鍟嗘。妗�: "渚涘簲鍟嗙鐞�" } },
+ // 鎵嬫満绔汉浜嬫ā鍧楀凡鍗犵敤銆屽悎鍚岀鐞嗐�峫abel锛堣蛋 /staff/staffContract锛夛紝
+ // 閿�鍞悎鍚屾敼鐢ㄣ�岄攢鍞悎鍚屻�峫abel锛屾澶勬槧灏勫洖鍚庣鐨勮彍鍗曟爣棰�
+ marketing: { specialMapping: { 閿�鍞悎鍚�: "鍚堝悓绠$悊" } },
};
console.log(allowedMenuTitles);
// 閫氱敤杩囨护鍑芥暟
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]);
@@ -1215,7 +1494,8 @@
};
// 杩囨护鍚勪釜妯″潡
- filterArray(marketingItems);
+ filterArray(marketingItems, menuMapping.marketing.specialMapping);
+ filterArray(designItems);
filterArray(purchaseItems, menuMapping.purchase.specialMapping);
filterArray(financeManagementItems);
filterArray(collaborationItems, menuMapping.collaboration.specialMapping);
@@ -1226,6 +1506,9 @@
filterArray(productionItems);
filterArray(equipmentItems);
filterArray(archiveManagementItems);
+ filterArray(afterSalesServiceItems);
+ filterArray(projectItems);
+ filterArray(vehicleItems);
};
// 妫�鏌ユā鍧楁槸鍚︽湁鑿滃崟椤归渶瑕佹樉绀�
@@ -1250,6 +1533,8 @@
const hasArchiveManagementItems = computed(
() => archiveManagementItems.length > 0
);
+ const hasProjectItems = computed(() => projectItems.length > 0);
+ const hasVehicleItems = computed(() => vehicleItems.length > 0);
onMounted(() => {
// 姣忔杩涘叆棣栭〉閮藉己鍒跺埛鏂扮敤鎴蜂俊鎭拰璺敱鏉冮檺锛屼笉鍋氭湰鍦扮紦瀛樺垽鏂�
@@ -1616,12 +1901,24 @@
--module-color: #4caf50;
}
+ .oa-module {
+ --module-color: #673ab7;
+ }
+
.production-module {
--module-color: #ff9800;
}
.equipment-module {
--module-color: #9c27b0;
+ }
+
+ .project-module {
+ --module-color: #0066ff;
+ }
+
+ .vehicle-module {
+ --module-color: #ff8a3d;
}
.module-header {
@@ -1858,6 +2155,10 @@
--module-color: #4caf50;
}
+ .oa-module {
+ --module-color: #673ab7;
+ }
+
.production-module {
--module-color: #ff9800;
}
@@ -1866,6 +2167,14 @@
--module-color: #9c27b0;
}
+ .project-module {
+ --module-color: #0066ff;
+ }
+
+ .vehicle-module {
+ --module-color: #ff8a3d;
+ }
+
.module-header {
margin-bottom: 18px;
padding-left: 18px;
--
Gitblit v1.9.3