Selaa lähdekoodia

Merge branch 'master' of http://git.yujin.shuziyunyao.com/yujin/forestry-wx

lisy 6 päivää sitten
vanhempi
säilyke
29f6f83551
85 muutettua tiedostoa jossa 904 lisäystä ja 388 poistoa
  1. 1 0
      index.html
  2. 1 1
      src/audit/plant/base/audit-detail/index.vue
  3. 3 3
      src/audit/plant/base/audit-list/index.vue
  4. 1 1
      src/audit/plant/base/audit-list/models/gap-base.vue
  5. 1 1
      src/audit/plant/base/audit-list/models/swyq-base.vue
  6. 1 1
      src/components/go-button/Go_button.vue
  7. 1 1
      src/components/ut-action-sheet/ut-action-sheet.vue
  8. 1 1
      src/components/ut-empty/ut-empty.vue
  9. 1 1
      src/components/ut-image/ut-image.vue
  10. 1 1
      src/components/ut-search/ut-search.vue
  11. 1 1
      src/components/ut-suspension/ut-suspension.vue
  12. 16 16
      src/components/ut-tabar/ut-tabar.vue
  13. 1 1
      src/models/contact-unit-input/contact-unit-input.vue
  14. 1 1
      src/models/select-contact-unit/select-contact-unit.vue
  15. 1 1
      src/models/select-warehouse-input/select-warehouse-input.vue
  16. 11 11
      src/pages/login/login.vue
  17. 12 12
      src/pages/plant/base/index.vue
  18. 5 5
      src/pages/plant/more/index.vue
  19. 8 8
      src/pages/plant/port/index.vue
  20. 21 21
      src/pages/plant/port/models/task.vue
  21. 4 4
      src/pages/plant/processing/index.vue
  22. 6 6
      src/pages/plant/storage/index.vue
  23. 4 4
      src/plant/base/base-edit/index.vue
  24. 1 1
      src/plant/base/gap-base-info-detail/index.vue
  25. 2 2
      src/plant/base/gap-base-info-edit/index.vue
  26. 3 3
      src/plant/base/gap-base-info/index.vue
  27. 1 1
      src/plant/base/mark-base-detail/index.vue
  28. 2 2
      src/plant/code/code-list/index.vue
  29. 1 1
      src/plant/contact-unit/unit-list/index.vue
  30. 2 2
      src/plant/export-print/models/code-style-tem.vue
  31. 4 1
      src/plant/export-print/models/export-print-confirm.vue
  32. 6 1
      src/plant/models/pack-card.vue
  33. 71 18
      src/plant/packaging/batch-link/index.vue
  34. 34 32
      src/plant/packaging/create/index.vue
  35. 4 4
      src/plant/packaging/detail/models/print-info-page.vue
  36. 2 2
      src/plant/packaging/detail/models/relate-info-page.vue
  37. 1 1
      src/plant/packaging/edit/index.vue
  38. 1 1
      src/plant/packaging/select-object/models/select-fresh-list.vue
  39. 1 1
      src/plant/packaging/select-object/models/select-medicine-list.vue
  40. 1 1
      src/plant/packaging/select-object/models/select-seed-source-list.vue
  41. 1 1
      src/plant/port/port-create/models/go_button.vue
  42. 1 1
      src/plant/port/port-harvest-create/index.vue
  43. 1 1
      src/plant/port/port-harvest-create/models/go_button.vue
  44. 4 4
      src/plant/port/port-harvest/models/task_card.vue
  45. 4 4
      src/plant/port/port-listinfo/models/task_card.vue
  46. 4 4
      src/plant/port/port-supervise/models/task_card.vue
  47. 93 18
      src/plant/print/models/connect-printer.vue
  48. 38 12
      src/plant/print/models/print-tem.ts
  49. 41 30
      src/plant/print/models/print-wrapper.vue
  50. 28 2
      src/plant/print/print-all/index.vue
  51. 30 1
      src/plant/print/print-range/index.vue
  52. 30 1
      src/plant/print/print-self/index.vue
  53. 2 2
      src/plant/processing/processing-detail-list/index.vue
  54. 1 1
      src/plant/processing/processing-detail-list/models/processing-output-item.vue
  55. 5 5
      src/plant/processing/processing-index/index.vue
  56. 2 2
      src/plant/species/models/speList.vue
  57. 22 41
      src/plant/storage/agro-product/add/index.vue
  58. 1 1
      src/plant/storage/agro-product/detail/index.vue
  59. 4 4
      src/plant/storage/agro-product/list/model/agro-bottom.vue
  60. 2 2
      src/plant/storage/agro-product/models/animals-input.vue
  61. 1 1
      src/plant/storage/finished-product/detail/index.vue
  62. 5 5
      src/plant/storage/finished-product/list/model/fresh-goods-bottom.vue
  63. 1 1
      src/plant/storage/finished-product/sales-registration/index.vue
  64. 4 5
      src/plant/storage/fresh-goods/add/index.vue
  65. 1 1
      src/plant/storage/fresh-goods/detail/index.vue
  66. 1 1
      src/plant/storage/fresh-goods/info-edit/index.vue
  67. 25 4
      src/plant/storage/fresh-goods/info-update/index.vue
  68. 5 5
      src/plant/storage/fresh-goods/list/model/fresh-goods-bottom.vue
  69. 2 2
      src/plant/storage/fresh-goods/models/animals-input.vue
  70. 0 2
      src/plant/storage/seed-source/add/index.vue
  71. 31 7
      src/plant/storage/seed-source/detail/index.vue
  72. 6 6
      src/plant/storage/seed-source/info-edit/index.vue
  73. 202 11
      src/plant/storage/seed-source/info-update/index.vue
  74. 5 5
      src/plant/storage/seed-source/list/model/source-bottom.vue
  75. 2 2
      src/plant/storage/seed-source/models/animals-input.vue
  76. 1 1
      src/plant/storage/storage-room/edit/index.vue
  77. 1 1
      src/plant/storage/storage-room/list/index.vue
  78. 1 1
      src/tools/pro-process-steps/index.vue
  79. 1 1
      src/tools/sales-registration/models/batch-card.vue
  80. 1 1
      src/tools/select-code-section/index.vue
  81. 5 5
      src/tools/select-gap-info/index.vue
  82. 1 1
      src/tools/species-info-process/models/info-card.vue
  83. 1 1
      src/tools/species-info/models/info-card.vue
  84. 46 4
      src/utils/blue-device-services.ts
  85. 1 1
      src/utils/common.ts

+ 1 - 0
index.html

@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset="UTF-8" />
+    <meta name="referrer" content="no-referrer" />
     <script>
       var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
         CSS.supports('top: constant(a)'))

+ 1 - 1
src/audit/plant/base/audit-detail/index.vue

@@ -6,7 +6,7 @@
             <view v-if="formRes?.res == '2'" class="pd-24 c-#FC333F f-s-24 bg-#F8E7E8">审核不通过理由:{{formRes?.msg}}</view>
             <view class="p-rtv">
                 <!-- 基本信息 -->
-                <image v-if="formRes?.res !== '0'" class="gap_res_image w-160 h-160" :src="`https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/base_res_logo${formRes.res}.png`" mode="widthFix" />
+                <image v-if="formRes?.res !== '0'" class="gap_res_image w-160 h-160" :src="`https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/base_res_logo${formRes.res}.png`" mode="widthFix" />
                 <view class="pd-24 bg-#fff mb-10">
                     <view class="f-s-30 pd2-16-0 info-border-bottom">
                         <span class="c-#666">获评类型:</span>

+ 3 - 3
src/audit/plant/base/audit-list/index.vue

@@ -9,10 +9,10 @@
                         <view class="c-#333 f-s-36 f-w-500">GAP/三无一全获评信息审核应用</view>
                     </template>
                 </up-navbar>
-                <image class="base_index_bg" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/audit/plant/base_index_bg.png" />
+                <image class="base_index_bg" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/audit/plant/base_index_bg.png" />
             </view>
         </template>
-        <image class="base_index_bg" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/audit/plant/base_index_bg.png" />
+        <image class="base_index_bg" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/audit/plant/base_index_bg.png" />
         <view class="swiper-content d-flex flex-cln">
             <template>
                 <up-navbar :fixed="false" bg-color="transparent">
@@ -25,7 +25,7 @@
                             <span class="f-s-24 c-#ccc">{{ setCipByNum(phone ?? null, 3, 4) }}</span>
                         </view>
                         <view>
-                            <image class="w-254 h-151" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/audit/plant/base_index_logo_right.png" mode="widthFix" />
+                            <image class="w-254 h-151" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/audit/plant/base_index_logo_right.png" mode="widthFix" />
                         </view>
                     </view>
                     <ut-tabs :tabs="tabs" v-model="viewType"></ut-tabs>

+ 1 - 1
src/audit/plant/base/audit-list/models/gap-base.vue

@@ -65,7 +65,7 @@
                             </view>
                         </view>
                         <view class="status-tag" :class="{ [`bg-res-${selectDictResInfo(form.applyType, item?.resInfo)?.res}`]: true }">{{ selectDictLabel(tabs, selectDictResInfo(form.applyType, item?.resInfo)?.res) }}</view>
-                        <image class="gap_tag_item_logo" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/audit/plant/gap_tag_item_logo.png" mode="widthFix" />
+                        <image class="gap_tag_item_logo" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/audit/plant/gap_tag_item_logo.png" mode="widthFix" />
                     </view>
                 </template>
             </view>

+ 1 - 1
src/audit/plant/base/audit-list/models/swyq-base.vue

@@ -65,7 +65,7 @@
                             </view>
                         </view>
                         <view class="status-tag" :class="{ [`bg-res-${selectDictResInfo(form.applyType, item?.resInfo)?.res}`]: true }">{{ selectDictLabel(tabs, selectDictResInfo(form.applyType, item?.resInfo)?.res) }}</view>
-                        <image class="swyq_tag_item_logo" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/audit/plant/swyq_tag_item_logo.png" mode="widthFix" />
+                        <image class="swyq_tag_item_logo" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/audit/plant/swyq_tag_item_logo.png" mode="widthFix" />
                     </view>
                 </template>
             </view>

+ 1 - 1
src/components/go-button/Go_button.vue

@@ -1,6 +1,6 @@
 <template>
     <up-button type="primary" @click="click" plain>
-        <image class="w-36 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
+        <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
         <span>{{ title }}</span>
     </up-button>
 </template>

+ 1 - 1
src/components/ut-action-sheet/ut-action-sheet.vue

@@ -21,7 +21,7 @@
                                     <ut-col :span="item.span">
                                         <view @click="clickCol(item)" class="ut-custom-item-sheet p-rtv" :class="{ active: checkeds[item.value] }"
                                             >{{ item?.remark || item?.name }}
-                                            <image v-if="checkeds[item.value]" class="w-40 h-40 checked-icon" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-lm/price/checked1.png" mode="widthFix" />
+                                            <image v-if="checkeds[item.value]" class="w-40 h-40 checked-icon" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-lm/price/checked1.png" mode="widthFix" />
                                         </view>
                                     </ut-col>
                                 </template>

+ 1 - 1
src/components/ut-empty/ut-empty.vue

@@ -26,7 +26,7 @@ const props = defineProps({
     },
     image: {
         type: String,
-        default: 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/noEmpty.png',
+        default: 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/noEmpty.png',
     },
     color: {
         type: String,

+ 1 - 1
src/components/ut-image/ut-image.vue

@@ -39,7 +39,7 @@ const props = withDefaults(defineProps<UtImageProps>(), {
     value: '',
     src: '',
     url: '',
-    defaultSrc: 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images/common/avatar.png',
+    defaultSrc: 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images/common/avatar.png',
     preview: false,
     borderRadius: '16rpx',
     lazyLoad: true,

+ 1 - 1
src/components/ut-search/ut-search.vue

@@ -4,7 +4,7 @@
         <u-input v-model="value" ref="searchInputRef" cursor cursorColor="#333" clearable type="text" :focus="focused" border="none" @change="inputSearch" @clear="clear" @confirm="search" confirmType="search" :fontSize="fontSize" :maxlength="maxlength" :placeholder="placeholder">
             <template #suffix>
                 <view @click.stop="search" class="d-flex j-c a-c" style="padding: 0 12rpx">
-                    <image class="search_icon" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/search_icon.png" mode="widthFix" />
+                    <image class="search_icon" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/search_icon.png" mode="widthFix" />
                 </view>
             </template>
         </u-input>

+ 1 - 1
src/components/ut-suspension/ut-suspension.vue

@@ -15,7 +15,7 @@
             }"
             @click="handleClick">
             <slot>
-                <image src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/btn_add_logo.png" mode="widthFix" class="w-120 h-120"></image>
+                <image src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/btn_add_logo.png" mode="widthFix" class="w-120 h-120"></image>
             </slot>
         </movable-view>
     </movable-area>

+ 16 - 16
src/components/ut-tabar/ut-tabar.vue

@@ -30,36 +30,36 @@ const defaultNavs = [
     {
         id: 'base',
         label: '基地',
-        icon: 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/bottomBase.png',
-        activeIcon: 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/bottomBaseActive.png',
+        icon: 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/bottomBase.png',
+        activeIcon: 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/bottomBaseActive.png',
         url: '/pages/plant/base/index',
     },
     {
         id: 'planting',
         label: '种养殖',
-        icon: 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/bottomPlantingBreeding.png',
-        activeIcon: 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/bottomPlantingBreedingActive.png',
+        icon: 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/bottomPlantingBreeding.png',
+        activeIcon: 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/bottomPlantingBreedingActive.png',
         url: '/pages/plant/port/index',
     },
     {
         id: 'processing',
         label: '加工包装',
-        icon: 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/bottomProcessingPackaging.png',
-        activeIcon: 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/bottomProcessingPackagingActive.png',
+        icon: 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/bottomProcessingPackaging.png',
+        activeIcon: 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/bottomProcessingPackagingActive.png',
         url: '/pages/plant/processing/index',
     },
     {
         id: 'storage',
         label: '仓储',
-        icon: 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/bottomWarehouse.png',
-        activeIcon: 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/bottomWarehouseActive.png',
+        icon: 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/bottomWarehouse.png',
+        activeIcon: 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/bottomWarehouseActive.png',
         url: '/pages/plant/storage/index',
     },
     {
         id: 'more',
         label: '更多',
-        icon: 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/bottomMore.png',
-        activeIcon: 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/bottomMoreActive.png',
+        icon: 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/bottomMore.png',
+        activeIcon: 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/bottomMoreActive.png',
         url: '/pages/plant/more/index',
     },
 ];
@@ -69,22 +69,22 @@ const customNavs = [
     {
         id: 'processing',
         label: '加工包装',
-        icon: 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/bottomProcessingPackaging.png',
-        activeIcon: 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/bottomProcessingPackagingActive.png',
+        icon: 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/bottomProcessingPackaging.png',
+        activeIcon: 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/bottomProcessingPackagingActive.png',
         url: '/pages/plant/processing/index',
     },
     {
         id: 'storage',
         label: '仓储',
-        icon: 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/bottomWarehouse.png',
-        activeIcon: 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/bottomWarehouseActive.png',
+        icon: 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/bottomWarehouse.png',
+        activeIcon: 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/bottomWarehouseActive.png',
         url: '/pages/plant/storage/index',
     },
     {
         id: 'more',
         label: '更多',
-        icon: 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/bottomMore.png',
-        activeIcon: 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/bottomMoreActive.png',
+        icon: 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/bottomMore.png',
+        activeIcon: 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/bottomMoreActive.png',
         url: '/pages/plant/more/index',
     },
 ];

+ 1 - 1
src/models/contact-unit-input/contact-unit-input.vue

@@ -1,6 +1,6 @@
 <template>
     <up-button v-if="!modelValue" type="primary" @click="selectContactUnitShow = true" plain>
-        <image class="w-36 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
+        <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
         <span>{{ placeholder }}</span>
     </up-button>
     <view v-else class="bg-#FBFDFB card-info-block pd-24 p-rtv mt-16">

+ 1 - 1
src/models/select-contact-unit/select-contact-unit.vue

@@ -29,7 +29,7 @@
                                     <span class="c-#666">联系电话:</span>
                                     <span class="c-#333 f-w-600">{{ item?.contactTel }}</span>
                                 </view>
-                                <image v-if="item.id === checkedId" class="w-40 h-40 checked-icon" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-lm/price/checked1.png" mode="widthFix" />
+                                <image v-if="item.id === checkedId" class="w-40 h-40 checked-icon" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-lm/price/checked1.png" mode="widthFix" />
                             </view>
                         </template>
                     </view>

+ 1 - 1
src/models/select-warehouse-input/select-warehouse-input.vue

@@ -10,7 +10,7 @@
                 </view>
             </template>
             <up-button @click="clickSlot" type="primary" plain>
-                <image class="w-36 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
+                <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
                 <span>请{{ title }}</span>
             </up-button>
         </slot>

+ 11 - 11
src/pages/login/login.vue

@@ -7,16 +7,16 @@
                 </template>
             </up-navbar>
         </template>
-        <view class="h-620 w-100%" style="background: url('https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/loginTopBg.png'); background-size: auto 100%; background-repeat: no-repeat; position: absolute; top: 0; left: 0; z-index: -1"> </view>
+        <view class="h-620 w-100%" style="background: url('https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/loginTopBg.png'); background-size: auto 100%; background-repeat: no-repeat; position: absolute; top: 0; left: 0; z-index: -1"> </view>
         <view class="login-centent">
             <view class="login-logo-wrap p-rtv d-flex j-c a-c b-radius"></view>
             <view v-if="!isShowPhoneLogin" class="login-form pl-20 pd-25 b-radius p-rtv">
-                <image class="w-100%" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/loginMidBg.png" mode="widthFix" style="position: absolute; top: 0; left: 0" />
+                <image class="w-100%" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/loginMidBg.png" mode="widthFix" style="position: absolute; top: 0; left: 0" />
                 <view class="pd-40"></view>
                 <template v-if="isBindPhone">
                     <up-button class="mb-40" @click="handleLogin" color="#28A94B" type="primary" shape="circle">
                         <view class="d-flex a-c j-c">
-                            <image class="w-45 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images/login/weixin_logo.png" mode="widthFix" />
+                            <image class="w-45 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images/login/weixin_logo.png" mode="widthFix" />
                             一键登录
                         </view>
                     </up-button>
@@ -24,7 +24,7 @@
                 <template v-else>
                     <up-button class="mb-40" color="#28A94B" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber" type="primary" shape="circle">
                         <view class="d-flex a-c j-c">
-                            <image class="w-45 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images/login/weixin_logo.png" mode="widthFix" />
+                            <image class="w-45 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images/login/weixin_logo.png" mode="widthFix" />
                             一键登录
                         </view>
                     </up-button>
@@ -46,7 +46,7 @@
                         <up-input v-model="forms.phonenumber" fontSize="28rpx" :prefixIconStyle="prefixIconStyle" placeholderClass="placeholder" :customStyle="customStyle" maxlength="11" placeholder="请输入您的手机号" border="none" clearable shape="circle">
                             <template #prefix>
                                 <view class="d-flex a-c mr-20">
-                                    <image class="small-icon" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images/login-phone/tel_icon.png" mode="widthFix" />
+                                    <image class="small-icon" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images/login-phone/tel_icon.png" mode="widthFix" />
                                 </view>
                             </template>
                         </up-input>
@@ -55,7 +55,7 @@
                         <up-input v-model="forms.smsCode" fontSize="28rpx" :prefixIconStyle="prefixIconStyle" placeholderClass="placeholder" :customStyle="customStyle" placeholder="请输入验证码" border="none" clearable shape="circle">
                             <template #prefix>
                                 <view class="d-flex a-c mr-20">
-                                    <image class="small-icon" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images/login-phone/sms_code_icon.png" mode="widthFix" />
+                                    <image class="small-icon" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images/login-phone/sms_code_icon.png" mode="widthFix" />
                                 </view>
                             </template>
                             <template #suffix>
@@ -86,31 +86,31 @@
             <view class="d-flex j-sa pl-20 pr-20">
                 <view v-if="!isShowPhoneLogin" class="d-flex flex-cln j-c a-c" @click="isShowPhoneLogin = true">
                     <view class="bc-#f2f2f2 d-flex j-c a-c">
-                        <image class="w-95 h-95" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/accountNumber.png" mode="widthFix" />
+                        <image class="w-95 h-95" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/accountNumber.png" mode="widthFix" />
                     </view>
                     <view class="c-#ccc f-s-24 pt-10">账号密码</view>
                 </view>
                 <view v-if="isShowPhoneLogin" class="d-flex flex-cln j-c a-c" @click="isShowPhoneLogin = false">
                     <view class="bc-#f2f2f2 d-flex j-c a-c">
-                        <image class="w-95 h-95" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/QuickLogin.png" mode="widthFix" />
+                        <image class="w-95 h-95" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/QuickLogin.png" mode="widthFix" />
                     </view>
                     <view class="c-#ccc f-s-24 pt-10">一键登录</view>
                 </view>
                 <view class="d-flex flex-cln j-c a-c">
                     <view class="bc-#f2f2f2 d-flex j-c a-c">
-                        <image class="w-95 h-95" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/SZYYLogo.png" mode="widthFix" />
+                        <image class="w-95 h-95" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/SZYYLogo.png" mode="widthFix" />
                     </view>
                     <view class="c-#ccc f-s-24 pt-10">数字云药</view>
                 </view>
                 <view class="d-flex flex-cln j-c a-c">
                     <view class="bc-#f2f2f2 d-flex j-c a-c">
-                        <image class="w-95 h-95" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/cxlmLogo.png" mode="widthFix" />
+                        <image class="w-95 h-95" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/cxlmLogo.png" mode="widthFix" />
                     </view>
                     <view class="c-#ccc f-s-24 pt-10">中药材创新联盟</view>
                 </view>
             </view>
         </view>
-        <image class="login-bttom-bg" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/loginBottomBg.png" mode="widthFix" />
+        <image class="login-bttom-bg" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/loginBottomBg.png" mode="widthFix" />
     </z-paging>
 </template>
 

+ 12 - 12
src/pages/plant/base/index.vue

@@ -5,7 +5,7 @@
                 <template #left>
                     <view class="d-flex a-c pb-5" id="topup-navbar" :style="{ width: `${bubble.left - 30}px` }">
                         <image class="home_icon mr-20"
-                            src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images/common/home.png"
+                            src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images/common/home.png"
                             mode="widthFix" />
                         <text class="f-s-40 c-333 f-w-5 w-s-no">中药材种植全链条追溯</text>
                         <view class="flex1"></view>
@@ -25,7 +25,7 @@
             <view class="user-page-header pd-10 d-flex a-c mg-14 p-rtv">
                 <view class="user-page-header-avatar mr-20 p-rtv">
                     <up-avatar size="116rpx"
-                        :src="avatar || 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images/common/avatar.png'"></up-avatar>
+                        :src="avatar || 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images/common/avatar.png'"></up-avatar>
                 </view>
                 <view class="flex1 ov-hd mr-40">
                     <view class="p-rtv d-flex a-c mb-6">
@@ -48,7 +48,7 @@
                         style="border: 1rpx solid #fff; background: linear-gradient(90deg, #c1f3c5 0%, rgba(193, 243, 197, 0.5) 20%, rgba(255, 255, 255, 0.5) 35%, rgba(255, 255, 255, 0.5) 50%, rgba(232, 255, 234, 0.5) 100%, #e8ffea 100%), linear-gradient(90deg, transparent 0%, rgba(255, 255, 255, 0.3) 30%, rgba(255, 255, 255, 0.3) 80%, transparent 100%)">
                         <view class="b-radius pd-10 p-rtv" style="border: 1rpx solid #baedbf">
                             <image class="w-200"
-                                src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/typeofBusiness.png"
+                                src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/typeofBusiness.png"
                                 mode="widthFix" style="position: absolute; top: 10rpx; left: 10rpx" />
                             <view v-if="!speciesArray.length" class="pd-20"></view>
                             <view v-if="speciesArray.length" class="d-flex pr-15">
@@ -72,13 +72,13 @@
                     style="border: 1rpx solid #fff; border-bottom-color: transparent; margin-top: -40rpx">
                     <up-sticky :offset-top="stickyTop" zIndex="10">
                         <view class="pd-24 p-rtv bg-#f7f7f7">
-                            <image src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/basePlotBG.png"
+                            <image src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/basePlotBG.png"
                                 class="w-100%" mode="widthFix" style="position: absolute; top: 0; left: 0"></image>
                             <view class="d-flex a-c mb-26 p-rtv">
                                 <view class="p-rtv d-flex flex-cln">
                                     <view class="c-333 f-s-32 f-w-5 z-index-1">基地与地块管理</view>
                                     <image class="w-230 h-11" style="margin-top: -10rpx"
-                                        src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/BasePlotManagement.png"
+                                        src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/BasePlotManagement.png"
                                         mode="widthFix" />
                                 </view>
                                 <view class="flex1"></view>
@@ -198,11 +198,11 @@
         <template #empty>
             <view class="" style="margin-top: -200rpx">
                 <ut-empty class="mg-at" color="#ccc" size="28rpx"
-                    image="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/noEmptyBase.png">尚未添加绘制种养殖基地信息~</ut-empty>
+                    image="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/noEmptyBase.png">尚未添加绘制种养殖基地信息~</ut-empty>
                 <view class="b-radius c-#fff f-s-36 bg-#37A954 h-78 w-382 d-flex a-c j-c mg-at"
                     @click="showDeleteDialog = true">
                     <img class="w-38 h-36 mr-10"
-                        src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/chooseGAP.png" alt=""
+                        src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/chooseGAP.png" alt=""
                         mode="widthFix" />
                     <text>去添加基地</text>
                 </view>
@@ -221,13 +221,13 @@
                 class="pr-30 d-flex a-c mb-20 radius-100" @click="handlechose(item.value)">
                 <view class="radius-50% mg-8">
                     <up-avatar v-if="+item?.value == 1" size="90rpx"
-                        src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/Herbal_Cultivation.png"
+                        src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/Herbal_Cultivation.png"
                         class="mr-20" />
                     <up-avatar v-if="+item?.value == 2" size="90rpx"
-                        src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/TCM_Animal_Farming.png"
+                        src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/TCM_Animal_Farming.png"
                         class="mr-20" />
                     <up-avatar v-if="+item?.value == 3" size="90rpx"
-                        src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/Tissue_Culture_Lab.png"
+                        src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/Tissue_Culture_Lab.png"
                         class="mr-20" />
                 </view>
                 <view class="c-#333 f-s-34">
@@ -236,14 +236,14 @@
                 <view class="flex1"></view>
                 <view class="d-flex">
                     <img v-if="basetype === item.value" class="w-30 h-30"
-                        src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/chooseSuccessfully.png"
+                        src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/chooseSuccessfully.png"
                         mode="widthFix" alt="" />
                 </view>
             </view>
         </view>
     </ut-confirm-dialog>
     <ut-suspension @click="showDeleteDialog = true">
-        <image src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/addBase.png" mode="widthFix"
+        <image src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/addBase.png" mode="widthFix"
             class="w-120 h-120"></image>
     </ut-suspension>
 </template>

+ 5 - 5
src/pages/plant/more/index.vue

@@ -8,15 +8,15 @@
                 <view class="mb-30 f-s-30 c-#333 f-w-500">码管理</view>
                 <view class="d-flex flex-w gap-30 j-sb">
                     <view class="d-flex flex-cln j-c a-c pd-10" hover-class="bg-#f7f7f7" @click="$u.route({ url: '/plant/code/code-list/index' })">
-                        <image class="w-54 h-54 mb-16" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/more/mag_code_icon.png" mode="widthFix" />
+                        <image class="w-54 h-54 mb-16" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/more/mag_code_icon.png" mode="widthFix" />
                         <view class="f-s-26 c-#666">码生成及下载</view>
                     </view>
                     <view class="d-flex flex-cln j-c a-c pd-10" hover-class="bg-#f7f7f7">
-                        <image class="w-54 h-54 mb-16" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/more/mag_trace_icon.png" mode="widthFix" />
+                        <image class="w-54 h-54 mb-16" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/more/mag_trace_icon.png" mode="widthFix" />
                         <view class="f-s-26 c-#666">追溯码查询</view>
                     </view>
                     <view class="d-flex flex-cln j-c a-c pd-10" hover-class="bg-#f7f7f7">
-                        <image class="w-54 h-54 mb-16" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/more/mag_relate_icon.png" mode="widthFix" />
+                        <image class="w-54 h-54 mb-16" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/more/mag_relate_icon.png" mode="widthFix" />
                         <view class="f-s-26 c-#666">关联关系管理</view>
                     </view>
                 </view>
@@ -25,7 +25,7 @@
                 <view class="mb-30 f-s-30 c-#333 f-w-500">往来单位管理</view>
                 <view class="d-flex flex-w gap-30">
                     <view class="d-flex flex-cln j-c a-c pd-10" hover-class="bg-#f7f7f7" @click="$u.route({ url: '/plant/contact-unit/unit-list/index' })">
-                        <image class="w-54 h-54 mb-16" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/more/mag_unit_icon.png" mode="widthFix" />
+                        <image class="w-54 h-54 mb-16" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/more/mag_unit_icon.png" mode="widthFix" />
                         <view class="f-s-26 c-#666">往来单位管理</view>
                     </view>
                 </view>
@@ -34,7 +34,7 @@
                 <view class="mb-30 f-s-30 c-#333 f-w-500">H5 扫码页面管理</view>
                 <view class="d-flex flex-w gap-30">
                     <view class="d-flex flex-cln j-c a-c pd-10" hover-class="bg-#f7f7f7" @click="$u.route({ url: '/plant/cor-style/index/index' })">
-                        <image class="w-54 h-54 mb-16" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/more/corstyle-dis.png" mode="widthFix" />
+                        <image class="w-54 h-54 mb-16" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/more/corstyle-dis.png" mode="widthFix" />
                         <view class="f-s-26 c-#666">企业风采展示</view>
                         <view class="f-s-26 c-#666">配置</view>
                     </view>

+ 8 - 8
src/pages/plant/port/index.vue

@@ -32,13 +32,13 @@
         </view>
         <template #empty v-if="form?.status == '1'">
             <view class="d-flex flex-cln a-c" style="margin-top: -200rpx">
-                <ut-empty class="mg-at" color="#ccc" size="28rpx" image="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/noEmpty.png">暂无进行中的养殖任务</ut-empty>
+                <ut-empty class="mg-at" color="#ccc" size="28rpx" image="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/noEmpty.png">暂无进行中的养殖任务</ut-empty>
                 <text class="c-#ccc f-s-28">点击下方按钮去添加吧~</text>
             </view>
         </template>
         <template #empty v-if="form?.status == '9'">
             <view class="d-flex flex-cln a-c" style="margin-top: -200rpx">
-                <ut-empty class="mg-at" color="#ccc" size="28rpx" image="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/noEmpty.png">暂无已经结束的养殖任务</ut-empty>
+                <ut-empty class="mg-at" color="#ccc" size="28rpx" image="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/noEmpty.png">暂无已经结束的养殖任务</ut-empty>
             </view>
         </template>
         <template #bottom>
@@ -46,29 +46,29 @@
         </template>
     </z-paging>
     <ut-suspension v-if="sus?.left" :imageWidth="60" :imageHeight="60" :x="sus?.left" :y="sus?.bottom" :inertia="false" :snap-threshold="40">
-        <image src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/btn_add_logo.png" mode="widthFix" class="w-120 h-120" @click="showDeleteDialog = true"></image>
+        <image src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/btn_add_logo.png" mode="widthFix" class="w-120 h-120" @click="showDeleteDialog = true"></image>
     </ut-suspension>
     <ut-confirm-dialog v-model:show="showDeleteDialog" width="80vw" title="请选择要创建的任务类型" :confirmText="'确认选择'" :cancelText="'取消'" @confirm="handlechoseConfirm" @cancel="handleDeleteCancel">
         <view class="" v-for="item in pt_task_type" :key="item?.value">
             <view style="border: 1rpx solid" :style="{ backgroundColor: item?.value == basetype ? '#EBF6EE' : '#f7f7f7', borderColor: item?.value == basetype ? '#37A954' : 'transparent' }" class="pr-30 d-flex a-c mb-20 radius-100" @click="handlechose(item.value)">
                 <view class="radius-50% mg-8 bg-#F0F0F0" v-if="item?.value == '1'">
-                    <up-avatar size="90rpx" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/TaskType_plant.png"></up-avatar>
+                    <up-avatar size="90rpx" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/TaskType_plant.png"></up-avatar>
                 </view>
                 <view class="radius-50% mg-8 bg-#F0F0F0" v-if="item?.value == '2'">
-                    <up-avatar size="90rpx" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/TaskType_breeding.png"></up-avatar>
+                    <up-avatar size="90rpx" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/TaskType_breeding.png"></up-avatar>
                 </view>
                 <view class="radius-50% mg-8 bg-#F0F0F0" v-if="item?.value == '11'">
-                    <up-avatar size="90rpx" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/TaskType_SeedlingBreeding.png"></up-avatar>
+                    <up-avatar size="90rpx" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/TaskType_SeedlingBreeding.png"></up-avatar>
                 </view>
                 <view class="radius-50% mg-8 bg-#F0F0F0" v-if="item?.value == '21'">
-                    <up-avatar size="90rpx" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/TaskType_BreedingLivestock.png"></up-avatar>
+                    <up-avatar size="90rpx" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/TaskType_BreedingLivestock.png"></up-avatar>
                 </view>
                 <view class="c-#333 f-s-34">
                     {{ item?.label }}
                 </view>
                 <view class="flex1"></view>
                 <view class="d-flex">
-                    <img v-if="basetype === item.value" class="w-30 h-30" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/chooseSuccessfully.png" mode="widthFix" alt="" />
+                    <img v-if="basetype === item.value" class="w-30 h-30" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/chooseSuccessfully.png" mode="widthFix" alt="" />
                 </view>
             </view>
         </view>

+ 21 - 21
src/pages/plant/port/models/task.vue

@@ -2,8 +2,8 @@
     <!-- 养殖 -->
     <view class="" v-if="data.taskType === '2'">
         <view class="b-radius bg-#fff pd-10 p-rtv">
-            <image class="w-80 h-34" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Breeding.png" mode="widthFix" style="position: absolute; top: 0; left: 0" />
-            <image v-if="+status == 9" class="w-98 h-98" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/over.png" mode="widthFix" style="position: absolute; top: 50rpx; right: 20rpx" />
+            <image class="w-80 h-34" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Breeding.png" mode="widthFix" style="position: absolute; top: 0; left: 0" />
+            <image v-if="+status == 9" class="w-98 h-98" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/over.png" mode="widthFix" style="position: absolute; top: 50rpx; right: 20rpx" />
             <view class="d-flex j-ed f-s-22 c-#666">{{ data?.plannedStartDate }}至{{ data?.plannedEndDate }}</view>
             <view class="d-flex a-ed pd-16 pt-8 pb-8" @click.stop="$emit('cardClick')">
                 <view class="c-#333 f-s-34 f-w-5 mr-6">{{ data?.variety }}</view>
@@ -49,19 +49,19 @@
             <view class="pd-16 pt-8 pb-8 d-flex j-sb gap-20">
                 <up-button :customStyle="customStyle1" @click.stop="$emit('toInformation')">
                     <view class="d-flex a-c j-c">
-                        <image class="w-28 h-24" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Species_source_information.png" mode="widthFix" />
+                        <image class="w-28 h-24" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Species_source_information.png" mode="widthFix" />
                         <text class="f-s-26">种源信息</text>
                     </view>
                 </up-button>
                 <up-button :customStyle="customStyle2" @click.stop="$emit('toSupervise')">
                     <view class="d-flex a-c j-c">
-                        <image class="w-28 h-24" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Breeding_management.png" mode="widthFix" />
+                        <image class="w-28 h-24" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Breeding_management.png" mode="widthFix" />
                         <text class="f-s-26">饲养管理</text>
                     </view>
                 </up-button>
                 <up-button :customStyle="customStyle3" @click.stop="$emit('toHarvest')">
                     <view class="d-flex a-c j-c">
-                        <image class="w-28 h-24" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Harvest_management.png" mode="widthFix" />
+                        <image class="w-28 h-24" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Harvest_management.png" mode="widthFix" />
                         <text class="f-s-26">采收管理</text>
                     </view>
                 </up-button>
@@ -71,8 +71,8 @@
     <!-- 种苗繁育 -->
     <view class="" v-if="data.taskType === '11'">
         <view class="b-radius bg-#fff pd-10 p-rtv">
-            <image class="w-112 h-34" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Seedling_breeding.png" mode="widthFix" style="position: absolute; top: 0; left: 0" />
-            <image v-if="+status == 9" class="w-98 h-98" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/over.png" mode="widthFix" style="position: absolute; top: 50rpx; right: 20rpx" />
+            <image class="w-112 h-34" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Seedling_breeding.png" mode="widthFix" style="position: absolute; top: 0; left: 0" />
+            <image v-if="+status == 9" class="w-98 h-98" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/over.png" mode="widthFix" style="position: absolute; top: 50rpx; right: 20rpx" />
             <view class="d-flex j-ed f-s-22 c-#666">{{ data?.plannedStartDate }} 至 {{ data?.plannedEndDate }}</view>
             <view class="d-flex a-ed pd-16 pt-8 pb-8" @click.stop="$emit('cardClick')">
                 <view class="c-#333 f-s-34 f-w-5 mr-6">{{ data?.variety }}</view>
@@ -122,25 +122,25 @@
             <view class="pd-16 pt-8 pb-8 d-flex j-sb gap-20">
                 <up-button :customStyle="customStyle1" @click.stop="$emit('toInformation')">
                     <view class="d-flex a-c j-c">
-                        <image class="w-28 h-24" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Species_source_information.png" mode="widthFix" />
+                        <image class="w-28 h-24" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Species_source_information.png" mode="widthFix" />
                         <text class="f-s-26">种源信息</text>
                     </view>
                 </up-button>
                 <up-button v-if="data?.lands[0]?.landType == '3'" :customStyle="customStyle2" @click.stop="$emit('toSupervise')">
                     <view class="d-flex a-c j-c">
-                        <image class="w-28 h-24" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Breeding_management.png" mode="widthFix" />
+                        <image class="w-28 h-24" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Breeding_management.png" mode="widthFix" />
                         <text class="f-s-26"> 繁育管理 </text>
                     </view>
                 </up-button>
                 <up-button v-else :customStyle="customStyle2" @click.stop="$emit('toSupervise')">
                     <view class="d-flex a-c j-c">
-                        <image class="w-28 h-24" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Breeding_management.png" mode="widthFix" />
+                        <image class="w-28 h-24" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Breeding_management.png" mode="widthFix" />
                         <text class="f-s-26"> 种植管理 </text>
                     </view>
                 </up-button>
                 <up-button :customStyle="customStyle3" @click.stop="$emit('toHarvest')">
                     <view class="d-flex a-c j-c">
-                        <image class="w-28 h-24" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Harvest_management.png" mode="widthFix" />
+                        <image class="w-28 h-24" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Harvest_management.png" mode="widthFix" />
                         <text class="f-s-26">采收管理</text>
                     </view>
                 </up-button>
@@ -150,8 +150,8 @@
     <!-- 种植 -->
     <view class="" v-if="data.taskType === '1'">
         <view class="b-radius bg-#fff pd-10 p-rtv">
-            <image class="w-80 h-34" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Planting.png" mode="widthFix" style="position: absolute; top: 0; left: 0" />
-            <image v-if="+status == 9" class="w-98 h-98" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/over.png" mode="widthFix" style="position: absolute; top: 50rpx; right: 20rpx" />
+            <image class="w-80 h-34" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Planting.png" mode="widthFix" style="position: absolute; top: 0; left: 0" />
+            <image v-if="+status == 9" class="w-98 h-98" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/over.png" mode="widthFix" style="position: absolute; top: 50rpx; right: 20rpx" />
             <view class="d-flex j-ed f-s-22 c-#666">{{ data?.plannedStartDate }}至{{ data?.plannedEndDate }}</view>
             <view class="d-flex a-ed pd-16 pt-8 pb-8" @click.stop="$emit('cardClick')">
                 <view class="c-#333 f-s-34 f-w-5 mr-6">{{ data?.variety }}</view>
@@ -197,19 +197,19 @@
             <view class="pd-16 pt-8 pb-8 d-flex j-sb gap-20">
                 <up-button :customStyle="customStyle1" @click.stop="$emit('toInformation')">
                     <view class="d-flex a-c j-c">
-                        <image class="w-28 h-24" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Species_source_information.png" mode="widthFix" />
+                        <image class="w-28 h-24" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Species_source_information.png" mode="widthFix" />
                         <text class="f-s-26">种源信息</text>
                     </view>
                 </up-button>
                 <up-button :customStyle="customStyle2" @click.stop="$emit('toSupervise')">
                     <view class="d-flex a-c j-c">
-                        <image class="w-28 h-24" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Breeding_management.png" mode="widthFix" />
+                        <image class="w-28 h-24" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Breeding_management.png" mode="widthFix" />
                         <text class="f-s-26"> 种植管理 </text>
                     </view>
                 </up-button>
                 <up-button :customStyle="customStyle3" @click.stop="$emit('toHarvest')">
                     <view class="d-flex a-c j-c">
-                        <image class="w-28 h-24" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Harvest_management.png" mode="widthFix" />
+                        <image class="w-28 h-24" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Harvest_management.png" mode="widthFix" />
                         <text class="f-s-26">采收管理</text>
                     </view>
                 </up-button>
@@ -219,8 +219,8 @@
     <!-- 种畜繁育 -->
     <view class="" v-if="data.taskType === '21'">
         <view class="b-radius bg-#fff pd-10 p-rtv">
-            <image class="w-112 h-34" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Breeding_Livestock.png" mode="widthFix" style="position: absolute; top: 0; left: 0" />
-            <image v-if="+status == 9" class="w-98 h-98" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/over.png" mode="widthFix" style="position: absolute; top: 50rpx; right: 20rpx" />
+            <image class="w-112 h-34" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Breeding_Livestock.png" mode="widthFix" style="position: absolute; top: 0; left: 0" />
+            <image v-if="+status == 9" class="w-98 h-98" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/over.png" mode="widthFix" style="position: absolute; top: 50rpx; right: 20rpx" />
             <view class="d-flex j-ed f-s-22 c-#666">{{ data?.plannedStartDate }}至{{ data?.plannedEndDate }}</view>
             <view class="d-flex a-ed pd-16 pt-8 pb-8" @click.stop="$emit('cardClick')">
                 <view class="c-#333 f-s-34 f-w-5 mr-6">{{ data?.variety }}</view>
@@ -266,19 +266,19 @@
             <view class="pd-16 pt-8 pb-8 d-flex j-sb gap-20">
                 <up-button :customStyle="customStyle1" @click.stop="$emit('toInformation')">
                     <view class="d-flex a-c j-c">
-                        <image class="w-28 h-24" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Species_source_information.png" mode="widthFix" />
+                        <image class="w-28 h-24" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Species_source_information.png" mode="widthFix" />
                         <text class="f-s-26">种源信息</text>
                     </view>
                 </up-button>
                 <up-button :customStyle="customStyle2" @click.stop="$emit('toSupervise')">
                     <view class="d-flex a-c j-c">
-                        <image class="w-28 h-24" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Breeding_management.png" mode="widthFix" />
+                        <image class="w-28 h-24" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Breeding_management.png" mode="widthFix" />
                         <text class="f-s-26">饲养管理</text>
                     </view>
                 </up-button>
                 <up-button :customStyle="customStyle3" @click.stop="$emit('toHarvest')">
                     <view class="d-flex a-c j-c">
-                        <image class="w-28 h-24" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Harvest_management.png" mode="widthFix" />
+                        <image class="w-28 h-24" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Harvest_management.png" mode="widthFix" />
                         <text class="f-s-26">采收管理</text>
                     </view>
                 </up-button>

+ 4 - 4
src/pages/plant/processing/index.vue

@@ -31,7 +31,7 @@
                 <view class="user-page-header pd-10 d-flex a-c mg-14 p-rtv">
                     <view class="user-page-header-avatar mr-20 p-rtv">
                         <up-avatar size="116rpx"
-                            :src="avatar || 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images/common/avatar.png'"></up-avatar>
+                            :src="avatar || 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images/common/avatar.png'"></up-avatar>
                     </view>
                     <view class="flex1 ov-hd mr-40">
                         <view class="p-rtv d-flex a-c mb-6">
@@ -52,7 +52,7 @@
                     style="border: 1rpx solid #fff; background: linear-gradient(90deg, #c1f3c5 0%, rgba(193, 243, 197, 0.5) 20%, rgba(255, 255, 255, 0.5) 35%, rgba(255, 255, 255, 0.5) 50%, rgba(232, 255, 234, 0.5) 100%, #e8ffea 100%), linear-gradient(90deg, transparent 0%, rgba(255, 255, 255, 0.3) 30%, rgba(255, 255, 255, 0.3) 80%, transparent 100%)">
                     <view class="b-radius pd-10 p-rtv" style="border: 1rpx solid #baedbf">
                         <image class="w-200"
-                            src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/typeofBusiness.png"
+                            src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/typeofBusiness.png"
                             mode="widthFix" style="position: absolute; top: 10rpx; left: 10rpx" />
                         <view v-if="!speciesArray.length" class="pd-20"></view>
                         <view v-if="speciesArray.length" class="d-flex pr-15">
@@ -82,7 +82,7 @@
             <view class=" process-card" @click="$u.route({ url: '/plant/processing/processing-index/index' })">
                 <view class="w-200 h-200 d-flex a-c j-c" style="flex-shrink: 0">
                     <image class="w-100% h-100%"
-                        src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/processing/initial_processing.png"
+                        src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/processing/initial_processing.png"
                         mode="aspectFit" />
                 </view>
                 <view class="card-content">
@@ -94,7 +94,7 @@
             <view class="process-card" @click="$u.route({ url: '/plant/packaging/list/index' })">
                 <view class="w-200 h-200 d-flex a-c j-c" style="flex-shrink: 0">
                     <image class="w-100% h-100%"
-                        src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/processing/packaging_coding.png"
+                        src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/processing/packaging_coding.png"
                         mode="aspectFit" />
                 </view>
                 <view class="card-content">

+ 6 - 6
src/pages/plant/storage/index.vue

@@ -5,7 +5,7 @@
         </template>
         <view class="base-content pd-20">
             <view class="bg-#fff d-flex a-c j-c radius-16 pd2-30-24 mb-20" @click="$u.route({ url: '/plant/storage/storage-room/list/index' })">
-                <image class="w-72 h-72" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/nav_kfgl_icon.png" mode="widthFix" />
+                <image class="w-72 h-72" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/nav_kfgl_icon.png" mode="widthFix" />
                 <view class="flex1 pd2-0-20">
                     <view class="f-s-30 c-#333 f-w-500">库房管理</view>
                     <view class="f-s-22 c-#999">可创立不同基地的库房和货位,分基地进行库房管理</view>
@@ -13,7 +13,7 @@
                 <up-icon name="arrow-right"></up-icon>
             </view>
             <view class="bg-#fff d-flex a-c j-c radius-16 pd2-30-24 mb-20" @click="$u.route({ url: '/plant/storage/seed-source/list/index' })">
-                <image class="w-72 h-72" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/nav_zyk_icon.png" mode="widthFix" />
+                <image class="w-72 h-72" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/nav_zyk_icon.png" mode="widthFix" />
                 <view class="flex1 pd2-0-20">
                     <view class="f-s-30 c-#333 f-w-500">种源库</view>
                     <view class="f-s-22 c-#999">内部采收种源和外部采购种源的存储库房</view>
@@ -21,7 +21,7 @@
                 <up-icon name="arrow-right"></up-icon>
             </view>
             <view class="bg-#fff d-flex a-c j-c radius-16 pd2-30-24 mb-20" @click="$u.route({ url: '/plant/storage/agro-product/list/index' })">
-                <image class="w-72 h-72" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/nav_nzk_icon.png" mode="widthFix" />
+                <image class="w-72 h-72" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/nav_nzk_icon.png" mode="widthFix" />
                 <view class="flex1 pd2-0-20">
                     <view class="f-s-30 c-#333 f-w-500">农资库</view>
                     <view class="f-s-22 c-#999">种养殖和种源繁育所需农资投入品的存储库房</view>
@@ -30,7 +30,7 @@
             </view>
             <!-- 鲜货库 -->
             <view class="bg-#fff d-flex a-c j-c radius-16 pd2-30-24 mb-20" @click="$u.route({ url: '/plant/storage/fresh-goods/list/index' })">
-                <image class="w-72 h-72" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/nav_xhk_icon.png" mode="widthFix" />
+                <image class="w-72 h-72" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/nav_xhk_icon.png" mode="widthFix" />
                 <view class="flex1 pd2-0-20">
                     <view class="f-s-30 c-#333 f-w-500">鲜货库</view>
                     <view class="f-s-22 c-#999">内部采收鲜货和外部采收鲜货的存储库房</view>
@@ -39,7 +39,7 @@
             </view>
             <!-- 药材库 -->
             <view class="bg-#fff d-flex a-c j-c radius-16 pd2-30-24 mb-20" @click="$u.route({ url: '/plant/storage/medicine/list/index' })">
-                <image class="w-72 h-72" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/nav_zjpk_icon.png" mode="widthFix" />
+                <image class="w-72 h-72" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/nav_zjpk_icon.png" mode="widthFix" />
                 <view class="flex1 pd2-0-20">
                     <view class="f-s-30 c-#333 f-w-500">药材库</view>
                     <view class="f-s-22 c-#999">加工后待包装药材的存储库房</view>
@@ -48,7 +48,7 @@
             </view>
             <!-- 成品库 -->
             <view class="bg-#fff d-flex a-c j-c radius-16 pd2-30-24 mb-20" @click="$u.route({ url: '/plant/storage/finished-product/list/index' })">
-                <image class="w-72 h-72" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/nav_cpk_icon.png" mode="widthFix" />
+                <image class="w-72 h-72" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/nav_cpk_icon.png" mode="widthFix" />
                 <view class="flex1 pd2-0-20">
                     <view class="f-s-30 c-#333 f-w-500">成品库</view>
                     <view class="f-s-22 c-#999">包装后待售的鲜货、种源、药材等成品的存储库房</view>

+ 4 - 4
src/plant/base/base-edit/index.vue

@@ -92,9 +92,9 @@
                             </view>
                             <view class="bg-#ccc d-flex ov-hd p-rtv" @click="mapDrawArea">
                                 <image class="w-full" v-if="form.baseInfo.gapInfo?.basePic" :src="form.baseInfo.gapInfo.basePic" mode="widthFix" />
-                                <image class="w-full h-380" v-else src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/base/select_base_gap.png" mode="widthFix" />
+                                <image class="w-full h-380" v-else src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/base/select_base_gap.png" mode="widthFix" />
                                 <view v-if="!form.baseInfo.gapInfo?.basePic" class="btn-aree-center d-flex flex-cln a-c j-c">
-                                    <image class="w-52 h-52 mb-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/base/draw_area_icon.png" mode="widthFix" />
+                                    <image class="w-52 h-52 mb-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/base/draw_area_icon.png" mode="widthFix" />
                                     <view class="c-primary f-s-28 f-w-400">点击绘制基地范围</view>
                                 </view>
                             </view>
@@ -107,9 +107,9 @@
                             </view>
                             <view class="bg-#ccc d-flex ov-hd p-rtv" @click="mapDrawArea">
                                 <image class="w-full" v-if="form.baseInfo.gapInfo?.basePic" :src="form.baseInfo.gapInfo.basePic" mode="widthFix" />
-                                <image class="w-full h-380" v-else src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/base/select_base_gap.png" mode="widthFix" />
+                                <image class="w-full h-380" v-else src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/base/select_base_gap.png" mode="widthFix" />
                                 <view v-if="!form.baseInfo.gapInfo?.basePic" class="btn-aree-center d-flex flex-cln a-c j-c">
-                                    <image class="w-52 h-52 mb-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/base/draw_area_icon.png" mode="widthFix" />
+                                    <image class="w-52 h-52 mb-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/base/draw_area_icon.png" mode="widthFix" />
                                     <view class="c-primary f-s-28 f-w-400">点击绘制基地范围</view>
                                 </view>
                             </view>

+ 1 - 1
src/plant/base/gap-base-info-detail/index.vue

@@ -6,7 +6,7 @@
             </template>
             <view class="p-rtv">
                 <!-- 基本信息 -->
-                <image class="gap_res_image w-160 h-160" :src="`https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/base/gap_res${form.res}.png`" mode="widthFix" />
+                <image class="gap_res_image w-160 h-160" :src="`https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/base/gap_res${form.res}.png`" mode="widthFix" />
                 <view class="pd-24 bg-#fff mb-10">
                     <view v-if="form?.gapBaseType" class="f-s-30 pd2-16-0 info-border-bottom">
                         <span class="c-#666">基地类型:</span>

+ 2 - 2
src/plant/base/gap-base-info-edit/index.vue

@@ -43,10 +43,10 @@
                             </view>
                             <view class="bg-#ccc d-flex ov-hd p-rtv" @click="mapDrawArea">
                                 <image class="w-full h-380" v-if="form?.basePic" :src="form?.basePic" mode="widthFix" />
-                                <image class="w-full h-380" v-else src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/base/select_base_gap.png"
+                                <image class="w-full h-380" v-else src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/base/select_base_gap.png"
                                     mode="widthFix" />
                                 <view v-if="!form?.basePic" class="btn-aree-center d-flex flex-cln a-c j-c">
-                                    <image class="w-52 h-52 mb-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/base/draw_area_icon.png"
+                                    <image class="w-52 h-52 mb-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/base/draw_area_icon.png"
                                         mode="widthFix" />
                                     <view class="c-primary f-s-28 f-w-400">点击绘制基地范围</view>
                                 </view>

+ 3 - 3
src/plant/base/gap-base-info/index.vue

@@ -56,20 +56,20 @@
             <!-- 空数据处理 -->
 
             <template #empty v-if="address">
-                <ut-empty class="mg-at" size="28rpx" color="#999" padding="10rpx" image="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/noEmptyBase.png">暂无获评GAP基地信息~</ut-empty>
+                <ut-empty class="mg-at" size="28rpx" color="#999" padding="10rpx" image="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/noEmptyBase.png">暂无获评GAP基地信息~</ut-empty>
                 <view class="d-flex j-c f-s-28 c-#ccc">如需认定GAP基地,可前往数字云药官网进行申报</view>
                 <view class="d-flex j-c f-s-28 c-primary pd-15">https://www.shuziyunyao.com/</view>
                 <up-button type="primary" class="b-radius" style="width: 340rpx" @click="copyText('https://www.shuziyunyao.com/')">复制网址</up-button>
             </template>
         </template>
         <template #empty v-if="!address">
-            <ut-empty class="mg-at" size="28rpx" color="#999" padding="10rpx" image="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/noEmptyBase.png">非云南省内企业,无法获取已获评的GAP基地信息~</ut-empty>
+            <ut-empty class="mg-at" size="28rpx" color="#999" padding="10rpx" image="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/noEmptyBase.png">非云南省内企业,无法获取已获评的GAP基地信息~</ut-empty>
             <view class="d-flex j-c f-s-28 c-#ccc">可点击底部按钮上传佐证材料添加获评信息</view>
         </template>
         <template #bottom v-if="!address">
             <view class="base-bottom-wrap pd-20 pb-0">
                 <up-button type="primary" @click="$u.route({ url: '/plant/base/gap-base-info-edit/index' })">
-                    <img class="w-38 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/chooseGAP.png" alt="" mode="widthFix" />
+                    <img class="w-38 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/chooseGAP.png" alt="" mode="widthFix" />
                     <text>添加GAP基地信息</text>
                 </up-button>
             </view>

+ 1 - 1
src/plant/base/mark-base-detail/index.vue

@@ -9,7 +9,7 @@
                     <view class="startline-title">证明材料</view>
                 </view>
                 <view v-if="form" class="pd-24 bg-#fff mb-10 p-rtv">
-                    <image class="base_res_logo w-160 h-160" :src="`https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/base_res_logo${formRes?.res}.png`" mode="widthFix" />
+                    <image class="base_res_logo w-160 h-160" :src="`https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/base_res_logo${formRes?.res}.png`" mode="widthFix" />
                     <view class="f-s-30 pd2-16-0 info-border-bottom">
                         <span class="c-#666">获评品种:</span>
                         <span class="c-#333">{{ formRes.medicineName || '-' }}</span>

+ 2 - 2
src/plant/code/code-list/index.vue

@@ -36,7 +36,7 @@
         <template #empty>
             <view class="d-flex flex-cln a-c">
                 <ut-empty class="mg-at" color="#ccc" size="28rpx"
-                    image="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/noEmpty.png">暂无追溯码数据</ut-empty>
+                    image="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/noEmpty.png">暂无追溯码数据</ut-empty>
             </view>
         </template>
         <template #bottom>
@@ -47,7 +47,7 @@
     <!-- 悬浮按钮 -->
     <ut-suspension v-if="sus?.left" :imageWidth="60" :imageHeight="60" :x="sus?.left" :y="sus?.bottom" :inertia="false"
         :snap-threshold="40">
-        <image src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/btn_add_logo.png" mode="widthFix"
+        <image src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/btn_add_logo.png" mode="widthFix"
             class="w-120 h-120" @click="showGenerateDialog = true"></image>
     </ut-suspension>
 

+ 1 - 1
src/plant/contact-unit/unit-list/index.vue

@@ -49,7 +49,7 @@
         </template>
     </z-paging>
     <ut-suspension @click="$u.route({ url: '/plant/contact-unit/unit-edit/index' })">
-        <image src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/btn_add_logo.png" mode="widthFix" class="w-120 h-120"></image>
+        <image src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/btn_add_logo.png" mode="widthFix" class="w-120 h-120"></image>
     </ut-suspension>
 </template>
 <script setup lang="ts">

+ 2 - 2
src/plant/export-print/models/code-style-tem.vue

@@ -76,7 +76,7 @@
             </view>
             <view class="table-td flex1 d-flex">
                  <view class="d-flex j-c a-c flex-cln flex1">
-                    <image class="w-140 h-140" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/print-codes/code_logo_export.png" mode="widthFix" />
+                    <image class="w-140 h-140" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/print-codes/code_logo_export.png" mode="widthFix" />
                     <view class="f-s-26">xxxx</view>
                     <view v-if="(fields as string[])?.includes('gapFlag')" class="f-s-26">药材符合GAP要求</view>
                 </view>
@@ -136,7 +136,7 @@
             <view class="f-s-30 c-#000 f-w-5 pd2-8-0">
                 <view class="mb-20">溯源码:</view>
                 <view class="d-flex j-c a-c flex-cln">
-                    <image class="w-140 h-140" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/print-codes/code_logo_export.png" mode="widthFix" />
+                    <image class="w-140 h-140" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/print-codes/code_logo_export.png" mode="widthFix" />
                     <view class="f-s-26">xxxx</view>
                 </view>
             </view>

+ 4 - 1
src/plant/export-print/models/export-print-confirm.vue

@@ -154,6 +154,7 @@ const upFormUpRef = ref();
 const emit = defineEmits(['next', 'prev', 'formdata']);
 const form = ref<any>({
     printCount: props.opts?.printedCount,
+    printType: '2', // 打印类型 1-喷印 2-排版
     extraInfo: {
         fileType: '1',
         fileFormat: '1',
@@ -259,8 +260,10 @@ const submitForm = async () => {
         ...props.opts,
         ...form.value,
     };
-    const res = props.opts?.id ? await useClientRequest.get(`/plt-api/app/printLog/update/${props.opts.id}`, payload?.extraInfo) : await useClientRequest.post('/plt-api/app/printLog/printNext', payload);
+    const res = props.opts?.id ? await useClientRequest.post(`/plt-api/app/printLog/update/${props.opts.id}`, payload?.extraInfo) : await useClientRequest.post('/plt-api/app/printLog/printNext', payload);
     if (!res || res.code !== 200) return;
+    console.log(res);
+    
     uni.$emit('refreshPackTaskList');
     uni.$emit('refreshPackTaskDetail');
     await useClientRequest.get(`/plt-api/app/printLog/export/${res.data?.id || props.opts?.id}`);

+ 6 - 1
src/plant/models/pack-card.vue

@@ -46,8 +46,13 @@
                     <span class="c-#666">待打印数量:</span>
                     <span class="c-#333 f-w-5">{{ item?.actualCount - item?.printCount }}{{ item?.unit }}</span>
                 </view>
+                <template v-if="+item?.restCapacity">
+                    <view class="c-#666 f-s-24">
+                        <span>首{{ item?.unit }}为{{ item?.restCapacity }}{{ item?.storageUseUnit }}</span>
+                        <span v-if="item?.restCode">,追溯码:{{ item?.restCode }}</span>
+                    </view>
+                </template>
             </view>
-          
             <slot></slot>
         </view>
     </view>

+ 71 - 18
src/plant/packaging/batch-link/index.vue

@@ -7,24 +7,26 @@
         <view class="pd-24">
             <view class="mb-30 p-rtv batch-wapper">
                 <view class="d-flex a-c">
-                    <image class="w-50 h-50 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/print-codes/pcxx_icon.png" mode="widthFix" />
+                    <image class="w-50 h-50 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/print-codes/pcxx_icon.png" mode="widthFix" />
                     <view class="f-s-28 c-#333 f-w-5">需关联追溯码的批次信息</view>
                 </view>
                 <view class="pl-50">
                     <view v-if="item" class="border-#8FC1EC b-radius bg-#fff ov-hd">
                         <pack-card :item="item" :dict="{ pt_pack_ref_type }"></pack-card>
                     </view>
-                    <view class="pd-30 d-flex j-c">
+                    <view class="pd-30 text-center">
                         <view class="c-primary f-s-28">
                             <span>待关联数量:</span>
-                            <span class="f-s-46 f-w-600">{{ item?.planCount - item?.actualCount || 0 }}</span>
+                            <span class="f-s-46 f-w-600">{{ pendingCount }}</span>
                             <span>{{ item?.unit }}</span>
                         </view>
+                        <view v-if="isLinkingZeroPackage" class="f-s-22 c-ccc">包装存在零包,请先完成零包关联后,在进行非零包的关联</view>
                     </view>
                 </view>
                 <view class="d-flex a-c">
-                    <image class="w-50 h-50 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/print-codes/glm_icon.png" mode="widthFix" />
-                    <view class="f-s-28 c-#333 f-w-5">本批次信息要关联到哪些(提前预制的)追溯码上?</view>
+                    <image class="w-50 h-50 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/print-codes/glm_icon.png" mode="widthFix" />
+                    <view v-if="!isLinkingZeroPackage" class="f-s-28 c-#333 f-w-5">本批次信息要关联到哪些(提前预制的)追溯码上?</view>
+                    <view v-if="isLinkingZeroPackage" class="f-s-28 c-#333 f-w-5">本批次包装存在零包,这个零包要关联到哪个追溯码上?</view>
                 </view>
             </view>
             <view class="pl-50">
@@ -85,8 +87,8 @@
                         </view>
                     </view>
                 </template>
-                <up-button @click="selectCodes" type="primary" plain customStyle="background: #F5F7F5;">
-                    <image class="w-36 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
+                <up-button v-if="canSelectMoreCodes" @click="selectCodes" type="primary" plain customStyle="background: #F5F7F5;">
+                    <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
                     <span>请选择追溯码</span>
                 </up-button>
             </view>
@@ -94,7 +96,7 @@
         <template #bottom>
             <view class="pd3-10-24-20">
                 <view class="f-s-28 c-#333 text-center mb-5">此次共关联{{ totalSumCount }}个追溯码</view>
-                <up-button @click="batchLinkCodes" type="primary">批量关联</up-button>
+                <up-button @click="batchLinkCodes" type="primary">确认关联</up-button>
             </view>
         </template>
     </z-paging>
@@ -111,11 +113,28 @@ const item = ref<any>(null);
 const did = ref('');
 const relations = ref<any[]>([]);
 const callbackName = 'refreshCodesRange';
+const pendingCount = computed(() => {
+    const planCount = Number(item.value?.planCount || 0);
+    const actualCount = Number(item.value?.actualCount || 0);
+    if (+item.value?.restCapacity && !+item.value?.restRelationFlag) {
+        return 1;
+    }
+    return Math.max(planCount - actualCount, 0);
+});
+// 判断当前是否是在关联零包
+const isLinkingZeroPackage = computed(() => {
+    return +item.value?.restCapacity  && !+item.value?.restRelationFlag;
+});
 // 根据id获取基地详情
 const getDetailById = async (id: string) => {
+    uni.showLoading({
+        title: '加载中...',
+        mask: true,
+    });
     const res = await useClientRequest.get(`/plt-api/app/packTask/${id}`);
     if (res && res.code === 200) {
         item.value = res.data || null;
+        uni.hideLoading();
     }
 };
 const onRefresh = () => {
@@ -125,14 +144,19 @@ const onRefresh = () => {
 const totalSumCount = computed(() => {
     return relations.value.reduce((sum, item) => sum + +(item?.sumnCount || 0), 0);
 });
+const canSelectMoreCodes = computed(() => totalSumCount.value < pendingCount.value);
+const isTotalCountExceeded = (nextTotal: number) => {
+    if (nextTotal <= pendingCount.value) return false;
+    uni.showToast({
+        title: '关联总个数不能大于待关联数量',
+        icon: 'none',
+    });
+    return true;
+};
 // 判断节点是否在可视区域内如果在则切换tab createIntersectionObserver
 onLoad((options: any) => {
     did.value = options?.packId || getUrlParams(recursiveDecodeURIComponent(options?.q))?.packId || '';
     getDetailById(did.value);
-    uni.$on('refreshBase', () => {
-        onRefresh();
-    });
-    uni.$on(callbackName, onCodeRangeSelected);
 });
 onUnload(() => {
     uni.$off(callbackName, onCodeRangeSelected);
@@ -178,14 +202,23 @@ const checkCodesValidItem = async (row: any) => {
     const res = await useClientRequest.get(`/plt-api/app/traceCodeLog/checkCodeRange/${row?.form?.id}`, {
         ...row?.form,
     });
-    console.log(res);
     if (!res || res.code !== 200) {
         row.hasChecked = false;
         return;
     }
     const validCodes = res.data;
-    row.validCodes = validCodes.map((item:any) => ({ ...item, logId: row?.form?.id }));
-    row.sumnCount = validCodes.reduce((sum: number, item: any) => sum + item.count, 0);
+    const nextValidCodes = validCodes.map((item:any) => ({ ...item, logId: row?.form?.id }));
+    const nextRowCount = validCodes.reduce((sum: number, item: any) => sum + item.count, 0);
+    const currentRowCount = Number(row?.sumnCount || 0);
+    const nextTotal = totalSumCount.value - currentRowCount + nextRowCount;
+    if (isTotalCountExceeded(nextTotal)) {
+        row.hasChecked = false;
+        row.validCodes = [];
+        row.sumnCount = 0;
+        return;
+    }
+    row.validCodes = nextValidCodes;
+    row.sumnCount = nextRowCount;
     row.hasChecked = true;
 };
 // 校验码段是否有用
@@ -206,22 +239,24 @@ const checkCodesValid = async (data: any) => {
             item: data,
             form: {
                 id: data?.id,
-                startSn: res.data[0]?.startSn?.toString().padStart(7, '0')
+                startSn: res.data[0]?.startSn?.toString().padStart(7, '0'),
+                // 如果是零包,结束编号默认为起始编号
+                endSn: isLinkingZeroPackage.value ? res.data[0]?.startSn?.toString().padStart(7, '0') : '',
             },
             hasChecked: false,
             validCodes: [],
             sumnCount: 0,
         });
-        console.log(relations.value);
     }
     // return [];
 };
 const onCodeRangeSelected = (data: any) => {
-    console.log('选中的码段数据:', data);
     checkCodesValid(data);
+    uni.$off(callbackName, onCodeRangeSelected);
 };
 const selectCodes = () => {
     const selectedIds = relations.value.map((row) => row?.item?.id).filter((id) => id !== null && id !== undefined);
+    uni.$on(callbackName, onCodeRangeSelected);
     uni.$u.route({
         type: 'navigateTo',
         url: '/tools/select-code-section/index',
@@ -249,12 +284,16 @@ const batchLinkCodes = async () => {
         });
         return;
     }
+    if (isTotalCountExceeded(totalSumCount.value)) {
+        return;
+    }
     try {
         await uni.showLoading({
             title: '关联中...',
             mask: true,
         });
         const params = {
+            restFlag: isLinkingZeroPackage.value ? '1' : undefined, // 是否是零包关联
             packId: did.value,
             relations: relations.value.map((row: any) => row?.validCodes || [])?.flat(),
         };
@@ -266,6 +305,20 @@ const batchLinkCodes = async () => {
         });
         uni.$emit('refreshPackTaskList');
         uni.$emit('refreshPackTaskDetail');
+        if (isLinkingZeroPackage.value) {
+            await uni.showModal({
+                title: '提示',
+                content: '关联成功,请继续关联剩下产品的追溯码信息。',
+                showCancel: false,
+                confirmText: '知道了',
+                confirmColor: '#37A954'
+            });
+            // 清空当前零包关联数据,刷新批次详情,继续进行非零包关联
+            relations.value = [];
+            onRefresh();
+            return
+        }
+        await new Promise((resolve) => setTimeout(resolve, 1000));
         uni.navigateBack({
             delta: 1,
         });

+ 34 - 32
src/plant/packaging/create/index.vue

@@ -9,15 +9,12 @@
                 <up-form-item borderBottom label="选择包装对象" prop="inputStorageId" required>
                     <view class="flex1">
                         <up-button v-if="!form.inputStorageId" @click="selectStorage" type="primary" plain>
-                            <image class="w-36 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
+                            <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
                             <span>请选择您要包装的对象</span>
                         </up-button>
                         <view v-else class="bg-#FBFDFB card-info-block p-rtv border-#A9D7B4 b-radius">
                             <ObjectCardStorage :item="form.stroeObject"></ObjectCardStorage>
-                               <view
-                                class="close-icon pd-16"
-                                @click="deleteStorage"
-                            >
+                            <view class="close-icon pd-16" @click="deleteStorage">
                                 <up-icon color="#F81242" name="close" size="32rpx"></up-icon>
                             </view>
                         </view>
@@ -131,7 +128,7 @@
                         </template>
                     </up-form-item>
                 </ut-action-sheet>
-                <view class="d-flex a-c pd2-10-0" @click="$u.route({ url: '/tools/view-html/index', params: { url: 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/template/pack_code_type.html', title: '赋码方式区别' } })">
+                <view class="d-flex a-c pd2-10-0" @click="$u.route({ url: '/tools/view-html/index', params: { url: 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/template/pack_code_type.html', title: '赋码方式区别' } })">
                     <up-icon size="28rpx" name="question-circle" color="#37A954"></up-icon>
                     <span class="c-primary f-s-24">两种赋码方式的区别?怎么选择?</span>
                 </view>
@@ -221,32 +218,38 @@ const rules = reactive<Record<string, any>>({
     refType: [{ required: true, message: '请选择赋码方式' }],
 });
 
-const submit = async () => {
-    try {
-        await upFormRef.value?.validate();
-    } catch (error: any) {
-        const firstErrorField = error && error[0].field + 'pppp';
-        paging.value?.scrollIntoViewById(firstErrorField, 30, true);
-        return;
-    }
+const submit = () => {
+    uni.$u.debounce(async () => {
+        try {
+            await upFormRef.value?.validate();
+        } catch (error: any) {
+            const firstErrorField = error && error[0].field + 'pppp';
+            paging.value?.scrollIntoViewById(firstErrorField, 30, true);
+            return;
+        }
 
-    try {
-        await uni.showLoading({ title: '分包中...', mask: true });
-        const payload: any = { ...(form.value as any), planCount: packResult.value.packNum };
-        delete payload.stroeObject;
-        const res = await useClientRequest.post('/plt-api/app/packTask/save', payload);
-        uni.hideLoading();
-        if (res && res.code === 200) {
-            uni.showToast({ title: '操作成功', icon: 'success' });
-            uni.$emit('refreshPackTaskList');
-            setTimeout(() => uni.navigateBack({
-                delta: 1,
-            }), 300);
+        try {
+            await uni.showLoading({ title: '分包中...', mask: true });
+            const payload: any = { ...(form.value as any), planCount: packResult.value.packNum };
+            delete payload.stroeObject;
+            const res = await useClientRequest.post('/plt-api/app/packTask/save', payload);
+            uni.hideLoading();
+            if (res && res.code === 200) {
+                uni.showToast({ title: '操作成功', icon: 'success' });
+                uni.$emit('refreshPackTaskList');
+                setTimeout(
+                    () =>
+                        uni.navigateBack({
+                            delta: 1,
+                        }),
+                    300,
+                );
+            }
+        } catch (e) {
+            uni.hideLoading();
+            console.error('保存往来单位失败:', e);
         }
-    } catch (e) {
-        uni.hideLoading();
-        console.error('保存往来单位失败:', e);
-    }
+    }, 500, true);
 };
 // 点击随机生成服务端生成唯一的批号
 const generateBatchCode = async () => {
@@ -276,7 +279,7 @@ const selectStorage = () => {
         form.value.storageUseAmount = '';
         form.value.capacity = '';
         form.value.stroeObject = data;
-        form.value.batchSn = data?.batchCode
+        form.value.batchSn = data?.batchCode;
         uni.$off('selectStorageObject');
     });
     uni.$u.route({
@@ -307,7 +310,6 @@ const packResult = computed(() => {
         spec1: '',
         // 零包规格
         spec2: '',
-
     };
     if (form.value.storageUseAmount && form.value.capacity) {
         const useAmount = Number(form.value.storageUseAmount);

+ 4 - 4
src/plant/packaging/detail/models/print-info-page.vue

@@ -14,20 +14,20 @@
                 </pack-card>
                 <view class="btn-card-wrapper d-flex a-c j-sb">
                     <view class="btn-bottom-bt ls-style" @click.stop="goPrint({ packId: form?.id, autoRelationId: form?.autoRelationId, unit: form?.unit, printedCount: form?.actualCount - form?.printCount }, '/plant/print/print-self/index')">
-                        <image class="w-32 h-32 mr-8" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/print-codes/btn_zxdy_icon.png" mode="widthFix" />
+                        <image class="w-32 h-32 mr-8" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/print-codes/btn_zxdy_icon.png" mode="widthFix" />
                         <span>自行打印</span>
                     </view>
                     <view class="btn-bottom-bt ss-style" @click="goPrint({ packId: form?.id, autoRelationId: form?.autoRelationId, unit: form?.unit, printedCount: form?.actualCount - form?.printCount }, '/plant/export-print/export/index')">
-                        <image class="w-32 h-32 mr-8" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/print-codes/dczsm_icon.png" mode="widthFix" />
+                        <image class="w-32 h-32 mr-8" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/print-codes/dczsm_icon.png" mode="widthFix" />
                         <span>导出追溯码</span>
                     </view>
                     <view class="btn-bottom-bt fs-style" @click="showFeatureUnavailable()">
-                        <image class="w-32 h-32 mr-8" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/print-codes/btn_zrdd_icon.png" mode="widthFix" />
+                        <image class="w-32 h-32 mr-8" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/print-codes/btn_zrdd_icon.png" mode="widthFix" />
                         <span>找人代打</span>
                     </view>
                 </view>
             </view>
-            <view class="d-flex a-c pd2-10-0 j-ed" @click="$u.route({ url: '/tools/view-html/index', params: { url: 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/template/pack_print_type.html', title: '打印方式的区别' } })">
+            <view class="d-flex a-c pd2-10-0 j-ed" @click="$u.route({ url: '/tools/view-html/index', params: { url: 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/template/pack_print_type.html', title: '打印方式的区别' } })">
                 <up-icon size="28rpx" name="question-circle" color="#999"></up-icon>
                 <span class="c-#999 f-s-24">三种打印方式的区别?怎么选择?</span>
             </view>

+ 2 - 2
src/plant/packaging/detail/models/relate-info-page.vue

@@ -14,12 +14,12 @@
                 </pack-card>
                 <view class="btn-card-wrapper d-flex a-c j-c">
                     <view class="btn-bottom-bt pm-style" @click="goRelate({ packId: form?.id, autoRelationId: form?.autoRelationId, unit: form?.unit, printedCount: +form?.planCount - +form?.actualCount }, '/plant/packaging/batch-link/index')">
-                        <image class="w-32 h-32 mr-8" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/print-codes/btn_plgl_icon.png" mode="widthFix" />
+                        <image class="w-32 h-32 mr-8" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/print-codes/btn_plgl_icon.png" mode="widthFix" />
                         <span>批量关联</span>
                     </view>
                 </view>
             </view>
-            <view class="d-flex a-c pd2-10-0 j-ed" @click="$u.route({ url: '/tools/view-html/index', params: { url: 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/template/pack_print_type.html', title: '打印方式的区别' } })">
+            <view class="d-flex a-c pd2-10-0 j-ed" @click="$u.route({ url: '/tools/view-html/index', params: { url: 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/template/pack_print_type.html', title: '打印方式的区别' } })">
                 <up-icon size="28rpx" name="question-circle" color="#999"></up-icon>
                 <span class="c-#999 f-s-24">三种打印方式的区别?怎么选择?</span>
             </view>

+ 1 - 1
src/plant/packaging/edit/index.vue

@@ -116,7 +116,7 @@
                     <view v-if="form.refType" class="f-s-30 c-999 f-w-5 flex1">{{ selectDictLabel(pt_pack_ref_type, form.refType) }}</view>
                     <view v-else class="f-s-30 c-ccc f-w-4 flex1">请选择赋码方式</view>
                 </up-form-item>
-                <view class="d-flex a-c pd2-10-0" @click="$u.route({ url: '/tools/view-html/index', params: { url: 'https://ta.zycpzs.cn/oss-file/smart-trace/szyy/template/pack_code_type.html', title: '赋码方式区别' } })">
+                <view class="d-flex a-c pd2-10-0" @click="$u.route({ url: '/tools/view-html/index', params: { url: 'https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/template/pack_code_type.html', title: '赋码方式区别' } })">
                     <up-icon size="28rpx" name="question-circle" color="#37A954"></up-icon>
                     <span class="c-primary f-s-24">两种赋码方式的区别?怎么选择?</span>
                 </view>

+ 1 - 1
src/plant/packaging/select-object/models/select-fresh-list.vue

@@ -27,7 +27,7 @@
                     @click="emit('clickItem', item)">
                     <FreshGoodsCard :item="item" :dict="{ pt_fresh_instore_type }"></FreshGoodsCard>
                     <image v-if="item.id + '-' + item.storageType === checkedId" class="w-40 h-40 checked-icon"
-                        src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/btn_checked_icon.png"
+                        src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/btn_checked_icon.png"
                         mode="widthFix" />
                 </view>
             </template>

+ 1 - 1
src/plant/packaging/select-object/models/select-medicine-list.vue

@@ -27,7 +27,7 @@
                     @click="emit('clickItem', item)">
                     <MedicineCard :item="item" :dict="{ st_medicine_process_type }"></MedicineCard>
                     <image v-if="item.id + '-' + item.storageType === checkedId" class="w-40 h-40 checked-icon"
-                        src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/btn_checked_icon.png"
+                        src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/btn_checked_icon.png"
                         mode="widthFix" />
                 </view>
             </template>

+ 1 - 1
src/plant/packaging/select-object/models/select-seed-source-list.vue

@@ -28,7 +28,7 @@
                     @click="emit('clickItem', item)">
                     <SeedSourceCard :item="item" :dict="{ pt_seed_instore_type, pt_seed_type, pt_fungus_code_type }"></SeedSourceCard>
                     <image v-if="item.id + '-' + item.storageType === checkedId" class="w-40 h-40 checked-icon"
-                        src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/btn_checked_icon.png"
+                        src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/btn_checked_icon.png"
                         mode="widthFix" />
                 </view>
             </template>

+ 1 - 1
src/plant/port/port-create/models/go_button.vue

@@ -1,6 +1,6 @@
 <template>
     <up-button type="primary" @click="click" plain>
-        <image class="w-36 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
+        <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
         <span>{{ title }}</span>
     </up-button>
 </template>

+ 1 - 1
src/plant/port/port-harvest-create/index.vue

@@ -216,7 +216,7 @@
                 <view class="c-#999 f-s-26 f-w-5 pb-10">已选择工艺步骤</view>
                 <view class="d-flex flex-wrap pd-24 a-c gap-10 border-#37A954 b-radius">
                     <template v-for="(item, index) in form?.ptech?.split(',')" :key="index">
-                        <image v-if="index !== 0" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/craftArrow.png" class="mr-10 ml-10" style="width: 44rpx; height: 44rpx"> </image>
+                        <image v-if="index !== 0" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/craftArrow.png" class="mr-10 ml-10" style="width: 44rpx; height: 44rpx"> </image>
                         <view class="p-rtv">
                             <up-icon color="red" name="close-circle-fill" @click="removePtech(index)" style="position: absolute; right: -10rpx; top: -10rpx"></up-icon>
                             <view class="pd-16 bg-#37A9541A c-primary b-radius mb-10"> {{ item }}</view>

+ 1 - 1
src/plant/port/port-harvest-create/models/go_button.vue

@@ -1,6 +1,6 @@
 <template>
     <up-button type="primary" @click="click" plain>
-        <image class="w-36 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
+        <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
         <span>{{ title }}</span>
     </up-button>
 </template>

+ 4 - 4
src/plant/port/port-harvest/models/task_card.vue

@@ -3,7 +3,7 @@
     <view class="" v-if="data?.taskType === '1'" @click="$emit('click')">
         <view class="b-radius bg-#fff pd-10 p-rtv">
             <image class="w-80 h-34"
-                src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Planting.png"
+                src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Planting.png"
                 mode="widthFix" style="position: absolute; top: 0; left: 0" />
             <view class="d-flex j-ed f-s-22 c-#666">{{ data?.plannedStartDate }}至{{ data?.plannedEndDate }}</view>
             <view class="d-flex a-ed pd-16 pt-8 pb-8">
@@ -43,7 +43,7 @@
     <view class="" v-if="data?.taskType === '2'" @click="$emit('click')">
         <view class="b-radius bg-#fff pd-10 p-rtv">
             <image class="w-80 h-34"
-                src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Breeding.png"
+                src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Breeding.png"
                 mode="widthFix" style="position: absolute; top: 0; left: 0" />
             <view class="d-flex j-ed f-s-22 c-#666">{{ data?.plannedStartDate }}至{{ data?.plannedEndDate }}</view>
             <view class="d-flex a-ed pd-16 pt-8 pb-8">
@@ -83,7 +83,7 @@
     <view class="" v-if="data?.taskType === '11'" @click="$emit('click')">
         <view class="b-radius bg-#fff pd-10 p-rtv">
             <image class="w-112 h-34"
-                src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Seedling_breeding.png"
+                src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Seedling_breeding.png"
                 mode="widthFix" style="position: absolute; top: 0; left: 0" />
             <view class="d-flex j-ed f-s-22 c-#666">{{ data?.plannedStartDate }}至{{ data?.plannedEndDate }}</view>
             <view class="d-flex a-ed pd-16 pt-8 pb-8">
@@ -128,7 +128,7 @@
     <view class="" v-if="data?.taskType === '21'" @click="$emit('click')">
         <view class="b-radius bg-#fff pd-10 p-rtv">
             <image class="w-112 h-34"
-                src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Breeding_Livestock.png"
+                src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Breeding_Livestock.png"
                 mode="widthFix" style="position: absolute; top: 0; left: 0" />
             <view class="d-flex j-ed f-s-22 c-#666">{{ data?.plannedStartDate }}至{{ data?.plannedEndDate }}</view>
             <view class="d-flex a-ed pd-16 pt-8 pb-8">

+ 4 - 4
src/plant/port/port-listinfo/models/task_card.vue

@@ -3,7 +3,7 @@
     <view class="" v-if="data?.taskType === '1'" @click="$emit('click')">
         <view class="b-radius bg-#fff pd-10 p-rtv">
             <image class="w-80 h-34"
-                src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Planting.png"
+                src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Planting.png"
                 mode="widthFix" style="position: absolute; top: 0; left: 0" />
             <view class="d-flex j-ed f-s-22 c-#666">{{ data?.plannedStartDate }}至{{ data?.plannedEndDate }}</view>
             <view class="d-flex a-ed pd-16 pt-8 pb-8">
@@ -43,7 +43,7 @@
     <view class="" v-if="data?.taskType === '2'" @click="$emit('click')">
         <view class="b-radius bg-#fff pd-10 p-rtv">
             <image class="w-80 h-34"
-                src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Breeding.png"
+                src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Breeding.png"
                 mode="widthFix" style="position: absolute; top: 0; left: 0" />
             <view class="d-flex j-ed f-s-22 c-#666">{{ data?.plannedStartDate }}至{{ data?.plannedEndDate }}</view>
             <view class="d-flex a-ed pd-16 pt-8 pb-8">
@@ -83,7 +83,7 @@
     <view class="" v-if="data?.taskType === '11'" @click="$emit('click')">
         <view class="b-radius bg-#fff pd-10 p-rtv">
             <image class="w-112 h-34"
-                src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Seedling_breeding.png"
+                src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Seedling_breeding.png"
                 mode="widthFix" style="position: absolute; top: 0; left: 0" />
             <view class="d-flex j-ed f-s-22 c-#666">{{ data?.plannedStartDate }}至{{ data?.plannedEndDate }}</view>
             <view class="d-flex a-ed pd-16 pt-8 pb-8">
@@ -128,7 +128,7 @@
     <view class="" v-if="data?.taskType === '21'" @click="$emit('click')">
         <view class="b-radius bg-#fff pd-10 p-rtv">
             <image class="w-112 h-34"
-                src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Breeding_Livestock.png"
+                src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Breeding_Livestock.png"
                 mode="widthFix" style="position: absolute; top: 0; left: 0" />
             <view class="d-flex j-ed f-s-22 c-#666">{{ data?.plannedStartDate }}至{{ data?.plannedEndDate }}</view>
             <view class="d-flex a-ed pd-16 pt-8 pb-8">

+ 4 - 4
src/plant/port/port-supervise/models/task_card.vue

@@ -3,7 +3,7 @@
     <view class="" v-if="data?.taskType === '1'" @click="$emit('click')">
         <view class="b-radius bg-#fff pd-10 p-rtv">
             <image class="w-80 h-34"
-                src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Planting.png"
+                src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Planting.png"
                 mode="widthFix" style="position: absolute; top: 0; left: 0" />
             <view class="d-flex j-ed f-s-22 c-#666">{{ data?.plannedStartDate }}至{{ data?.plannedEndDate }}</view>
             <view class="d-flex a-ed pd-16 pt-8 pb-8">
@@ -43,7 +43,7 @@
     <view class="" v-if="data?.taskType === '2'" @click="$emit('click')">
         <view class="b-radius bg-#fff pd-10 p-rtv">
             <image class="w-80 h-34"
-                src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Breeding.png"
+                src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Breeding.png"
                 mode="widthFix" style="position: absolute; top: 0; left: 0" />
             <view class="d-flex j-ed f-s-22 c-#666">{{ data?.plannedStartDate }}至{{ data?.plannedEndDate }}</view>
             <view class="d-flex a-ed pd-16 pt-8 pb-8">
@@ -83,7 +83,7 @@
     <view class="" v-if="data?.taskType === '11'" @click="$emit('click')">
         <view class="b-radius bg-#fff pd-10 p-rtv">
             <image class="w-112 h-34"
-                src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Seedling_breeding.png"
+                src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Seedling_breeding.png"
                 mode="widthFix" style="position: absolute; top: 0; left: 0" />
             <view class="d-flex j-ed f-s-22 c-#666">{{ data?.plannedStartDate }}至{{ data?.plannedEndDate }}</view>
             <view class="d-flex a-ed pd-16 pt-8 pb-8">
@@ -128,7 +128,7 @@
     <view class="" v-if="data?.taskType === '21'" @click="$emit('click')">
         <view class="b-radius bg-#fff pd-10 p-rtv">
             <image class="w-112 h-34"
-                src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/port/Task_Breeding_Livestock.png"
+                src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/port/Task_Breeding_Livestock.png"
                 mode="widthFix" style="position: absolute; top: 0; left: 0" />
             <view class="d-flex j-ed f-s-22 c-#666">{{ data?.plannedStartDate }}至{{ data?.plannedEndDate }}</view>
             <view class="d-flex a-ed pd-16 pt-8 pb-8">

+ 93 - 18
src/plant/print/models/connect-printer.vue

@@ -3,16 +3,16 @@
         <!-- 提示信息图片 - 搜索中显示 gif,搜索完成显示 jpg -->
         <view class="info-images">
             <image v-if="isSearching" class="w-750 h-311"
-                src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/print/print_dt_ssly.gif"
+                src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/print/print_dt_ssly.gif"
                 mode="widthFix" />
             <image v-else class="w-750 h-311"
-                src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/print/print_jt_ssly.jpg"
+                src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/print/print_jt_ssly.jpg"
                 mode="widthFix" />
         </view>
 
         <!-- 操作按钮区域 -->
         <view class="pd-24 action-buttons">
-            <up-button @click="handleStartSearch" class="mb-30" type="primary" :disabled="isConnected">
+            <up-button @click="handleStartSearch" class="mb-30" type="primary" :disabled="isSearching">
                 {{ isSearching ? '搜索中...' : '开始搜索' }}
             </up-button>
             <view class="d-flex a-c j-c">
@@ -41,7 +41,8 @@
                         <view v-if="device.RSSI !== undefined" class="signal-strength"> 信号:{{ device.RSSI }} dBm </view>
                     </view>
                     <view class="device-status">
-                        <text v-if="connectedDevice?.deviceId === device.deviceId" class="status-connected">已连接</text>
+                        <text v-if="isConnecting && connectingDeviceId === device.deviceId" class="status-new">连接中...</text>
+                        <text v-else-if="connectedDevice?.deviceId === device.deviceId" class="status-connected">已连接</text>
                         <text v-else class="status-new">未连接</text>
                     </view>
                 </view>
@@ -56,7 +57,7 @@
 </template>
 
 <script setup lang="ts">
-import { checkBluetoothPermission, initBluetoothAdapter, getBluetoothAdapterState, startBluetoothDevicesDiscovery, stopBluetoothDevicesDiscovery, connectBLEDevice, closeBLEConnection, getBLEDeviceServicesAndCharacteristics, getBluetoothDevices } from '@/utils/blue-device-services';
+import { checkBluetoothPermission, initBluetoothAdapter, getBluetoothAdapterState, startBluetoothDevicesDiscovery, stopBluetoothDevicesDiscovery, connectBLEDevice, closeBLEConnection, getBLEDeviceServicesAndCharacteristics, getBluetoothDevices, onBLEConnectionStateChange } from '@/utils/blue-device-services';
 const props = defineProps({
     info: {
         type: Object,
@@ -76,20 +77,29 @@ const props = defineProps({
 const emit = defineEmits(['connected', 'disconnected', 'next', 'prev']);
 const isSearching = ref(false);
 const isInitialized = ref(false);
+const isConnecting = ref(false);
+const connectingDeviceId = ref('');
 const devices = ref<Array<any>>([]);
 const connectedDevice = ref<any | null>(null);
-const isConnected = computed(() => !!connectedDevice.value);
 let stopDiscoveryListener: (() => void) | null = null;
+let stopConnectionStateListener: (() => void) | null = null;
 let searchTimeout: number | null = null;
 
 const toast = (title: string) => {
     uni.showToast({ title, icon: 'none', duration: 2000 });
 };
 
+const isBLEAlreadyConnectedError = (error: any) => {
+    const errCode = Number(error?.errCode);
+    const errMsg = String(error?.errMsg || '').toLowerCase();
+    return errCode === 10003 || errMsg.includes('already connected');
+};
+
 const updateDeviceList = (device: any) => {
     if (!device?.deviceId) return;
-    if (device.name.startsWith('未知或不支持的设备')) return;
-    if (!device.name.startsWith('GP-')) return;
+    const deviceName = device.name || '';
+    if (deviceName.startsWith('未知或不支持的设备')) return;
+    if (!deviceName.startsWith('GP-')) return;
     const idx = devices.value.findIndex((d) => d.deviceId === device.deviceId);
     if (idx >= 0) {
         devices.value[idx] = { ...devices.value[idx], ...device };
@@ -134,12 +144,33 @@ const initBluetooth = async () => {
     }
 };
 
+const setupConnectionStateListener = () => {
+    if (stopConnectionStateListener) return;
+
+    stopConnectionStateListener = onBLEConnectionStateChange(async (res: any) => {
+        if (!res?.deviceId || res.connected) return;
+        if (connectedDevice.value?.deviceId !== res.deviceId) return;
+
+        const disconnectedDeviceId = connectedDevice.value.deviceId;
+        connectedDevice.value = null;
+
+        try {
+            await closeBLEConnection(disconnectedDeviceId);
+        } catch {
+            // ignore
+        }
+
+        emit('disconnected', { deviceId: disconnectedDeviceId, reason: 'connection-lost' });
+        toast('设备连接已断开');
+    });
+};
+
 const handleStartSearch = async () => {
     if (isSearching.value) return;
 
     if (!isInitialized.value) {
-        toast('请先初始化蓝牙,再开始搜索');
-        return;
+        await initBluetooth();
+        if (!isInitialized.value) return;
     }
 
     isSearching.value = true;
@@ -188,14 +219,45 @@ const handleConnectDevice = async (device: any) => {
         return;
     }
 
+    if (isConnecting.value) {
+        toast('正在连接,请稍候');
+        return;
+    }
+
     if (connectedDevice.value?.deviceId === device.deviceId) {
         toast('已连接该设备');
         return;
     }
 
     try {
+        isConnecting.value = true;
+        connectingDeviceId.value = device.deviceId;
+
         await stopSearch();
-        await connectBLEDevice(device.deviceId);
+
+        if (connectedDevice.value?.deviceId) {
+            const previousDeviceId = connectedDevice.value.deviceId;
+            if (previousDeviceId !== device.deviceId) {
+                toast('已连接其他设备,正在切换...');
+            }
+            try {
+                await closeBLEConnection(previousDeviceId);
+            } catch {
+                // ignore
+            }
+            connectedDevice.value = null;
+            emit('disconnected', { deviceId: previousDeviceId, reason: 'switch-device' });
+            // 某些机型在断开后立刻重连会失败,给系统短暂释放时间。
+            await new Promise((resolve) => setTimeout(resolve, 200));
+        }
+
+        try {
+            await connectBLEDevice(device.deviceId);
+        } catch (error) {
+            if (!isBLEAlreadyConnectedError(error)) {
+                throw error;
+            }
+        }
 
         const { services, characteristicsMap } = await getBLEDeviceServicesAndCharacteristics(device.deviceId);
         console.log('已获取服务', services);
@@ -232,24 +294,31 @@ const handleConnectDevice = async (device: any) => {
             characteristicId,
         };
         updateDeviceList(connectedDevice.value);
+        emit('connected', connectedDevice.value);
 
         toast('蓝牙已连接');
     } catch (error: any) {
         console.error('连接失败', error);
         toast(error?.message || '设备连接失败,请重试');
+    } finally {
+        isConnecting.value = false;
+        connectingDeviceId.value = '';
     }
 };
 
-const handleDisconnect = async () => {
+const handleDisconnect = async (silent = false) => {
     if (!connectedDevice.value?.deviceId) return;
-
+    const deviceId = connectedDevice.value.deviceId;
     try {
-        await closeBLEConnection(connectedDevice.value.deviceId);
-        toast('已断开连接');
+        await closeBLEConnection(deviceId);
+        if (!silent) {
+            toast('已断开连接');
+        }
     } catch (error) {
         console.warn('断开连接失败', error);
     }
     connectedDevice.value = null;
+    emit('disconnected', { deviceId, reason: 'manual-disconnect' });
 };
 const nextSteps = () => {
     if (!connectedDevice.value || !connectedDevice.value?.deviceId || !connectedDevice.value?.serviceId) {
@@ -272,10 +341,16 @@ const prevSteps = () => {
     });
 };
 onMounted(() => {
+    setupConnectionStateListener();
     initBluetooth();
 });
-onBeforeUnmount(() => {
-    stopSearch();
+onBeforeUnmount(async () => {
+    await stopSearch();
+    if (connectedDevice.value?.deviceId) {
+        await handleDisconnect(true);
+    }
+    stopConnectionStateListener?.();
+    stopConnectionStateListener = null;
 });
 </script>
 
@@ -351,7 +426,7 @@ onBeforeUnmount(() => {
 
             &.active {
                 background-color: #e8f4ff;
-                border: 2rpx solid #1989fa;
+                border: 2rpx solid $u-primary;
             }
 
             &:active {

+ 38 - 12
src/plant/print/models/print-tem.ts

@@ -4,28 +4,54 @@ export const tem30x30 = (command: any, info: any[], item: any) => {
     const leftInfo = info[0];
     const rightInfo = info?.[1];
     command.setText(30, 10, 'TSS16.BF2', 1, 1, '品名:' + item.proName);
-    command.setText(30, 30, 'TSS16.BF2', 1, 1, '数量(重量):' + item.specn);
+    if (+leftInfo?.restFlag) {
+        command.setText(30, 40, 'TSS16.BF2', 1, 1, '数量(重量):' + item.restSpecn);
+    } else {
+        command.setText(30, 40, 'TSS16.BF2', 1, 1, '数量(重量):' + item.specn);
+    }
+    
     command.setQR(55, 75, 'L', 4, 'A', leftInfo.url);
+    // 底部加sn序号
+    command.setText(90, 195, 'TSS16.BF2', 1, 1, leftInfo.padSn);
     if (rightInfo) {
         command.setText(280, 10, 'TSS16.BF2', 1, 1, '品名:' + item.proName);
-        command.setText(280, 30, 'TSS16.BF2', 1, 1, '数量(重量):' + item.specn);
+        if (+rightInfo?.restFlag) {
+            command.setText(280, 40, 'TSS16.BF2', 1, 1, '数量(重量):' + item.restSpecn);
+        } else {
+            command.setText(280, 40, 'TSS16.BF2', 1, 1, '数量(重量):' + item.specn);
+        }
         command.setQR(315, 75, 'L', 4, 'A', rightInfo.url);
+        command.setText(345, 195, 'TSS16.BF2', 1, 1, rightInfo.padSn);
     }
     return command;
 };
 export const tem60x40 = (command: any, info: any, item: any) => {
-    command.setQR(320, 150, 'L', 4, 'A', info.traceCode);
-    command.setText(30, 30, 'TSS16.BF2', 1, 1, '品名:' + item.proName);
-    command.setText(30, 60, 'TSS16.BF2', 1, 1, '规格等级:' + item.proSpecn);
-    command.setText(30, 90, 'TSS16.BF2', 1, 1, '产地:' + item.proAdcodeDesc);
-    command.setText(30, 120, 'TSS16.BF2', 1, 1, '供应商:' + item.cpyName);
+    command.setText(30, 10, 'TSS16.BF2', 1, 1, '品名:' + item.proName);
+    command.setText(30, 35, 'TSS16.BF2', 1, 1, '批号:' + item.batchSn);
+    if (+info.restFlag) {
+        command.setText(30, 60, 'TSS16.BF2', 1, 1, '数量/重量:' + item.restSpecn);
+    } else {
+        command.setText(30, 60, 'TSS16.BF2', 1, 1, '数量/重量:' + item.specn);
+    }
+    command.setText(280, 60, 'TSS16.BF2', 1, 1, '规格等级:' + item.proLevel);
+    command.setText(30, 85, 'TSS16.BF2', 1, 1, '产地:' + item.proAdcodeDesc);
+    command.setText(30, 110, 'TSS16.BF2', 1, 1, '供应商:' + item.cpyName);
+    command.setQR(50, 135, 'L', 4, 'A', info.url);
+    command.setText(80, 255, 'TSS16.BF2', 1, 1, info.padSn);
     return command;
 };
 export const tem60x60 = (command: any, info: any, item: any) => {
-    command.setQR(320, 150, 'L', 4, 'A', info.traceCode);
-    command.setText(30, 30, 'TSS16.BF2', 1, 1, '品名:' + item.proName);
-    command.setText(30, 60, 'TSS16.BF2', 1, 1, '规格等级:' + item.proSpecn);
-    command.setText(30, 90, 'TSS16.BF2', 1, 1, '产地:' + item.proAdcodeDesc);
-    command.setText(30, 120, 'TSS16.BF2', 1, 1, '供应商:' + item.cpyName);
+    command.setText(30, 10, 'TSS16.BF2', 1, 1, '品名:' + item.proName);
+    if (+info.restFlag) {
+        command.setText(30, 35, 'TSS16.BF2', 1, 1, '数量/重量:' + item.restSpecn);
+    } else {
+        command.setText(30, 35, 'TSS16.BF2', 1, 1, '数量/重量:' + item.specn);
+    }
+    command.setText(30, 60, 'TSS16.BF2', 1, 1, '规格等级:' + item.proLevel);
+    command.setText(30, 85, 'TSS16.BF2', 1, 1, '批号:' + item.batchSn);
+    command.setText(30, 110, 'TSS16.BF2', 1, 1, '产地:' + item.proAdcodeDesc);
+    command.setText(30, 135, 'TSS16.BF2', 1, 1, '供应商:' + item.cpyName);
+    command.setQR(50, 160, 'L', 4, 'A', info.url);
+    command.setText(80, 280, 'TSS16.BF2', 1, 1, info.padSn);
     return command;
 };

+ 41 - 30
src/plant/print/models/print-wrapper.vue

@@ -1,12 +1,11 @@
 <template>
     <view class="pd-24">
-        <up-form class="p-rtv bg-#fff" labelPosition="top" :model="form" :rules="rules" labelWidth="auto"
-            ref="upFormRef">
+        <up-form class="p-rtv bg-#fff" labelPosition="top" :model="form" :rules="rules" labelWidth="auto" ref="upFormRef">
             <view class="d-flex j-c a-c">
-                <image v-if="!form.printSpec" class="w-670 h-590" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/print-codes/img_no_spac.png" mode="widthFix" />
-                <image v-if="form.printSpec == '30x30'" class="w-670 h-590" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/print-codes/img_30x30.png" mode="widthFix" />
-                <image v-if="form.printSpec == '60x40'" class="w-670 h-590" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/print-codes/img_60x40.png" mode="widthFix" />
-                <image v-if="form.printSpec == '60x60'" class="w-670 h-590" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/print-codes/img_60x60.png" mode="widthFix" />
+                <image v-if="!form.printSpec" class="w-670 h-590" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/print-codes/img_no_spac.png" mode="widthFix" />
+                <image v-if="form.printSpec == '30x30'" class="w-670 h-590" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/print-codes/img_30x30.png" mode="widthFix" />
+                <image v-if="form.printSpec == '60x40'" class="w-670 h-590" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/print-codes/img_60x40.png" mode="widthFix" />
+                <image v-if="form.printSpec == '60x60'" class="w-670 h-590" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/print-codes/img_60x60.png" mode="widthFix" />
             </view>
             <up-form-item label="打印规格" prop="printSpec" required>
                 <ut-radio :options="specs" v-model="form.printSpec"></ut-radio>
@@ -21,39 +20,39 @@
     </view>
 </template>
 <script lang="ts" setup>
-const emit = defineEmits(['test',  'prev', 'print']);
+const emit = defineEmits(['test', 'prev', 'print']);
 const props = defineProps({
     info: {
         type: Object,
-        required: true
+        required: true,
     },
     nextStepValue: {
         type: String,
-        default: 'print'
+        default: 'print',
     },
     prevStepValue: {
         type: String,
-        default: 'connect'
+        default: 'connect',
     },
     printCount: {
         type: Number,
-        default: 1
-    }
+        default: 1,
+    },
 });
 const specs = reactive([
     {
         label: '60 X 60',
-        value: '60x60'
+        value: '60x60',
     },
     {
         label: '60 X 40',
-        value: '60x40'
+        value: '60x40',
     },
     {
         label: '30 X 30',
-        value: '30x30'
-    }
-])
+        value: '30x30',
+    },
+]);
 const form = ref<any>({
     printSpec: '',
 });
@@ -62,20 +61,32 @@ const rules = reactive({
 });
 // 点击打印测试
 const clickPrintTest = () => {
-    if (!form.value.printSpec) {
-        return uni.showToast({ icon: 'none', title: '请选择打印规格' });
-    }
-    emit('test', form.value)
-}
+    uni.$u.debounce(
+        () => {
+            if (!form.value.printSpec) {
+                return uni.showToast({ icon: 'none', title: '请选择打印规格' });
+            }
+            emit('test', form.value);
+        },
+        500,
+        true,
+    );
+};
 const printClick = () => {
-    if (!form.value.printSpec) {
-        return uni.showToast({ icon: 'none', title: '请选择打印规格' });
-    }
-    emit('print', form.value)
+    uni.$u.debounce(
+        () => {
+            if (!form.value.printSpec) {
+                return uni.showToast({ icon: 'none', title: '请选择打印规格' });
+            }
+            emit('print', form.value);
+        },
+        500,
+        true,
+    );
 };
 const prevSteps = () => {
-   emit('prev', {
-      prevStepValue: props.prevStepValue || 'confirm',
-   });
+    emit('prev', {
+        prevStepValue: props.prevStepValue || 'confirm',
+    });
 };
-</script>
+</script>

+ 28 - 2
src/plant/print/print-all/index.vue

@@ -8,7 +8,13 @@
     
             <view v-show="currentStep === 'connect'" class="bg-fff">
                 <!-- 业务组件链接打印机 -->
-                <connect-printer :info="stepsObject[currentStep]" @next="nextSteps" nextStepValue="print"></connect-printer>
+                <connect-printer
+                    :info="stepsObject[currentStep]"
+                    @connected="handlePrinterConnected"
+                    @disconnected="handlePrinterDisconnected"
+                    @next="nextSteps"
+                    nextStepValue="print"
+                ></connect-printer>
             </view>
             <view v-show="currentStep === 'print'" class="bg-fff">
                 <!-- 业务组件打印 -->
@@ -26,7 +32,6 @@ import PrintWrapper from '../models/print-wrapper.vue';
 import { writeBLECharacteristicSend } from '@/utils/blue-device-services';
 import jpPrinter from '../models/tspl';
 import { useClientRequest } from '@/utils/request';
-import RangePrint from '../models/range-print.vue';
 const printSpec = ref('30x30');
 const printCodes = async (data: any) => {
     printSpec.value = data.printSpec;
@@ -97,6 +102,27 @@ const getFormData = (data: any) => {
 const prevSteps = (data: any) => {
     currentStep.value = data?.prevStepValue;
 };
+const handlePrinterConnected = (device: any) => {
+    stepsObject.connect = {
+        ...stepsObject.connect,
+        status: 'completed',
+        device,
+    };
+};
+const handlePrinterDisconnected = (payload: any) => {
+    const currentDeviceId = stepsObject.connect?.device?.deviceId;
+    if (!currentDeviceId || (payload?.deviceId && payload.deviceId !== currentDeviceId)) return;
+
+    stepsObject.connect = {
+        ...stepsObject.connect,
+        status: 'in-progress',
+        device: null,
+    };
+    if (currentStep.value === 'print') {
+        stepsObject.print.status = 'not-started';
+        currentStep.value = 'connect';
+    }
+};
 const testList = reactive([
     {
         padSn: '0000002',

+ 30 - 1
src/plant/print/print-range/index.vue

@@ -10,7 +10,15 @@
             </view>
             <view v-show="currentStep === 'connect'" class="bg-fff">
                 <!-- 业务组件链接打印机 -->
-                <connect-printer :info="stepsObject[currentStep]" @next="nextSteps" @prev="prevSteps" prevStepValue="range" nextStepValue="print"></connect-printer>
+                <connect-printer
+                    :info="stepsObject[currentStep]"
+                    @connected="handlePrinterConnected"
+                    @disconnected="handlePrinterDisconnected"
+                    @next="nextSteps"
+                    @prev="prevSteps"
+                    prevStepValue="range"
+                    nextStepValue="print"
+                ></connect-printer>
             </view>
             <view v-show="currentStep === 'print'" class="bg-fff">
                 <!-- 业务组件打印 -->
@@ -104,6 +112,27 @@ const getFormData = (data: any) => {
 const prevSteps = (data: any) => {
     currentStep.value = data?.prevStepValue;
 };
+const handlePrinterConnected = (device: any) => {
+    stepsObject.connect = {
+        ...stepsObject.connect,
+        status: 'completed',
+        device,
+    };
+};
+const handlePrinterDisconnected = (payload: any) => {
+    const currentDeviceId = stepsObject.connect?.device?.deviceId;
+    if (!currentDeviceId || (payload?.deviceId && payload.deviceId !== currentDeviceId)) return;
+
+    stepsObject.connect = {
+        ...stepsObject.connect,
+        status: 'in-progress',
+        device: null,
+    };
+    if (currentStep.value === 'print') {
+        stepsObject.print.status = 'not-started';
+        currentStep.value = 'connect';
+    }
+};
 const testList = reactive([
     {
         padSn: '0000002',

+ 30 - 1
src/plant/print/print-self/index.vue

@@ -18,7 +18,15 @@
             </view>
             <view v-show="currentStep === 'connect'" class="bg-fff">
                 <!-- 业务组件链接打印机 -->
-                <connect-printer :info="stepsObject[currentStep]" @next="nextSteps" @prev="prevSteps" prevStepValue="confirm" nextStepValue="print"></connect-printer>
+                <connect-printer
+                    :info="stepsObject[currentStep]"
+                    @connected="handlePrinterConnected"
+                    @disconnected="handlePrinterDisconnected"
+                    @next="nextSteps"
+                    @prev="prevSteps"
+                    prevStepValue="confirm"
+                    nextStepValue="print"
+                ></connect-printer>
             </view>
             <view v-show="currentStep === 'print'" class="bg-fff">
                 <!-- 业务组件打印 -->
@@ -137,6 +145,27 @@ const getFormData = (data: any) => {
 const prevSteps = (data: any) => {
     currentStep.value = data?.prevStepValue;
 };
+const handlePrinterConnected = (device: any) => {
+    stepsObject.connect = {
+        ...stepsObject.connect,
+        status: 'completed',
+        device,
+    };
+};
+const handlePrinterDisconnected = (payload: any) => {
+    const currentDeviceId = stepsObject.connect?.device?.deviceId;
+    if (!currentDeviceId || (payload?.deviceId && payload.deviceId !== currentDeviceId)) return;
+
+    stepsObject.connect = {
+        ...stepsObject.connect,
+        status: 'in-progress',
+        device: null,
+    };
+    if (currentStep.value === 'print') {
+        stepsObject.print.status = 'not-started';
+        currentStep.value = 'connect';
+    }
+};
 const testList = reactive([
     {
         padSn: '0000002',

+ 2 - 2
src/plant/processing/processing-detail-list/index.vue

@@ -64,7 +64,7 @@
             <!-- 原料信息列表 -->
             <view v-if="+activeTab == 0">
                 <view v-if="inputList.length === 0 && +activeTab == 0" class="d-flex flex-cln a-c pd-40">
-                    <ut-empty color="#ccc" size="28rpx" image=" https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/noEmpty.png">暂无加工原料信息</ut-empty>
+                    <ut-empty color="#ccc" size="28rpx" image=" https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/noEmpty.png">暂无加工原料信息</ut-empty>
                     <up-button type="primary" @click="goAssociate">去关联原料信息</up-button>
                 </view>
                 <view v-else class="d-flex a-c mb-16">
@@ -141,7 +141,7 @@
             <!-- 产出信息列表 -->
             <view v-else>
                 <view v-if="outputList?.length === 0" class="d-flex flex-cln a-c pd-40">
-                    <ut-empty color="#ccc" size="28rpx" image="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/noEmpty.png">暂无产出信息</ut-empty>
+                    <ut-empty color="#ccc" size="28rpx" image="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/noEmpty.png">暂无产出信息</ut-empty>
                     <up-button type="primary" @click="handleShowOutputModel">去添加产出信息</up-button>
                 </view>
                 <view v-else class="d-flex a-c mb-16">

+ 1 - 1
src/plant/processing/processing-detail-list/models/processing-output-item.vue

@@ -34,7 +34,7 @@
         </view>
         <!-- 选中对勾图标 -->
         <image v-if="selected && selectable" class="w-40 h-40 checked-icon"
-            src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/btn_checked_icon.png"
+            src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/btn_checked_icon.png"
             mode="widthFix" />
     </view>
     <view class="h-16"></view>

+ 5 - 5
src/plant/processing/processing-index/index.vue

@@ -80,7 +80,7 @@
         </template>
         <template #empty>
             <view class="d-flex flex-cln a-c">
-                <ut-empty class="mg-at" color="#ccc" size="28rpx" image="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/noEmptyBase.png">暂无加工任务</ut-empty>
+                <ut-empty class="mg-at" color="#ccc" size="28rpx" image="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/noEmptyBase.png">暂无加工任务</ut-empty>
                 <text class="c-#ccc f-s-28">点击下方按钮去添加吧~</text>
             </view>
         </template>
@@ -89,23 +89,23 @@
         </template>
     </z-paging>
     <ut-suspension v-if="sus?.left" :imageWidth="60" :imageHeight="60" :x="sus?.left" :y="sus?.bottom" :inertia="false" :snap-threshold="40">
-        <image src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/btn_add_logo.png" mode="widthFix" class="w-120 h-120" @click="showDeleteDialog = true"></image>
+        <image src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/btn_add_logo.png" mode="widthFix" class="w-120 h-120" @click="showDeleteDialog = true"></image>
     </ut-suspension>
     <ut-confirm-dialog v-model:show="showDeleteDialog" width="80vw" title="请选择要创建的任务类型" :confirmText="'确认选择'" :cancelText="'取消'" @confirm="handlechoseConfirm" @cancel="handleDeleteCancel">
         <view class="" v-for="item in pt_process_type" :key="item?.value">
             <view style="border: 1rpx solid" :style="{ backgroundColor: item?.value == basetype ? '#EBF6EE' : '#f7f7f7', borderColor: item?.value == basetype ? '#37A954' : 'transparent' }" class="pr-30 d-flex a-c mb-20 radius-100" @click="handlechose(item.value)">
                 <view class="radius-50% mg-8 bg-#F0F0F0" v-if="item?.value == '1'">
-                    <up-avatar size="90rpx" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/processing/processType_initial.png"></up-avatar>
+                    <up-avatar size="90rpx" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/processing/processType_initial.png"></up-avatar>
                 </view>
                 <view class="radius-50% mg-8 bg-#F0F0F0" v-if="item?.value == '2'">
-                    <up-avatar size="90rpx" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/processing/processType_fresh.png"></up-avatar>
+                    <up-avatar size="90rpx" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/processing/processType_fresh.png"></up-avatar>
                 </view>
                 <view class="c-#333 f-s-34">
                     {{ item?.label }}
                 </view>
                 <view class="flex1"></view>
                 <view class="d-flex">
-                    <img v-if="basetype === item.value" class="w-30 h-30" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/chooseSuccessfully.png" mode="widthFix" alt="" />
+                    <img v-if="basetype === item.value" class="w-30 h-30" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/chooseSuccessfully.png" mode="widthFix" alt="" />
                 </view>
             </view>
         </view>

+ 2 - 2
src/plant/species/models/speList.vue

@@ -2,7 +2,7 @@
     <view class="spe-list-item" @click="handleClick">
         <!-- 左侧搜索图标 -->
         <!-- <up-icon name="search" size="50rpx" color="#ccc" class="search-icon" /> -->
-        <img class="w-34 h-34 search-icon" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/searchGrey.png" mode="widthFix" alt="" />
+        <img class="w-34 h-34 search-icon" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/searchGrey.png" mode="widthFix" alt="" />
         <!-- 中间文本区域(间隔30rpx) -->
         <view class="text-container">
             <!-- 使用 view + text 显示高亮文本 -->
@@ -14,7 +14,7 @@
         </view>
         <!-- 右侧勾选图标(根据check状态显示) -->
         <!-- <up-icon v-if="check" name="checkmark" size="45rpx" color="#37A954" class="check-icon" /> -->
-        <img v-if="check === '1'" class="w-30 h-30" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/chooseSuccessfully.png" mode="widthFix" alt="" />
+        <img v-if="check === '1'" class="w-30 h-30" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/chooseSuccessfully.png" mode="widthFix" alt="" />
     </view>
 </template>
 

+ 22 - 41
src/plant/storage/agro-product/add/index.vue

@@ -1,6 +1,5 @@
 <template>
-    <z-paging class="" ref="paging" bgColor="#f7f7f7" paging-class="paging-btm-shadow" safe-area-inset-bottom
-        scroll-with-animation>
+    <z-paging class="" ref="paging" bgColor="#f7f7f7" paging-class="paging-btm-shadow" safe-area-inset-bottom scroll-with-animation>
         <template #top>
             <ut-navbar :title="'新增农资入库'" :fixed="false" border></ut-navbar>
         </template>
@@ -17,13 +16,11 @@
                             <view class="bg-#FBFDFB card-info-block pd-24 p-rtv mb-12">
                                 <view class="d-flex flex1 mb-10">
                                     <view class="flex1">
-                                        <span class="f-s-34 c-#333 f-w-500 mr-10">{{ uidMapData[item]?.materialName
-                                            }}</span>
+                                        <span class="f-s-34 c-#333 f-w-500 mr-10">{{ uidMapData[item]?.materialName }}</span>
                                         <span class="f-s-24 c-#666">{{ selectDictLabel(pt_material_type, uidMapData[item]?.materialType) }}</span>
                                     </view>
                                     <view class="pr-60">
-                                        <view v-if="uidMapData[item]?.examinReport?.length"
-                                            class="tag-span c-primary bg-#EBF6EE">已检</view>
+                                        <view v-if="uidMapData[item]?.examinReport?.length" class="tag-span c-primary bg-#EBF6EE">已检</view>
                                         <view v-else class="tag-span c-danger bg-#F9ECEA">未检</view>
                                     </view>
                                 </view>
@@ -33,17 +30,13 @@
                                 </view>
                                 <view class="d-flex">
                                     <view class="d-flex flex1 ov-hd mr-10">
-
                                         <view class="flex1 f-s-28 pd2-4-0">
                                             <span class="c-#666">入库量:</span>
-                                            <span class="c-#333 f-w-500">{{ uidMapData[item]?.capacity }}{{
-                                                uidMapData[item]?.unit }}</span>
+                                            <span class="c-#333 f-w-500">{{ uidMapData[item]?.capacity }}{{ uidMapData[item]?.unit }}</span>
                                         </view>
-                                        <view v-if="!['kg', 'L'].includes(uidMapData[item]?.unit)"
-                                            class="flex1 f-s-28 pr-10 pd2-4-0">
+                                        <view v-if="!['kg', 'L'].includes(uidMapData[item]?.unit)" class="flex1 f-s-28 pr-10 pd2-4-0">
                                             <span class="c-#666">规格:</span>
-                                            <span class="c-#333 f-w-500">{{ uidMapData[item]?.spec }} {{
-                                                uidMapData[item]?.specUnit }}/{{ uidMapData[item]?.unit }}</span>
+                                            <span class="c-#333 f-w-500">{{ uidMapData[item]?.spec }} {{ uidMapData[item]?.specUnit }}/{{ uidMapData[item]?.unit }}</span>
                                         </view>
                                     </view>
                                     <view class="d-flex a-ed" @click="navigateToAddAgroProduct(item, 'edit')">
@@ -69,17 +62,14 @@
             <view class="pd-24 bg-#fff">
                 <!-- 入库类型 -->
                 <up-form-item borderBottom label="入库类型" required prop="instoreType">
-                    <view v-if="form.instoreType" class="f-s-30 c-333 f-w-5 flex1">{{
-                        selectDictLabel(pt_seed_instore_type,
-                        form.instoreType) }}</view>
+                    <view v-if="form.instoreType" class="f-s-30 c-333 f-w-5 flex1">{{ selectDictLabel(pt_seed_instore_type, form.instoreType) }}</view>
                     <view v-else class="f-s-30 c-ccc f-w-4 flex1">请选择入库类型</view>
                 </up-form-item>
                 <!-- 入库日期 -->
                 <view class="h-1" id="instoreDatepppp"></view>
                 <ut-datetime-picker v-model="form.instoreBizInfo.instoreDate" :maxDate="new Date()" mode="date">
                     <up-form-item borderBottom label="入库日期" required prop="instoreDate">
-                        <up-input v-model="form.instoreBizInfo.instoreDate" readonly placeholder="请选择入库日期" border="none"
-                            clearable></up-input>
+                        <up-input v-model="form.instoreBizInfo.instoreDate" readonly placeholder="请选择入库日期" border="none" clearable></up-input>
                         <template #right>
                             <up-icon size="22rpx" color="#37A954" name="arrow-down-fill"></up-icon>
                         </template>
@@ -89,24 +79,21 @@
                 <up-form-item borderBottom label="入库批号" required prop="batchCode">
                     <up-input v-model="form.batchCode" placeholder="请输入入库批号" border="none" clearable></up-input>
                     <template #right>
-                        <up-button @click="generateBatchCode" type="primary"
-                            :customStyle="formItemBtnStyle">随机生成</up-button>
+                        <up-button @click="generateBatchCode" type="primary" :customStyle="formItemBtnStyle">随机生成</up-button>
                     </template>
                 </up-form-item>
                 <!-- 库房类型 -->
                 <up-form-item borderBottom label="库房类型" prop="storageType" required>
-                    <view v-if="form.storageType" class="f-s-30 c-999 f-w-5 flex1">{{ selectDictLabel(pt_warehouse_type,
-                        form.storageType) }}</view>
+                    <view v-if="form.storageType" class="f-s-30 c-999 f-w-5 flex1">{{ selectDictLabel(pt_warehouse_type, form.storageType) }}</view>
                     <view v-else class="f-s-30 c-ccc f-w-4 flex1">请选择库房类型</view>
                 </up-form-item>
-                     <!-- 存放库房(具体库房/货架信息稍后补充为选择器) -->
+                <!-- 存放库房(具体库房/货架信息稍后补充为选择器) -->
                 <up-form-item borderBottom label="存放库房" prop="warehouses">
                     <select-warehouse-input v-model="form.warehouses" title="添加农资存放库房" :params="{ type: '1' }"></select-warehouse-input>
                 </up-form-item>
                 <!-- 入库人 -->
                 <up-form-item borderBottom label="入库人" required prop="instoreMg">
-                    <up-input v-model="form.instoreBizInfo.instoreMg" placeholder="请输入入库人" border="none"
-                        clearable></up-input>
+                    <up-input v-model="form.instoreBizInfo.instoreMg" placeholder="请输入入库人" border="none" clearable></up-input>
                 </up-form-item>
                 <!-- 入库备注 -->
                 <up-form-item borderBottom label="入库备注" prop="remark">
@@ -132,9 +119,7 @@ import { useInfoStore } from '@/store';
 const infoStore = useInfoStore();
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 // 仅使用到的字典:入库类型、库房类型、显示农资卡片中的种类和来源
-const { pt_seed_instore_type, pt_warehouse_type, pt_material_type, pt_source_type } = toRefs<any>(
-    proxy?.useDict('pt_seed_instore_type', 'pt_warehouse_type', 'pt_material_type', 'pt_source_type'),
-);
+const { pt_seed_instore_type, pt_warehouse_type, pt_material_type, pt_source_type } = toRefs<any>(proxy?.useDict('pt_seed_instore_type', 'pt_warehouse_type', 'pt_material_type', 'pt_source_type'));
 // 表单与分页等基础状态(参考 base-edit 风格)
 const paging = ref<any>(null);
 const upFormRef = ref<any>(null);
@@ -151,7 +136,6 @@ const form = ref<AgroProductInstoreAddTypeEnum>({
     },
 });
 const rules = reactive({
-    
     instoreType: [{ required: true, message: '请选择入库类型' }],
     'instoreBizInfo.instoreDate': [{ required: true, message: '请选择入库日期' }],
     batchCode: [{ required: true, message: '请输入入库批号' }],
@@ -183,9 +167,9 @@ const submitForm = async () => {
                     instoreBizInfo: {
                         ...form.value.instoreBizInfo,
                         ...uidMapData.value[uid]?.instoreBizInfo,
-                    }
+                    },
                 };
-            })
+            });
             try {
                 const res = await useClientRequest.post('/plt-api/app/material/batchInstore', params);
                 if (!res || res.code !== 200) return;
@@ -196,11 +180,10 @@ const submitForm = async () => {
                 });
                 uni.$emit('refreshStorageRoomList');
                 // 返回上一页
-                setTimeout(() => {
-                    uni.navigateBack({
-                        delta: 1,
-                    });
-                }, 1500);
+                await new Promise((resolve) => setTimeout(resolve, 1000));
+                uni.navigateBack({
+                    delta: 1,
+                });
             } catch (error) {
                 // uni.hideLoading();
             }
@@ -244,9 +227,9 @@ const navigateToAddAgroProduct = (uid = '', mode = 'add') => {
             res.eventChannel.emit('optionsParam', {
                 uid: uid || generateUniqueId(),
                 mode: mode,
-                form: uid ? uidMapData.value[uid] : {}
+                form: uid ? uidMapData.value[uid] : {},
             });
-        }
+        },
     });
 };
 const deleteRow = (index: number, uid: string) => {
@@ -254,9 +237,7 @@ const deleteRow = (index: number, uid: string) => {
     delete uidMapData.value[uid];
 };
 // 编辑时加载详情
-onLoad((optins: any) => {
-
-});
+onLoad((optins: any) => {});
 </script>
 <style lang="scss" scoped>
 .card-info-block {

+ 1 - 1
src/plant/storage/agro-product/detail/index.vue

@@ -13,7 +13,7 @@
                 <view>
                     <up-button @click="navigateToInOutRecords" type="primary" :customStyle="formItemBtnStyle">
                         <image class="w-30 h-30 mr-10"
-                            src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/ckcrkjl_icon.png"
+                            src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/ckcrkjl_icon.png"
                             mode="widthFix" />
                         <span>查看出入库记录</span>
                     </up-button>

+ 4 - 4
src/plant/storage/agro-product/list/model/agro-bottom.vue

@@ -8,7 +8,7 @@
         </view>
         <view @click="clickBtnBall" class="source-center-view d-flex flex-cln a-c j-c">
             <view class="source-btn-ball d-flex a-c j-c" :class="{ [`btn-deg-${btnStyle}`]: true }"
-                :style="{ backgroundImage: 'url(https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/add_c_btn.png)' }">
+                :style="{ backgroundImage: 'url(https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/add_c_btn.png)' }">
             </view>
             <view class="c-primary f-s-28 pt-6">{{ mapTextBtn[btnStyle] }}</view>
 
@@ -17,11 +17,11 @@
         <view class="bottom-circle-line" :class="{ 'bottom-circle-line-active': btnStyle == 'close' }"
             :style="{ bottom: safeAreaBottom + 'px' }">
             <view class="bottom-circle d-flex"
-                :style="{ backgroundImage: 'url(https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/agro_btm_bg.png)' }">
+                :style="{ backgroundImage: 'url(https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/agro_btm_bg.png)' }">
                 <view class="flex1 d-flex flex-cln a-c pt-100 pl-30">
                     <view>
                         <image class="w-68 h-68"
-                            src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/xzhwk_icon_sd.png"
+                            src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/xzhwk_icon_sd.png"
                             mode="widthFix" />
                     </view>
                     <view class="f-s-28 c-#333">下载货位卡</view>
@@ -34,7 +34,7 @@
                     @click="clickBtnBall(); $u.route({ url: '/plant/storage/agro-product/add/index' })">
                     <view>
                         <image class="w-68 h-68"
-                            src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/xznzrkxx_icon_sd.png"
+                            src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/xznzrkxx_icon_sd.png"
                             mode="widthFix" />
                     </view>
                     <view class="f-s-28 c-#333">新增农资入库</view>

+ 2 - 2
src/plant/storage/agro-product/models/animals-input.vue

@@ -13,11 +13,11 @@
         </view>
         <view class="d-flex">
             <up-button class="flex1 mr-20" color="#18BECA" plain @click="onScan">
-                <image class="w-36 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/scan_icon_o.png" mode="widthFix" />
+                <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/scan_icon_o.png" mode="widthFix" />
                 <span>扫一扫添加</span>
             </up-button>
             <up-button @click="onAddClick" class="flex1" color="#37A954" plain>
-                <image class="w-36 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/edit_icon.png" mode="widthFix" />
+                <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/edit_icon.png" mode="widthFix" />
                 <span>手动输入添加</span>
             </up-button>
         </view>

+ 1 - 1
src/plant/storage/finished-product/detail/index.vue

@@ -10,7 +10,7 @@
                 </view>
                 <view>
                     <up-button @click="navigateToInOutRecords" type="primary" :customStyle="formItemBtnStyle">
-                        <image class="w-30 h-30 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/ckcrkjl_icon.png" mode="widthFix" />
+                        <image class="w-30 h-30 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/ckcrkjl_icon.png" mode="widthFix" />
                         <span>查看出入库记录</span>
                     </up-button>
                 </view>

+ 5 - 5
src/plant/storage/finished-product/list/model/fresh-goods-bottom.vue

@@ -5,22 +5,22 @@
             <view style="opacity: 0">{{ mapTextBtn[btnStyle] }}</view>
         </view>
         <view @click="clickBtnBall" class="source-center-view d-flex flex-cln a-c j-c">
-            <view class="source-btn-ball d-flex a-c j-c" :class="{ [`btn-deg-${btnStyle}`]: true }" :style="{ backgroundImage: 'url(https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/add_c_btn.png)' }"> </view>
+            <view class="source-btn-ball d-flex a-c j-c" :class="{ [`btn-deg-${btnStyle}`]: true }" :style="{ backgroundImage: 'url(https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/add_c_btn.png)' }"> </view>
             <view class="c-primary f-s-28 pt-6">{{ mapTextBtn[btnStyle] }}</view>
         </view>
         <view class="bg-#fff" :style="{ height: safeAreaBottom + 'px' }"></view>
         <view class="bottom-circle-line" :class="{ 'bottom-circle-line-active': btnStyle == 'close' }" :style="{ bottom: safeAreaBottom + 'px' }">
-            <view class="bottom-circle d-flex" :style="{ backgroundImage: 'url(https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/send_btm_bg_c.png)' }">
+            <view class="bottom-circle d-flex" :style="{ backgroundImage: 'url(https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/send_btm_bg_c.png)' }">
                 <view class="flex1 d-flex flex-cln a-c pt-160 pl-30">
                     <view>
-                        <image class="w-68 h-68" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/xzhwk_icon_sd.png" mode="widthFix" />
+                        <image class="w-68 h-68" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/xzhwk_icon_sd.png" mode="widthFix" />
                     </view>
                     <view class="f-s-28 c-#333">下载货位卡</view>
                     <view class="f-s-22 c-#999">库存结余清晰</view>
                 </view>
                 <view class="d-flex flex-cln a-c pt-24">
                     <view>
-                        <image class="w-68 h-68" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/xzsyrk_icon_sd.png" mode="widthFix" />
+                        <image class="w-68 h-68" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/xzsyrk_icon_sd.png" mode="widthFix" />
                     </view>
                     <view class="f-s-28 c-#333">销售记录清单</view>
                     <view class="f-s-22 c-#999">销售登记的记录都在这里</view>
@@ -32,7 +32,7 @@
                         $u.route({ url: '/plant/storage/fresh-goods/add/index' });
                     ">
                     <view>
-                        <image class="w-68 h-68" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/xzfsyrk_icon_sd.png" mode="widthFix" />
+                        <image class="w-68 h-68" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/xzfsyrk_icon_sd.png" mode="widthFix" />
                     </view>
                     <view class="f-s-28 c-#333">销售登记</view>
                     <view class="f-s-22 c-#999">按订单包装或按数量登记都可</view>

+ 1 - 1
src/plant/storage/finished-product/sales-registration/index.vue

@@ -6,7 +6,7 @@
 
         <!-- 成功图标和标题 -->
         <view class="d-flex flex-cln a-c j-c pt-120 pb-40">
-            <image src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/sales/salessuccess.png" mode="widthFix" class="w-400 h-400 mb-40" />
+            <image src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/sales/salessuccess.png" mode="widthFix" class="w-400 h-400 mb-40" />
             <text class="f-s-42 f-w-5 c-primary">销售登记成功!</text>
         </view>
 

+ 4 - 5
src/plant/storage/fresh-goods/add/index.vue

@@ -172,11 +172,10 @@ const submitForm = async () => {
                 });
                 uni.$emit('refreshStorageRoomList');
                 // 返回上一页
-                setTimeout(() => {
-                    uni.navigateBack({
-                        delta: 1,
-                    });
-                }, 1500);
+                await new Promise((resolve) => setTimeout(resolve, 1000));
+                uni.navigateBack({
+                    delta: 1,
+                });
             } catch (error) {
                 // uni.hideLoading();
             }

+ 1 - 1
src/plant/storage/fresh-goods/detail/index.vue

@@ -11,7 +11,7 @@
                 </view>
                 <view>
                     <up-button @click="navigateToInOutRecords" type="primary" :customStyle="formItemBtnStyle">
-                        <image class="w-30 h-30 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/ckcrkjl_icon.png" mode="widthFix" />
+                        <image class="w-30 h-30 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/ckcrkjl_icon.png" mode="widthFix" />
                         <span>查看出入库记录</span>
                     </up-button>
                 </view>

+ 1 - 1
src/plant/storage/fresh-goods/info-edit/index.vue

@@ -9,7 +9,7 @@
                 <up-form-item borderBottom label="动植物名称" required prop="varietyId">
                     <view class="flex1">
                         <up-button v-if="!form.varietyId" @click="selectVarietyId" type="primary" plain>
-                            <image class="w-36 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
+                            <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
                             <span>请选择动植物名称</span>
                         </up-button>
                         <view v-else class="bg-#FBFDFB card-info-block pd-24 p-rtv">

+ 25 - 4
src/plant/storage/fresh-goods/info-update/index.vue

@@ -15,7 +15,7 @@
                     <up-form-item borderBottom label="动植物名称" required prop="varietyId">
                         <view class="flex1">
                             <up-button v-if="!form.varietyId" @click="selectVarietyId" type="primary" plain>
-                                <image class="w-36 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
+                                <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
                                 <span>请选择动植物名称</span>
                             </up-button>
                             <view v-else class="bg-#FBFDFB card-info-block pd-24 p-rtv">
@@ -157,7 +157,10 @@
                     </ut-datetime-picker>
                     <!-- 入库批号 -->
                     <up-form-item borderBottom label="入库批号" required prop="batchCode">
-                        <view class="f-s-30 c-999 f-w-5 flex1">{{ form.batchCode }}</view>
+                        <up-input v-model="form.batchCode" placeholder="请输入入库批号" border="none" clearable></up-input>
+                        <template #right>
+                            <up-button @click="generateBatchCode" type="primary" :customStyle="formItemBtnStyle">随机生成</up-button>
+                        </template>
                     </up-form-item>
                     <!-- 库房类型 -->
                     <up-form-item borderBottom label="库房类型" prop="storageType" required>
@@ -188,7 +191,7 @@
                     <up-form-item borderBottom label="动植物名称" required prop="varietyId">
                         <view class="flex1">
                             <up-button v-if="!form.varietyId" @click="selectVarietyId" type="primary" plain>
-                                <image class="w-36 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
+                                <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
                                 <span>请选择动植物名称</span>
                             </up-button>
                             <view v-else class="bg-#FBFDFB card-info-block pd-24 p-rtv">
@@ -321,6 +324,7 @@ import PickerAreaInput from '@/models/picker-area-input/picker-area-input.vue';
 import SelectWarehouseInput from '@/models/select-warehouse-input/select-warehouse-input.vue';
 import SelectMedicinalPart from '@/models/select-medicinal-part/select-medicinal-part.vue';
 import { parseTime } from '@/utils/ruoyi';
+import { formItemBtnStyle } from '@/assets/styles/uview-plus';
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 const { pt_fresh_instore_type, pt_warehouse_type, pt_medicine_source, yes_no, pt_medicine_source_tag } = toRefs<any>(proxy?.useDict('pt_fresh_instore_type', 'pt_warehouse_type', 'pt_medicine_source', 'yes_no', 'pt_medicine_source_tag'));
 const paging = ref<any>(null);
@@ -367,7 +371,24 @@ const rules = reactive({
     productDateEnd: [{ required: true, message: '请选择结束日期' }],
     'instoreBizInfo.instoreMg': [{ required: true, message: '请输入入库人' }],
 });
-
+// 点击随机生成服务端生成唯一的批号
+const generateBatchCode = async () => {
+    uni.showLoading({
+        title: '生成中...',
+    });
+    const res = await useClientRequest.post('/plt-api/app/plantationTask/getBatchCode', {
+        plType: 'X',
+        linkType: 'I',
+    });
+    if (res && res.code === 200) {
+        uni.hideLoading();
+        form.value.batchCode = res.data;
+        uni.showToast({
+            title: '批号生成成功',
+            icon: 'success',
+        });
+    }
+};
 // 提交:当前页面改为单条鲜货信息,直接提交合并后的对象
 const submitForm = async () => {
     uni.$u.debounce(

+ 5 - 5
src/plant/storage/fresh-goods/list/model/fresh-goods-bottom.vue

@@ -6,30 +6,30 @@
        
         </view>
         <view @click="clickBtnBall" class="source-center-view d-flex flex-cln a-c j-c">
-            <view class="source-btn-ball d-flex a-c j-c" :class="{ [`btn-deg-${btnStyle}`]: true }" :style="{ backgroundImage: 'url(https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/add_c_btn.png)' }"></view>
+            <view class="source-btn-ball d-flex a-c j-c" :class="{ [`btn-deg-${btnStyle}`]: true }" :style="{ backgroundImage: 'url(https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/add_c_btn.png)' }"></view>
             <view class="c-primary f-s-28 pt-6">{{ mapTextBtn[btnStyle] }}</view>
             
         </view>
         <view class="bg-#fff" :style="{ height: safeAreaBottom + 'px' }"></view>
         <view class="bottom-circle-line" :class="{ 'bottom-circle-line-active': btnStyle == 'close' }" :style="{ bottom: safeAreaBottom + 'px' }">
-            <view class="bottom-circle d-flex" :style="{ backgroundImage: 'url(https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/send_btm_bg_c.png)' }">
+            <view class="bottom-circle d-flex" :style="{ backgroundImage: 'url(https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/send_btm_bg_c.png)' }">
                 <view class="flex1 d-flex flex-cln a-c pt-160 pl-30">
                     <view>
-                        <image class="w-68 h-68" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/xzhwk_icon_sd.png" mode="widthFix" />
+                        <image class="w-68 h-68" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/xzhwk_icon_sd.png" mode="widthFix" />
                     </view>
                     <view class="f-s-28 c-#333">下载货位卡</view>
                     <view class="f-s-22 c-#999">库存结余清晰</view>
                 </view>
                 <view class="d-flex flex-cln a-c pt-24">
                      <view>
-                        <image class="w-68 h-68" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/xzsyrk_icon_sd.png" mode="widthFix" />
+                        <image class="w-68 h-68" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/xzsyrk_icon_sd.png" mode="widthFix" />
                     </view>
                     <view class="f-s-28 c-#333">新增溯源入库</view>
                     <view class="f-s-22 c-#999">适合贴有溯源码的鲜货</view>
                 </view>
                 <view class="flex1 d-flex flex-cln a-c pt-160 pr-30" @click="clickBtnBall();$u.route({ url: '/plant/storage/fresh-goods/add/index' });">
                      <view>
-                        <image class="w-68 h-68" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/xzfsyrk_icon_sd.png" mode="widthFix" />
+                        <image class="w-68 h-68" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/xzfsyrk_icon_sd.png" mode="widthFix" />
                     </view>
                     <view class="f-s-28 c-#333">新增非溯源入库</view>
                     <view class="f-s-22 c-#999">适合无法溯源的鲜货</view>

+ 2 - 2
src/plant/storage/fresh-goods/models/animals-input.vue

@@ -13,11 +13,11 @@
         </view>
         <view class="d-flex">
             <up-button class="flex1 mr-20" color="#18BECA" plain @click="onScan">
-                <image class="w-36 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/scan_icon_o.png" mode="widthFix" />
+                <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/scan_icon_o.png" mode="widthFix" />
                 <span>扫一扫添加</span>
             </up-button>
             <up-button @click="onAddClick" class="flex1" color="#37A954" plain>
-                <image class="w-36 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/edit_icon.png" mode="widthFix" />
+                <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/edit_icon.png" mode="widthFix" />
                 <span>手动输入添加</span>
             </up-button>
         </view>

+ 0 - 2
src/plant/storage/seed-source/add/index.vue

@@ -152,8 +152,6 @@ const rules = reactive({
 });
 
 const submitForm = async () => {
-    console.log(form.value);
-
     uni.$u.debounce(
         async () => {
             try {

+ 31 - 7
src/plant/storage/seed-source/detail/index.vue

@@ -11,7 +11,7 @@
                 </view>
                 <view>
                     <up-button @click="navigateToInOutRecords" type="primary" :customStyle="formItemBtnStyle">
-                        <image class="w-30 h-30 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/ckcrkjl_icon.png" mode="widthFix" />
+                        <image class="w-30 h-30 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/ckcrkjl_icon.png" mode="widthFix" />
                         <span>查看出入库记录</span>
                     </up-button>
                 </view>
@@ -23,14 +23,14 @@
                     </view>
                 </SeedSourceCard>
             </view>
-            <template v-if="form?.instoreType == '3'">
+            <template v-if="form?.harvestId">
                 <view class="pd-24">
                     <view class="startline-title">采收信息</view>
                 </view>
                 <view class="bg-#fff pd-24" v-if="form?.harvestInfo">
                     <view class="f-s-30 pd2-16-0 info-border-bottom">
                         <span class="c-#666">采收日期:</span>
-                        <span class="c-#333 f-w-600">{{ form?.harvestInfo?.harvestDate || '-' }}至{{ form?.harvestInfo?.harvestDateEnd || '-' }}</span>
+                        <span class="c-#333 f-w-600">{{ getDateRangeFrt(form?.harvestInfo?.harvestDate, form?.harvestInfo?.harvestDateEnd) }}</span>
                     </view>
                     <view class="f-s-30 pd2-16-0 info-border-bottom">
                         <span class="c-#666">采收批号:</span>
@@ -47,6 +47,30 @@
                     </view>
                 </view>
             </template>
+            <template v-if="form?.processOutPutId">
+                <view class="pd-24">
+                    <view class="startline-title">加工信息</view>
+                </view>
+                <view class="bg-#fff pd-24" v-if="form?.processInfo">
+                    <view class="f-s-30 pd2-16-0 info-border-bottom">
+                        <span class="c-#666">加工日期:</span>
+                        <span class="c-#333 f-w-600">{{ getDateRangeFrt(form?.processInfo?.processingDate, form?.processInfo?.processingDateEnd) }}</span>
+                    </view>
+                    <view class="f-s-30 pd2-16-0 info-border-bottom">
+                        <span class="c-#666">产量:</span>
+                        <span class="c-#333 f-w-600">
+                            {{ (form?.processInfo?.capacity || '') + (form?.processInfo?.unit || '') || '-' }}
+                        </span>
+                    </view>
+                    <!-- 基地挖坑 -->
+                    <view class="f-s-30 pd2-16-0 info-border-bottom">
+                        <span class="c-#666">加工工艺及步骤:</span>
+                        <span class="c-#333 f-w-600">
+                            {{ form?.processInfo?.ptech ? form?.processInfo?.ptech.replace(/,/g, '→') : '-' }}
+                        </span>
+                    </view>
+                </view>
+            </template>
             <view class="pd-24">
                 <view class="startline-title">种源信息</view>
             </view>
@@ -136,18 +160,18 @@
                     <view class="c-#666 mb-10">检验报告:</view>
                     <ut-album :urls="form?.examinReport"></ut-album>
                 </view>
-                <view v-if="['2', '3'].includes(form?.seedSource as string)" class="f-s-30 pd2-16-0 info-border-bottom">
+                <view v-if="['2', '3'].includes(form?.seedSource as string) && form?.supplierId" class="f-s-30 pd2-16-0 info-border-bottom">
                     <view class="c-#666 mb-10">供应商:</view>
                     <view class="bg-#FBFDFB card-info-block pd-24 p-rtv">
                         <view class="f-s-34 c-#333 f-w-500">{{ form?.supplierInfo?.cusName }}</view>
                         <view class="f-s-24 c-#666">{{ form?.supplierInfo?.cusCode }}</view>
                     </view>
                 </view>
-                <view v-if="['2', '3'].includes(form?.seedSource as string)" class="f-s-30 pd2-16-0 info-border-bottom">
+                <view v-if="['2', '3'].includes(form?.seedSource as string) && form?.supplierProducerFlag" class="f-s-30 pd2-16-0 info-border-bottom">
                     <span class="c-#666">供应商是否是生产商:</span>
                     <span class="c-#333 f-w-600">{{ selectDictLabel(yes_no, form?.supplierProducerFlag) || '-' }}</span>
                 </view>
-                <view v-if="['2', '3'].includes(form?.seedSource as string)" class="f-s-30 pd2-16-0 info-border-bottom">
+                <view v-if="['2', '3'].includes(form?.seedSource as string) && form?.producer" class="f-s-30 pd2-16-0 info-border-bottom">
                     <span class="c-#666">生产商:</span>
                     <span class="c-#333 f-w-600">{{ form?.producer || '-' }}</span>
                 </view>
@@ -157,7 +181,7 @@
                 </view>
                 <view class="f-s-30 pd2-16-0 info-border-bottom" v-if="form?.instoreBizInfo?.idFlag">
                     <span class="c-#666">是否有个体标识:</span>
-                    <span class="c-#333 f-w-600">{{ selectDictLabel(yes_no, form?.instoreBizInfo?.idFlag) || '-' }}</span>
+                    <span class="c-#333 f-w-600">{{ selectDictLabel(yes_no, form?.instoreBizInfo?.idFlag) || '' }}</span>
                 </view>
                 <view v-if="form?.instoreBizInfo?.animals && form?.instoreBizInfo?.animals.length" class="f-s-30 pd2-16-0 info-border-bottom">
                     <view class="c-#666 mb-10">个体标识号:</view>

+ 6 - 6
src/plant/storage/seed-source/info-edit/index.vue

@@ -20,7 +20,7 @@
                 <up-form-item borderBottom label="物种基原" required prop="varietyId">
                     <view class="flex1">
                         <up-button v-if="!form.varietyId" @click="selectVarietyId" type="primary" plain>
-                            <image class="w-36 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
+                            <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
                             <span>请选择物种基原</span>
                         </up-button>
                         <view v-else class="bg-#FBFDFB card-info-block pd-24 p-rtv">
@@ -84,7 +84,7 @@
                     <up-form-item v-if="form?.instoreBizInfo?.motherFatherFlag == '2'" borderBottom label="父本品种" prop="fatherVarietyId">
                         <view class="flex1">
                             <up-button v-if="!form.instoreBizInfo.fatherVarietyId" @click="selectFatherVarietyId" type="primary" plain>
-                                <image class="w-36 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
+                                <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
                                 <span>请选择父本品种</span>
                             </up-button>
                             <view v-else class="bg-#FBFDFB card-info-block pd-24 p-rtv">
@@ -113,7 +113,7 @@
                     <up-form-item borderBottom label="母本品种" prop="motherVarietyId">
                         <view class="flex1">
                             <up-button v-if="!form.instoreBizInfo.motherVarietyId" @click="selectMotherVarietyId" type="primary" plain>
-                                <image class="w-36 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
+                                <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
                                 <span>请选择母本品种</span>
                             </up-button>
                             <view v-else class="bg-#FBFDFB card-info-block pd-24 p-rtv mt-16">
@@ -269,7 +269,7 @@
                     </view>
                 </up-form-item>
                 <!-- 个体标识:此处仅占位,后续可改为多选列表 -->
-                <view class="h-1" id="instoreBizInfo.idFlagpppp"></view>
+                <view class="h-1" id="idFlagpppp"></view>
                 <up-form-item borderBottom label="是否有个体标识" prop="idFlag" required>
                     <up-radio-group v-model="form.instoreBizInfo.idFlag">
                         <up-radio :customStyle="{ marginRight: '60rpx' }" v-for="(item, index) in yes_no" :key="index" :label="item.label" :name="item.value"></up-radio>
@@ -277,7 +277,7 @@
                 </up-form-item>
                 <!-- 个体标识:此处仅占位,后续可改为多选列表 -->
                 <template v-if="+form?.instoreBizInfo?.idFlag">
-                    <view class="h-1" id="instoreBizInfo.animalspppp"></view>
+                    <view class="h-1" id="animalspppp"></view>
                     <up-form-item borderBottom label="个体标识号" prop="animals" required>
                         <AnimalsInput v-model="form.instoreBizInfo.animals"></AnimalsInput>
                     </up-form-item>
@@ -364,7 +364,7 @@ const form = ref<seedInfoListType>({
     adcode: '',
     instoreBizInfo: {
         motherFatherFlag: '',
-        idFlag: '1',
+        idFlag: '0',
         genUnit: '',
     },
     supplierId: undefined,

+ 202 - 11
src/plant/storage/seed-source/info-update/index.vue

@@ -26,7 +26,7 @@
                     <up-form-item borderBottom label="物种基原" required prop="varietyId">
                         <view class="flex1">
                             <up-button v-if="!form.varietyId" @click="selectVarietyId" type="primary" plain>
-                                <image class="w-36 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
+                                <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
                                 <span>请选择物种基原</span>
                             </up-button>
                             <view v-else class="bg-#FBFDFB card-info-block pd-24 p-rtv">
@@ -90,7 +90,7 @@
                         <up-form-item v-if="form?.instoreBizInfo?.motherFatherFlag == '2'" borderBottom label="父本品种" prop="fatherVarietyId">
                             <view class="flex1">
                                 <up-button v-if="!form.instoreBizInfo.fatherVarietyId" @click="selectFatherVarietyId" type="primary" plain>
-                                    <image class="w-36 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
+                                    <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
                                     <span>请选择父本品种</span>
                                 </up-button>
                                 <view v-else class="bg-#FBFDFB card-info-block pd-24 p-rtv">
@@ -119,7 +119,7 @@
                         <up-form-item borderBottom label="母本品种" prop="motherVarietyId">
                             <view class="flex1">
                                 <up-button v-if="!form.instoreBizInfo.motherVarietyId" @click="selectMotherVarietyId" type="primary" plain>
-                                    <image class="w-36 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
+                                    <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
                                     <span>请选择母本品种</span>
                                 </up-button>
                                 <view v-else class="bg-#FBFDFB card-info-block pd-24 p-rtv mt-16">
@@ -220,7 +220,7 @@
                             </view>
                         </up-form-item>
                         <up-form-item borderBottom label="供应商是否是生产商" prop="supplierProducerFlag">
-                            <up-radio-group v-model="form.supplierProducerFlag" >
+                            <up-radio-group v-model="form.supplierProducerFlag">
                                 <up-radio :customStyle="{ marginRight: '60rpx' }" v-for="(item, index) in yes_no" :key="index" :label="item.label" :name="item.value"></up-radio>
                             </up-radio-group>
                         </up-form-item>
@@ -344,8 +344,12 @@
                         </up-form-item>
                     </ut-datetime-picker>
                     <!-- 入库批号 -->
+                    <!-- 入库批号 -->
                     <up-form-item borderBottom label="入库批号" required prop="batchCode">
-                        <view class="f-s-30 c-999 f-w-5 flex1">{{ form.batchCode }}</view>
+                        <up-input v-model="form.batchCode" placeholder="请输入入库批号" border="none" clearable></up-input>
+                        <template #right>
+                            <up-button @click="generateBatchCode" type="primary" :customStyle="formItemBtnStyle">随机生成</up-button>
+                        </template>
                     </up-form-item>
                     <!-- 库房类型 -->
                     <up-form-item borderBottom label="库房类型" prop="storageType" required>
@@ -381,7 +385,7 @@
                     <up-form-item borderBottom label="物种基原" required prop="varietyId">
                         <view class="flex1">
                             <up-button v-if="!form.varietyId" @click="selectVarietyId" type="primary" plain>
-                                <image class="w-36 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
+                                <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
                                 <span>请选择物种基原</span>
                             </up-button>
                             <view v-else class="bg-#FBFDFB card-info-block pd-24 p-rtv">
@@ -421,14 +425,14 @@
                         <view class="f-s-30 c-999 f-w-5 flex1"> {{ selectDictLabel(pt_fungus_code_type, form?.fungusCodeType) }}/{{ form?.fungusCode }} </view>
                     </up-form-item>
                     <!-- 个体标识:此处仅占位,后续可改为多选列表 -->
-                    <view class="h-1" id="instoreBizInfo.idFlagpppp"></view>
+                    <view class="h-1" id="idFlagpppp"></view>
                     <up-form-item borderBottom label="是否有个体标识" prop="idFlag" required>
                         <up-radio-group v-model="form.instoreBizInfo.idFlag">
                             <up-radio :customStyle="{ marginRight: '60rpx' }" v-for="(item, index) in yes_no" :key="index" :label="item.label" :name="item.value"></up-radio>
                         </up-radio-group>
                     </up-form-item>
                     <!-- 个体标识:此处仅占位,后续可改为多选列表 -->
-                    <view class="h-1" id="instoreBizInfo.animalspppp"></view>
+                    <view class="h-1" id="animalspppp"></view>
                     <template v-if="+form?.instoreBizInfo?.idFlag">
                         <up-form-item borderBottom label="个体标识号" prop="animals" required>
                             <AnimalsInput v-model="form.instoreBizInfo.animals"></AnimalsInput>
@@ -508,7 +512,177 @@
                     </ut-datetime-picker>
                     <!-- 入库批号 -->
                     <up-form-item borderBottom label="入库批号" required prop="batchCode">
-                        <view class="f-s-30 c-999 f-w-5 flex1">{{ form.batchCode }}</view>
+                        <up-input v-model="form.batchCode" placeholder="请输入入库批号" border="none" clearable></up-input>
+                        <template #right>
+                            <up-button @click="generateBatchCode" type="primary" :customStyle="formItemBtnStyle">随机生成</up-button>
+                        </template>
+                    </up-form-item>
+                    <!-- 库房类型 -->
+                    <up-form-item borderBottom label="库房类型" prop="storageType" required>
+                        <view v-if="form.storageType" class="f-s-30 c-999 f-w-5 flex1">{{ selectDictLabel(pt_warehouse_type, form.storageType) }}</view>
+                        <view v-else class="f-s-30 c-ccc f-w-4 flex1">请选择库房类型</view>
+                    </up-form-item>
+                    <!-- 存放库房(具体库房/货架信息稍后补充为选择器) -->
+                    <up-form-item borderBottom label="存放库房" prop="warehouses">
+                        <select-warehouse-input v-model="form.warehouses" title="添加种源存放库房" :params="{ type: '2' }"></select-warehouse-input>
+                    </up-form-item>
+                    <!-- 入库人 -->
+                    <up-form-item borderBottom label="入库人" required prop="instoreMg">
+                        <up-input v-model="form.instoreBizInfo.instoreMg" placeholder="请输入入库人" border="none" clearable></up-input>
+                    </up-form-item>
+                    <!-- 入库备注 -->
+                    <up-form-item borderBottom label="入库备注" prop="remark">
+                        <up-textarea v-model="form.instoreBizInfo.remark" placeholder="请输入入库备注" autoHeight></up-textarea>
+                    </up-form-item>
+                </view>
+            </template>
+            <template v-if="form.instoreType == '4'">
+                <view class="pd-24">
+                    <view class="startline-title">种源信息</view>
+                </view>
+                <view class="pd-24 bg-#fff">
+                    <!-- 基本信息 -->
+                    <view class="h-1" id="seedTypepppp"></view>
+                    <up-form-item borderBottom label="种源类型" required prop="seedType">
+                        <view v-if="form.seedType" class="f-s-30 c-999 f-w-5 flex1">{{ selectDictLabel(pt_seed_type, form.seedType) }}</view>
+                        <view v-else class="f-s-30 c-ccc f-w-4 flex1">请选择种源类型</view>
+                    </up-form-item>
+                    <view class="h-1" id="varietyIdpppp"></view>
+                    <up-form-item borderBottom label="物种基原" required prop="varietyId">
+                        <view class="flex1">
+                            <up-button v-if="!form.varietyId" @click="selectVarietyId" type="primary" plain>
+                                <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/select_push_icon.png" mode="widthFix" />
+                                <span>请选择物种基原</span>
+                            </up-button>
+                            <view v-else class="bg-#FBFDFB card-info-block pd-24 p-rtv">
+                                <view class="mb-16">
+                                    <span class="f-s-34 c-#333 f-w-5 mr-16">{{ form?.varietyInfo?.varietyName }}</span>
+                                    <span class="f-s-24 c-#666">{{ form?.varietyInfo?.latinName }}</span>
+                                </view>
+                                <view class="mb-16">
+                                    <span class="f-s-28 c-#333 f-w-5 mr-16">{{ form?.varietyInfo?.genusName }}</span>
+                                    <span class="f-s-24 c-#666">{{ form?.varietyInfo?.genusLatinName }}</span>
+                                </view>
+                                <view v-if="form?.varietyInfo?.medicineName" class="f-s-24 c-#666">产出:{{ form?.varietyInfo?.medicineName }}</view>
+                            </view>
+                        </view>
+                    </up-form-item>
+                    <up-form-item borderBottom label="具体品种/品系名称" prop="seedName">
+                        <up-input v-model="form.seedName" placeholder="请输入具体品种/品系名称" border="none" clearable></up-input>
+                    </up-form-item>
+                    <view class="h-1" id="seedSourcepppp"></view>
+                    <up-form-item borderBottom label="种源来源" required prop="seedSource">
+                        <view v-if="form.seedSource" class="f-s-30 c-999 f-w-5 flex1">{{ selectDictLabel(pt_seed_source, form.seedSource) }}</view>
+                        <view v-else class="f-s-30 c-ccc f-w-4 flex1">请选择种源来源</view>
+                    </up-form-item>
+
+                    <!-- 检验报告与供应商信息 -->
+                    <up-form-item borderBottom label="检验报告" prop="examinReport">
+                        <ut-upload v-model="form.examinReport" :max-count="50" valueType="array" accept="image,file"></ut-upload>
+                    </up-form-item>
+
+                    <!-- 菌种编码信息 -->
+                    <up-form-item required v-if="['A4', 'A8'].includes(form.seedType as string)" :label="`${selectDictLabel(pt_seed_type, form.seedType as string)}编号`" class="form-item-bottom-padding-0">
+                        <view class="f-s-30 c-999 f-w-5 flex1"> {{ selectDictLabel(pt_fungus_code_type, form?.fungusCodeType) }}/{{ form?.fungusCode }} </view>
+                    </up-form-item>
+                    <!-- 个体标识:此处仅占位,后续可改为多选列表 -->
+                    <view class="h-1" id="idFlagpppp"></view>
+                    <up-form-item borderBottom label="是否有个体标识" prop="idFlag" required>
+                        <up-radio-group v-model="form.instoreBizInfo.idFlag">
+                            <up-radio :customStyle="{ marginRight: '60rpx' }" v-for="(item, index) in yes_no" :key="index" :label="item.label" :name="item.value"></up-radio>
+                        </up-radio-group>
+                    </up-form-item>
+                    <!-- 个体标识:此处仅占位,后续可改为多选列表 -->
+                    <view class="h-1" id="animalspppp"></view>
+                    <template v-if="+form?.instoreBizInfo?.idFlag">
+                        <up-form-item borderBottom label="个体标识号" prop="animals" required>
+                            <AnimalsInput v-model="form.instoreBizInfo.animals"></AnimalsInput>
+                        </up-form-item>
+                    </template>
+                    <!-- 保藏方法 -->
+                    <up-form-item borderBottom label="保藏方法" prop="storageMethod">
+                        <up-input v-model="form.instoreBizInfo.storageMethod" placeholder="请输入保藏方法" border="none" clearable></up-input>
+                    </up-form-item>
+                    <!-- 媒体与附件 -->
+                    <up-form-item borderBottom label="种源图片" prop="imgs">
+                        <ut-upload v-model="form.imgs" :max-count="9" valueType="string"></ut-upload>
+                    </up-form-item>
+                    <up-form-item borderBottom label="种源视频" prop="vedios">
+                        <ut-upload v-model="form.vedios" :max-count="3" accept="video" valueType="string"></ut-upload>
+                    </up-form-item>
+
+                    <!-- 种源产地 -->
+                    <up-form-item borderBottom label="种源产地">
+                        <view v-if="form.adcode" class="f-s-30 c-333 f-w-5 flex1">{{ form.adcodeName }}</view>
+                        <view v-else class="f-s-30 c-ccc f-w-4 flex1">请选择种源产地</view>
+                    </up-form-item>
+                    <ut-action-sheet :tabs="pt_breeding_materials" mode="custom" title="繁殖材料" multiple v-model="form.generationMaterial">
+                        <up-form-item borderBottom label="繁殖材料" prop="generationMaterial">
+                            <view v-if="form.generationMaterial" class="f-s-30 c-333 f-w-5 flex1">{{ selectDictLabels(pt_breeding_materials, form.generationMaterial, ',') }}</view>
+                            <view v-else class="f-s-30 c-ccc f-w-4 flex1">请选择繁殖材料</view>
+                            <template #right>
+                                <up-icon size="22rpx" color="#37A954" name="arrow-down-fill"></up-icon>
+                            </template>
+                        </up-form-item>
+                    </ut-action-sheet>
+
+                    <PickerAreaInput v-model="form.generationAdcode" v-model:full-name="form.generationAdcodeName" :maxLevel="4" title="选择繁殖地点/采集地点">
+                        <up-form-item borderBottom label="繁殖地点/采集地点" prop="generationAdcode">
+                            <view v-if="form.generationAdcode" class="f-s-30 c-333 f-w-5 flex1">{{ form.generationAdcodeName }}</view>
+                            <view v-else class="f-s-30 c-ccc f-w-4 flex1">请选择繁殖地点/采集地点</view>
+                            <template #right>
+                                <up-icon size="22rpx" color="#37A954" name="arrow-down-fill"></up-icon>
+                            </template>
+                        </up-form-item>
+                    </PickerAreaInput>
+                    <!-- 资质证明附件(暂按上传控件处理,可后续细化) -->
+                    <up-form-item borderBottom label="物种鉴定证书" prop="spCert">
+                        <ut-upload v-model="form.spCert" :max-count="9" valueType="array" accept="file"></ut-upload>
+                    </up-form-item>
+                    <!-- 检疫信息 -->
+                    <up-form-item borderBottom label="种源检疫证号" prop="seedCheckSn">
+                        <up-input v-model="form.seedCheckSn" placeholder="请输入种源检疫证号" border="none" clearable></up-input>
+                    </up-form-item>
+                    <up-form-item borderBottom label="种源检疫证书" prop="seedCheckCert">
+                        <ut-upload v-model="form.seedCheckCert" :max-count="9" valueType="array" accept="file"></ut-upload>
+                    </up-form-item>
+                </view>
+
+                <view class="pd-24">
+                    <view class="startline-title">入库信息</view>
+                </view>
+                <view class="pd-24 bg-#fff">
+                    <!-- 种源级别 -->
+                    <up-form-item borderBottom label="种源级别" prop="seedLevel">
+                        <up-input v-model="form.seedLevel" placeholder="请输入种源级别" border="none" clearable></up-input>
+                    </up-form-item>
+                    <!-- 入库类型 -->
+                    <up-form-item borderBottom label="入库类型" required prop="instoreType">
+                        <view v-if="form.instoreType" class="f-s-30 c-999 f-w-5 flex1">{{ selectDictLabel(pt_seed_instore_type, form.instoreType) }}</view>
+                        <view v-else class="f-s-30 c-ccc f-w-4 flex1">请选择入库类型</view>
+                    </up-form-item>
+                    <!-- 入库日期 -->
+                    <view class="h-1" id="instoreDatepppp"></view>
+                    <ut-datetime-picker v-model="form.instoreBizInfo.instoreDate" :maxDate="new Date()" mode="date">
+                        <up-form-item borderBottom label="入库日期" required prop="instoreDate">
+                            <up-input v-model="form.instoreBizInfo.instoreDate" readonly placeholder="请选择入库日期" border="none" clearable></up-input>
+                            <template #right>
+                                <up-icon size="22rpx" color="#37A954" name="arrow-down-fill"></up-icon>
+                            </template>
+                        </up-form-item>
+                    </ut-datetime-picker>
+                    <!-- 入库数量与单位 -->
+                    <view class="h-1" id="capacitypppp"></view>
+                    <view class="h-1" id="unitpppp"></view>
+                    <up-form-item label="入库量" prop="capacity" required class="form-item-bottom-padding-0">
+                        <view class="f-s-30 c-999 f-w-5 flex1">{{ form?.capacity }}{{ form?.unit }}</view>
+                    </up-form-item>
+                    <!-- 入库批号 -->
+                    <up-form-item borderBottom label="入库批号" required prop="batchCode">
+                        <up-input v-model="form.batchCode" placeholder="请输入入库批号" border="none" clearable></up-input>
+                        <template #right>
+                            <up-button @click="generateBatchCode" type="primary" :customStyle="formItemBtnStyle">随机生成</up-button>
+                        </template>
                     </up-form-item>
                     <!-- 库房类型 -->
                     <up-form-item borderBottom label="库房类型" prop="storageType" required>
@@ -561,7 +735,7 @@ const form = ref<seedInfoListType | any>({
     adcode: '',
     instoreBizInfo: {
         motherFatherFlag: '',
-        idFlag: '1',
+        idFlag: '0',
         genUnit: '',
         instoreDate: '',
         instoreMg: '',
@@ -621,7 +795,24 @@ const genCountMap = reactive({
     A4: '累计扩繁代数',
     A3: '继代培养次数',
 });
-
+// 点击随机生成服务端生成唯一的批号
+const generateBatchCode = async () => {
+    uni.showLoading({
+        title: '生成中...',
+    });
+    const res = await useClientRequest.post('/plt-api/app/plantationTask/getBatchCode', {
+        plType: 'Z',
+        linkType: 'I',
+    });
+    if (res && res.code === 200) {
+        uni.hideLoading();
+        form.value.batchCode = res.data;
+        uni.showToast({
+            title: '批号生成成功',
+            icon: 'success',
+        });
+    }
+};
 // 提交:当前页面改为单条种源信息,直接提交合并后的对象
 const submitForm = async () => {
     uni.$u.debounce(

+ 5 - 5
src/plant/storage/seed-source/list/model/source-bottom.vue

@@ -5,29 +5,29 @@
              <view style="opacity: 0;">{{ mapTextBtn[btnStyle] }}</view>
         </view>
         <view @click="clickBtnBall" class="source-center-view d-flex flex-cln a-c j-c">
-            <view class="source-btn-ball d-flex a-c j-c" :class="{ [`btn-deg-${btnStyle}`]: true }" :style="{ backgroundImage: 'url(https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/add_c_btn.png)' }"></view>
+            <view class="source-btn-ball d-flex a-c j-c" :class="{ [`btn-deg-${btnStyle}`]: true }" :style="{ backgroundImage: 'url(https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/add_c_btn.png)' }"></view>
             <view class="c-primary f-s-28 pt-6">{{ mapTextBtn[btnStyle] }}</view>
         </view>
         <view class="bg-#fff" :style="{ height: safeAreaBottom + 'px' }"></view>
         <view class="bottom-circle-line" :class="{ 'bottom-circle-line-active': btnStyle == 'close' }" :style="{ bottom: safeAreaBottom + 'px' }">
-            <view class="bottom-circle d-flex" :style="{ backgroundImage: 'url(https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/send_btm_bg_c.png)' }">
+            <view class="bottom-circle d-flex" :style="{ backgroundImage: 'url(https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/send_btm_bg_c.png)' }">
                 <view class="flex1 d-flex flex-cln a-c pt-160 pl-30">
                     <view>
-                        <image class="w-68 h-68" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/xzhwk_icon_sd.png" mode="widthFix" />
+                        <image class="w-68 h-68" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/xzhwk_icon_sd.png" mode="widthFix" />
                     </view>
                     <view class="f-s-28 c-#333">下载货位卡</view>
                     <view class="f-s-22 c-#999">库存结余清晰</view>
                 </view>
                 <view class="d-flex flex-cln a-c pt-24">
                      <view>
-                        <image class="w-68 h-68" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/xzsyrk_icon_sd.png" mode="widthFix" />
+                        <image class="w-68 h-68" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/xzsyrk_icon_sd.png" mode="widthFix" />
                     </view>
                     <view class="f-s-28 c-#333">新增溯源入库</view>
                     <view class="f-s-22 c-#999">适合贴有溯源码的种源</view>
                 </view>
                 <view class="flex1 d-flex flex-cln a-c pt-160 pr-30" @click="clickBtnBall();$u.route({ url: '/plant/storage/seed-source/add/index' });">
                      <view>
-                        <image class="w-68 h-68" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/xzfsyrk_icon_sd.png" mode="widthFix" />
+                        <image class="w-68 h-68" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/storage/xzfsyrk_icon_sd.png" mode="widthFix" />
                     </view>
                     <view class="f-s-28 c-#333">新增非溯源入库</view>
                     <view class="f-s-22 c-#999">适合无法溯源的种源</view>

+ 2 - 2
src/plant/storage/seed-source/models/animals-input.vue

@@ -13,11 +13,11 @@
         </view>
         <view class="d-flex">
             <up-button class="flex1 mr-20" color="#18BECA" plain @click="onScan">
-                <image class="w-36 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/scan_icon_o.png" mode="widthFix" />
+                <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/scan_icon_o.png" mode="widthFix" />
                 <span>扫一扫添加</span>
             </up-button>
             <up-button @click="onAddClick" class="flex1" color="#37A954" plain>
-                <image class="w-36 h-36 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/edit_icon.png" mode="widthFix" />
+                <image class="w-36 h-36 mr-10" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/edit_icon.png" mode="widthFix" />
                 <span>手动输入添加</span>
             </up-button>
         </view>

+ 1 - 1
src/plant/storage/storage-room/edit/index.vue

@@ -91,7 +91,7 @@
 
     <!-- 悬浮新增按钮(编辑页通常不需要,但与列表风格一致时可保留) -->
     <!-- <ut-suspension @click="submit">
-        <image src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/addBase.png" mode="widthFix" class="w-120 h-120"></image>
+        <image src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/addBase.png" mode="widthFix" class="w-120 h-120"></image>
     </ut-suspension> -->
 
     <!-- 货位表单弹窗:新增/编辑 -->

+ 1 - 1
src/plant/storage/storage-room/list/index.vue

@@ -56,7 +56,7 @@
         </template>
     </z-paging>
     <ut-suspension @click="$u.route({ url: '/plant/storage/storage-room/edit/index' })">
-        <image src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/btn_add_logo.png" mode="widthFix" class="w-120 h-120"></image>
+        <image src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/btn_add_logo.png" mode="widthFix" class="w-120 h-120"></image>
     </ut-suspension>
     <form-shelve v-if="showShelve" v-model:show="showShelve" v-model="rowShelve" :title="shelveTitle" @submit="submitFormShelveAdd" />
 </template>

+ 1 - 1
src/tools/pro-process-steps/index.vue

@@ -9,7 +9,7 @@
                     <view style="max-height: 360rpx" class="d-flex flex-wrap pd-24 a-c gap-10">
                         <template v-for="(item, index) in ptechTransit?.split(',')" :key="index">
                             <image v-if="index !== 0"
-                                src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/craftArrow.png"
+                                src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/craftArrow.png"
                                 class="mr-10 ml-10" style="width: 44rpx; height: 44rpx"> </image>
                             <view class="p-rtv">
                                 <up-icon color="red" name="close-circle-fill" @click="removePtech(index)"

+ 1 - 1
src/tools/sales-registration/models/batch-card.vue

@@ -40,7 +40,7 @@
                 </view>
             </view>
             <!-- 选中图标 -->
-            <image v-if="selected" class="w-40 h-40 checked-icon" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/btn_checked_icon.png" mode="widthFix" />
+            <image v-if="selected" class="w-40 h-40 checked-icon" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/btn_checked_icon.png" mode="widthFix" />
         </view>
     </view>
 </template>

+ 1 - 1
src/tools/select-code-section/index.vue

@@ -8,7 +8,7 @@
         </template>
         <view class="base-content pd-20">
             <view :class="{ active: item.id === checkedId, disabled: isDisabled(item) }" v-for="(item, index) in list" :key="item.id" @click="clickItem(item)" class="b-radius bg-#fff pd-20 p-rtv select-item-card mb-20">
-                <image v-if="item.id === checkedId" class="w-40 h-40 checked-icon" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-lm/price/checked1.png" mode="widthFix" />
+                <image v-if="item.id === checkedId" class="w-40 h-40 checked-icon" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-lm/price/checked1.png" mode="widthFix" />
                 <view v-if="isDisabled(item)" class="disabled-tag">已选择</view>
                 <view class="f-s-28 pd2-5-0">
                     <span class="c-#666">生成批号:</span>

+ 5 - 5
src/tools/select-gap-info/index.vue

@@ -29,15 +29,15 @@
                     <text class="f-s-28">审核不通过原因:</text>
                     <text class="f-s-28">{{ item?.msg }}</text>
                 </view>
-                <image v-if="+item?.res == 2" class="w-145" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/resFailed.png" style="position: absolute; top: 0; right: 0" mode="widthFix" />
-                <image v-if="+item?.res == 0" class="w-100" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/resPendingReview.png" style="position: absolute; top: 0; right: 0" mode="widthFix" />
-                <image v-if="+item?.res == 1" class="w-90" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/resEffective.png" style="position: absolute; top: 0; right: 0" mode="widthFix" />
-                <image v-if="item.id === checkedId" class="w-40 h-40 checked-icon" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-lm/price/checked1.png" mode="widthFix" />
+                <image v-if="+item?.res == 2" class="w-145" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/resFailed.png" style="position: absolute; top: 0; right: 0" mode="widthFix" />
+                <image v-if="+item?.res == 0" class="w-100" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/resPendingReview.png" style="position: absolute; top: 0; right: 0" mode="widthFix" />
+                <image v-if="+item?.res == 1" class="w-90" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/resEffective.png" style="position: absolute; top: 0; right: 0" mode="widthFix" />
+                <image v-if="item.id === checkedId" class="w-40 h-40 checked-icon" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-lm/price/checked1.png" mode="widthFix" />
             </view>
         </view>
 
         <template #empty>
-            <ut-empty class="mg-at" size="28rpx" color="#999" padding="10rpx" image="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/noEmptyBase.png">暂无获评GAP基地信息~</ut-empty>
+            <ut-empty class="mg-at" size="28rpx" color="#999" padding="10rpx" image="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/plant/noEmptyBase.png">暂无获评GAP基地信息~</ut-empty>
             <view class="f-s-28 c-#ccc w-600 text-center">如已获评GAP信息,请前往<span class="c-primary">基地-GAP基地获评信息</span>添加后再来选择若未获评GAP基地,可前往各地官方渠道进行GAP基地申报</view>
         </template>
         <template #bottom>

+ 1 - 1
src/tools/species-info-process/models/info-card.vue

@@ -53,7 +53,7 @@
             </view>
             <!-- 选中图标 -->
             <image v-if="selected" class="w-40 h-40 checked-icon"
-                src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/btn_checked_icon.png"
+                src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/btn_checked_icon.png"
                 mode="widthFix" />
         </view>
     </view>

+ 1 - 1
src/tools/species-info/models/info-card.vue

@@ -2,7 +2,7 @@
     <view @click="$emit('click')" class="b-radius bg-#fff pd-20 p-rtv mb-20 select-item-list" :class="{ active: selected }">
         <SeedSourceCard :item="item" :dict="{ pt_seed_instore_type, pt_seed_type, pt_fungus_code_type }" />
         <!-- 选中图标 -->
-        <image v-if="selected" class="w-40 h-40 checked-icon" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/btn_checked_icon.png" mode="widthFix" />
+        <image v-if="selected" class="w-40 h-40 checked-icon" src="https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images-plt/common/btn_checked_icon.png" mode="widthFix" />
     </view>
 </template>
 <script setup lang="ts">

+ 46 - 4
src/utils/blue-device-services.ts

@@ -38,6 +38,8 @@ export async function checkBluetoothPermission(): Promise<void> {
 }
 
 export async function initBluetoothAdapter(): Promise<void> {
+    type BluetoothMode = 'central' | 'peripheral';
+
     const closeAdapter = () =>
         new Promise<void>((resolve) => {
             uni.closeBluetoothAdapter({
@@ -46,15 +48,21 @@ export async function initBluetoothAdapter(): Promise<void> {
             });
         });
 
-    const openAdapter = () =>
+    const openAdapter = (mode?: BluetoothMode) =>
         new Promise<void>((resolve, reject) => {
-            uni.openBluetoothAdapter({
+            const options: any = {
                 success: () => resolve(),
                 fail: (err) => {
                     console.log(err);
                     reject(new Error(err.errMsg || `openBluetoothAdapter 失败`));
                 },
-            });
+            };
+
+            if (mode) {
+                options.mode = mode;
+            }
+
+            uni.openBluetoothAdapter(options);
         });
 
     // 先尝试关闭现有 adapter,避免重复初始化导致的异常
@@ -64,7 +72,21 @@ export async function initBluetoothAdapter(): Promise<void> {
     const platform = uni.getSystemInfoSync?.()?.platform || '';
     console.log(platform, 'initBluetoothAdapter platform');
 
-    // Android 等其他平台只需 central 模式
+    if (platform === 'ios') {
+        // iOS 在 central/peripheral 两种模式都初始化一次,且需显式指定 mode。
+        await closeAdapter();
+        await openAdapter('central');
+
+        await closeAdapter();
+        await openAdapter('peripheral');
+
+        // 最终回到 central,保证后续扫描/连接 BLE 外设稳定可用。
+        await closeAdapter();
+        await openAdapter('central');
+        return;
+    }
+
+    // Android 等其他平台保持默认初始化流程
     await openAdapter();
 }
 
@@ -134,6 +156,26 @@ export async function closeBLEConnection(deviceId: string): Promise<void> {
     });
 }
 
+export function onBLEConnectionStateChange(onChange: (res: any) => void): () => void {
+    const listener = (res: any) => {
+        onChange(res);
+    };
+
+    uni.onBLEConnectionStateChange(listener);
+
+    return () => {
+        try {
+            uni.offBLEConnectionStateChange(listener);
+        } catch {
+            try {
+                uni.offBLEConnectionStateChange();
+            } catch {
+                // ignore
+            }
+        }
+    };
+}
+
 export async function getBluetoothDevices(): Promise<any[]> {
     return new Promise((resolve, reject) => {
         uni.getBluetoothDevices({

+ 1 - 1
src/utils/common.ts

@@ -355,7 +355,7 @@ export const getFileIconByUrl = (url: string) => {
         XLSX: 'xlsx',
         TXT: 'txt',
     };
-    return `https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images/file-type-sub/${iconMap?.[fileExtension] || 'def'}.png`; // 默认图标
+    return `https://yujin-szyy.oss-cn-chengdu.aliyuncs.com/szyy/images/file-type-sub/${iconMap?.[fileExtension] || 'def'}.png`; // 默认图标
 };
 // 获取节点信息方法
 export const getRect = (selector: string, all: boolean = false): Promise<UniApp.NodesRef | UniApp.NodesRef[]> => {