Explorar o código

修改显示列表和图片

Aaron hai 5 meses
pai
achega
4da146a6d1
Modificáronse 8 ficheiros con 331 adicións e 657 borrados
  1. 2 0
      .env.development
  2. 2 0
      .env.production
  3. 0 13
      components.d.ts
  4. 270 640
      pnpm-lock.yaml
  5. 1 1
      src/api/instr/index.ts
  6. 50 0
      src/utils/url.ts
  7. 2 1
      src/view/instr/detail.vue
  8. 4 2
      src/view/instr/list.vue

+ 2 - 0
.env.development

@@ -26,3 +26,5 @@ VITE_LABORATORY: dashoo.labsop.laboratory-34000
 
 #公共配置
 VITE_UPLOAD = http://192.168.0.218:9933/weedfs/upload
+#图片回显域名
+VITE_IMAGE_BASE_URL = http://lims-demo.labsop.cn:34000

+ 2 - 0
.env.production

@@ -28,3 +28,5 @@ VITE_LABORATORY: dashoo.labsop.laboratory-34000
 
 #公共配置
 VITE_UPLOAD = /weedfs/upload
+#图片回显域名
+VITE_IMAGE_BASE_URL = http://lims-demo.labsop.cn:34000

+ 0 - 13
components.d.ts

@@ -18,30 +18,19 @@ declare module 'vue' {
     VanActionBarIcon: typeof import('vant/es')['ActionBarIcon']
     VanBackTop: typeof import('vant/es')['BackTop']
     VanButton: typeof import('vant/es')['Button']
-    VanCalendar: typeof import('vant/es')['Calendar']
     VanCell: typeof import('vant/es')['Cell']
-    VanCellGroup: typeof import('vant/es')['CellGroup']
     VanCheckbox: typeof import('vant/es')['Checkbox']
     VanCheckboxGroup: typeof import('vant/es')['CheckboxGroup']
-    VanCol: typeof import('vant/es')['Col']
-    VanDatePicker: typeof import('vant/es')['DatePicker']
     VanEmpty: typeof import('vant/es')['Empty']
     VanField: typeof import('vant/es')['Field']
     VanFloatingBubble: typeof import('vant/es')['FloatingBubble']
-    VanForm: typeof import('vant/es')['Form']
     VanIcon: typeof import('vant/es')['Icon']
     VanImage: typeof import('vant/es')['Image']
     VanList: typeof import('vant/es')['List']
     VanNotify: typeof import('vant/es')['Notify']
     VanPicker: typeof import('vant/es')['Picker']
-    VanPickerGroup: typeof import('vant/es')['PickerGroup']
     VanPopup: typeof import('vant/es')['Popup']
-    VanRadio: typeof import('vant/es')['Radio']
-    VanRadioGroup: typeof import('vant/es')['RadioGroup']
-    VanRow: typeof import('vant/es')['Row']
     VanSearch: typeof import('vant/es')['Search']
-    VanStep: typeof import('vant/es')['Step']
-    VanSteps: typeof import('vant/es')['Steps']
     VanSwipe: typeof import('vant/es')['Swipe']
     VanSwipeItem: typeof import('vant/es')['SwipeItem']
     VanTab: typeof import('vant/es')['Tab']
@@ -50,7 +39,5 @@ declare module 'vue' {
     VanTabs: typeof import('vant/es')['Tabs']
     VanTag: typeof import('vant/es')['Tag']
     VanTextEllipsis: typeof import('vant/es')['TextEllipsis']
-    VanTimePicker: typeof import('vant/es')['TimePicker']
-    VanUploader: typeof import('vant/es')['Uploader']
   }
 }

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 270 - 640
pnpm-lock.yaml


+ 1 - 1
src/api/instr/index.ts

@@ -13,7 +13,7 @@ export function useInstrApi() {
   return {
     // 获取使用人仪器列表
     getList: (query?: object) => {
-      return request.postRequest(instrPath, 'TusInstrument', 'GetList', query)
+      return request.postRequest(instrPath, 'ZunyiCustom', 'GetList', query)
     },
     // 获取仪器详情
     getDetail: (query?: object) => {

+ 50 - 0
src/utils/url.ts

@@ -0,0 +1,50 @@
+/**
+ * URL处理工具函数
+ */
+
+/**
+ * 获取完整的图片URL
+ * @param url 图片路径或完整URL
+ * @returns 完整的图片URL
+ */
+export function getImageUrl(url: string): string {
+  if (!url) return ''
+  
+  // 如果已经包含http或https协议,直接返回
+  if (url.startsWith('http://') || url.startsWith('https://')) {
+    return url
+  }
+  
+  // 获取环境变量中的图片基础URL
+  const baseUrl = import.meta.env.VITE_IMAGE_BASE_URL || ''
+  
+  // 确保baseUrl不以/结尾,url以/开头
+  const cleanBaseUrl = baseUrl.replace(/\/$/, '')
+  const cleanUrl = url.startsWith('/') ? url : `/${url}`
+  
+  return `${cleanBaseUrl}${cleanUrl}`
+}
+
+/**
+ * 获取完整的资源URL(通用版本)
+ * @param url 资源路径或完整URL
+ * @param baseUrlKey 环境变量中的基础URL键名,默认为VITE_IMAGE_BASE_URL
+ * @returns 完整的资源URL
+ */
+export function getResourceUrl(url: string, baseUrlKey: string = 'VITE_IMAGE_BASE_URL'): string {
+  if (!url) return ''
+  
+  // 如果已经包含http或https协议,直接返回
+  if (url.startsWith('http://') || url.startsWith('https://')) {
+    return url
+  }
+  
+  // 获取环境变量中的基础URL
+  const baseUrl = (import.meta.env as any)[baseUrlKey] || ''
+  
+  // 确保baseUrl不以/结尾,url以/开头
+  const cleanBaseUrl = baseUrl.replace(/\/$/, '')
+  const cleanUrl = url.startsWith('/') ? url : `/${url}`
+  
+  return `${cleanBaseUrl}${cleanUrl}`
+}

+ 2 - 1
src/view/instr/detail.vue

@@ -33,7 +33,7 @@
         <van-image
           width="80px"
           height="80px"
-          :src="state.instDetail.instPicture"
+          :src="getImageUrl(state.instDetail.instPicture)"
         />
       </div>
       <div class="i-right ml10">
@@ -345,6 +345,7 @@
   import AddAuthDialog from './addAuthorization/index.vue'
   import { useUserInfos } from '/@/hooks/useUserInfos'
   import { useTrainingApi } from '/@/api/instr/inst/training'
+  import { getImageUrl } from '/@/utils/url'
 
   const route = useRoute()
   const router = useRouter()

+ 4 - 2
src/view/instr/list.vue

@@ -87,7 +87,7 @@
                 <van-image
                   width="100px"
                   height="100px"
-                  :src="v.instPicture"
+                  :src="getImageUrl(v.instPicture)"
                 />
               </div>
               <div class="i-right ml10">
@@ -97,7 +97,7 @@
                 >
                   <!-- <van-button @click="openAppoint(v)">预约</van-button> -->
                   <div class="flex flex-top mb4 ml2">
-                    <div class="detailTxt name">{{ v.instName }}</div>
+                    <div class="detailTxt name">{{ v.instName }}(编号{{v.instCode }})</div>
                   </div>
                   <div class="flex flex-top mb4 ml2">
                     <div class="detailTxt name">{{ v.instNameEn }}</div>
@@ -258,6 +258,7 @@
   import { useBlackApi } from '/@/api/blacklist'
   import { usePositionApi } from '/@/api/instr/position'
   import { showNotify } from 'vant'
+  import { getImageUrl } from '/@/utils/url'
   const props = defineProps({
     following: {
       type: String,
@@ -346,6 +347,7 @@
     state.loading = true
     const params = JSON.parse(JSON.stringify(state.queryForm))
     params.following = props.following
+    params.instStatus = "10"
     const [err, res]: ToResponse = await to(instApi.getList(params))
     state.loading = false
     if (err) return

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio