周宾
2 小时以前 b54a94b098a5a0a3375bab0d6493bacf45dd0a58
src/pages/index.vue
@@ -11,8 +11,7 @@
      <view class="hero-section">
         <view class="bg-img">
            <view class="hero-content">
               <text class="hero-title"></text>
               <text class="hero-subtitle"></text>
               <text class="hero-title">双奇点</text>
            </view>
            <view class="hero-wave"></view>
         </view>
@@ -32,7 +31,35 @@
      <!--            </view>-->
      <!--         </view>-->
      <!--      </view>-->
      <!-- 仓储物流模块 -->
      <view class="common-module marketing-module">
         <view class="module-header">
            <view class="module-title-container">
               <text class="module-title">仓储物流</text>
            </view>
         </view>
         <view class="module-content">
            <up-grid
               :border="false"
               col="4"
            >
               <up-grid-item
                  v-for="(item, index) in warehousingLogisticsItems"
                  :key="index"
                  @click="handleCommonItemClick(item)"
               >
                  <view class="icon-container" :style="{ background: item.bgColor }">
                     <up-icon
                        :name="item.icon"
                        :size="58"
                        color="#ffffff"
                     ></up-icon>
                  </view>
                  <text class="item-label">{{item.label}}</text>
               </up-grid-item>
            </up-grid>
         </view>
      </view>
      <!-- 营销管理模块 -->
      <view class="common-module marketing-module">
         <view class="module-header">
@@ -182,14 +209,17 @@
            </up-grid>
         </view>
      </view>
      <GoodsDetailPopup ref="refGoodsDetailPopup"></GoodsDetailPopup>
   </view>
</template>
<script setup>
import {ref, onMounted, nextTick, reactive} from 'vue';
import {userLoginFacotryList} from "@/api/login";
import { stockinDetail, detailManagementByCustom } from '@/api/inventoryManagement/receiptManagement'
import modal from "@/plugins/modal";
import useUserStore from "@/store/modules/user";
import GoodsDetailPopup from './components/GoodsDetailPopup.vue';
const userStore = useUserStore()
const factoryId = ref('');
@@ -214,6 +244,30 @@
      currentStatus.value = statusList[statusIndex]
   }, 3000)
}
//仓储物流功能数据
const warehousingLogisticsItems = reactive([
   {
      icon: '/static/images/icon/xiaoshoutaizhang@2x.png',
      label: '入库管理',
   },
   {
      icon: '/static/images/icon/kaipiaodengji@2x.png',
      label: '出库管理',
   },
   {
      icon: '/static/images/icon/kaipiaotaizhang@2x.png',
      label: '出库台账',
   },
   {
      icon: '/static/images/icon/huikuandengji@2x.png',
      label: '库存管理',
   },
   {
      icon: '/static/images/icon/huikuandengji@2x.png',
      label: '产品扫码',
   }
]);
// 营销管理功能数据
const marketingItems = reactive([
@@ -330,26 +384,26 @@
      icon: '/static/images/icon/xunjianshangchuan@2x.png',
      label: '巡检上传',
   },
   // {
   //    icon: '/static/images/icon/guzhangfenxi@2x.png',
   //    label: '分析追溯',
   //    bgColor: '#ff9800'
   // },
   // {
   //    icon: '/static/images/icon/zhinengpaidan@2x.png',
   //    label: '智能派单',
   //    bgColor: '#ff6b35'
   // },
   // {
   //    icon: '/static/images/icon/zuoyezhidao@2x.png',
   //    label: '作业指导',
   //    bgColor: '#4caf50'
   // },
   // {
   //    icon: '/static/images/icon/jieguoyanzheng@2x.png',
   //    label: '结果验证',
   //    bgColor: '#9c27b0'
   // }
   {
      icon: '/static/images/icon/guzhangfenxi@2x.png',
      label: '分析追溯',
      bgColor: '#ff9800'
   },
   {
      icon: '/static/images/icon/zhinengpaidan@2x.png',
      label: '智能派单',
      bgColor: '#ff6b35'
   },
   {
      icon: '/static/images/icon/zuoyezhidao@2x.png',
      label: '作业指导',
      bgColor: '#4caf50'
   },
   {
      icon: '/static/images/icon/jieguoyanzheng@2x.png',
      label: '结果验证',
      bgColor: '#9c27b0'
   }
]);
// 处理常用功能点击
@@ -433,7 +487,7 @@
         break;
      case '生产派工':
         uni.navigateTo({
            url: '/pages/productionManagement/productionDispatch/index'
            url: '/pages/productionManagement/productionDispatching/index'
         });
         break;
      case '工序排产':
@@ -471,26 +525,49 @@
            url: '/pages/inspectionUpload/index'
         });
         break;
      // case '分析追溯':
      //    uni.navigateTo({
      //       url: '/pages/equipmentManagement/faultAnalysis/index'
      //    });
      //    break;
      // case '智能派单':
      //    uni.navigateTo({
      //       url: '/pages/equipmentManagement/smartDispatch/index'
      //    });
      //    break;
      // case '作业指导':
      //    uni.navigateTo({
      //       url: '/pages/equipmentManagement/sop/index'
      //    });
      //    break;
      // case '结果验证':
      //    uni.navigateTo({
      //       url: '/pages/equipmentManagement/verification/index'
      //    });
      //    break;
      case '分析追溯':
         uni.navigateTo({
            url: '/pages/equipmentManagement/faultAnalysis/index'
         });
         break;
      case '智能派单':
         uni.navigateTo({
            url: '/pages/equipmentManagement/smartDispatch/index'
         });
         break;
      case '作业指导':
         uni.navigateTo({
            url: '/pages/equipmentManagement/sop/index'
         });
         break;
      case '结果验证':
         uni.navigateTo({
            url: '/pages/equipmentManagement/verification/index'
         });
         break;
      case '入库管理':
         uni.navigateTo({
            url: '/pages/inventoryManagement/receiptManagement/index'
         });
         break
      case '出库管理':
         uni.navigateTo({
            url: '/pages/inventoryManagement/issueManagement/index'
         });
         break
      case '出库台账':
         uni.navigateTo({
            url: '/pages/inventoryManagement/dispatchLog/index'
         });
         break
      case '库存管理':
         uni.navigateTo({
            url: '/pages/inventoryManagement/stockManagement/index'
         });
         break
      case '产品扫码':
         scanQRCode()
         break
      default:
         uni.showToast({
            title: `点击了${item.label}`,
@@ -543,6 +620,73 @@
   uni.reLaunch({
      url: '/pages/index'
   });
}
//开始扫码
const scanQRCode = ()=>{
   uni.scanCode({
      onlyFromCamera:true,
      scanType:['barCode','qrCode'],
      success(res) {
         searchDetail(res.result||'')
      },
      fail(res) {
         uni.showToast({
            title: res.errMsg||'扫码失败',
            icon: 'none',
            duration: 1500
         })
      }
   })
}
//谈框相关
const refGoodsDetailPopup = ref(null)
//查看详情
const searchDetail = (barcode)=>{
   if(!barcode||barcode.indexOf(',')==-1){
      uni.showToast({
         title:"请扫描正确的二维码",
         icon: 'none',
         duration: 1500
      })
      return
   }
   let barcodeList = barcode.split(",")
   let barcodeId = barcodeList[0]
   let type = barcodeList[1]
   let detailApi = null
   if(type==1){
      detailApi = stockinDetail
   }else if(type==2){
      detailApi = detailManagementByCustom
   }
   if(!detailApi){
      uni.showToast({
         title:"请扫描正确的二维码",
         icon: 'none',
         duration: 1500
      })
      return
   }
   detailApi({id:barcodeId}).then((resp) => {
      if(resp.code!=200||!resp.data)return
      // barcodeDetail.value = resp.data
      refGoodsDetailPopup.value.open({
         type: type,
         ...resp.data
      })
   }).catch(() => {
      uni.showToast({
         title: "获取数据失败",
         icon: 'none',
         duration: 1500
      });
   })
}
// 定义方法
@@ -675,12 +819,12 @@
.hero-content {
   position: relative;
   z-index: 1;
   padding: 1.25rem;
   padding: 1.25rem 1.25rem 1.6rem 1.25rem;
   height: 100%;
   display: flex;
   flex-direction: column;
   align-items: flex-start;
   justify-content: center;
   justify-content: flex-start;
}
.hero-title {
@@ -688,6 +832,7 @@
   font-size: 1.625rem;
   font-weight: 700;
   letter-spacing: 0.03125rem;
   text-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.5);
}
.hero-subtitle { font-size: 0.8125rem; margin-top: 0.375rem; }
.hero-wave { height: 2.75rem; }
@@ -697,6 +842,7 @@
   font-size: 0.8125rem;
   margin-top: 0.375rem;
   font-weight: 400;
   text-shadow: 0 0.0625rem 0.125rem rgba(0, 0, 0, 0.5);
}
.hero-wave {