From 3ea1ff641e1c680a5a1727fb4034797bfe65d93e Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期三, 18 三月 2026 15:29:17 +0800
Subject: [PATCH] fix: 质量、耗材物流
---
src/pages/index.vue | 358 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 326 insertions(+), 32 deletions(-)
diff --git a/src/pages/index.vue b/src/pages/index.vue
index cb356ea..c27a0b7 100644
--- a/src/pages/index.vue
+++ b/src/pages/index.vue
@@ -212,6 +212,81 @@
</up-grid>
</view>
</view>
+ <!-- 浠撳偍鐗╂祦妯″潡 -->
+ <view class="common-module warehouse-logistics-module"
+ v-if="hasWarehouseLogisticsItems">
+ <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 warehouseLogisticsItems"
+ :key="index"
+ @click="handleCommonItemClick(item)">
+ <view class="icon-container"
+ :style="{ background: item.bgColor }">
+ <up-icon :name="item.icon"
+ :size="58"
+ color="#ffffff"></up-icon>
+ </view>
+ <text class="item-label">{{item.label}}</text>
+ </up-grid-item>
+ </up-grid>
+ </view>
+ </view>
+ <!-- 鑰楁潗鐗╂枡妯″潡 -->
+ <view class="common-module material-module"
+ v-if="hasMaterialItems">
+ <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 materialItems"
+ :key="index"
+ @click="handleCommonItemClick(item)">
+ <view class="icon-container"
+ :style="{ background: item.bgColor }">
+ <up-icon :name="item.icon"
+ :size="58"
+ color="#ffffff"></up-icon>
+ </view>
+ <text class="item-label">{{item.label}}</text>
+ </up-grid-item>
+ </up-grid>
+ </view>
+ </view>
+ <!-- 璐ㄩ噺绠$悊妯″潡 -->
+ <view class="common-module collaboration-module"
+ v-if="hasQualityItems">
+ <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 qualityItems"
+ :key="index"
+ @click="handleCommonItemClick(item)">
+ <view class="icon-container"
+ :style="{ background: item.bgColor }">
+ <up-icon :name="item.icon"
+ :size="58"
+ color="#ffffff"></up-icon>
+ </view>
+ <text class="item-label">{{item.label}}</text>
+ </up-grid-item>
+ </up-grid>
+ </view>
+ </view>
</view>
</template>
@@ -327,10 +402,10 @@
icon: "/static/images/icon/caigoutaizhang@2x.png",
label: "鍗遍櫓浣滀笟瀹℃壒",
},
- {
- icon: "/static/images/icon/guzhangfenxi@2x.png",
- label: "闅愭偅鎺掓煡涓婃姤",
- },
+ // {
+ // icon: "/static/images/icon/guzhangfenxi@2x.png",
+ // label: "闅愭偅鎺掓煡涓婃姤",
+ // },
{
icon: "/static/images/icon/guzhangfenxi@2x.png",
label: "鍗遍櫓鐗╂枡绠℃帶",
@@ -339,14 +414,30 @@
icon: "/static/images/icon/guzhangfenxi@2x.png",
label: "搴旀�ラ妗堟煡闃�",
},
- {
- icon: "/static/images/icon/guzhangfenxi@2x.png",
- label: "浜嬫晠涓婃姤璁板綍",
- },
- {
- icon: "/static/images/icon/guzhangfenxi@2x.png",
- label: "瀹夊叏鍩硅鑰冩牳",
- },
+ // {
+ // icon: "/static/images/icon/guzhangfenxi@2x.png",
+ // label: "浜嬫晠涓婃姤璁板綍",
+ // },
+ // {
+ // icon: "/static/images/icon/guzhangfenxi@2x.png",
+ // label: "瀹夊叏鍩硅鑰冩牳",
+ // },
+ ]);
+
+ // 璐ㄩ噺绠$悊
+ const qualityItems = reactive([
+ // {
+ // icon: "/static/images/icon/caigoutaizhang@2x.png",
+ // label: "鍘熸潗鏂欐楠�",
+ // },
+ // {
+ // icon: "/static/images/icon/caigoutaizhang@2x.png",
+ // label: "杩囩▼妫�楠�",
+ // },
+ // {
+ // icon: "/static/images/icon/caigoutaizhang@2x.png",
+ // label: "鍑哄巶妫�楠�",
+ // },
]);
// 鍗忓悓鍔炲叕鍔熻兘鏁版嵁
const collaborationItems = reactive([
@@ -354,10 +445,10 @@
icon: "/static/images/icon/baoxiaoguanli.png",
label: "鍗忓悓瀹℃壒",
},
- {
- icon: "/static/images/icon/huiyiliebiao@2x.png",
- label: "浼氳绠$悊",
- },
+ // {
+ // icon: "/static/images/icon/huiyiliebiao@2x.png",
+ // label: "浼氳绠$悊",
+ // },
{
icon: "/static/images/icon/tongzhigonggao@2x.png",
label: "閫氱煡鍏憡",
@@ -366,18 +457,18 @@
icon: "/static/images/icon/zhishiku@2x.png",
label: "鐭ヨ瘑搴�",
},
- {
- icon: "/static/images/icon/yongyinguanli@2x.png",
- label: "鐢ㄥ嵃绠$悊",
- },
+ // {
+ // icon: "/static/images/icon/yongyinguanli@2x.png",
+ // label: "鐢ㄥ嵃绠$悊",
+ // },
{
icon: "/static/images/icon/guizhangzhidu@2x.png",
label: "瑙勭珷鍒跺害",
},
- {
- icon: "/static/images/icon/kehubaifang@2x.png",
- label: "瀹㈡埛鎷滆",
- },
+ // {
+ // icon: "/static/images/icon/kehubaifang@2x.png",
+ // label: "瀹㈡埛鎷滆",
+ // },
]);
// 鐢熶骇绠℃帶鍔熻兘鏁版嵁
@@ -433,12 +524,55 @@
},
{
icon: "/static/images/icon/xunjianshangchuan@2x.png",
- label: "宸℃绠$悊",
+ label: "宸℃浠诲姟",
},
{
icon: "/static/images/icon/xunjianshangchuan@2x.png",
- label: "宸℃浠诲姟绠$悊",
- }
+ label: "宸℃绠$悊",
+ },
+ ]);
+
+ // 浠撳偍鐗╂祦鍔熻兘鏁版嵁
+ const warehouseLogisticsItems = reactive([
+ {
+ icon: "/static/images/icon/shengchanhesuan@2x.png",
+ label: "鍏ュ簱绠$悊",
+ },
+ {
+ icon: "/static/images/icon/shebeitaizhang@2x.png",
+ label: "鍑哄簱鍙拌处",
+ },
+ {
+ icon: "/static/images/icon/caigoutaizhang@2x.png",
+ label: "搴撳瓨绠$悊",
+ },
+ {
+ icon: "/static/images/icon/caigoutaizhang@2x.png",
+ label: "搴撳瓨鎶ヨ〃",
+ },
+ ]);
+ // 鑰楁潗鐗╂枡鍔熻兘鏁版嵁
+ const materialItems = reactive([
+ {
+ icon: "/static/images/icon/shengchanhesuan@2x.png",
+ label: "鍏ュ簱绠$悊",
+ module: "material",
+ },
+ {
+ icon: "/static/images/icon/shebeitaizhang@2x.png",
+ label: "鍑哄簱鍙拌处",
+ module: "material",
+ },
+ {
+ icon: "/static/images/icon/caigoutaizhang@2x.png",
+ label: "搴撳瓨绠$悊",
+ module: "material",
+ },
+ {
+ icon: "/static/images/icon/caigoutaizhang@2x.png",
+ label: "搴撳瓨鎶ヨ〃",
+ module: "material",
+ },
]);
// 澶勭悊甯哥敤鍔熻兘鐐瑰嚮
@@ -653,6 +787,11 @@
url: "/pages/equipmentManagement/repair/index",
});
break;
+ case "璁惧淇濆吇浠诲姟":
+ uni.navigateTo({
+ url: "/pages/equipmentManagement/upkeepTask/index",
+ });
+ break;
case "璁惧淇濆吇":
uni.navigateTo({
url: "/pages/equipmentManagement/upkeep/index",
@@ -663,7 +802,7 @@
url: "/pages/inspectionUpload/index",
});
break;
- case "宸℃浠诲姟绠$悊":
+ case "宸℃浠诲姟":
uni.navigateTo({
url: "/pages/inspectionManagement/index",
});
@@ -741,6 +880,88 @@
case "鍚堝悓绠$悊":
uni.navigateTo({
url: "/pages/humanResources/contractManagement/index",
+ });
+ break;
+ case "鍏ュ簱绠$悊":
+ uni.navigateTo({
+ url:
+ item.module === "material"
+ ? "/pages/consumablesLogistics/receiptManagement/index"
+ : "/pages/inventoryManagement/receiptManagement/index",
+ });
+ break;
+ case "鍑哄簱鍙拌处":
+ uni.navigateTo({
+ url:
+ item.module === "material"
+ ? "/pages/consumablesLogistics/dispatchLog/index"
+ : "/pages/inventoryManagement/dispatchLog/index",
+ });
+ break;
+ case "搴撳瓨绠$悊":
+ uni.navigateTo({
+ url:
+ item.module === "material"
+ ? "/pages/consumablesLogistics/stockManagement/index"
+ : "/pages/inventoryManagement/stockManagement/index",
+ });
+ break;
+ case "搴撳瓨鎶ヨ〃":
+ uni.navigateTo({
+ url:
+ item.module === "material"
+ ? "/pages/consumablesLogistics/stockReport/index"
+ : "/pages/inventoryManagement/stockReport/index",
+ });
+ break;
+ case "鍘熸潗鏂欐楠�":
+ uni.navigateTo({
+ url: "/pages/qualityManagement/materialInspection/index",
+ });
+ break;
+ case "杩囩▼妫�楠�":
+ uni.navigateTo({
+ url: "/pages/qualityManagement/processInspection/index",
+ });
+ break;
+ case "鍑哄巶妫�楠�":
+ uni.navigateTo({
+ url: "/pages/qualityManagement/finalInspection/index",
+ });
+ break;
+ case "妫�娴嬮」缁存姢":
+ uni.navigateTo({
+ url: "/pages/qualityManagement/InspectItem/index",
+ });
+ break;
+ case "鎸囨爣缁存姢":
+ uni.navigateTo({
+ url: "/pages/qualityManagement/metricMaintenance/index",
+ });
+ break;
+ case "鎸囨爣缁戝畾":
+ uni.navigateTo({
+ url: "/pages/qualityManagement/metricBinding/index",
+ });
+ break;
+ case "涓嶅悎鏍煎搧绠$悊":
+ uni.navigateTo({
+ url: "/pages/qualityManagement/nonconformingManagement/index",
+ });
+ break;
+ case "鍘熸枡妫�":
+ uni.navigateTo({
+ url: "/pages/qualityManagement/rawMaterial/index",
+ });
+ break;
+ case "杩戞晥鏈熼��璐�":
+ uni.navigateTo({
+ url: "/pages/qualityManagement/nearExpiryReturn/index",
+ });
+ break;
+ case "璐ㄩ噺鐪嬫澘":
+ uni.navigateTo({
+ url: "/pages/qualityManagement/visualization/qualityDashboard",
});
break;
default:
@@ -985,6 +1206,14 @@
});
purchaseItems.splice(0, purchaseItems.length, ...filteredPurchase);
+ // 璐ㄩ噺绠$悊鑿滃崟锛氬浐瀹氬彧灞曠ず 3 涓叆鍙�
+ const originalQuality = [
+ { icon: "/static/images/icon/caigoutaizhang@2x.png", label: "妫�娴嬮」缁存姢" },
+ { icon: "/static/images/icon/caigoutaizhang@2x.png", label: "鍘熸枡妫�" },
+ { icon: "/static/images/icon/caigoutaizhang@2x.png", label: "涓嶅悎鏍煎搧绠$悊" },
+ ];
+ qualityItems.splice(0, qualityItems.length, ...originalQuality);
+
// 杩囨护瀹夊叏鐢熶骇鑿滃崟
const originalSafety = [
{ icon: "/static/images/icon/caigoutaizhang@2x.png", label: "瑙勭▼涓庤祫璐�" },
@@ -1040,20 +1269,80 @@
const originalEquipment = [
{ icon: "/static/images/icon/shbeibaoxiu@2x.png", label: "杩愯绠$悊" },
{ icon: "/static/images/icon/shbeibaoxiu@2x.png", label: "璁惧鎶ヤ慨" },
+ { icon: "/static/images/icon/shbeibaoyang@2x.png", label: "璁惧淇濆吇浠诲姟" },
{ icon: "/static/images/icon/shbeibaoyang@2x.png", label: "璁惧淇濆吇" },
+ { icon: "/static/images/icon/xunjianshangchuan@2x.png", label: "宸℃浠诲姟" },
{ icon: "/static/images/icon/xunjianshangchuan@2x.png", label: "宸℃绠$悊" },
- { icon: "/static/images/icon/xunjianshangchuan@2x.png", label: "宸℃浠诲姟绠$悊" },
];
const filteredEquipment = originalEquipment.filter(item => {
return allowedMenuTitles.has(item.label);
});
+ if (filteredEquipment.some(i => i.label === "璁惧淇濆吇")) {
+ const upkeepTask = originalEquipment.find(i => i.label === "璁惧淇濆吇浠诲姟");
+ if (upkeepTask && !filteredEquipment.some(i => i.label === "璁惧淇濆吇浠诲姟")) {
+ const upkeepIndex = filteredEquipment.findIndex(i => i.label === "璁惧淇濆吇");
+ filteredEquipment.splice(upkeepIndex, 0, upkeepTask);
+ }
+ }
if (filteredEquipment.some(i => i.label === "宸℃绠$悊")) {
- const task = originalEquipment.find(i => i.label === "宸℃浠诲姟绠$悊");
- if (task && !filteredEquipment.some(i => i.label === "宸℃浠诲姟绠$悊")) {
- filteredEquipment.push(task);
+ const task = originalEquipment.find(i => i.label === "宸℃浠诲姟");
+ if (task && !filteredEquipment.some(i => i.label === "宸℃浠诲姟")) {
+ const manageIndex = filteredEquipment.findIndex(i => i.label === "宸℃绠$悊");
+ filteredEquipment.splice(manageIndex, 0, task);
}
}
equipmentItems.splice(0, equipmentItems.length, ...filteredEquipment);
+
+ // 杩囨护浠撳偍鐗╂祦鑿滃崟
+ const originalWarehouseLogistics = [
+ {
+ icon: "/static/images/icon/shengchanhesuan@2x.png",
+ label: "鍏ュ簱绠$悊",
+ module: "warehouse",
+ },
+ {
+ icon: "/static/images/icon/shebeitaizhang@2x.png",
+ label: "鍑哄簱鍙拌处",
+ module: "warehouse",
+ },
+ {
+ icon: "/static/images/icon/guzhangfenxi@2x.png",
+ label: "搴撳瓨绠$悊",
+ module: "warehouse",
+ },
+ {
+ icon: "/static/images/icon/caigoutaizhang@2x.png",
+ label: "搴撳瓨鎶ヨ〃",
+ module: "warehouse",
+ },
+ ];
+ const filteredWarehouseLogistics = originalWarehouseLogistics.filter(
+ item => allowedMenuTitles.has(item.label)
+ );
+ warehouseLogisticsItems.splice(
+ 0,
+ warehouseLogisticsItems.length,
+ ...filteredWarehouseLogistics
+ );
+
+ // 杩囨护鑰楁潗鐗╂枡鑿滃崟
+ const materialCandidates = label => {
+ const list = [label, `鑰楁潗${label}`];
+ if (label.endsWith("绠$悊")) {
+ list.push(`鑰楁潗${label.replace("绠$悊", "")}`);
+ }
+ return list;
+ };
+ const originalMaterial = [
+ { icon: "/static/images/icon/shengchanhesuan@2x.png", label: "鍏ュ簱绠$悊", module: "material" },
+ { icon: "/static/images/icon/shebeitaizhang@2x.png", label: "鍑哄簱鍙拌处", module: "material" },
+ { icon: "/static/images/icon/guzhangfenxi@2x.png", label: "搴撳瓨绠$悊", module: "material" },
+ { icon: "/static/images/icon/caigoutaizhang@2x.png", label: "搴撳瓨鎶ヨ〃", module: "material" },
+ ];
+ const filteredMaterial = originalMaterial.filter(item => {
+ return materialCandidates(item.label).some(t => allowedMenuTitles.has(t));
+ });
+ materialItems.splice(0, materialItems.length, ...filteredMaterial);
};
// 妫�鏌ユā鍧楁槸鍚︽湁鑿滃崟椤归渶瑕佹樉绀�
@@ -1061,9 +1350,14 @@
const hasPurchaseItems = computed(() => purchaseItems.length > 0);
const hasCollaborationItems = computed(() => collaborationItems.length > 0);
const hasSafetyItems = computed(() => safetyItems.length > 0);
+ const hasQualityItems = computed(() => qualityItems.length > 0);
const hasHumanResourcesItems = computed(() => humanResourcesItems.length > 0);
const hasProductionItems = computed(() => productionItems.length > 0);
const hasEquipmentItems = computed(() => equipmentItems.length > 0);
+ const hasWarehouseLogisticsItems = computed(
+ () => warehouseLogisticsItems.length > 0
+ );
+ const hasMaterialItems = computed(() => materialItems.length > 0);
onMounted(() => {
// 姣忔杩涘叆棣栭〉閮藉己鍒跺埛鏂扮敤鎴蜂俊鎭拰璺敱鏉冮檺锛屼笉鍋氭湰鍦扮紦瀛樺垽鏂�
--
Gitblit v1.9.3