| | |
| | | <view class="list_box"> |
| | | <z-paging |
| | | ref="pagingRef" |
| | | v-model="cardList" |
| | | :fixed="false" |
| | | :auto-show-back-to-top="true" |
| | | :loading-more-enabled="false" |
| | |
| | | </template> |
| | | </CardTitle> |
| | | </template> |
| | | <MonofilCard v-for="(item, index) in cardList" :key="index" :data="item" /> |
| | | <!-- <MonofilCard v-for="(item, index) in cardList" :key="index" :data="item" /> --> |
| | | <wd-tabs v-model="tab" slidable="always"> |
| | | <block v-for="item in nodeList" :key="item"> |
| | | <wd-tab :title="item.twistedLayer" :name="item.twistedLayer"> |
| | | <view class="content"> |
| | | <MonofilCard v-for="(m, i) in item.strandedWireDish" :key="i" :data="m" /> |
| | | </view> |
| | | </wd-tab> |
| | | </block> |
| | | </wd-tabs> |
| | | <template #bottom> |
| | | <view class="flex justify-center items-center"> |
| | | <wd-button block @click="save"> |
| | |
| | | </template> |
| | | </z-paging> |
| | | <Scan ref="scanRef" emitName="scanMono" /> |
| | | <StatisticsModal |
| | | v-model:visible="showStatisticsModal" |
| | | :nodeList="nodeList" |
| | | @confirm="handleConfirmSave" |
| | | /> |
| | | <wd-toast /> |
| | | </view> |
| | | </template> |
| | |
| | | <script setup lang="ts"> |
| | | import CardTitle from "@/components/card-title/index.vue"; |
| | | import MonofilCard from "../components/MonofilCard.vue"; |
| | | import StatisticsModal from "../components/StatisticsModal.vue"; |
| | | import { useToast } from "wot-design-uni"; |
| | | import { onLoad, onUnload } from "@dcloudio/uni-app"; |
| | | import Scan from "@/components/scan/index.vue"; |
| | |
| | | const paramsId = ref(); |
| | | const pagingRef = ref(); |
| | | const scanRef = ref(); |
| | | const cardList = ref<any[]>([]); |
| | | const toast = useToast(); |
| | | const tab = ref(""); |
| | | const showStatisticsModal = ref(false); |
| | | |
| | | // ç嬿 ç¾åæ¢ |
| | | watch(tab, () => { |
| | | if (tab.value) { |
| | | console.log("tab.value:===========1", tab.value); |
| | | getList(); |
| | | } |
| | | }); |
| | | |
| | | const getScanCode = async (code: any) => { |
| | | console.log("èªå®ä¹æ«æçç»æåè°å½æ°:", code); |
| | |
| | | const { data } = await TwistApi.getScarn({ |
| | | outPutId: JSON.parse(code.code).id, |
| | | }); |
| | | const exists = cardList.value.some((item) => item.monofilamentNumber === data.monofilamentNumber); |
| | | |
| | | // æ£æ¥æ¯å¦å·²éæ©æ ç¾ |
| | | if (!tab.value) { |
| | | toast.error("请å
éæ©ä¸ä¸ªå±"); |
| | | return; |
| | | } |
| | | |
| | | // æ¾å°å½åéä¸çå± |
| | | console.log("tab.value:===========2", tab.value); |
| | | const currentLayer = nodeList.value.find((node) => node.twistedLayer === tab.value); |
| | | if (!currentLayer) { |
| | | toast.error("æªæ¾å°å½åéä¸çå±"); |
| | | return; |
| | | } |
| | | |
| | | // æ£æ¥å½å屿¯å¦å·²åå¨è¯¥åä¸ |
| | | const exists = currentLayer.strandedWireDish?.some( |
| | | (item: any) => item.monofilamentNumber === data.monofilamentNumber |
| | | ); |
| | | if (!exists) { |
| | | const { id, outPutId, wireId, oneLength, ...rest } = data; |
| | | console.log("sb", { |
| | | const newItem = { |
| | | wireId: paramsId.value, |
| | | outputId: id, |
| | | amount: oneLength, |
| | | ongLength: oneLength, |
| | | ...rest, |
| | | }); |
| | | cardList.value.push({ |
| | | wireId: paramsId.value, |
| | | outputId: id, |
| | | amount: oneLength, |
| | | ongLength: oneLength, |
| | | ...rest, |
| | | }); |
| | | pagingRef.value.complete(cardList.value); |
| | | }; |
| | | |
| | | // æ·»å å°å½åå±ç strandedWireDish ä¸ |
| | | if (!currentLayer.strandedWireDish) { |
| | | currentLayer.strandedWireDish = []; |
| | | } |
| | | currentLayer.strandedWireDish.push(newItem); |
| | | |
| | | // å·æ°å½åå±çæ°æ®æ¾ç¤º |
| | | getList(); |
| | | } else { |
| | | toast.error("该åä¸å·²é¢ç¨ï¼è¯·å¿é夿«ç "); |
| | | } |
| | |
| | | }; |
| | | |
| | | const getList = async () => { |
| | | const { code, data } = await ManageApi.getStrandedWireDish({ |
| | | wireId: paramsId.value, |
| | | type: "åä¸", |
| | | }); |
| | | if (code == 200) { |
| | | pagingRef.value.complete(data); |
| | | // ä»å½åéä¸å±ç strandedWireDish ä¸è·åæ°æ® |
| | | const currentLayer = nodeList.value.find((node) => node.twistedLayer === tab.value); |
| | | if (currentLayer && currentLayer.strandedWireDish) { |
| | | pagingRef.value.complete(currentLayer.strandedWireDish); |
| | | } else { |
| | | pagingRef.value.complete([]); |
| | | } |
| | | }; |
| | | |
| | | const save = async () => { |
| | | const value = cardList.value.filter((item: { id?: number }) => item.id === undefined || item.id === null); |
| | | let nodeList = ref<any[]>([]); |
| | | // è·åæ ¹å· |
| | | const getRootNumber = async (wireId: number) => { |
| | | const { code, data, msg } = await TwistApi.getRootNumber({ wireId }); |
| | | if (code === 200) { |
| | | nodeList.value = data.nodeList; |
| | | if (data.otherStrandedWireDish && data.otherStrandedWireDish.length > 0) { |
| | | nodeList.value.push({ |
| | | strandedWireDish: data.otherStrandedWireDish, |
| | | twistedLayer: "å
¶ä»", |
| | | twistId: null, |
| | | }); |
| | | } |
| | | // 设置é»è®¤ç¬¬ä¸å± |
| | | if (nodeList.value && nodeList.value.length > 0 && !tab.value) { |
| | | tab.value = nodeList.value[0].twistedLayer; |
| | | console.log("设置é»è®¤ç¬¬ä¸å±:", tab.value); |
| | | // 设置é»è®¤æ ç¾åï¼å 载第ä¸å±çæ°æ® |
| | | getList(); |
| | | } |
| | | } else { |
| | | toast.error(msg || "è·åæ ¹å·å¤±è´¥"); |
| | | } |
| | | }; |
| | | |
| | | const { code,msg } = await TwistApi.addStrandedWireDish(value); |
| | | const save = () => { |
| | | // æ£æ¥ nodeList 䏿¯å¦ææ°çå䏿°æ®éè¦ä¿å |
| | | let hasNewData = false; |
| | | |
| | | nodeList.value.forEach((node) => { |
| | | if (node.strandedWireDish && Array.isArray(node.strandedWireDish)) { |
| | | const hasNewInLayer = node.strandedWireDish.some( |
| | | (item: { id?: number }) => item.id === undefined || item.id === null |
| | | ); |
| | | if (hasNewInLayer) { |
| | | hasNewData = true; |
| | | } |
| | | } |
| | | }); |
| | | |
| | | if (!hasNewData) { |
| | | toast.error("æ²¡ææ°çå䏿°æ®éè¦ä¿å"); |
| | | return; |
| | | } |
| | | |
| | | // æ¾ç¤ºç»è®¡å¼¹æ¡ |
| | | showStatisticsModal.value = true; |
| | | }; |
| | | |
| | | const handleConfirmSave = async () => { |
| | | // ä» nodeList 䏿¶éææéè¦ä¿åçæ°å䏿°æ® |
| | | const newData: any[] = []; |
| | | |
| | | nodeList.value.forEach((node) => { |
| | | node.strandedWireDish.forEach((item: any) => { |
| | | item.twistId = node.twistId; |
| | | }); |
| | | if (node.strandedWireDish && Array.isArray(node.strandedWireDish)) { |
| | | const layerNewData = node.strandedWireDish.filter( |
| | | (item: { id?: number }) => item.id === undefined || item.id === null |
| | | ); |
| | | newData.push(...layerNewData); |
| | | } |
| | | }); |
| | | |
| | | if (newData.length === 0) { |
| | | toast.error("æ²¡ææ°çå䏿°æ®éè¦ä¿å"); |
| | | return; |
| | | } |
| | | |
| | | const { code, msg } = await TwistApi.addStrandedWireDish(newData); |
| | | if (code == 200) { |
| | | toast.success(msg); |
| | | cardList.value = []; |
| | | |
| | | // æ¸
空ææå±ä¸å·²ä¿åçæ°æ®ï¼ç»å·²ä¿åçæ°æ®æ·»å idï¼ |
| | | nodeList.value.forEach((node) => { |
| | | if (node.strandedWireDish && Array.isArray(node.strandedWireDish)) { |
| | | node.strandedWireDish.forEach((item: any) => { |
| | | if (item.id === undefined || item.id === null) { |
| | | item.id = Date.now(); // ä¸´æ¶æ 记为已ä¿å |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | |
| | | pagingRef.value.refresh(); |
| | | getList(); |
| | | } else { |
| | |
| | | } |
| | | }; |
| | | |
| | | onLoad((options: any) => { |
| | | onLoad(async (options: any) => { |
| | | // å¼å¯å¹¿æçå¬äºä»¶ |
| | | uni.$on("scanMono", getScanCode); |
| | | paramsId.value = options.id; |
| | | |
| | | // è°ç¨è·åæ ¹å·æ¥å£ |
| | | getRootNumber(options.id); |
| | | // getRootNumber(118); |
| | | }); |
| | | onUnload(() => { |
| | | // å¼å¯å¹¿æçå¬äºä»¶ |
| | |
| | | :deep(.wd-button__content) { |
| | | color: #0d867f; |
| | | } |
| | | :deep(.zp-paging-container) { |
| | | background: transparent !important; |
| | | } |
| | | :deep(.zp-paging-container-content) { |
| | | background: transparent !important; |
| | | } |
| | | :deep(.wd-tabs) { |
| | | background: transparent !important; |
| | | } |
| | | :deep(.wd-tabs__nav) { |
| | | margin-bottom: 10px; |
| | | } |
| | | </style> |