gaoluyang
2025-12-29 be4d965f119c3b36c8b50ccbbe05507ec5e206a4
src/pages/index.vue
@@ -1,157 +1,16 @@
<template>
   <view class="content">
      <view class="header-section">
         <view class="currentFactory">
            <up-text type="primary" :text="userStore.currentFactoryName" @click="show = true" size="18"
                         class="factoryName" suffixIcon="arrow-right" :iconStyle="iconStyle"></up-text>
         </view>
         <up-picker :show="show" :columns="factoryList" @confirm="changeFactory" @cancel="show = false"></up-picker>
      </view>
      
      <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>
      </view>
      <!--      <view class="notice-section">-->
      <!--         <view class="notice">-->
      <!--            <view class="notice-content">-->
      <!--               <view class="notice-left">-->
      <!--                  <text class="notice-status">通知</text>-->
      <!--               </view>-->
      <!--               <view class="notice-separator"></view>-->
      <!--               <view class="notice-right">-->
      <!--                  <text class="notice-label">{{currentStatus}}</text>-->
      <!--                  <text class="notice-text">当日销售设备数:<text class="notice-number">{{number}}<text class="notice-unit">个</text></text></text>-->
      <!--               </view>-->
      <!--            </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 marketingItems"
                  :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 purchase-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 purchaseItems"
                  :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 collaboration-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 collaborationItems"
                  :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 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">
@@ -187,7 +46,6 @@
<script setup>
import {ref, onMounted, nextTick, reactive} from 'vue';
import {userLoginFacotryList} from "@/api/login";
import modal from "@/plugins/modal";
import useUserStore from "@/store/modules/user";
@@ -215,245 +73,25 @@
   }, 3000)
}
// 营销管理功能数据
const marketingItems = 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/huikuanliushui@2x.png',
      label: '回款流水',
   },
   {
      icon: '/static/images/icon/kehuwanglai@2x.png',
      label: '客户往来',
   }
]);
// 采购管理功能数据
const purchaseItems = reactive([
   {
      icon: '/static/images/icon/caigoutaizhang@2x.png',
      label: '采购台账',
   },
   {
      icon: '/static/images/icon/laipiaodengji@2x.png',
      label: '来票登记',
   },
   {
      icon: '/static/images/icon/laipiaotaizhang@2x.png',
      label: '来票台账',
   },
   {
      icon: '/static/images/icon/fukuanjingji@2x.png',
      label: '付款登记',
   },
   {
      icon: '/static/images/icon/fukuanliushui@2x.png',
      label: '付款流水',
   },
   {
      icon: '/static/images/icon/gongyingshangwanglai@2x.png',
      label: '供应商往来',
   },
]);
// 协同办公功能数据
const collaborationItems = reactive([
   {
      icon: '/static/images/icon/xietongshenpi@2x.png',
      label: '协同审批',
   },
   {
      icon: '/static/images/icon/kehubaifang@2x.png',
      label: '客户拜访',
   }
]);
// 生产管控功能数据
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/shbeibaoxiu@2x.png',
      label: '设备报修',
   },
   {
      icon: '/static/images/icon/shbeibaoyang@2x.png',
      label: '设备保养',
      icon: '/static/images/icon/shebeitaizhang@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'
   // }
]);
// 处理常用功能点击
const handleCommonItemClick = (item) => {
   // 根据不同的功能项进行跳转
   switch (item.label) {
      case '销售台账':
         uni.navigateTo({
            url: '/pages/sales/salesAccount/index'
         });
         break;
      case '开票登记':
         uni.navigateTo({
            url: '/pages/sales/invoicingRegistration/index'
         });
         break;
      case '开票台账':
         uni.navigateTo({
            url: '/pages/sales/invoiceLedger/index'
         });
         break;
      case '回款登记':
         uni.navigateTo({
            url: '/pages/sales/receiptPayment/index'
         });
         break;
      case '回款流水':
         uni.navigateTo({
            url: '/pages/sales/receiptPaymentHistory/index'
         });
         break;
      case '客户往来':
         uni.navigateTo({
            url: '/pages/sales/receiptPaymentLedger/index'
         });
         break;
      case '采购台账':
         uni.navigateTo({
            url: '/pages/procurementManagement/procurementLedger/index'
         });
         break;
      case '来票登记':
         uni.navigateTo({
            url: '/pages/procurementManagement/invoiceEntry/index'
         });
         break;
      case '来票台账':
         uni.navigateTo({
            url: '/pages/procurementManagement/procurementInvoiceLedger/index'
         });
         break;
      case '付款登记':
         uni.navigateTo({
            url: '/pages/procurementManagement/paymentEntry/index'
         });
         break;
      case '付款流水':
         uni.navigateTo({
            url: '/pages/procurementManagement/receiptPaymentHistory/index'
         });
         break;
      case '供应商往来':
         uni.navigateTo({
            url: '/pages/procurementManagement/paymentLedger/index'
         });
         break;
      case '协同审批':
         uni.navigateTo({
            url: '/pages/cooperativeOffice/collaborativeApproval/index'
         });
         break;
      case '客户拜访':
         uni.navigateTo({
            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'
            url: '/pages/management/index'
         });
         break;
      case '设备报修':
@@ -471,26 +109,6 @@
            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;
      default:
         uni.showToast({
            title: `点击了${item.label}`,
@@ -502,43 +120,6 @@
// 创建对子组件的引用
const uToastRef = ref(null);
function getUserLoginFacotryList() {
   userLoginFacotryList({userName: userStore.nickName}).then(res => {
      // 检查res.data是否为数组
      factoryList.value[0] = []
      if (res.data && Array.isArray(res.data)) {
         factoryListTem.value = res.data
         res.data.forEach(item => {
            factoryList.value[0].push(item.deptName)
         })
         factoryId.value = userStore.currentDeptId
      } else {
         // 如果res.data不是数组,设置为空数组
         factoryList.value = []
      }
   }).catch(error => {
      modal.msgError('获取公司列表失败:', error)
      factoryList.value = []
   })
}
const changeFactory = async (arr) => {
   show.value = false;
   const factoryId = factoryListTem.value[arr.indexs[0]].deptId
   const loginForm = {
      username: userStore.name,
      password: uni.getStorageSync('remembered_password'),
      factoryId: factoryId,
   }
   modal.loading("刷新中,请耐心等待...")
   userStore.loginCheckFactory(loginForm).then(() => {
      modal.closeLoading()
      nextTick(() => {
         loginSuccess()
      });
   }).catch(() => {
      modal.closeLoading()
   })
}
function loginSuccess(result) {
   uni.reLaunch({
      url: '/pages/index'
@@ -555,7 +136,6 @@
onMounted(() => {
   // 设置用户信息
   userStore.getInfo()
   getUserLoginFacotryList()
   // 启动通知状态定时器
   startStatusTimer()
});
@@ -675,12 +255,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 +268,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 +278,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 {