From 09f98ab6b6ac0779f12bd003443e1e6065cad256 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期二, 12 五月 2026 14:33:31 +0800
Subject: [PATCH] fix: 支持按照工单进行输入报工信息报工。也可以扫码报工
---
src/pages/index.vue | 24 -
src/pages.json | 7
src/pages/works.vue | 87 ------
src/pages/productionManagement/productionReport/workOrderList.vue | 345 ++++++++++++++++++++++++++
src/manifest.json | 276 ++++++++++----------
5 files changed, 494 insertions(+), 245 deletions(-)
diff --git a/src/manifest.json b/src/manifest.json
index 3934c37..40c5cad 100644
--- a/src/manifest.json
+++ b/src/manifest.json
@@ -1,143 +1,143 @@
{
- "name" : "淇℃伅绠$悊",
- "appid" : "__UNI__099A590",
- "description" : "",
- "versionName" : "1.1.5",
- "versionCode" : 100,
- "transformPx" : false,
- /* 5+App鐗规湁鐩稿叧 */
- "app-plus" : {
- "compatible" : {
- "usingComponents" : true,
- "ignoreVersion" : true
- },
- "usingComponents" : true,
- "nvueStyleCompiler" : "uni-app",
- "compilerVersion" : 3,
- "splashscreen" : {
- "alwaysShowBeforeRender" : true,
- "waiting" : true,
- "autoclose" : true,
- "delay" : 0
- },
- /* 妯″潡閰嶇疆 */
- "modules" : {
- "Camera" : {},
- "Barcode" : {},
- "Push" : {},
- "Maps" : {}
- },
- /* 搴旂敤鍙戝竷淇℃伅 */
- "distribute" : {
- /* android鎵撳寘閰嶇疆 */
- "android" : {
- "permissions" : [
- "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
- "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
- "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
- "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
- "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
- "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
- "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
- "<uses-permission android:name=\"android.permission.CAMERA\"/>",
- "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
- "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
- "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
- "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
- "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
- "<uses-feature android:name=\"android.hardware.camera\"/>",
- "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
- "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
- "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
- "<uses-permission android:name=\"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS\"/>",
- "<uses-feature android:name=\"android.hardware.location\"/>",
- "<uses-feature android:name=\"android.hardware.location.gps\"/>",
- "<uses-feature android:name=\"android.hardware.location.network\"/>"
- ]
- },
- /* ios鎵撳寘閰嶇疆 */
- "ios" : {
- "dSYMs" : false,
- "plist" : {
- "NSLocationWhenInUseUsageDescription" : "闇�瑕佽幏鍙栨偍鐨勪綅缃俊鎭潵璁板綍瀹㈡埛鎷滆鍦扮偣",
- "NSLocationAlwaysAndWhenInUseUsageDescription" : "闇�瑕佽幏鍙栨偍鐨勪綅缃俊鎭潵璁板綍瀹㈡埛鎷滆鍦扮偣"
- }
- },
- /* SDK閰嶇疆 */
- "sdkConfigs" : {
- "push" : {
- "unipush" : {
- "icons" : {
- "small" : {
- "ldpi" : "D:/xindao/wenjian/img/logo/app.png"
- }
- },
- "offline" : false
- }
- },
- "maps" : {
- "amap" : {
- "name" : "amap_18330707920ae9zOwCD",
- "appkey_ios" : "c2b4e3889ab4cb9468e9c8ae4f3ab53f",
- "appkey_android" : "c2b4e3889ab4cb9468e9c8ae4f3ab53f"
- }
- }
- },
- "icons" : {
- "android" : {
- "hdpi" : "unpackage/res/icons/72x72.png",
- "xhdpi" : "unpackage/res/icons/96x96.png",
- "xxhdpi" : "unpackage/res/icons/144x144.png",
- "xxxhdpi" : "unpackage/res/icons/192x192.png"
- },
- "ios" : {
- "appstore" : "unpackage/res/icons/1024x1024.png",
- "ipad" : {
- "app" : "unpackage/res/icons/76x76.png",
- "app@2x" : "unpackage/res/icons/152x152.png",
- "notification" : "unpackage/res/icons/20x20.png",
- "notification@2x" : "unpackage/res/icons/40x40.png",
- "proapp@2x" : "unpackage/res/icons/167x167.png",
- "settings" : "unpackage/res/icons/29x29.png",
- "settings@2x" : "unpackage/res/icons/58x58.png",
- "spotlight" : "unpackage/res/icons/40x40.png",
- "spotlight@2x" : "unpackage/res/icons/80x80.png"
- },
- "iphone" : {
- "app@2x" : "unpackage/res/icons/120x120.png",
- "app@3x" : "unpackage/res/icons/180x180.png",
- "notification@2x" : "unpackage/res/icons/40x40.png",
- "notification@3x" : "unpackage/res/icons/60x60.png",
- "settings@2x" : "unpackage/res/icons/58x58.png",
- "settings@3x" : "unpackage/res/icons/87x87.png",
- "spotlight@2x" : "unpackage/res/icons/80x80.png",
- "spotlight@3x" : "unpackage/res/icons/120x120.png"
- }
- }
- }
+ "name": "闈掗摑缁胯",
+ "appid": "__UNI__099A590",
+ "description": "",
+ "versionName": "1.1.5",
+ "versionCode": 100,
+ "transformPx": false,
+ /* 5+App鐗规湁鐩稿叧 */
+ "app-plus": {
+ "compatible": {
+ "usingComponents": true,
+ "ignoreVersion": true
+ },
+ "usingComponents": true,
+ "nvueStyleCompiler": "uni-app",
+ "compilerVersion": 3,
+ "splashscreen": {
+ "alwaysShowBeforeRender": true,
+ "waiting": true,
+ "autoclose": true,
+ "delay": 0
+ },
+ /* 妯″潡閰嶇疆 */
+ "modules": {
+ "Camera": {},
+ "Barcode": {},
+ "Push": {},
+ "Maps": {}
+ },
+ /* 搴旂敤鍙戝竷淇℃伅 */
+ "distribute": {
+ /* android鎵撳寘閰嶇疆 */
+ "android": {
+ "permissions": [
+ "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+ "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+ "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+ "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+ "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+ "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+ "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+ "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+ "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+ "<uses-feature android:name=\"android.hardware.camera\"/>",
+ "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
+ "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
+ "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
+ "<uses-permission android:name=\"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS\"/>",
+ "<uses-feature android:name=\"android.hardware.location\"/>",
+ "<uses-feature android:name=\"android.hardware.location.gps\"/>",
+ "<uses-feature android:name=\"android.hardware.location.network\"/>"
+ ]
+ },
+ /* ios鎵撳寘閰嶇疆 */
+ "ios": {
+ "dSYMs": false,
+ "plist": {
+ "NSLocationWhenInUseUsageDescription": "闇�瑕佽幏鍙栨偍鐨勪綅缃俊鎭潵璁板綍瀹㈡埛鎷滆鍦扮偣",
+ "NSLocationAlwaysAndWhenInUseUsageDescription": "闇�瑕佽幏鍙栨偍鐨勪綅缃俊鎭潵璁板綍瀹㈡埛鎷滆鍦扮偣"
}
- },
- /* 蹇簲鐢ㄧ壒鏈夌浉鍏� */
- "quickapp" : {},
- /* 灏忕▼搴忕壒鏈夌浉鍏� */
- "mp-weixin" : {
- "appid" : "",
- "setting" : {
- "urlCheck" : false
+ },
+ /* SDK閰嶇疆 */
+ "sdkConfigs": {
+ "push": {
+ "unipush": {
+ "icons": {
+ "small": {
+ "ldpi": "D:/xindao/wenjian/img/logo/app.png"
+ }
+ },
+ "offline": false
+ }
},
- "usingComponents" : true
+ "maps": {
+ "amap": {
+ "name": "amap_18330707920ae9zOwCD",
+ "appkey_ios": "c2b4e3889ab4cb9468e9c8ae4f3ab53f",
+ "appkey_android": "c2b4e3889ab4cb9468e9c8ae4f3ab53f"
+ }
+ }
+ },
+ "icons": {
+ "android": {
+ "hdpi": "unpackage/res/icons/72x72.png",
+ "xhdpi": "unpackage/res/icons/96x96.png",
+ "xxhdpi": "unpackage/res/icons/144x144.png",
+ "xxxhdpi": "unpackage/res/icons/192x192.png"
+ },
+ "ios": {
+ "appstore": "unpackage/res/icons/1024x1024.png",
+ "ipad": {
+ "app": "unpackage/res/icons/76x76.png",
+ "app@2x": "unpackage/res/icons/152x152.png",
+ "notification": "unpackage/res/icons/20x20.png",
+ "notification@2x": "unpackage/res/icons/40x40.png",
+ "proapp@2x": "unpackage/res/icons/167x167.png",
+ "settings": "unpackage/res/icons/29x29.png",
+ "settings@2x": "unpackage/res/icons/58x58.png",
+ "spotlight": "unpackage/res/icons/40x40.png",
+ "spotlight@2x": "unpackage/res/icons/80x80.png"
+ },
+ "iphone": {
+ "app@2x": "unpackage/res/icons/120x120.png",
+ "app@3x": "unpackage/res/icons/180x180.png",
+ "notification@2x": "unpackage/res/icons/40x40.png",
+ "notification@3x": "unpackage/res/icons/60x60.png",
+ "settings@2x": "unpackage/res/icons/58x58.png",
+ "settings@3x": "unpackage/res/icons/87x87.png",
+ "spotlight@2x": "unpackage/res/icons/80x80.png",
+ "spotlight@3x": "unpackage/res/icons/120x120.png"
+ }
+ }
+ }
+ }
+ },
+ /* 蹇簲鐢ㄧ壒鏈夌浉鍏� */
+ "quickapp": {},
+ /* 灏忕▼搴忕壒鏈夌浉鍏� */
+ "mp-weixin": {
+ "appid": "",
+ "setting": {
+ "urlCheck": false
},
- "mp-alipay" : {
- "usingComponents" : true
- },
- "mp-baidu" : {
- "usingComponents" : true
- },
- "mp-toutiao" : {
- "usingComponents" : true
- },
- "uniStatistics" : {
- "enable" : false
- },
- "vueVersion" : "3"
+ "usingComponents": true
+ },
+ "mp-alipay": {
+ "usingComponents": true
+ },
+ "mp-baidu": {
+ "usingComponents": true
+ },
+ "mp-toutiao": {
+ "usingComponents": true
+ },
+ "uniStatistics": {
+ "enable": false
+ },
+ "vueVersion": "3"
}
diff --git a/src/pages.json b/src/pages.json
index f2353d0..b95eb32 100644
--- a/src/pages.json
+++ b/src/pages.json
@@ -824,6 +824,13 @@
}
},
{
+ "path": "pages/productionManagement/productionReport/workOrderList",
+ "style": {
+ "navigationBarTitleText": "鐢熶骇鎶ュ伐",
+ "navigationStyle": "custom"
+ }
+ },
+ {
"path": "pages/productionManagement/productionReporting/ledger",
"style": {
"navigationBarTitleText": "鎶ュ伐鍙拌处",
diff --git a/src/pages/index.vue b/src/pages/index.vue
index b7d3fa9..bf79acd 100644
--- a/src/pages/index.vue
+++ b/src/pages/index.vue
@@ -206,7 +206,7 @@
{
label: "鐢熶骇鎶ュ伐",
icon: "/static/images/icon/shengchanbaogong.svg",
- action: "scan",
+ route: "/pages/productionManagement/productionReport/workOrderList",
},
{
label: "璁惧宸℃",
@@ -242,28 +242,6 @@
}
function handleQuickTool(item) {
- if (item?.action === "scan") {
- // 鐢熶骇鎶ュ伐 - 璋冪敤鎵爜
- uni.scanCode({
- success: (res) => {
- console.log("鎵爜缁撴灉:", res);
- // 瑙f瀽鎵爜缁撴灉骞惰烦杞埌鐢熶骇鎶ュ伐椤甸潰
- try {
- const scanResult = JSON.parse(res.result);
- uni.navigateTo({
- url: `/pages/productionManagement/productionReport/index?orderRow=${encodeURIComponent(JSON.stringify(scanResult))}`
- });
- } catch (e) {
- console.error("鎵爜缁撴灉瑙f瀽澶辫触:", e);
- uni.showToast({ title: "鏃犳晥鐨勪簩缁寸爜", icon: "none" });
- }
- },
- fail: (err) => {
- console.error("鎵爜澶辫触:", err);
- }
- });
- return;
- }
if (!item?.route) return;
uni.navigateTo({ url: item.route });
}
diff --git a/src/pages/productionManagement/productionReport/workOrderList.vue b/src/pages/productionManagement/productionReport/workOrderList.vue
new file mode 100644
index 0000000..0c9e126
--- /dev/null
+++ b/src/pages/productionManagement/productionReport/workOrderList.vue
@@ -0,0 +1,345 @@
+<template>
+ <view class="report-entry-page">
+ <PageHeader title="鐢熶骇鎶ュ伐"
+ @back="goBack" />
+
+ <view class="scan-section">
+ <view class="scan-card"
+ @click="startScan">
+ <up-icon name="scan"
+ size="28"
+ color="#2979ff" />
+ <view class="scan-text-wrap">
+ <text class="scan-title">鎵爜鎶ュ伐</text>
+ </view>
+ <up-icon name="arrow-right"
+ size="18"
+ color="#c0c4cc" />
+ </view>
+ </view>
+
+ <scroll-view v-if="tableData.length > 0"
+ scroll-y
+ class="list-body"
+ @scrolltolower="loadMore">
+ <view v-for="(item, index) in tableData"
+ :key="item.id || index"
+ class="ledger-item"
+ @click="onCardClick(item)">
+ <view class="item-header">
+ <view class="item-left">
+ <view class="document-icon">
+ <up-icon name="file-text"
+ size="16"
+ color="#ffffff" />
+ </view>
+ <text class="item-id">{{ item.workOrderNo || "-" }}</text>
+ </view>
+ <view class="item-right operation-header-right">
+ <view class="operation-pill">
+ <text class="operation-pill-text">{{ operationNameOf(item) }}</text>
+ </view>
+ <view v-if="item.endOrder"
+ class="end-pill">
+ <text class="end-pill-text">宸茬粨鏉�</text>
+ </view>
+ </view>
+ </view>
+ <up-divider />
+ <view class="item-details">
+ <view class="detail-row">
+ <text class="detail-label">鐢熶骇璁㈠崟鍙�</text>
+ <text class="detail-value">{{ item.npsNo || "-" }}</text>
+ </view>
+ <view class="detail-row">
+ <text class="detail-label">浜у搧鍚嶇О</text>
+ <text class="detail-value">{{ item.productName || "-" }}</text>
+ </view>
+ <view class="detail-row">
+ <text class="detail-label">瑙勬牸</text>
+ <text class="detail-value">{{ item.model || "-" }}</text>
+ </view>
+ <view class="detail-row">
+ <text class="detail-label">鍗曚綅</text>
+ <text class="detail-value">{{ item.unit || "-" }}</text>
+ </view>
+ <view class="detail-row">
+ <text class="detail-label">闇�姹傛暟閲�</text>
+ <text class="detail-value">{{ item.planQuantity ?? "-" }}</text>
+ </view>
+ <view class="detail-row">
+ <text class="detail-label">瀹屾垚鏁伴噺</text>
+ <text class="detail-value">{{ item.completeQuantity ?? "-" }}</text>
+ </view>
+ </view>
+ </view>
+ <up-loadmore :status="loadStatus" />
+ </scroll-view>
+
+ <view v-else-if="!loading"
+ class="no-data">
+ <up-empty mode="data"
+ text="鏆傛棤宸ュ崟鏁版嵁" />
+ </view>
+ </view>
+</template>
+
+<script setup>
+ import { ref, reactive } from "vue";
+ import { onShow } from "@dcloudio/uni-app";
+ import PageHeader from "@/components/PageHeader.vue";
+ import { productWorkOrderPage } from "@/api/productionManagement/workOrder.js";
+ import { getProductWorkOrderById } from "@/api/productionManagement/productionReporting";
+ import modal from "@/plugins/modal";
+ import useUserStore from "@/store/modules/user";
+
+ const userStore = useUserStore();
+
+ const loading = ref(false);
+ const tableData = ref([]);
+ const loadStatus = ref("loadmore");
+
+ const page = reactive({
+ current: 1,
+ size: 10,
+ total: 0,
+ });
+
+ const goBack = () => {
+ uni.navigateBack();
+ };
+
+ const operationNameOf = item =>
+ item?.operationName || item?.processName || "-";
+
+ const reportPermissionMessage = row => {
+ if (row.endOrder) return "璇ヨ鍗曞凡缁撴潫锛屾棤娉曟姤宸�";
+ const pq = Number(row.planQuantity);
+ if (Number.isFinite(pq) && pq <= 0) return "寰呯敓浜ф暟閲忎负0锛屾棤娉曟姤宸�";
+ // if (row.userIds) {
+ // try {
+ // const userIds =
+ // typeof row.userIds === "string" ? JSON.parse(row.userIds) : row.userIds;
+ // if (
+ // Array.isArray(userIds) &&
+ // userIds.length > 0 &&
+ // !userIds.some(id => String(id) === String(userStore.id))
+ // ) {
+ // return "鎮ㄤ笉鍦ㄨ宸ュ崟鐨勬寚瀹氭姤宸ヤ汉鑼冨洿鍐�";
+ // }
+ // } catch {
+ // return "宸ュ崟鎶ュ伐鏉冮檺鏍¢獙澶辫触";
+ // }
+ // }
+ return "";
+ };
+
+ const navigateToReport = orderRowStr => {
+ uni.navigateTo({
+ url: `/pages/productionManagement/productionReport/index?orderRow=${encodeURIComponent(orderRowStr)}`,
+ });
+ };
+
+ const onCardClick = row => {
+ const msg = reportPermissionMessage(row);
+ if (msg) {
+ uni.showToast({ title: msg, icon: "none" });
+ return;
+ }
+ navigateToReport(JSON.stringify(row));
+ };
+
+ const handleQuery = () => {
+ page.current = 1;
+ tableData.value = [];
+ getList();
+ };
+
+ const getList = () => {
+ if (loading.value) return;
+ loading.value = true;
+ const params = { ...page };
+ productWorkOrderPage(params)
+ .then(res => {
+ loading.value = false;
+ const records = res.data?.records || [];
+ tableData.value =
+ page.current === 1 ? records : [...tableData.value, ...records];
+ page.total = res.data?.total ?? 0;
+ loadStatus.value =
+ tableData.value.length >= page.total ? "nomore" : "loadmore";
+ })
+ .catch(() => {
+ loading.value = false;
+ uni.showToast({ title: "鍔犺浇澶辫触", icon: "none" });
+ });
+ };
+
+ const loadMore = () => {
+ if (loadStatus.value === "nomore" || loading.value) return;
+ page.current++;
+ getList();
+ };
+
+ const startScan = () => {
+ uni.scanCode({
+ success: async res => {
+ const scanResult = res.result;
+ let orderRow = "";
+
+ const isNumericId = /^\d+$/.test(String(scanResult).trim());
+
+ if (isNumericId) {
+ const workOrderId = String(scanResult).trim();
+ modal.loading("姝e湪鑾峰彇宸ュ崟淇℃伅...");
+ try {
+ const workRes = await getProductWorkOrderById({ id: workOrderId });
+ modal.closeLoading();
+ if (workRes.code === 200 && workRes.data) {
+ const workData = workRes.data;
+ if (workData.endOrder === true) {
+ modal.msgError("璇ヨ鍗曞凡缁撴潫锛屾棤娉曟姤宸�");
+ return;
+ }
+ orderRow = JSON.stringify(workData);
+ } else {
+ modal.msgError("鏈壘鍒板搴旂殑宸ュ崟淇℃伅");
+ return;
+ }
+ } catch (error) {
+ modal.closeLoading();
+ modal.msgError(
+ "鑾峰彇宸ュ崟淇℃伅澶辫触: " + (error?.message || "鏈煡閿欒")
+ );
+ return;
+ }
+ } else {
+ try {
+ const orderRowStart = scanResult.indexOf("orderRow={");
+ if (orderRowStart !== -1) {
+ orderRow = scanResult.substring(orderRowStart + 9);
+ } else {
+ orderRow = scanResult;
+ }
+ JSON.parse(orderRow);
+ } catch {
+ try {
+ const parsed = JSON.parse(scanResult);
+ orderRow = JSON.stringify(parsed);
+ } catch {
+ modal.msgError("璁㈠崟瑙f瀽澶辫触锛岃妫�鏌ヤ簩缁寸爜鏍煎紡");
+ return;
+ }
+ }
+ }
+
+ navigateToReport(orderRow);
+ },
+ fail: () => {
+ uni.showToast({ title: "鎵爜澶辫触", icon: "none" });
+ },
+ });
+ };
+
+ onShow(() => {
+ handleQuery();
+ });
+</script>
+
+<style scoped lang="scss">
+ @import "@/styles/sales-common.scss";
+
+ .report-entry-page {
+ min-height: 100vh;
+ background: #f8f9fa;
+ display: flex;
+ flex-direction: column;
+ }
+
+ .scan-section {
+ padding: 12px 16px 8px;
+ }
+
+ .scan-card {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ background: #fff;
+ border-radius: 12px;
+ padding: 16px;
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
+ }
+
+ .scan-text-wrap {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ gap: 4px;
+ }
+
+ .scan-title {
+ font-size: 16px;
+ font-weight: 600;
+ color: #303133;
+ }
+
+ .scan-desc {
+ font-size: 12px;
+ color: #909399;
+ }
+
+ .list-body {
+ flex: 1;
+ height: 0;
+ padding: 12px 16px 20px;
+ box-sizing: border-box;
+ }
+
+ .operation-header-right {
+ flex: 1;
+ min-width: 0;
+ justify-content: flex-end;
+ align-items: center;
+ flex-wrap: wrap;
+ gap: 8px;
+ }
+
+ .operation-pill {
+ max-width: 58%;
+ min-width: 0;
+ padding: 5px 12px;
+ border-radius: 20px;
+ background: #e8f1ff;
+ flex-shrink: 0;
+ }
+
+ .operation-pill-text {
+ font-size: 12px;
+ line-height: 1.35;
+ color: #2979ff;
+ font-weight: 500;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ display: block;
+ }
+
+ .end-pill {
+ padding: 5px 10px;
+ border-radius: 20px;
+ background: #fef0f0;
+ flex-shrink: 0;
+ }
+
+ .end-pill-text {
+ font-size: 12px;
+ line-height: 1.35;
+ color: #f56c6c;
+ font-weight: 500;
+ }
+
+ .no-data {
+ flex: 1;
+ padding-top: 80px;
+ }
+</style>
diff --git a/src/pages/works.vue b/src/pages/works.vue
index 121a6e9..8d36ad9 100644
--- a/src/pages/works.vue
+++ b/src/pages/works.vue
@@ -306,7 +306,6 @@
<script setup>
import { ref, onMounted, nextTick, reactive, computed } from "vue";
import { userLoginFacotryList } from "@/api/login";
- import { getProductWorkOrderById } from "@/api/productionManagement/productionReporting";
import DownloadProgressMask from "@/components/DownloadProgressMask.vue";
import modal from "@/plugins/modal";
import useUserStore from "@/store/modules/user";
@@ -868,7 +867,9 @@
});
break;
case "鐢熶骇鎶ュ伐":
- getcode();
+ uni.navigateTo({
+ url: "/pages/productionManagement/productionReport/workOrderList",
+ });
break;
case "鎶ュ伐鍙拌处":
uni.navigateTo({
@@ -1076,88 +1077,6 @@
factoryList.value = [];
});
}
- const getcode = async () => {
- uni.scanCode({
- success: async res => {
- // 瑙f瀽浜岀淮鐮佸唴瀹�
- const scanResult = res.result;
- let orderRow = "";
-
- // 鍒ゆ柇鎵弿缁撴灉鏄惁涓虹函鏁板瓧锛坕d锛�
- const isNumericId = /^\d+$/.test(scanResult.trim());
-
- if (isNumericId) {
- // 濡傛灉鏄函鏁板瓧锛屾牴鎹� id 鑾峰彇宸ュ崟鏁版嵁
- const workOrderId = scanResult.trim();
- modal.loading("姝e湪鑾峰彇宸ュ崟淇℃伅...");
- try {
- const workRes = await getProductWorkOrderById({ id: workOrderId });
- modal.closeLoading();
-
- console.log("宸ュ崟鏌ヨ缁撴灉:", workRes);
-
- if (workRes.code === 200 && workRes.data) {
- // 鏂版帴鍙h繑鍥炵殑鏄崟涓璞★紝涓嶆槸鏁扮粍
- const workData = workRes.data;
- console.log("宸ュ崟鏁版嵁:", workData);
-
- if (workData.endOrder === true) {
- modal.msgError("璇ヨ鍗曞凡缁撴潫锛屾棤娉曟姤宸�");
- return;
- }
-
- orderRow = JSON.stringify(workData);
-
- console.log("鏋勯�犵殑orderRow:", orderRow);
- } else {
- modal.msgError("鏈壘鍒板搴旂殑宸ュ崟淇℃伅");
- return;
- }
- } catch (error) {
- modal.closeLoading();
- console.error("鑾峰彇宸ュ崟淇℃伅澶辫触:", error);
- modal.msgError("鑾峰彇宸ュ崟淇℃伅澶辫触: " + (error.message || "鏈煡閿欒"));
- return;
- }
- } else {
- // 濡傛灉涓嶆槸绾暟瀛楋紝灏濊瘯浠庢壂鐮佺粨鏋滀腑鎻愬彇orderRow鍙傛暟
- try {
- // 澶勭悊娣峰悎鏍煎紡: http://...?orderRow={...}
- const orderRowStart = scanResult.indexOf("orderRow={");
- if (orderRowStart !== -1) {
- // 鎻愬彇浠巓rderRow={寮�濮嬬殑JSON鍐呭
- const jsonPart = scanResult.substring(orderRowStart + 9); // 9鏄�"orderRow=".length
- orderRow = jsonPart;
- } else {
- // 濡傛灉鐩存帴鏄疛SON瀛楃涓诧紝灏濊瘯瑙f瀽
- orderRow = scanResult;
- }
- } catch (e) {
- console.error(e, "瑙f瀽澶辫触====????=====");
- orderRow = "";
- }
-
- // 楠岃瘉鏄惁涓烘湁鏁堢殑JSON
- try {
- JSON.parse(orderRow);
- } catch (error) {
- modal.msgError("璁㈠崟瑙f瀽澶辫触锛岃妫�鏌ヤ簩缁寸爜鏍煎紡");
- return;
- }
- }
- // 鎵爜鎴愬姛鍚庤烦杞埌鐢熶骇鎶ュ伐椤甸潰锛屽苟浼犻�抩rderRow鍙傛暟
- uni.navigateTo({
- url: `/pages/productionManagement/productionReport/index?orderRow=${orderRow}`,
- });
- },
- fail: err => {
- uni.showToast({
- title: "鎵爜澶辫触",
- icon: "none",
- });
- },
- });
- };
const changeFactory = async arr => {
show.value = false;
const factoryId = factoryListTem.value[arr.indexs[0]].deptId;
--
Gitblit v1.9.3