From bfbea958be8afe7e0522dc19f8a468eb35a3f9b9 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期四, 13 十一月 2025 10:29:09 +0800
Subject: [PATCH] fix: 钢芯领用添加芯线类型字段,添加扫码领用功能
---
src/pages/production/twist/receive/steelCore/index.vue | 170 +++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 124 insertions(+), 46 deletions(-)
diff --git a/src/pages/production/twist/receive/steelCore/index.vue b/src/pages/production/twist/receive/steelCore/index.vue
index a0f40cd..676f782 100644
--- a/src/pages/production/twist/receive/steelCore/index.vue
+++ b/src/pages/production/twist/receive/steelCore/index.vue
@@ -8,7 +8,12 @@
@query="getList"
>
<template #top>
- <CardTitle title="閽㈣姱棰嗙敤" :hideAction="true" :full="false" @action="addReport" />
+ <CardTitle title="鑺嚎棰嗙敤" :hideAction="false" :full="false">
+ <template #action>
+ <wd-button type="icon" icon="scan" color="#0D867F" @click="openScan"></wd-button>
+ <wd-button type="icon" icon="add-circle" color="#0D867F" @click="addReport"></wd-button>
+ </template>
+ </CardTitle>
</template>
<wd-card v-for="(item, index) in cardList" :key="index" type="rectangle" custom-class="round">
<template #title>
@@ -23,15 +28,29 @@
<ProductionCard :data="cardAttr" :value="item" color="#0D867F" />
</wd-card>
</z-paging>
+ <wd-popup v-model="addDialog.visible" position="bottom" custom-class="yl-popup">
+ <view class="action px-3">
+ <wd-button type="text" @click="cancelAdd">鍙栨秷</wd-button>
+ <wd-button type="text" @click="submitAdd">纭畾</wd-button>
+ </view>
+ <SteelCore ref="addFormRef" mode="add" :wireId="paramsId" @refresh="reloadList" />
+ </wd-popup>
+ <wd-popup v-model="editDialog.visible" position="bottom" custom-class="yl-popup">
+ <view class="action px-3">
+ <wd-button type="text" @click="cancelEdit">鍙栨秷</wd-button>
+ <wd-button type="text" @click="submitEdit">纭畾</wd-button>
+ </view>
+ <SteelCore
+ ref="editFormRef"
+ mode="edit"
+ :wireId="paramsId"
+ :editData="editDialog.currentItem"
+ @refresh="reloadList"
+ />
+ </wd-popup>
+ <Scan ref="scanRef" emitName="scanSteelCore" />
+ <wd-toast />
</view>
- <wd-popup v-model="dialog.visible" position="bottom" custom-class="yl-popup">
- <view class="action px-3">
- <wd-button type="text" @click="cancel">鍙栨秷</wd-button>
- <wd-button type="text" @click="submit">纭畾</wd-button>
- </view>
- <SteelCore ref="steelCoreRef" @refresh="reloadList" />
- </wd-popup>
- <wd-toast />
</template>
<script setup lang="ts">
@@ -39,19 +58,28 @@
import ProductionCard from "../../../components/ProductionCard.vue";
import { useToast } from "wot-design-uni";
import SteelCore from "./form.vue";
-import { onLoad, onShow } from "@dcloudio/uni-app";
+import { onLoad, onUnload, onShow, onHide } from "@dcloudio/uni-app";
import ManageApi from "@/api/product/manage";
+import TwistApi from "@/api/product/twist";
import zPaging from "@/components/z-paging/z-paging.vue";
+import Scan from "@/components/scan/index.vue";
const paramsId = ref();
const pagingRef = ref();
-const steelCoreRef = ref();
+const addFormRef = ref();
+const editFormRef = ref();
+const scanRef = ref();
const toast = useToast();
-const dialog = reactive({
+const isPageVisible = ref(false); // 鏍囪椤甸潰鏄惁鍙
+const addDialog = reactive({
visible: false,
});
+const editDialog = reactive({
+ visible: false,
+ currentItem: null as any,
+ editId: undefined as number | undefined,
+});
const cardList = ref<any[]>([]);
-const needRefresh = ref(false); // 鏍囪鏄惁闇�瑕佸埛鏂�
const cardAttr = ref<any[]>([
{
@@ -76,38 +104,44 @@
]);
const toEdit = (id: number) => {
- needRefresh.value = true; // 鏍囪闇�瑕佸埛鏂�
-
- // 纭繚 cardList 鏄暟缁�
- const listData = Array.isArray(cardList.value) ? cardList.value : [];
- console.log("toEdit - 浼犻�掔殑鍒楄〃鏁版嵁:", listData, "缂栬緫ID:", id);
-
- uni.navigateTo({
- url: `/pages/production/twist/receive/steelCore/edit?id=${id}`,
- success: () => {
- // 椤甸潰璺宠浆鎴愬姛鍚庡彂閫佷簨浠朵紶閫掑畬鏁村垪琛ㄦ暟鎹拰褰撳墠缂栬緫ID
- uni.$emit("steelCoreEditData", {
- list: listData,
- editId: id,
- });
- },
- });
-};
-
-const addReport = () => {
- dialog.visible = true;
-};
-
-const submit = async () => {
- const success = await steelCoreRef.value.submit();
- if (success) {
- dialog.visible = false;
+ const itemToEdit = cardList.value.find((item) => item.id === id);
+ if (itemToEdit) {
+ editDialog.currentItem = itemToEdit;
+ editDialog.editId = id;
+ editDialog.visible = true;
}
};
-const cancel = () => {
+const addReport = () => {
+ if (addFormRef.value) {
+ addFormRef.value.resetFormData();
+ }
+ addDialog.visible = true;
+};
+
+const submitAdd = async () => {
+ const success = await addFormRef.value.submit();
+ if (success) {
+ addDialog.visible = false;
+ }
+};
+
+const cancelAdd = () => {
toast.show("鍙栨秷");
- dialog.visible = false;
+ addDialog.visible = false;
+};
+
+const submitEdit = async () => {
+ const success = await editFormRef.value.submitEdit(cardList.value, editDialog.editId);
+ if (success) {
+ editDialog.visible = false;
+ reloadList();
+ }
+};
+
+const cancelEdit = () => {
+ toast.show("鍙栨秷");
+ editDialog.visible = false;
};
const getList = async () => {
@@ -124,16 +158,60 @@
pagingRef.value.refresh();
};
+// 鎵爜鐩稿叧鏂规硶
+const openScan = () => {
+ scanRef.value.triggerScan();
+};
+
+const getScanCode = async (code: any) => {
+ // 妫�鏌ラ〉闈㈡槸鍚﹀彲瑙侊紝濡傛灉涓嶅彲瑙佸垯涓嶅鐞嗘壂鐮佹暟鎹�
+ if (!isPageVisible.value) {
+ return;
+ }
+
+ try {
+ const parseData = JSON.parse(code.code);
+
+ // 鎵撳紑鏂板寮规骞跺~鍏呮壂鐮佽幏鍙栫殑淇℃伅
+ addDialog.visible = true;
+
+ // 绛夊緟寮规鎵撳紑鍚庡~鍏呰〃鍗曟暟鎹�
+ // 浣跨敤鍙岄噸绛夊緟锛歯extTick + setTimeout 纭繚缁勪欢宸插畬鍏ㄦ寕杞�
+ nextTick(() => {
+ setTimeout(() => {
+ if (addFormRef.value) {
+ addFormRef.value.fillFormData(parseData);
+ toast.success("鎵爜鎴愬姛锛岃纭淇℃伅");
+ } else {
+ toast.error("琛ㄥ崟鍔犺浇澶辫触锛岃閲嶈瘯");
+ }
+ }, 200); // 寤惰繜200ms纭繚寮规鍜岀粍浠跺凡瀹屽叏娓叉煋
+ });
+ } catch (error) {
+ toast.error("浜岀淮鐮佸紓甯革紝璇锋洿鎹簩缁寸爜锛�");
+ }
+};
+
onLoad((options: any) => {
+ // 寮�鍚箍鎾洃鍚簨浠�
+ uni.$on("scanSteelCore", getScanCode);
paramsId.value = options.id;
});
onShow(() => {
- // 浠庣紪杈戦〉杩斿洖鏃跺埛鏂板垪琛�
- if (needRefresh.value) {
- reloadList();
- needRefresh.value = false;
- }
+ // 椤甸潰鏄剧ず鏃舵爣璁颁负鍙
+ isPageVisible.value = true;
+});
+
+onHide(() => {
+ // 椤甸潰闅愯棌鏃舵爣璁颁负涓嶅彲瑙�
+ isPageVisible.value = false;
+});
+
+onUnload(() => {
+ // 鍙栨秷骞挎挱鐩戝惉浜嬩欢
+ uni.$off("scanSteelCore", getScanCode);
+ isPageVisible.value = false;
});
</script>
--
Gitblit v1.9.3