周宾
12 小时以前 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">
@@ -123,6 +150,36 @@
         </view>
      </view>
      
      <!-- 生产管控模块 -->
      <view class="common-module production-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 productionItems"
                  :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 equipment-module">
         <view class="module-header">
@@ -152,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('');
@@ -184,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([
@@ -253,12 +337,41 @@
   }
]);
// 生产管控功能数据
const productionItems = reactive([
   {
      icon: '/static/images/icon/shengchandingdan@2x.png',
      label: '生产订单',
      bgColor: '#FF9800'
   },
   {
      icon: '/static/images/icon/shengchanpaigong@2x.png',
      label: '生产派工',
      bgColor: '#FF6B35'
   },
   {
      icon: '/static/images/icon/shengchanpaichan@2x.png',
      label: '工序排产',
      bgColor: '#E91E63'
   },
   {
      icon: '/static/images/icon/shengchanbaogong@2x.png',
      label: '生产报工',
      bgColor: '#673AB7'
   },
   {
      icon: '/static/images/icon/shengchanhesuan@2x.png',
      label: '生产核算',
      bgColor: '#3F51B5'
   }
]);
// 设备管理功能数据
const equipmentItems = reactive([
   {
      icon: '/static/images/icon/shebeitaizhang@2x.png',
      label: '设备台账',
   },
   // {
   //    icon: '/static/images/icon/shebeitaizhang@2x.png',
   //    label: '设备台账',
   // },
   {
      icon: '/static/images/icon/shbeibaoxiu@2x.png',
      label: '设备报修',
@@ -266,6 +379,30 @@
   {
      icon: '/static/images/icon/shbeibaoyang@2x.png',
      label: '设备保养',
   },
   {
      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'
   }
]);
@@ -343,6 +480,31 @@
            url: '/pages/cooperativeOffice/clientVisit/index'
         });
         break;
      case '生产订单':
         uni.navigateTo({
            url: '/pages/productionManagement/productionOrder/index'
         });
         break;
      case '生产派工':
         uni.navigateTo({
            url: '/pages/productionManagement/productionDispatching/index'
         });
         break;
      case '工序排产':
         uni.navigateTo({
            url: '/pages/productionManagement/processScheduling/index'
         });
         break;
      case '生产报工':
         uni.navigateTo({
            url: '/pages/productionManagement/productionReport/index'
         });
         break;
      case '生产核算':
         uni.navigateTo({
            url: '/pages/productionManagement/productionAccounting/index'
         });
         break;
      case '设备台账':
         uni.navigateTo({
            url: '/pages/equipmentManagement/ledger/index'
@@ -358,6 +520,54 @@
            url: '/pages/equipmentManagement/upkeep/index'
         });
         break;
      case '巡检上传':
         uni.navigateTo({
            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/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}`,
@@ -410,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
      });
   })
}
// 定义方法
@@ -508,7 +785,7 @@
.bg-img {
   width: 100%;
   height: 8.75rem;
   background-image: url("../static/images/banner/view-background.png");
   background-image: url("../static/images/banner/backview.png");
   background-size: cover;
   border-radius: 0.75rem;
   position: relative;
@@ -542,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 {
@@ -555,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; }
@@ -564,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 {
@@ -752,6 +1031,10 @@
.collaboration-module {
   --module-color: #4caf50;
}
.production-module {
   --module-color: #FF9800;
}
.equipment-module {
@@ -960,6 +1243,10 @@
   --module-color: #4caf50;
}
.production-module {
   --module-color: #FF9800;
}
.equipment-module {
   --module-color: #9c27b0;
}