| 
					
				 | 
			
			
				@@ -1,7 +1,227 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   <div class="AboutView"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    <h1 class="text-3xl font-bold underline" @click="goBack">详情页</h1> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <div class="w-full h-[180px] relative flex items-center md:h-[380px]"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        class="w-full h-full bg-[url('/src/assets/images/detail_top_bg.png')] bg-no-repeat bg-center bg-cover absolute left-0 top-0 z-0" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ></div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div class="relative z-1 p-4 w-full md:w-[780px] m-auto"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          class="font-['PingFang-Heavy'] px-3 font-semibold text-xl md:text-[32px] md:leading-tight" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          工具数字化展示 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div class="flex mt-6"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            class="ml-3" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            v-for="typeItem in typeOptions1Ref" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :key="typeItem.id" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            @click="handleReturn(typeItem)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {{ typeItem.toolName }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <section 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      class="w-full bg-[url('/src/assets/images/detail_bg.png')] bg-no-repeat bg-center bg-cover left-0 top-0 z-0 flex justify-center" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        class="w-[1440px] max-w-md mx-auto bg-white rounded-xl shadow-md overflow-hidden md:max-w-7xl" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div class="md:flex"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="w-full md:w-[450px] md:shrink-0 p-3"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="w-full h-[450px] tool-img border-2 flex items-center justify-center"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <van-image class="max-w-[450px] max-h-[450px] tool-img" :src="devPath + sytPath" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <van-grid 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              square 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :column-num="4" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              class="h-full w-full object-cover md:h-[105px] mt-4" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :gutter="10" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <van-grid-item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                v-for="syt in sytList" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                :key="syt.id" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                @click="changeImg(syt)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                :class="[syt.id === detailImg ? 'active' : '']" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <van-image class="max-w-[105px] max-h-[105px]" :src="devPath + syt.filePath" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </van-grid-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </van-grid> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="p-8 w-full"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              class="font-['PingFang-Heavy'] font-semibold text-xl md:text-[20px] md:leading-tight" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              {{ queryToolName }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              class="bg-[#E6F7FF] border border-[#004EA2] rounded px-3 text-[#004EA2] text-center mt-9 font-normal text-xs w-[200px] h-[22px] leading-[22px] truncate" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              {{ breadTitle }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="font-['PingFang-SC'] text-sm font-normal mt-10 flex"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div>物料名称:</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div class="font-['PingFang-SC'] text-sm font-normal">{{ selectMaterialName }}</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="font-['PingFang-SC'] text-sm font-normal mt-10 flex"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div class="min-w-20">物料规格:</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <van-tag 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  v-for="i in wlList" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :key="i.id" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :color="i.id === wlSelectId ? '#004EA2' : '#F0F0F0'" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :text-color="i.id === wlSelectId ? '#FFFFFF' : '#000000'" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  class="m-1 h-[35px] leading-[35px]" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  @click="changeWlCode(i)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  >{{ i.specifications }}</van-tag 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="font-['PingFang-SC'] text-sm font-normal mt-10 flex items-center"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div>物料编码:</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div>{{ selectWlCode }}</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <van-icon 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                v-show="selectWlCode" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                name="description-o" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                class="text-[#004EA2] description-o ml-1 cursor-pointer" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                @click="codeCopy" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="font-['PingFang-SC'] text-sm font-normal mt-10"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div>附件:</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <van-cell-group> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <van-cell v-for="file in fileList" :key="file.id"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <template #title> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <span class="cursor-pointer" @click="fileDownload(file)">{{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      file.fileName 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <template #right-icon> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      class="w-[18px] h-[18px] cursor-pointer" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      src="../assets/images/download.png" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      alt="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      @click="fileDownload(file)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </van-cell> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </van-cell-group> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </section> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <!-- <h1 class="text-3xl font-bold underline" @click="goBack">详情页</h1> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-<script setup name="AboutView"></script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<script setup name="AboutView"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { ref } from 'vue' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { useRoute, useRouter } from 'vue-router' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { detailList } from '@/api/index.js' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import Clipboard from 'clipboard' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { listTools } from '@/api/index.js' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const router = useRouter() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const route = useRoute() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const queryId = ref(route.query.id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const queryToolName = ref(route.query.toolName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+console.log('route.query.id', queryId.value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const wlList = ref([]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const wlSelectId = ref(0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const selectWlCode = ref('') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const selectMaterialName = ref('') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const sytList = ref([]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const fileList = ref([]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const detailImg = ref(0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const sytPath = ref('') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const devPath = import.meta.env.VITE_APP_BASE_API 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const breadTitle = ref('') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const typeOptions1Ref = ref([]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const init = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  detailList({ id: queryId.value }).then((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const toolDetails = res.data.toolDetails 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    wlList.value = toolDetails.filter((item) => item.informationType === 'wl') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    console.log(wlList.value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (wlList.value.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      selectWlCode.value = wlList.value[0].materialNo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      selectMaterialName.value = wlList.value[0].materialName 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      wlSelectId.value = wlList.value[0].id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sytList.value = toolDetails.filter((item) => item.informationType === 'syt') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (sytList.value.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      detailImg.value = sytList.value[0].id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      sytPath.value = sytList.value[0].filePath 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    fileList.value = toolDetails.filter( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (item) => item.informationType !== 'syt' && item.informationType !== 'wl' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const ttoolBasis = res.data.ttoolBasis 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    breadTitle.value = ttoolBasis.map((item) => item.toolName).join(' > ') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  listTools({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    level: '1', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    pageSize: 999 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }).then((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    typeOptions1Ref.value = res.rows 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+init() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const changeImg = ({ id, filePath }) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  detailImg.value = id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  sytPath.value = filePath 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const codeCopy = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const clipboard = new Clipboard('.description-o', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    text: () => selectWlCode.value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // 添加成功事件处理函数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  clipboard.on('success', (e) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    e.clearSelection() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // 添加失败事件处理函数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  clipboard.on('error', () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    console.warn('无法复制到剪贴板!') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const changeWlCode = ({ id, materialNo, materialName }) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  wlSelectId.value = id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  selectWlCode.value = materialNo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  selectMaterialName.value = materialName 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//  informationType 物料  wl  点击切换 物料编码 materialNo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//  informationType 示意图 syt 左侧图 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const fileDownload = ({ fileName, filePath }) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  console.log('filePath', filePath) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const el = document.createElement('a') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  el.style.display = 'none' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  el.setAttribute('target', '_blank') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  fileName && el.setAttribute('download', fileName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  el.href = devPath + filePath 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  document.body.appendChild(el) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  el.click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  document.body.removeChild(el) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const handleReturn = (typeItem) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  router.push({ path: '/', query: { id: typeItem.id, toolName: typeItem.toolName } }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<style lang="scss" scoped> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+:deep(.van-grid-item__content--surround:after) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border: 4px solid #e5e7eb; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.active { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  :deep(.van-grid-item__content--surround:after) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    border: 4px solid #004ea2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</style> 
			 |