瀏覽代碼

:art: 常用工具->个人中心

Ritchie 1 年之前
父節點
當前提交
fea0fcdb3a

二進制
src/assets/home/machineSales.png


+ 1 - 0
src/assets/language/en.json

@@ -706,6 +706,7 @@
     "numberOfOrders": "Order quantity",
     "salesAmount": "Sales amount",
     "commonTools": "Common tools",
+    "machineSales": "Machine sales",
     "deviceManagement": "Machine management",
     "discountCode": "discountCode",
     "distributionSettings": "distributionSettings",

+ 1 - 0
src/assets/language/ja.json

@@ -707,6 +707,7 @@
         "numberOfOrders": "注文数",
         "salesAmount": "売上高",
         "commonTools": "一般ツール",
+        "machineSales": "機械販売",
         "deviceManagement": "装置管理",
         "discountCode": "割引コード",
         "distributionSettings": "分配設定",

+ 1 - 0
src/assets/language/zh.json

@@ -707,6 +707,7 @@
     "numberOfOrders": "订单数",
     "salesAmount": "销售额",
     "commonTools": "常用工具",
+    "machineSales": "机器销售额",
     "deviceManagement": "设备管理",
     "discountCode": "优惠码",
     "distributionSettings": "分销设置",

+ 7 - 0
src/router/index.js

@@ -400,6 +400,13 @@ const router = createRouter({
       component: () => import("@/views/orderExport/index"),
       meta: { index: 1 },
     },
+    // 常用工具
+    {
+      path: "/commonTools",
+      name: "commonTools",
+      component: () => import("@/views/commonTools/index"),
+      meta: { index: 1 },
+    },
     // 任务消息
     {
       path: "/taskMessage",

+ 52 - 0
src/styles/commonTools/index.less

@@ -0,0 +1,52 @@
+.commonToolsPage {
+    width: 100%;
+  
+    .commonToolsBox {
+      width: 100%;
+      height: calc(100% - 60px);
+      overflow: auto;
+      
+      .outer11 {
+        width: 90%;
+        flex-wrap: wrap;
+        margin: 5%;
+  
+        .main25 {
+          width: 33%;
+          height: 3rem;
+          justify-content: space-around;
+  
+          // margin: 0 26px 27px 0;
+          // margin-bottom: 27px;
+          /*        &:nth-last-child(-n + 5) {
+            margin-bottom: 0;
+          } */
+  
+          .mod7 {
+            height: 50px;
+            width: 50px;
+            margin: 0 auto;
+            align-items: center;
+            justify-content: center;
+  
+          }
+  
+          .TextGroup14 {
+            width: 100%;
+  
+            .info15 {
+              width: 100%;
+              // height: 14px;
+              overflow-wrap: break-word;
+              color: rgba(135, 135, 166, 1);
+              font-size: 14px;
+              text-align: center;
+              // white-space: nowrap;
+              line-height: 15px;
+              display: block;
+            }
+          }
+        }
+      }
+    }
+  }

+ 3 - 3
src/styles/home/index.less

@@ -341,7 +341,7 @@
         .ImageText10 {
           // height: 14px;
           // margin-left: 20px;
-          width: 2.2rem;
+          width: 2.5rem;
 
           .wrap2 {
             // width: 78px;
@@ -351,9 +351,9 @@
               // z-index: 2;
               position: relative;
               width: 0.35rem;
-              height: 0.4rem;
+              height: 0.45rem;
               border: 2px rgba(128, 150, 236, 1);
-              background: url("../../assets/home/commonTools.png") center no-repeat;
+              background: url("../../assets/home/machineSales.png") center no-repeat;
               background-size: 100%;
             }
 

+ 11 - 0
src/styles/user/index.less

@@ -161,6 +161,17 @@
                     height: 100%;
                     position: relative;
 
+                    &.commonToolsIcon::after {
+                        content: "";
+                        position: absolute;
+                        background: #fff url("../../assets/home/commonTools.png") top center no-repeat;
+                        background-size: 100%;
+                        width: 0.55rem;
+                        height: 0.55rem;
+                        right: 0.2rem;
+                        top: 0.45rem;
+                    }
+
                     &.taskMessageIcon::after {
                         content: "";
                         position: absolute;

+ 221 - 0
src/views/commonTools/index.vue

@@ -0,0 +1,221 @@
+<template>
+    <!-- 常用工具 -->
+    <div class="commonToolsPage flex-col">
+        <s-header :name="$t('home.commonTools')" :noback="false"></s-header>
+        <div class="commonToolsBox flex-col">
+            <div class="outer11 flex-row">
+                <div class="main25 flex-col" v-for="(item, index) in pushToolList" :key="index"
+                @click="pushToolPage(item.value)">
+                    <img class="mod7 flex-col" :src="showLogo(item.value)" />
+                    <div class="TextGroup14 flex-col">
+                        <!-- <span class="info15" v-html="item.label"></span> -->
+                        <span class="info15">{{ $t(item.label) }}</span>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</template>
+
+
+<script>
+import { onMounted, reactive } from 'vue';
+import sHeader from "@/components/SimpleHeader";
+import { useRouter } from "vue-router";
+import { getLoginUser, styleUrl, $M_Menus } from "../../common/js/utils";
+import { useI18n } from "vue-i18n";
+
+export default {
+    components: { sHeader },
+    setup() {
+        const router = useRouter();
+        const user = getLoginUser();
+        const pushToolList = reactive([]);
+        const menuList = [];
+
+        const { t } = useI18n();
+        // 赋值菜单
+        pushToolList.value = menuList;
+
+        // 设置菜单权限
+        const menuSet = () => {
+
+            // 清空菜单列表
+            // menuList.length = 0;
+            pushToolList.length = 0;
+
+            // 组合菜单权限
+            user.menuCodeList.forEach((item) => {
+                for (const key in $M_Menus) {
+                    // 设备管理M1,设备查看M2,订单数据M4,任务消息M6,销售排行M11,数据概览M14,订单退款M16,系统脱机M17 这些图标不用加载到底部菜单上
+                    if (
+                        item === key &&
+                        (
+                            item !== "M1" &&
+                            item !== "M2" && // M2本身就无logo
+                            item !== "M4" &&
+                            item !== "M6" &&
+                            item !== "M11" &&
+                            item !== "M14" &&
+                            item !== "M16" &&
+                            item !== "M17"
+                        )
+                    ) {
+                        menuList.push({
+                            label: $M_Menus[key],
+                            value: item
+                        });
+                    }
+                }
+
+            });
+
+
+            // 赋值菜单
+            // pushToolList.value = menuList;
+            pushToolList.push(...menuList);
+
+            // 查询是否有apk管理权限
+            const isApkMan = user.menuCodeList.some((item) => {
+                return item === "M19";
+            });
+
+            // 查询是否有账号权限
+            const isAccount = user.menuCodeList.some((item) => {
+                return item === "M8";
+            });
+
+            // 查询是否有订单数据权限
+            // isOrderData.value = user.menuCodeList.some((item) => {
+            //     return item === "M4";
+            // })
+
+            // 查询是否有订单导出权限
+            // const isOrderExport = user.menuCodeList.some((item) => {
+            //   return item === "M9";
+            // })
+
+            // 查询是否有数据概览权限
+            // const isDataOverview = user.menuCodeList.some((item) => {
+            //     return item === "M14";
+            // })
+
+            // 如果没有apk管理
+            if (!isApkMan) {
+                // 如果是公司人,要把apk添加上去
+                // if (user.type === 0 || user.type === 1) {
+                //   pushToolList.value.push({
+                //     label: t("home.apkMan"),
+                //     value: "M19"
+                //   });
+                // }
+            }
+
+            // 如果没有账号权限
+            if (!isAccount) {
+                //  如果是公司人type=0,要把账号权限添加上去
+                if (user.type === 0) {
+                    pushToolList.value.push({
+                        label: t("home.accountPermission"),
+                        value: "M8"
+                    });
+                }
+            }
+
+            // 子商家以上级别,默认可以看到订单详情
+            // if (user.type === 0 || user.type === 2) {
+            //     showDataDiv.value = true;
+            // } else {
+            //     // 如果有数据概览权限 和 订单数据权限
+            //     if (isDataOverview && isOrderData.value) {
+            //         showDataDiv.value = true;
+            //     }
+            // }
+
+        };
+
+        // 常用操作跳转页面
+        const pushToolPage = (index) => {
+            // console.log("常用操作跳转页面menuList >>> " + menuList);
+            switch (index) {
+                case "M1":
+                    router.push({ path: "/device" }); // 设备管理
+                    break;
+                case "M3":
+                    // router.push({ path: "/distributionSet" });
+                    router.push({ path: "/accountOperation" }); // 账户操作
+                    break;
+                case "M4":
+                    router.push({ path: "/orderCenter" }); // 订单数据
+                    break;
+                case "M5":
+                    router.push({ path: "/advertManage" }); // 广告管理
+                    break;
+                case "M6":
+                    router.push({ path: "/taskMessage" });
+                    break;
+                case "M7":
+                    router.push({ path: "/discountCode" });
+                    break;
+                case "M8":
+                    router.push({ path: "/accountPer" });
+                    break;
+                case "M9":
+                    router.push({ path: "/orderExport" });
+                    break;
+                case "M10":
+                    router.push({ path: "/subLedgerManage" });
+                    break;
+                case "M11":
+                    router.push({ path: "/robotranking" });
+                    break;
+                case "M12":
+                    router.push({ path: "/joinpayMch" });
+                    break;
+                case "M13":
+                    router.push({ path: "/shandeMch" });
+                    break;
+                case "M15":
+                    router.push({ path: "/alarmHistory" }); // 报警历史
+                    break;
+                case "M18":
+                    router.push({ path: "/labelMan" });
+                    break;
+                case "M19":
+                    router.push({ path: "/apkManage" });
+                    break;
+                case "M20":
+                    router.push({ path: "/merchantManage" });
+                    break;
+            }
+        };
+
+        // 显示logo
+        const showLogo = (url) => {
+            return require(`../../assets/home/${url}.png`);
+        };
+
+        // 初始化页面获取列表
+        onMounted(async () => {
+            styleUrl('commonTools');
+            // 设置菜单权限
+            menuSet();
+        });
+        const pushPageList = (url) => {
+            router.push(url);
+        }
+        return {
+            pushToolList,
+            pushPageList,
+            user,
+            pushToolPage,
+            // showDataDiv,
+            showLogo,
+        };
+    }
+};
+</script>
+
+<style lang="less" scoped>
+@import "../../common/style/common.less";
+</style>

+ 28 - 37
src/views/home/index.vue

@@ -5,8 +5,8 @@
       <s-header :name="sys ? sys.title : sysTitle" :noback="true" :isFixed="false"></s-header>
       <!-- 留言滚动条 -->
       <template v-if="noticeContent.title">
-        <van-notice-bar @click="noticeClk" mode="link" :scrollable="true" color="rgba(64,77,116,1)" background="#fff" style="font-size: 0.375rem;"
-          left-icon="volume-o" :text="noticeContent.title" />
+        <van-notice-bar @click="noticeClk" mode="link" :scrollable="true" color="rgba(64,77,116,1)" background="#fff"
+          style="font-size: 0.375rem;" left-icon="volume-o" :text="noticeContent.title" />
       </template>
       <div class="intervalRow"></div>
       <div class="nameDeviceRow flex-col">
@@ -35,34 +35,34 @@
       <div v-if="showDataDiv" class="o-plr-8 o-pt-10">
         <div class="salesData flex-col" @click="pushOrderCenter">
           <!-- <div class="block5 flex-col"> -->
-            <div class="topTitle flex-row justify-end">
-              <span class="txt10">{{ $t("home.orderData") }}</span>
-              <div class="layer4 flex-col"></div>
-            </div>
-            <div class="salesDataBox flex-row">
-              <div class="dataGroup flex-col">
-                <div class="dataGroupBox flex-row justify-center">
-                  <!-- 首页 - 订单数据 - 收入总额¥ -->
-                  <!-- <span class="word8">&yen;</span> -->
-                  <span class="currencySymbol">{{ currencySymbol }}</span>
-                  <span class="dataNum">{{ salesVolume.toFixed(2) }}</span>
-                </div>
-                <span class="dataText">{{ $t("home.totalIncome") }}</span>
+          <div class="topTitle flex-row justify-end">
+            <span class="txt10">{{ $t("home.orderData") }}</span>
+            <div class="layer4 flex-col"></div>
+          </div>
+          <div class="salesDataBox flex-row">
+            <div class="dataGroup flex-col">
+              <div class="dataGroupBox flex-row justify-center">
+                <!-- 首页 - 订单数据 - 收入总额¥ -->
+                <!-- <span class="word8">&yen;</span> -->
+                <span class="currencySymbol">{{ currencySymbol }}</span>
+                <span class="dataNum">{{ salesVolume.toFixed(2) }}</span>
               </div>
-              <div class="dataGroup flex-col">
-                <div class="dataGroupBox flex-col justify-between">
-                  <span class="dataNum">{{ salesNumber }}</span>
-                  <span class="dataText">{{ $t("home.productNum") }}</span>
-                </div>
+              <span class="dataText">{{ $t("home.totalIncome") }}</span>
+            </div>
+            <div class="dataGroup flex-col">
+              <div class="dataGroupBox flex-col justify-between">
+                <span class="dataNum">{{ salesNumber }}</span>
+                <span class="dataText">{{ $t("home.productNum") }}</span>
               </div>
-              <div class="dataGroup flex-col">
-                <div class="dataGroupBox flex-col justify-between">
-                  <span class="dataNum">{{ orderNumber }}</span>
-                  <span class="dataText">{{ $t("home.numberOfOrders") }}</span>
-                </div>
+            </div>
+            <div class="dataGroup flex-col">
+              <div class="dataGroupBox flex-col justify-between">
+                <span class="dataNum">{{ orderNumber }}</span>
+                <span class="dataText">{{ $t("home.numberOfOrders") }}</span>
               </div>
             </div>
           </div>
+        </div>
         <!-- </div> -->
       </div>
       <!-- 时间 -->
@@ -82,29 +82,20 @@
       </div>
       <kNoData v-else></kNoData>
       <!-- </div> -->
-      <!-- 常用工具 -->
+      <!-- 机器销售额 -->
       <div class="outer9 flex-col justify-center">
         <div class="main24 flex-col justify-between">
           <div class="ImageText10 flex-col">
             <div class="wrap2 flex-row justify-between">
               <div class="outer10 flex-col"></div>
               <div class="TextGroup13 flex-col">
-                <span class="txt13">{{ $t("home.commonTools") }}</span>
+                <span class="txt13">{{ $t("home.machineSales") }}</span>
               </div>
             </div>
           </div>
         </div>
       </div>
-      <div class="outer11 flex-row">
-        <div class="main25 flex-col" v-for="(item, index) in pushToolList" :key="index"
-          @click="pushToolPage(item.value)">
-          <img class="mod7 flex-col" :src="showLogo(item.value)" />
-          <div class="TextGroup14 flex-col">
-            <!-- <span class="info15" v-html="item.label"></span> -->
-            <span class="info15">{{ $t(item.label) }}</span>
-          </div>
-        </div>
-      </div>
+
     </div>
     <!-- 通知弹窗 -->
     <kDialog :dialogTitle="$t('home.notificationPop.notification')" :cancelBtnTxt="$t('home.notificationPop.nextTime')"

+ 8 - 0
src/views/user.vue

@@ -214,6 +214,14 @@
           <span class="baseText">{{ $t("user.commonOperations") }}</span>
         </div>
         <div class="operListBox">
+          <!-- 常用工具 -->
+          <div class="taskListRow flex-col" @click="pushPageList('/commonTools')">
+            <div class="taskIcon commonToolsIcon"></div>
+            <div class="taskRight">
+              <div class="taskTitle">{{ $t("home.commonTools") }}</div>
+            </div>
+          </div>
+
           <!-- 任务消息 -->
           <div v-if="roleCheck()" class="taskListRow flex-col" @click="pushPageList('/taskMessage')">
             <div class="taskIcon taskMessageIcon"></div>