Quellcode durchsuchen

页面点击音效

Alex vor 7 Monaten
Ursprung
Commit
592e9a63c6
98 geänderte Dateien mit 901 neuen und 157 gelöschten Zeilen
  1. 15 23
      config/audioUtil.js
  2. 0 7
      index.html
  3. 37 43
      main.js
  4. 2 2
      manifest.json
  5. 16 3
      pages/index/audit/express-order.vue
  6. 6 1
      pages/index/audit/isbn-order.vue
  7. 6 1
      pages/index/audit/scan-order.vue
  8. 6 1
      pages/index/audit/sender.vue
  9. 8 1
      pages/index/detail/batch-audit.vue
  10. 5 1
      pages/index/detail/book-audit.vue
  11. 13 2
      pages/index/detail/components/OrderInfo.vue
  12. 6 1
      pages/index/detail/index.vue
  13. 6 1
      pages/index/index.vue
  14. 11 1
      pages/index/wms/bad-in.vue
  15. 7 1
      pages/index/wms/bad-off.vue
  16. 6 1
      pages/index/wms/bad-out-order.vue
  17. 6 1
      pages/index/wms/bad-out.vue
  18. 6 1
      pages/index/wms/components/RemarkDialog.vue
  19. 6 1
      pages/index/wms/location-select.vue
  20. 8 1
      pages/index/wms/task-detail.vue
  21. 6 1
      pages/index/wms/warehouse-select.vue
  22. 6 1
      pages/my/my.vue
  23. 7 1
      pages/my/page/warehouse.vue
  24. BIN
      unpackage/cache/wgt/__UNI__65C1C73/.manifest/icon-android-hdpi.png
  25. BIN
      unpackage/cache/wgt/__UNI__65C1C73/.manifest/icon-android-xhdpi.png
  26. BIN
      unpackage/cache/wgt/__UNI__65C1C73/.manifest/icon-android-xxhdpi.png
  27. BIN
      unpackage/cache/wgt/__UNI__65C1C73/.manifest/icon-android-xxxhdpi.png
  28. 0 1
      unpackage/cache/wgt/__UNI__65C1C73/app-config-service.js
  29. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/app-service.js
  30. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/app.css
  31. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/manifest.json
  32. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/book/index.css
  33. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/audit/confirm-receipt.css
  34. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/audit/express-order.css
  35. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/audit/isbn-order.css
  36. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/audit/scan-order.css
  37. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/audit/sender.css
  38. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/detail/batch-audit.css
  39. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/detail/book-audit.css
  40. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/detail/index.css
  41. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/detail/user-orders.css
  42. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/entry/commodity-scan.css
  43. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/entry/scan-book.css
  44. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/express/quick-check.css
  45. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/express/quick-unpack.css
  46. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/express/route-exception.css
  47. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/express/transfer-sign.css
  48. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/express/warehouse-sign.css
  49. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/express/weight-modify.css
  50. 1 1
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/index.css
  51. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/offline/check-order.css
  52. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/bad-in.css
  53. 0 1
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/bad-off.css
  54. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/bad-out-order.css
  55. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/bad-out.css
  56. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/location-order-list.css
  57. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/location-order.css
  58. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/location-select.css
  59. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/order-query-list.css
  60. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/order-query.css
  61. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/speedy-check-add.css
  62. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/speedy-check.css
  63. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/task-detail.css
  64. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/login/login.css
  65. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/my/my.css
  66. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/my/page/audit-unfinished.css
  67. 0 0
      unpackage/cache/wgt/__UNI__65C1C73/pages/my/page/user-info.css
  68. BIN
      unpackage/cache/wgt/__UNI__65C1C73/static/bap.mp3
  69. 1 1
      unpackage/cache/wgt/__UNI__65C1C73/static/css/mystyle.css
  70. BIN
      unpackage/cache/wgt/__UNI__65C1C73/static/img/location-active.png
  71. BIN
      unpackage/cache/wgt/__UNI__65C1C73/static/img/location.png
  72. BIN
      unpackage/cache/wgt/__UNI__65C1C73/static/img/share.png
  73. BIN
      unpackage/debug/android_debug.apk
  74. 0 0
      unpackage/dist/build/app-plus/app-config-service.js
  75. 0 0
      unpackage/dist/build/app-plus/app-service.js
  76. 2 2
      unpackage/dist/build/app-plus/manifest.json
  77. 0 0
      unpackage/dist/build/app-plus/pages/index/audit/express-order.css
  78. 0 0
      unpackage/dist/build/app-plus/pages/index/audit/scan-order.css
  79. 0 0
      unpackage/dist/build/app-plus/pages/index/detail/batch-audit.css
  80. 0 0
      unpackage/dist/build/app-plus/pages/index/detail/book-audit.css
  81. 0 0
      unpackage/dist/build/app-plus/pages/index/detail/index.css
  82. 0 0
      unpackage/dist/build/app-plus/pages/index/entry/commodity-scan.css
  83. 1 1
      unpackage/dist/build/app-plus/pages/index/index.css
  84. 0 0
      unpackage/dist/build/app-plus/pages/index/wms/bad-in.css
  85. 0 0
      unpackage/dist/build/app-plus/pages/index/wms/bad-off.css
  86. 0 0
      unpackage/dist/build/app-plus/pages/index/wms/bad-out-order.css
  87. 0 0
      unpackage/dist/build/app-plus/pages/index/wms/location-select.css
  88. 0 0
      unpackage/dist/build/app-plus/pages/index/wms/task-detail.css
  89. 0 0
      unpackage/dist/build/app-plus/pages/index/wms/warehouse-select.css
  90. 0 0
      unpackage/dist/build/app-plus/pages/my/my.css
  91. 0 0
      unpackage/dist/build/app-plus/pages/my/page/warehouse.css
  92. 4 4
      unpackage/dist/cache/.vite/deps/_metadata.json
  93. 2 2
      unpackage/dist/cache/.vite/deps/howler.js
  94. 0 0
      unpackage/dist/dev/app-plus/app-config-service.js
  95. 56 44
      unpackage/dist/dev/app-plus/app-service.js
  96. 2 2
      unpackage/dist/dev/app-plus/manifest.json
  97. 629 0
      unpackage/dist/dev/app-plus/pages/index/entry/commodity-scan.css
  98. 8 1
      unpackage/dist/dev/app-plus/pages/index/express/quick-check.css

+ 15 - 23
config/audioUtil.js

@@ -1,26 +1,18 @@
-// audioUtils.js
-import { Howl } from "howler";
+import { ref } from 'vue';
 
-const clickSound = new Howl({
-    src: ["./static/bap.mp3"], // Use relative path
-    html5: true, // Force HTML5 Audio to handle mobile playback better
-    preload: true, // Preload the sound
-    volume: 1.0,
-    format: ["mp3"],
-    onplay: function () {
-        console.log("play");
-    },
-});
+// 创建音频上下文引用
+const audioContext = ref(null);
 
-export function playClickSound() {
-    console.log("Attempting to play click sound");
-    // Check if audio is loaded
-    if (clickSound.state() === "loaded") {
-        clickSound.play();
-    } else {
-        // If not loaded, wait for it to load
-        clickSound.once("load", function () {
-            clickSound.play();
-        });
+// 初始化音频
+export const initClickSound = () => {
+    audioContext.value = uni.createInnerAudioContext();
+    audioContext.value.src = '/static/bap.mp3';
+    audioContext.value.volume = 0.8;
+};
+
+// 播放点击音效
+export const playClickSound = () => {
+    if (audioContext.value) {
+        audioContext.value.play();
     }
-}
+};    

+ 0 - 7
index.html

@@ -16,12 +16,5 @@
   <body>
     <div id="app"><!--app-html--></div>
     <script type="module" src="/main.js"></script>
-    <script type="module">
-      import { playClickSound } from './config/audioUtil.js';
-      
-      document.getElementById('app').addEventListener('click', (e) => {
-        playClickSound();
-      });
-    </script>
   </body>
 </html>

+ 37 - 43
main.js

@@ -1,64 +1,58 @@
-import App from './App'
+import App from "./App";
 // 这个框架引入了 uview-plus UI组件库,该组件库中的所有组件和方法均可使用
 // uview-plus文档:https://uiadmin.net/uview-plus/
-import uviewPlus from '@/uni_modules/uview-plus'
+import uviewPlus from "@/uni_modules/uview-plus";
 // 全局配置微信小程序分享
-import share from '/config/share.js'
-import {
-	initRequest
-} from '@/config/request.js'
+import share from "/config/share.js";
+import { initRequest } from "@/config/request.js";
 // 引入权限指令
-import permissionDirective from '@/config/permission.js'
+import permissionDirective from "@/config/permission.js";
+import { initClickSound, playClickSound } from "@/config/audioUtil";
 
-import VolumeTTS from '@/utils/VolumeTTS.js'
-let ttsModule = new VolumeTTS()
+// 初始化点击音效
+initClickSound();
+
+import VolumeTTS from "@/utils/VolumeTTS.js";
+let ttsModule = new VolumeTTS();
 
 // #ifdef APP
-import {
-	useInit,
-	useGlobalEvent,
-    updateActivePageOnShow
-} from './utils/useBarcodeModule'
-useInit()
+import { useInit, useGlobalEvent, updateActivePageOnShow } from "./utils/useBarcodeModule";
+useInit();
 // #endif
 
-
 // #ifndef VUE3
-import Vue from 'vue'
-import './uni.promisify.adaptor'
-Vue.config.productionTip = false
-App.mpType = 'app'
+import Vue from "vue";
+import "./uni.promisify.adaptor";
+Vue.config.productionTip = false;
+App.mpType = "app";
 const app = new Vue({
-	...App
-})
-app.$mount()
+    ...App,
+});
+app.$mount();
 // #endif
 
 // #ifdef VUE3
-import {
-	createSSRApp
-} from 'vue'
+import { createSSRApp } from "vue";
 // 导入 pinia 全局状态管理
-import {
-	createPinia
-} from 'pinia'
+import { createPinia } from "pinia";
 
-uni.$u.ttsModule = ttsModule
+uni.$u.ttsModule = ttsModule;
 // #ifdef APP
-uni.$u.useGlobalEvent = useGlobalEvent
-uni.$u.updateActivePageOnShow = updateActivePageOnShow
+uni.$u.useGlobalEvent = useGlobalEvent;
+uni.$u.updateActivePageOnShow = updateActivePageOnShow;
+uni.$u.playClickSound = playClickSound;
 // #endif
 
 export function createApp() {
-	const app = createSSRApp(App)
-	// 引入请求封装方法并执行
-	initRequest()
-	const pinia = createPinia()
-	app.use(pinia).use(uviewPlus).use(permissionDirective)
-	app.mixin(share)
-	return {
-		app,
-		pinia
-	}
+    const app = createSSRApp(App);
+    // 引入请求封装方法并执行
+    initRequest();
+    const pinia = createPinia();
+    app.use(pinia).use(uviewPlus).use(permissionDirective);
+    app.mixin(share);
+    return {
+        app,
+        pinia,
+    };
 }
-// #endif
+// #endif

+ 2 - 2
manifest.json

@@ -2,8 +2,8 @@
     "name" : "书嗨",
     "appid" : "__UNI__65C1C73",
     "description" : "",
-    "versionName" : "1.0.1",
-    "versionCode" : 101,
+    "versionName" : "1.0.2",
+    "versionCode" : 102,
     "transformPx" : false,
     /* 5+App特有相关 */
     "app-plus" : {

+ 16 - 3
pages/index/audit/express-order.vue

@@ -5,14 +5,14 @@
         <view class="footer">
             <!-- 查询区域 -->
             <view class="query-section">
-                <u-radio-group v-model="form.searchType">
+                <u-radio-group v-model="form.searchType" @change="playGlobalSound">
                     <u-radio label="查订单" name="1" label-size="17" />
                     <u-radio label="查物流" custom-style="margin-left:20px" name="2" label-size="17" />
                 </u-radio-group>
 
                 <view class="search-box">
                     <u-input custom-style="width:100rpx" v-model="form.search"
-                        :placeholder="form.searchType == '1' ? '扫描/输入订单编号' : '扫描/输入物流单号'" border="surround" clearable
+                        :placeholder="form.searchType == '1' ? '扫描/输入订单编号' : '扫描/输入物流单号'" border="surround" clearable @focus="playGlobalSound"
                         placeholder-style="font-size:32rpx" :custom-style="{ 'font-size': '32rpx' }">
                     </u-input>
                     <u-button color="#c8c8c8" text="查询" @click="handleSearch" />
@@ -42,9 +42,21 @@ const form = ref({
     search: ''
 });
 
+//点击全局音效
+function playGlobalSound(){
+    console.log('playGlobalSound')
+    uni.$u.playClickSound()
+}
+
 // 处理查询
 const handleSearch = () => {
-    console.log('查询:', form.value.search);
+    playGlobalSound()
+
+    if(!form.value.search){
+        let text = form.value.searchType == '1' ? '请输入订单编号' : '请输入物流单号'
+        uni.$u.ttsModule.speak(text)
+        return
+    }
     // TODO: 查询订单
     uni.$u.http.get('/app/orderinfo/getOrderInfoForCheck', {
         params: {
@@ -65,6 +77,7 @@ const handleSearch = () => {
 
 // 处理扫码
 const handleScan = () => {
+    playGlobalSound()
     uni.scanCode({
         success: (res) => {
             form.value.search = res.result;

+ 6 - 1
pages/index/audit/isbn-order.vue

@@ -1,5 +1,5 @@
 <template>
-    <view class="common-page" style="padding: 0;">
+    <view class="common-page" style="padding: 0;" @click="playGlobalSound">
         <PageScroll requestStr="/app/orderinfo/getOrderListByIsbn" @updateList="updateList" ref="scrollRef"
             :otherParams="otherParams" method="post">
 
@@ -32,6 +32,11 @@ const refreshList = () => {
     scrollRef.value?.resetUpScroll()
 }
 
+//点击全局音效
+function playGlobalSound(){
+    uni.$u.playClickSound()
+}
+
 let dataList = ref([])
 const updateList = (data, page) => {
     dataList.value = data

+ 6 - 1
pages/index/audit/scan-order.vue

@@ -1,5 +1,5 @@
 <template>
-    <view class="container">
+    <view class="container" @click="playGlobalSound">
         <u-navbar title="扫书查单" :border="false" fixed bgColor="#22ac38" leftIconColor="#fff"
             titleStyle="font-size:36rpx;color:#fff">
             <template #left>
@@ -63,6 +63,11 @@ import {
 } from 'vue';
 import { onLoad, onShow } from "@dcloudio/uni-app"
 
+//点击全局音效
+function playGlobalSound(){
+    uni.$u.playClickSound()
+}
+
 // ISBN列表数据
 const isbnList = ref([]);
 

+ 6 - 1
pages/index/audit/sender.vue

@@ -1,5 +1,5 @@
 <template>
-    <view class="common-page" style="padding: 0;">
+    <view class="common-page" style="padding: 0;" @click="playGlobalSound">
         <PageScroll requestStr="/app/orderinfo/getOrderListByUserInfo" @updateList="updateList" ref="scrollRef"
             :otherParams="otherParams" :immediate="false">
             <u-sticky :customNavHeight="0">
@@ -31,6 +31,11 @@ import {
     onLoad
 } from '@dcloudio/uni-app'
 
+//点击全局音效
+function playGlobalSound(){
+    uni.$u.playClickSound()
+}
+
 const otherParams = ref({
     search: '',
 })

+ 8 - 1
pages/index/detail/batch-audit.vue

@@ -21,7 +21,7 @@
             :closeOnClickOverlay="true"
             @confirm="handleAudit"
         >
-            <view class="quality-selector">
+            <view class="quality-selector" @click="playGlobalSound">
                 <view class="quality-circle" :class="{ selected: isQualitySelected }" @click="toggleQuality">
                     <text>良好</text>
                 </view>
@@ -130,14 +130,21 @@ const showQualityModal = () => {
 
 const closeModal = () => {
     showModal.value = false;
+    playGlobalSound()
 };
 
+//点击全局音效
+function playGlobalSound(){
+    uni.$u.playClickSound()
+}
+
 const toggleQuality = () => {
     isQualitySelected.value = !isQualitySelected.value;
 };
 
 //审核 /app/orderinfo/checkOrder
 const handleAudit = () => {
+    playGlobalSound()
     if (!isQualitySelected.value) {
         uni.$u.toast("请选择品相");
         uni.$u.ttsModule.speak("请选择品相");

+ 5 - 1
pages/index/detail/book-audit.vue

@@ -1,5 +1,5 @@
 <template>
-    <view class="book-audit">
+    <view class="book-audit" @click="playGlobalSound">
         <view class="bg-white flex flex-a-c" style="padding: 20rpx; border-radius: 10rpx">
             <image :src="detail.cover" mode="aspectFill" style="width: 80px; height: 100px"></image>
             <view class="flex flex-d flex-1 ml-20">
@@ -70,6 +70,10 @@ import FileInfo from "./components/FileInfo.vue";
 
 const detail = ref({});
 
+function playGlobalSound(){
+    uni.$u.playClickSound()
+}
+
 // 获取图书详情 /app/book/getSimpleBookInfoByIsbn/{isbn}
 const getBookInfo = (isbn) => {
     uni.$u.http.get(`/app/book/getBookByIsbn/${isbn}`).then((res) => {

+ 13 - 2
pages/index/detail/components/OrderInfo.vue

@@ -49,8 +49,8 @@
         </view>
     </view>
     <u-modal :show="showModal" title="编辑内部备注" :showCancelButton="true" @confirm="confirmRemark"
-        @cancel="showModal = false">
-        <view class="modal-content w100">
+        @cancel="handleCancel">
+        <view class="modal-content w100" @click="playGlobalSound">
             <u-textarea v-model="internalRemark" placeholder="编辑内部备注" autoHeight
                 style="min-height: 100px;"></u-textarea>
 
@@ -82,6 +82,10 @@ let finalExpressText = computed(() => {
     return props.detail.finalExpress ? finalExpressList[props.detail.finalExpress] : ''
 });
 
+function playGlobalSound(){
+    uni.$u.playClickSound()
+}
+
 const statusEnum = {
     0: '创建',
     1: '用户删除',
@@ -137,8 +141,15 @@ function handleRemark() {
     internalRemark.value = remarkInfo.value.remark || '';
 }
 
+//关闭弹窗
+function handleCancel(){
+    showModal.value = false
+    playGlobalSound()
+}
+
 const emit = defineEmits(['refresh']);
 function confirmRemark() {
+    playGlobalSound()
     // Logic to save the remark
     uni.$u.http.post('/app/orderinfo/setManageRemark', {
         orderId: props.detail.orderId,

+ 6 - 1
pages/index/detail/index.vue

@@ -1,5 +1,5 @@
 <template>
-    <view class="order-detail" :class="{ 'fixed-bottom-2': type == 2 }">
+    <view class="order-detail" :class="{ 'fixed-bottom-2': type == 2 }" @click="playGlobalSound">
         <scroll-view class="scroller" :scroll-into-view="toView" scroll-y="true" scroll-with-animation="true">
             <view class="flex flex-a-c flex-j-b bg-white bind-audit mb-16">
                 <text>绑定审核员</text>
@@ -97,6 +97,11 @@ const handleAuditorSelected = (auditor) => {
     });
 };
 
+//点击全局音效
+function playGlobalSound() {
+    uni.$u.playClickSound();
+}
+
 //点击滚动的位置
 const toView = ref("");
 function scrollToView(to) {

+ 6 - 1
pages/index/index.vue

@@ -1,5 +1,5 @@
 <template>
-    <view class="operation-container">
+    <view class="operation-container" @click="playGlobalSound">
 
         <!-- 直接循环 -->
         <view class="section" v-for="item in menuData" :key="item.path">
@@ -24,6 +24,11 @@
 import { ref, computed, onMounted } from "vue";
 import { onLoad } from "@dcloudio/uni-app";
 
+//点击全局音效
+function playGlobalSound(){
+    uni.$u.playClickSound()
+}
+
 // 菜单数据和加载状态
 const menuData = ref([]);
 let menuPromise = null;

+ 11 - 1
pages/index/wms/bad-in.vue

@@ -1,5 +1,5 @@
 <template>
-    <view class="common-page" style="padding: 0;">
+    <view class="common-page" style="padding: 0;" @click="playGlobalSound">
         <!-- 顶部导航栏 -->
         <view class="header">
             <u-navbar title="不良入库" :border="false" fixed safe-area-inset-top>
@@ -78,6 +78,11 @@ const formData = reactive({
     positionCode: ''
 });
 
+//点击全局音效
+function playGlobalSound(){
+    uni.$u.playClickSound()
+}
+
 // 订单列表
 const ordersMap = ref([]);
 const codeMap = ref([]); // 记录已扫码的物流单号
@@ -97,6 +102,9 @@ function getDetailByCode(code) {
                 title: '提示',
                 content: res.msg,
                 showCancel: false,
+                success: () => {
+                    playGlobalSound()
+                }
             })
         } else {
             uni.$u.toast(res.msg)
@@ -116,6 +124,7 @@ const goBack = () => {
             title: '退出确认',
             content: '是否确认放弃本次入库?',
             success: (res) => {
+                playGlobalSound()
                 if (res.confirm) {
                     uni.navigateBack();
                 }
@@ -136,6 +145,7 @@ const onSubmit = () => {
         title: '提交确认',
         content: '是否确认提交本次入库?',
         success: (res) => {
+            playGlobalSound()
             if (res.confirm) {
                 handleSubmitConfirm()
             }

+ 7 - 1
pages/index/wms/bad-off.vue

@@ -1,5 +1,5 @@
 <template>
-    <view class="container">
+    <view class="container" @click="playGlobalSound">
         <!-- 任务列表 -->
         <view class="task-list">
             <template v-if="!loading">
@@ -50,6 +50,11 @@ import { ref, onMounted } from "vue";
 // 搜索文本
 const searchText = ref("");
 
+// 点击全局音效
+function playGlobalSound(){
+    uni.$u.playClickSound()
+}
+
 // 任务列表数据
 const taskList = ref([]);
 
@@ -132,6 +137,7 @@ const handleTaskClick = (task) => {
         cancelText: "取消",
         confirmText: "确认",
         success: async (res) => {
+            playGlobalSound()
             if (res.confirm) {
                 try {
                     const response = await uni.$u.http.post(`/app/appstock/lockStockTask?taskCode=${task.taskCode}`);

+ 6 - 1
pages/index/wms/bad-out-order.vue

@@ -1,5 +1,5 @@
 <template>
-    <view class="container">
+    <view class="container" @click="playGlobalSound">
         <!-- 搜索框 -->
         <u-sticky>
             <view class="search-area flex-c mb-20">
@@ -70,6 +70,11 @@ const searchType = ref("1");
 const errorMsg = ref("");
 const hasData = ref(false);
 
+// 点击全局音效
+function playGlobalSound(){
+    uni.$u.playClickSound()
+}
+
 // 位置信息
 const locationInfo = ref({
     positionCode: "",

+ 6 - 1
pages/index/wms/bad-out.vue

@@ -1,5 +1,5 @@
 <template>
-    <view class="container flex-d h100">
+    <view class="container flex-d h100" @click="playGlobalSound">
         <!-- 库位列表 -->
         <view class="location-list flex-1">
             <view class="no-data flex-c mt-60">请输入快递单号/订单编号</view>
@@ -35,6 +35,11 @@ import { onLoad, onShow } from "@dcloudio/uni-app";
 const searchText = ref("");
 const searchType = ref("1");
 
+// 点击全局音效
+function playGlobalSound(){
+    uni.$u.playClickSound()
+}
+
 // 搜索处理
 const onSearch = () => {
     // 实现搜索逻辑

+ 6 - 1
pages/index/wms/components/RemarkDialog.vue

@@ -1,6 +1,6 @@
 <template>
     <u-popup :show="visible" @close="onClose" mode="center" round="10" :closeOnClickOverlay="false">
-        <view class="remark-dialog">
+        <view class="remark-dialog"  @click="playGlobalSound">
             <view class="dialog-title">编辑备注</view>
 
             <!-- 备注输入框 -->
@@ -40,6 +40,11 @@ const props = defineProps({
     }
 })
 
+// 点击全局音效
+function playGlobalSound(){
+    uni.$u.playClickSound()
+}
+
 const emit = defineEmits(['update:visible', 'confirm'])
 
 const remarkText = ref('')

+ 6 - 1
pages/index/wms/location-select.vue

@@ -1,5 +1,5 @@
 <template>
-	<view class="container">
+	<view class="container" @click="playGlobalSound">
 		<!-- 库位列表 -->
 		<scroll-view scroll-y class="location-list" :style="{ height: scrollHeight + 'px' }">
 			<view v-for="(item, index) in locations" :key="index"
@@ -32,6 +32,11 @@
 	// 搜索文本
 	const searchText = ref('')
 
+	// 点击全局音效
+	function playGlobalSound(){
+		uni.$u.playClickSound()
+	}
+
 	// 库位列表数据
 	const locations = ref([])
 

+ 8 - 1
pages/index/wms/task-detail.vue

@@ -1,5 +1,5 @@
 <template>
-    <view class="container">
+    <view class="container" @click="playGlobalSound">
         <!-- 顶部导航栏 -->
         <u-navbar title="下架任务" :border="false" fixed safe-area-inset-top>
             <template #left>
@@ -104,6 +104,11 @@ onUnload(() => {
     ttsModule.value.stop();
 });
 
+// 点击全局音效
+function playGlobalSound(){
+    uni.$u.playClickSound()
+}
+
 // 搜索文本
 const searchText = ref("");
 
@@ -190,6 +195,7 @@ const onSubmit = () => {
         title: "确认提示",
         content: "是否确认提交本次下架?",
         success: (res) => {
+            playGlobalSound()
             if (res.confirm) {
                 uni.navigateBack();
                 ttsModule.value.speak("任务已提交");
@@ -204,6 +210,7 @@ function goBack() {
         title: "确认提示",
         content: "是否确认放弃本次下架?",
         success: (res) => {
+            playGlobalSound()
             if (res.confirm) {
                 uni.navigateBack();
                 ttsModule.value.speak("任务已放弃");

+ 6 - 1
pages/index/wms/warehouse-select.vue

@@ -1,5 +1,5 @@
 <template>
-    <view class="container">
+    <view class="container" @click="playGlobalSound">
         <!-- 搜索框 -->
         <view class="search-area">
             <u-search v-model="searchText" placeholder="请输入仓库名称" :show-action="false" :clearabled="true"
@@ -21,6 +21,11 @@
 import { ref, computed } from 'vue'
 import { onLoad } from '@dcloudio/uni-app'
 
+// 点击全局音效
+function playGlobalSound(){
+    uni.$u.playClickSound()
+}
+
 // 搜索文本
 const searchText = ref('')
 

+ 6 - 1
pages/my/my.vue

@@ -1,5 +1,5 @@
 <template>
-    <view class="settings-page">
+    <view class="settings-page" @click="playGlobalSound">
         <!-- 顶部用户信息 -->
         <view class="user-header">
             <view class="user-info">
@@ -38,6 +38,11 @@
 import { ref, onMounted } from "vue";
 import { onLoad } from "@dcloudio/uni-app";
 
+// 点击全局音效
+function playGlobalSound(){
+    uni.$u.playClickSound()
+}
+
 let defaultAvatar =
     "https://img20.360buyimg.com/da/jfs/t1/141592/25/8861/261559/5f68d8c1E33ed78ab/698ad655bfcfbaed.png";
 

+ 7 - 1
pages/my/page/warehouse.vue

@@ -21,6 +21,7 @@
 	import {
 		ref
 	} from 'vue'
+	import { onLoad } from '@dcloudio/uni-app'
 
 	// 选择器显示状态
 	const showPicker = ref(false)
@@ -42,6 +43,12 @@
 			}
 		})
 	}
+	onLoad(() => {
+	    // 获取仓库列表
+		getWarehouseList()
+	    getWarehouse()
+	})
+
 	getWarehouseList()
 	//获取默认仓库
 	const getWarehouse = () => {
@@ -51,7 +58,6 @@
 			}
 		})
 	}
-	getWarehouse()
 	//保存
 	const saveWarehouse = (godownId) => {
 		uni.$u.http.post('/app/appUser/bingowGodown?godownId=' + godownId).then(res => {

BIN
unpackage/cache/wgt/__UNI__65C1C73/.manifest/icon-android-hdpi.png


BIN
unpackage/cache/wgt/__UNI__65C1C73/.manifest/icon-android-xhdpi.png


BIN
unpackage/cache/wgt/__UNI__65C1C73/.manifest/icon-android-xxhdpi.png


BIN
unpackage/cache/wgt/__UNI__65C1C73/.manifest/icon-android-xxxhdpi.png


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 1
unpackage/cache/wgt/__UNI__65C1C73/app-config-service.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/app-service.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/app.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/manifest.json


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/book/index.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/audit/confirm-receipt.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/audit/express-order.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/audit/isbn-order.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/audit/scan-order.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/audit/sender.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/detail/batch-audit.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/detail/book-audit.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/detail/index.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/detail/user-orders.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/entry/commodity-scan.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/entry/scan-book.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/express/quick-check.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/express/quick-unpack.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/express/route-exception.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/express/transfer-sign.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/express/warehouse-sign.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/express/weight-modify.css


+ 1 - 1
unpackage/cache/wgt/__UNI__65C1C73/pages/index/index.css

@@ -1 +1 @@
-.operation-container[data-v-238d40be]{padding:.625rem;box-sizing:border-box}.section[data-v-238d40be]{margin-bottom:.9375rem;background:#fff;border-radius:.5rem;padding:.625rem;box-shadow:0 .0625rem .375rem rgba(0,0,0,.05)}.section .section-title[data-v-238d40be]{font-size:1.5625rem;font-weight:600;color:#333;padding:.625rem;padding-top:0;border-bottom:.0625rem solid #f0f0f0;margin-bottom:.625rem}.section .grid-container[data-v-238d40be]{display:grid;grid-template-columns:repeat(2,1fr);gap:.625rem;padding:.3125rem}.section .grid-container .grid-item[data-v-238d40be]{min-height:4.625rem;display:flex;align-items:center;justify-content:center;text-align:center;padding:.625rem .9375rem;line-height:1.875rem;font-size:1.5625rem;border-radius:.375rem;color:#fff;transition:all .3s;white-space:pre-wrap}.section .grid-container .grid-item.primary[data-v-238d40be]{background:linear-gradient(135deg,#4cd964,#3ac555)}.section .grid-container .grid-item.primary[data-v-238d40be]:active{background:linear-gradient(135deg,#3ac555,#2fb548)}.section .grid-container .grid-item.warning[data-v-238d40be]{background:linear-gradient(135deg,#ff9500,#ff8000)}.section .grid-container .grid-item.warning[data-v-238d40be]:active{background:linear-gradient(135deg,#ff8000,#e67300)}.section .grid-container .grid-item[data-v-238d40be]:active{transform:scale(.98)}
+.operation-container[data-v-a316ef9c]{padding:.625rem;box-sizing:border-box}.section[data-v-a316ef9c]{margin-bottom:.9375rem;background:#fff;border-radius:.5rem;padding:.625rem;padding-right:0;box-shadow:0 .0625rem .375rem rgba(0,0,0,.05)}.section .section-title[data-v-a316ef9c]{font-size:1.5625rem;font-weight:600;color:#333;padding:.625rem;padding-top:0;border-bottom:.0625rem solid #f0f0f0;margin-bottom:.625rem}.section .grid-container[data-v-a316ef9c]{display:flex;flex-wrap:wrap;padding:.3125rem}.section .grid-container .grid-item[data-v-a316ef9c]{width:calc(50% - .625rem);min-height:4.625rem;display:flex;align-items:center;justify-content:center;text-align:center;padding:.625rem .9375rem;line-height:1.875rem;font-size:1.5625rem;border-radius:.375rem;color:#fff;transition:all .3s;white-space:pre-wrap;box-sizing:border-box;margin-right:.625rem;margin-bottom:.625rem}.section .grid-container .grid-item[style*="grid-column: span 2"][data-v-a316ef9c]{width:calc(100% - .625rem);margin-right:.625rem}.section .grid-container .grid-item.primary[data-v-a316ef9c]{background:linear-gradient(135deg,#4cd964,#3ac555)}.section .grid-container .grid-item.primary[data-v-a316ef9c]:active{background:linear-gradient(135deg,#3ac555,#2fb548)}.section .grid-container .grid-item.warning[data-v-a316ef9c]{background:linear-gradient(135deg,#ff9500,#ff8000)}.section .grid-container .grid-item.warning[data-v-a316ef9c]:active{background:linear-gradient(135deg,#ff8000,#e67300)}.section .grid-container .grid-item[data-v-a316ef9c]:active{transform:scale(.98)}

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/offline/check-order.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/bad-in.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 1
unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/bad-off.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/bad-out-order.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/bad-out.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/location-order-list.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/location-order.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/location-select.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/order-query-list.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/order-query.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/speedy-check-add.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/speedy-check.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/index/wms/task-detail.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/login/login.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/my/my.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/my/page/audit-unfinished.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/cache/wgt/__UNI__65C1C73/pages/my/page/user-info.css


BIN
unpackage/cache/wgt/__UNI__65C1C73/static/bap.mp3


+ 1 - 1
unpackage/cache/wgt/__UNI__65C1C73/static/css/mystyle.css

@@ -180,7 +180,7 @@
 
 .fixed-bottom {
 	padding: 40rpx 0rpx;
-	padding-bottom: env(safe-area-inset-bottom);
+	padding-bottom: 0;
 	position: fixed;
 	width: 100%;
 	bottom: 0;

BIN
unpackage/cache/wgt/__UNI__65C1C73/static/img/location-active.png


BIN
unpackage/cache/wgt/__UNI__65C1C73/static/img/location.png


BIN
unpackage/cache/wgt/__UNI__65C1C73/static/img/share.png


BIN
unpackage/debug/android_debug.apk


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/dist/build/app-plus/app-config-service.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/dist/build/app-plus/app-service.js


+ 2 - 2
unpackage/dist/build/app-plus/manifest.json

@@ -7,8 +7,8 @@
   "id": "__UNI__65C1C73",
   "name": "书嗨",
   "version": {
-    "name": "1.0.1",
-    "code": 101
+    "name": "1.0.2",
+    "code": 102
   },
   "description": "",
   "developer": {

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/dist/build/app-plus/pages/index/audit/express-order.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/dist/build/app-plus/pages/index/audit/scan-order.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/dist/build/app-plus/pages/index/detail/batch-audit.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/dist/build/app-plus/pages/index/detail/book-audit.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/dist/build/app-plus/pages/index/detail/index.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/dist/build/app-plus/pages/index/entry/commodity-scan.css


+ 1 - 1
unpackage/dist/build/app-plus/pages/index/index.css

@@ -1 +1 @@
-.operation-container[data-v-af7859bf]{padding:.625rem;box-sizing:border-box}.section[data-v-af7859bf]{margin-bottom:.9375rem;background:#fff;border-radius:.5rem;padding:.625rem;padding-right:0;box-shadow:0 .0625rem .375rem rgba(0,0,0,.05)}.section .section-title[data-v-af7859bf]{font-size:1.5625rem;font-weight:600;color:#333;padding:.625rem;padding-top:0;border-bottom:.0625rem solid #f0f0f0;margin-bottom:.625rem}.section .grid-container[data-v-af7859bf]{display:flex;flex-wrap:wrap;padding:.3125rem}.section .grid-container .grid-item[data-v-af7859bf]{width:calc(50% - .625rem);min-height:4.625rem;display:flex;align-items:center;justify-content:center;text-align:center;padding:.625rem .9375rem;line-height:1.875rem;font-size:1.5625rem;border-radius:.375rem;color:#fff;transition:all .3s;white-space:pre-wrap;box-sizing:border-box;margin-right:.625rem;margin-bottom:.625rem}.section .grid-container .grid-item[style*="grid-column: span 2"][data-v-af7859bf]{width:calc(100% - .625rem);margin-right:.625rem}.section .grid-container .grid-item.primary[data-v-af7859bf]{background:linear-gradient(135deg,#4cd964,#3ac555)}.section .grid-container .grid-item.primary[data-v-af7859bf]:active{background:linear-gradient(135deg,#3ac555,#2fb548)}.section .grid-container .grid-item.warning[data-v-af7859bf]{background:linear-gradient(135deg,#ff9500,#ff8000)}.section .grid-container .grid-item.warning[data-v-af7859bf]:active{background:linear-gradient(135deg,#ff8000,#e67300)}.section .grid-container .grid-item[data-v-af7859bf]:active{transform:scale(.98)}
+.operation-container[data-v-56475087]{padding:.625rem;box-sizing:border-box}.section[data-v-56475087]{margin-bottom:.9375rem;background:#fff;border-radius:.5rem;padding:.625rem;padding-right:0;box-shadow:0 .0625rem .375rem rgba(0,0,0,.05)}.section .section-title[data-v-56475087]{font-size:1.5625rem;font-weight:600;color:#333;padding:.625rem;padding-top:0;border-bottom:.0625rem solid #f0f0f0;margin-bottom:.625rem}.section .grid-container[data-v-56475087]{display:flex;flex-wrap:wrap;padding:.3125rem}.section .grid-container .grid-item[data-v-56475087]{width:calc(50% - .625rem);min-height:4.625rem;display:flex;align-items:center;justify-content:center;text-align:center;padding:.625rem .9375rem;line-height:1.875rem;font-size:1.5625rem;border-radius:.375rem;color:#fff;transition:all .3s;white-space:pre-wrap;box-sizing:border-box;margin-right:.625rem;margin-bottom:.625rem}.section .grid-container .grid-item[style*="grid-column: span 2"][data-v-56475087]{width:calc(100% - .625rem);margin-right:.625rem}.section .grid-container .grid-item.primary[data-v-56475087]{background:linear-gradient(135deg,#4cd964,#3ac555)}.section .grid-container .grid-item.primary[data-v-56475087]:active{background:linear-gradient(135deg,#3ac555,#2fb548)}.section .grid-container .grid-item.warning[data-v-56475087]{background:linear-gradient(135deg,#ff9500,#ff8000)}.section .grid-container .grid-item.warning[data-v-56475087]:active{background:linear-gradient(135deg,#ff8000,#e67300)}.section .grid-container .grid-item[data-v-56475087]:active{transform:scale(.98)}

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/dist/build/app-plus/pages/index/wms/bad-in.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/dist/build/app-plus/pages/index/wms/bad-off.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/dist/build/app-plus/pages/index/wms/bad-out-order.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/dist/build/app-plus/pages/index/wms/location-select.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/dist/build/app-plus/pages/index/wms/task-detail.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/dist/build/app-plus/pages/index/wms/warehouse-select.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/dist/build/app-plus/pages/my/my.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/dist/build/app-plus/pages/my/page/warehouse.css


+ 4 - 4
unpackage/dist/cache/.vite/deps/_metadata.json

@@ -1,13 +1,13 @@
 {
-  "hash": "07dff9a6",
-  "configHash": "efdd24f4",
+  "hash": "c3b66125",
+  "configHash": "0f433167",
   "lockfileHash": "4656f6a4",
-  "browserHash": "ff34f27b",
+  "browserHash": "76e270eb",
   "optimized": {
     "howler": {
       "src": "../../../../../node_modules/howler/dist/howler.js",
       "file": "howler.js",
-      "fileHash": "349898fe",
+      "fileHash": "ef670019",
       "needsInterop": true
     }
   },

+ 2 - 2
unpackage/dist/cache/.vite/deps/howler.js

@@ -3,9 +3,9 @@ var __commonJS = (cb, mod) => function __require() {
   return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
 };
 
-// ../../../../../../Users/ylong/2025项目/书嗨/book-hi-pda/node_modules/howler/dist/howler.js
+// E:/书嗨项目/shuhi-app-fornt/node_modules/howler/dist/howler.js
 var require_howler = __commonJS({
-  "../../../../../../Users/ylong/2025项目/书嗨/book-hi-pda/node_modules/howler/dist/howler.js"(exports) {
+  "E:/书嗨项目/shuhi-app-fornt/node_modules/howler/dist/howler.js"(exports) {
     (function() {
       "use strict";
       var HowlerGlobal2 = function() {

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
unpackage/dist/dev/app-plus/app-config-service.js


Datei-Diff unterdrückt, da er zu groß ist
+ 56 - 44
unpackage/dist/dev/app-plus/app-service.js


+ 2 - 2
unpackage/dist/dev/app-plus/manifest.json

@@ -7,8 +7,8 @@
   "id": "__UNI__65C1C73",
   "name": "书嗨",
   "version": {
-    "name": "1.0.1",
-    "code": 101
+    "name": "1.0.2",
+    "code": 102
   },
   "description": "",
   "developer": {

+ 629 - 0
unpackage/dist/dev/app-plus/pages/index/entry/commodity-scan.css

@@ -0,0 +1,629 @@
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+/* 颜色变量 */
+/* 行为相关颜色 */
+/* 文字基本颜色 */
+/* 背景颜色 */
+/* 边框颜色 */
+/* 尺寸变量 */
+/* 文字尺寸 */
+/* 图片尺寸 */
+/* Border Radius */
+/* 水平间距 */
+/* 垂直间距 */
+/* 透明度 */
+/* 文章场景相关 */
+uni-view[data-v-ac70166d], uni-scroll-view[data-v-ac70166d], uni-swiper-item[data-v-ac70166d] {
+  display: flex;
+  flex-direction: column;
+  flex-shrink: 0;
+  flex-grow: 0;
+  flex-basis: auto;
+  align-items: stretch;
+  align-content: flex-start;
+}
+@font-face {
+  font-family: "uicon-iconfont";
+  src: url("https://at.alicdn.com/t/font_2225171_8kdcwk4po24.ttf") format("truetype");
+}
+.u-icon[data-v-ac70166d] {
+  display: flex;
+  align-items: center;
+}
+.u-icon--left[data-v-ac70166d] {
+  flex-direction: row-reverse;
+  align-items: center;
+}
+.u-icon--right[data-v-ac70166d] {
+  flex-direction: row;
+  align-items: center;
+}
+.u-icon--top[data-v-ac70166d] {
+  flex-direction: column-reverse;
+  justify-content: center;
+}
+.u-icon--bottom[data-v-ac70166d] {
+  flex-direction: column;
+  justify-content: center;
+}
+.u-icon__icon[data-v-ac70166d] {
+  font-family: uicon-iconfont;
+  position: relative;
+
+  display: flex;
+
+  flex-direction: row;
+  align-items: center;
+}
+.u-icon__icon--primary[data-v-ac70166d] {
+  color: #22ac38;
+}
+.u-icon__icon--success[data-v-ac70166d] {
+  color: #22ac38;
+}
+.u-icon__icon--error[data-v-ac70166d] {
+  color: #f56c6c;
+}
+.u-icon__icon--warning[data-v-ac70166d] {
+  color: #f9ae3d;
+}
+.u-icon__icon--info[data-v-ac70166d] {
+  color: #909399;
+}
+.u-icon__img[data-v-ac70166d] {
+  height: auto;
+  will-change: transform;
+}
+.u-icon__label[data-v-ac70166d] {
+  line-height: 1;
+}
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+/* 颜色变量 */
+/* 行为相关颜色 */
+/* 文字基本颜色 */
+/* 背景颜色 */
+/* 边框颜色 */
+/* 尺寸变量 */
+/* 文字尺寸 */
+/* 图片尺寸 */
+/* Border Radius */
+/* 水平间距 */
+/* 垂直间距 */
+/* 透明度 */
+/* 文章场景相关 */
+uni-view[data-v-df79975b], uni-scroll-view[data-v-df79975b], uni-swiper-item[data-v-df79975b] {
+  display: flex;
+  flex-direction: column;
+  flex-shrink: 0;
+  flex-grow: 0;
+  flex-basis: auto;
+  align-items: stretch;
+  align-content: flex-start;
+}
+.u-input[data-v-df79975b] {
+
+  display: flex;
+
+  flex-direction: row;
+  align-items: center;
+  justify-content: space-between;
+  flex: 1;
+}
+.u-input--radius[data-v-df79975b], .u-input--square[data-v-df79975b] {
+  border-radius: 4px;
+}
+.u-input--no-radius[data-v-df79975b] {
+  border-radius: 0;
+}
+.u-input--circle[data-v-df79975b] {
+  border-radius: 100px;
+}
+.u-input__content[data-v-df79975b] {
+  flex: 1;
+
+  display: flex;
+
+  flex-direction: row;
+  align-items: center;
+  justify-content: space-between;
+}
+.u-input__content__field-wrapper[data-v-df79975b] {
+  position: relative;
+
+  display: flex;
+
+  flex-direction: row;
+  margin: 0;
+  flex: 1;
+}
+.u-input__content__field-wrapper__field[data-v-df79975b] {
+  line-height: 26px;
+  text-align: left;
+  color: #303133;
+  height: 24px;
+  font-size: 15px;
+  flex: 1;
+}
+.u-input__content__clear[data-v-df79975b] {
+  width: 20px;
+  height: 20px;
+  border-radius: 100px;
+  background-color: #c6c7cb;
+
+  display: flex;
+
+  flex-direction: row;
+  align-items: center;
+  justify-content: center;
+  transform: scale(0.82);
+  margin-left: 4px;
+}
+.u-input__content__subfix-icon[data-v-df79975b] {
+  margin-left: 4px;
+}
+.u-input__content__prefix-icon[data-v-df79975b] {
+  margin-right: 4px;
+}
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+/* 颜色变量 */
+/* 行为相关颜色 */
+/* 文字基本颜色 */
+/* 背景颜色 */
+/* 边框颜色 */
+/* 尺寸变量 */
+/* 文字尺寸 */
+/* 图片尺寸 */
+/* Border Radius */
+/* 水平间距 */
+/* 垂直间距 */
+/* 透明度 */
+/* 文章场景相关 */
+uni-view[data-v-2af81691], uni-scroll-view[data-v-2af81691], uni-swiper-item[data-v-2af81691] {
+  display: flex;
+  flex-direction: column;
+  flex-shrink: 0;
+  flex-grow: 0;
+  flex-basis: auto;
+  align-items: stretch;
+  align-content: flex-start;
+}
+.u-loading-icon[data-v-2af81691] {
+  flex-direction: row;
+  align-items: center;
+  justify-content: center;
+  color: #c8c9cc;
+}
+.u-loading-icon__text[data-v-2af81691] {
+  margin-left: 4px;
+  color: #606266;
+  font-size: 14px;
+  line-height: 20px;
+}
+.u-loading-icon__spinner[data-v-2af81691] {
+  width: 30px;
+  height: 30px;
+  position: relative;
+  box-sizing: border-box;
+  max-width: 100%;
+  max-height: 100%;
+  animation: u-rotate-2af81691 1s linear infinite;
+}
+.u-loading-icon__spinner--semicircle[data-v-2af81691] {
+  border-width: 2px;
+  border-color: transparent;
+  border-top-right-radius: 100px;
+  border-top-left-radius: 100px;
+  border-bottom-left-radius: 100px;
+  border-bottom-right-radius: 100px;
+  border-style: solid;
+}
+.u-loading-icon__spinner--circle[data-v-2af81691] {
+  border-top-right-radius: 100px;
+  border-top-left-radius: 100px;
+  border-bottom-left-radius: 100px;
+  border-bottom-right-radius: 100px;
+  border-width: 2px;
+  border-top-color: #e5e5e5;
+  border-right-color: #e5e5e5;
+  border-bottom-color: #e5e5e5;
+  border-left-color: #e5e5e5;
+  border-style: solid;
+}
+.u-loading-icon--vertical[data-v-2af81691] {
+  flex-direction: column;
+}
+[data-v-2af81691]:host {
+  font-size: 0px;
+  line-height: 1;
+}
+.u-loading-icon__spinner--spinner[data-v-2af81691] {
+  animation-timing-function: steps(12);
+}
+.u-loading-icon__text[data-v-2af81691]:empty {
+  display: none;
+}
+.u-loading-icon--vertical .u-loading-icon__text[data-v-2af81691] {
+  margin: 6px 0 0;
+  color: #606266;
+}
+.u-loading-icon__dot[data-v-2af81691] {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+}
+.u-loading-icon__dot[data-v-2af81691]:before {
+  display: block;
+  width: 2px;
+  height: 25%;
+  margin: 0 auto;
+  background-color: currentColor;
+  border-radius: 40%;
+  content: " ";
+}
+.u-loading-icon__dot[data-v-2af81691]:nth-of-type(1) {
+  transform: rotate(30deg);
+  opacity: 1;
+}
+.u-loading-icon__dot[data-v-2af81691]:nth-of-type(2) {
+  transform: rotate(60deg);
+  opacity: 0.9375;
+}
+.u-loading-icon__dot[data-v-2af81691]:nth-of-type(3) {
+  transform: rotate(90deg);
+  opacity: 0.875;
+}
+.u-loading-icon__dot[data-v-2af81691]:nth-of-type(4) {
+  transform: rotate(120deg);
+  opacity: 0.8125;
+}
+.u-loading-icon__dot[data-v-2af81691]:nth-of-type(5) {
+  transform: rotate(150deg);
+  opacity: 0.75;
+}
+.u-loading-icon__dot[data-v-2af81691]:nth-of-type(6) {
+  transform: rotate(180deg);
+  opacity: 0.6875;
+}
+.u-loading-icon__dot[data-v-2af81691]:nth-of-type(7) {
+  transform: rotate(210deg);
+  opacity: 0.625;
+}
+.u-loading-icon__dot[data-v-2af81691]:nth-of-type(8) {
+  transform: rotate(240deg);
+  opacity: 0.5625;
+}
+.u-loading-icon__dot[data-v-2af81691]:nth-of-type(9) {
+  transform: rotate(270deg);
+  opacity: 0.5;
+}
+.u-loading-icon__dot[data-v-2af81691]:nth-of-type(10) {
+  transform: rotate(300deg);
+  opacity: 0.4375;
+}
+.u-loading-icon__dot[data-v-2af81691]:nth-of-type(11) {
+  transform: rotate(330deg);
+  opacity: 0.375;
+}
+.u-loading-icon__dot[data-v-2af81691]:nth-of-type(12) {
+  transform: rotate(360deg);
+  opacity: 0.3125;
+}
+@keyframes u-rotate-2af81691 {
+0% {
+    transform: rotate(0deg);
+}
+to {
+    transform: rotate(1turn);
+}
+}
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+/* 颜色变量 */
+/* 行为相关颜色 */
+/* 文字基本颜色 */
+/* 背景颜色 */
+/* 边框颜色 */
+/* 尺寸变量 */
+/* 文字尺寸 */
+/* 图片尺寸 */
+/* Border Radius */
+/* 水平间距 */
+/* 垂直间距 */
+/* 透明度 */
+/* 文章场景相关 */
+uni-view[data-v-5ce41ee6], uni-scroll-view[data-v-5ce41ee6], uni-swiper-item[data-v-5ce41ee6] {
+  display: flex;
+  flex-direction: column;
+  flex-shrink: 0;
+  flex-grow: 0;
+  flex-basis: auto;
+  align-items: stretch;
+  align-content: flex-start;
+}
+.u-button[data-v-5ce41ee6] {
+  width: 100%;
+}
+.u-button__text[data-v-5ce41ee6] {
+  white-space: nowrap;
+  line-height: 1;
+}
+.u-button[data-v-5ce41ee6]:before {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: 100%;
+  height: 100%;
+  border: inherit;
+  border-radius: inherit;
+  transform: translate(-50%, -50%);
+  opacity: 0;
+  content: " ";
+  background-color: #000;
+  border-color: #000;
+}
+.u-button--active[data-v-5ce41ee6]:before {
+  opacity: 0.15;
+}
+.u-button__icon + .u-button__text[data-v-5ce41ee6]:not(:empty), .u-button__loading-text[data-v-5ce41ee6] {
+  margin-left: 4px;
+}
+.u-button--plain.u-button--primary[data-v-5ce41ee6] {
+  color: #22ac38;
+}
+.u-button--plain.u-button--info[data-v-5ce41ee6] {
+  color: #909399;
+}
+.u-button--plain.u-button--success[data-v-5ce41ee6] {
+  color: #22ac38;
+}
+.u-button--plain.u-button--error[data-v-5ce41ee6] {
+  color: #f56c6c;
+}
+.u-button--plain.u-button--warning[data-v-5ce41ee6] {
+  color: #f56c6c;
+}
+.u-button[data-v-5ce41ee6] {
+  height: 52px;
+  position: relative;
+  align-items: center;
+  justify-content: center;
+
+  display: flex;
+
+  flex-direction: row;
+  box-sizing: border-box;
+  flex-direction: row;
+}
+.u-button__text[data-v-5ce41ee6] {
+  font-size: 16px;
+}
+.u-button__loading-text[data-v-5ce41ee6] {
+  font-size: 16px;
+  margin-left: 4px;
+}
+.u-button--large[data-v-5ce41ee6] {
+  width: 100%;
+  height: 64px;
+  padding: 0 15px;
+  font-size: 20px;
+}
+.u-button--normal[data-v-5ce41ee6] {
+  padding: 0 12px;
+  font-size: 16px;
+}
+.u-button--small[data-v-5ce41ee6] {
+  min-width: 60px;
+  height: 30px;
+  padding: 0px 8px;
+  font-size: 12px;
+}
+.u-button--mini[data-v-5ce41ee6] {
+  height: 22px;
+  font-size: 10px;
+  min-width: 50px;
+  padding: 0px 8px;
+}
+.u-button--disabled[data-v-5ce41ee6] {
+  opacity: 0.5;
+}
+.u-button--info[data-v-5ce41ee6] {
+  color: #323233;
+  background-color: #fff;
+  border-color: #ebedf0;
+  border-width: 1px;
+  border-style: solid;
+}
+.u-button--success[data-v-5ce41ee6] {
+  color: #fff;
+  background-color: #22ac38;
+  border-color: #22ac38;
+  border-width: 1px;
+  border-style: solid;
+}
+.u-button--primary[data-v-5ce41ee6] {
+  color: #fff;
+  background-color: #22ac38;
+  border-color: #22ac38;
+  border-width: 1px;
+  border-style: solid;
+}
+.u-button--error[data-v-5ce41ee6] {
+  color: #fff;
+  background-color: #f56c6c;
+  border-color: #f56c6c;
+  border-width: 1px;
+  border-style: solid;
+}
+.u-button--warning[data-v-5ce41ee6] {
+  color: #fff;
+  background-color: #f9ae3d;
+  border-color: #f9ae3d;
+  border-width: 1px;
+  border-style: solid;
+}
+.u-button--block[data-v-5ce41ee6] {
+
+  display: flex;
+
+  flex-direction: row;
+  width: 100%;
+}
+.u-button--circle[data-v-5ce41ee6] {
+  border-top-right-radius: 100px;
+  border-top-left-radius: 100px;
+  border-bottom-left-radius: 100px;
+  border-bottom-right-radius: 100px;
+}
+.u-button--square[data-v-5ce41ee6] {
+  border-bottom-left-radius: 3px;
+  border-bottom-right-radius: 3px;
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.u-button__icon[data-v-5ce41ee6] {
+  min-width: 1em;
+  line-height: inherit !important;
+  vertical-align: top;
+}
+.u-button--plain[data-v-5ce41ee6] {
+  background-color: #fff;
+}
+.u-button--hairline[data-v-5ce41ee6] {
+  border-width: 0.5px !important;
+}
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+/* 颜色变量 */
+/* 行为相关颜色 */
+/* 文字基本颜色 */
+/* 背景颜色 */
+/* 边框颜色 */
+/* 尺寸变量 */
+/* 文字尺寸 */
+/* 图片尺寸 */
+/* Border Radius */
+/* 水平间距 */
+/* 垂直间距 */
+/* 透明度 */
+/* 文章场景相关 */
+.container[data-v-9a4165f6] {
+  min-height: 100vh;
+  background-color: #f5f5f5;
+}
+.header[data-v-9a4165f6] {
+  background-color: #27ae60;
+  padding: 0.625rem;
+  color: white;
+  text-align: center;
+  font-size: 1.125rem;
+  position: relative;
+}
+.header .title[data-v-9a4165f6] {
+  font-weight: bold;
+}
+.main-content[data-v-9a4165f6] {
+  padding: 20px;
+  gap: 20px;
+}
+.input-group[data-v-9a4165f6] {
+  display: flex;
+  gap: 10px;
+  margin-bottom: 0.9375rem;
+}
+.input-group[data-v-9a4165f6] .u-button {
+  width: 5rem;
+}
+.input-group .u-input[data-v-9a4165f6] {
+  background-color: #fff;
+}
+.status-box[data-v-9a4165f6] {
+  margin: 0.625rem;
+  background-color: #fff;
+  border-radius: 0.3125rem;
+  overflow: hidden;
+  border: 1px solid #f0f0f0;
+}
+.status-box .status-header[data-v-9a4165f6] {
+  background-color: #f1c40f;
+  padding: 0.3125rem 0.625rem;
+  color: #333;
+  font-weight: bold;
+}
+.status-box .status-message[data-v-9a4165f6] {
+  padding: 0.625rem;
+  border-bottom: 1px solid #eee;
+  font-weight: bold;
+}
+.status-box .status-option[data-v-9a4165f6] {
+  padding: 0.3125rem 0.625rem;
+  border-bottom: 1px solid #eee;
+}
+.status-box .footer[data-v-9a4165f6] {
+  padding: 0.3125rem 0.625rem;
+  color: #999;
+  font-size: 0.75rem;
+  text-align: right;
+}
+.fixed-bottom[data-v-9a4165f6] {
+  position: fixed;
+  bottom: 0;
+  left: 0;
+  right: 0;
+}
+.fixed-bottom .scan-button[data-v-9a4165f6] {
+  background-color: #27ae60;
+}

+ 8 - 1
unpackage/dist/dev/app-plus/pages/index/express/quick-check.css

@@ -1220,4 +1220,11 @@ uni-view[data-v-05c24e9b], uni-scroll-view[data-v-05c24e9b], uni-swiper-item[dat
 }
 .batch-popup .batch-item.active[data-v-61cc11f4] {
   color: #2979ff;
-}
+}
+
+.popup-header {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding: 0.625rem;
+}

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.