warehouse-sign.vue 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <template>
  2. <view class="container">
  3. <view class="main-content">
  4. <view class="input-group">
  5. <u-input v-model="selectedWarehouse" placeholder="请选择仓库" readonly border="surround" />
  6. <u-button type="primary" @click="openWarehouseSelector" text="选择" />
  7. </view>
  8. <view class="input-group">
  9. <u-input v-model="trackingNumber" placeholder="扫描/输入物流单号" border="surround" />
  10. <u-button type="primary" @click="confirmTrackingNumber" text="确定" />
  11. </view>
  12. </view>
  13. <view class="fixed-bottom">
  14. <u-button size="large" type="success" @click="scanCode" text="扫码" class="scan-button" />
  15. </view>
  16. <WarehouseSelector v-model:show="showSelector" @warehouse-selected="handleWarehouseSelected" />
  17. </view>
  18. </template>
  19. <script setup>
  20. import {
  21. ref
  22. } from 'vue';
  23. import WarehouseSelector from './components/WarehouseSelector.vue';
  24. const showSelector = ref(false);
  25. const selectedWarehouse = ref('');
  26. const trackingNumber = ref('');
  27. function openWarehouseSelector() {
  28. // Logic to open warehouse selector
  29. showSelector.value = true;
  30. }
  31. function handleWarehouseSelected(warehouse) {
  32. selectedWarehouse.value = warehouse;
  33. }
  34. function confirmTrackingNumber() {
  35. // Logic to confirm tracking number
  36. playSuccessVoice('物流单号DPK202306014525已到仓签收成功')
  37. }
  38. //播放语音
  39. function playSuccessVoice(text) {
  40. // 构建 TTS 参数
  41. const ttsParams = {
  42. speed: 0.8, // 将 0-10 转换为 0-1
  43. pitch: 1, // 将 0-10 转换为 0-1
  44. volume: 1,
  45. }
  46. // #ifdef APP-PLUS
  47. // App 端使用原生 TTS
  48. const TTSModule = uni.requireNativePlugin('nrb-tts-plugin')
  49. TTSModule && TTSModule.init({
  50. "lang": "ZH",
  51. "country": "CN"
  52. }, res => {
  53. if (res.success == 0) {
  54. TTSModule.speak(text, ttsParams, (e) => {
  55. console.log(e, '播放语音成功')
  56. })
  57. }
  58. })
  59. // #endif
  60. }
  61. function scanCode() {
  62. uni.scanCode({
  63. success: (res) => {
  64. trackingNumber.value = res.result;
  65. // 处理扫码结果
  66. console.log('扫码结果:', res.result);
  67. },
  68. fail: (err) => {
  69. console.error('扫码失败:', err);
  70. }
  71. });
  72. }
  73. </script>
  74. <style lang="scss" scoped>
  75. .main-content {
  76. padding: 20px;
  77. gap: 20px;
  78. }
  79. .input-group {
  80. display: flex;
  81. gap: 10px;
  82. margin-bottom: 30rpx;
  83. :deep(.u-button) {
  84. width: 160rpx
  85. }
  86. .u-input {
  87. background-color: #fff;
  88. }
  89. }
  90. </style>