Browse Source

feat: "权限划分-订单数据隐藏"

wangzeyu@tom.com 2 years ago
parent
commit
788ff75782

+ 1 - 0
package.json

@@ -24,6 +24,7 @@
     "js-base64": "^3.7.5",
     "js-md5": "^0.7.3",
     "lib-flexible": "^0.3.2",
+    "lodash": "^4.17.21",
     "moment": "^2.29.4",
     "pushstate-server": "^3.1.0",
     "qrcode-terminal": "^0.12.0",

BIN
src/assets/home/M14.png


File diff suppressed because it is too large
+ 379 - 382
src/assets/language/zh.json


+ 7 - 4
src/common/js/utils.js

@@ -12,10 +12,12 @@ const t = i18n.global.t;
 // 菜单标识
 export const $M_Menus = {
   "M1":t("role.deviceManagement"),//设备管理
-  "M2":t("role.deviceView"),//设备查看
-  // "M3":t("role.accountOperation"),//分销设置
+  // "M2":t("role.deviceView"),//设备查看
+  // "M3":t("role.distributionSettings"),//分销设置
   "M3":t("role.accountOperation"),//账户操作
-  "M4":t("role.orderData"),//报警历史
+  // "M4":t("role.orderData"),//报警历史
+  "M4":t("role.orderData"),//订单数据
+
   "M5":t("role.advertisingManagement"),//广告管理
   "M6":t("role.taskMessage"),//任务消息
   "M7":t("role.discountCode"),//优惠码
@@ -26,7 +28,8 @@ export const $M_Menus = {
   // "M12":t("role.withdrawalAccountNo"),//提现账号
   // "M13":t("role.standbyWithdrawalAccountNo"),//备用提现账号
   "M14":t("role.dataOverview"),//数据概览
-  "M15":t("role.alarmHistory"),//订单数据
+  // "M15":t("role.alarmHistory"),//订单数据
+  "M15":t("role.alarmHistory"),//报警历史
   "M16":t("role.orderRefund"),//订单退款
   "M17":t("role.systemOffline"),//系统脱机
   // "M18":t("role.labelMan"),//标签管理

+ 39 - 33
src/components/commom/kCascader/index.vue

@@ -1,14 +1,8 @@
 <template>
   <!-- 地区弹窗 -->
   <van-popup v-model:show="areaPopshow" round position="bottom">
-    <van-cascader
-      @close="areaPopshow = false"
-      v-model="cascaderValue"
-      :title="$t('kCascader.selectRegion')"
-      :options="options"
-      @change="onChange"
-      @finish="onFinish"
-    />
+    <van-cascader @close="areaPopshow = false" v-model="cascaderValue" :title="$t('kCascader.selectRegion')"
+      :options="options" @change="onChange" @finish="onFinish" />
   </van-popup>
 </template>
 
@@ -122,31 +116,44 @@ export default {
     const selectArea = () => {
       Api_getAreaDetail({ value: selectId.value }).then(async (res) => {
         const resData = res.data;
-        if (resData.code === "00000") {
-          if (resData.data.length > 0) {
-            let areaName = '';
-            // 当第二级获取完后才获取第三级,不然不会默认选中
-            await getAddress(
-              resData.data[0]["value"],
-              0,
-              resData.data[0]["children"][0]["value"]
-            );
-            // 如果存在第三级
-            if (resData.data[0]["children"][0]["children"]) {
-                areaName = `${resData.data[0]['text']}/${resData.data[0]["children"][0]['text']}/${resData.data[0]["children"][0]["children"][0]['text']}`;
-              // 默认选中最后一级的值
-              cascaderValue.value =
-                resData.data[0]["children"][0]["children"][0]["value"];
-            } else {
-                areaName = `${resData.data[0]['text']}/${resData.data[0]["children"][0]['text']}`;
-              // 如果存在第二级
-              // 默认选中最后一级的值
-              cascaderValue.value = resData.data[0]["children"][0]["value"];
-            }
-            // 回显到input
-            emit('getareaname',areaName);
+        // if (resData.code === "00000") {
+        //   if (resData.data.length > 0) {
+        //     let areaName = '';
+        //     // 当第二级获取完后才获取第三级,不然不会默认选中
+        //     await getAddress(
+        //       resData.data[0]["value"],
+        //       0,
+        //       resData.data[0]["children"][0]["value"]
+        //     );
+        //     // 如果存在第三级
+        //     if (resData.data[0]["children"][0]["children"]) {
+        //         areaName = `${resData.data[0]['text']}/${resData.data[0]["children"][0]['text']}/${resData.data[0]["children"][0]["children"][0]['text']}`;
+        //       // 默认选中最后一级的值
+        //       cascaderValue.value =
+        //         resData.data[0]["children"][0]["children"][0]["value"];
+        //     } else {
+        //         areaName = `${resData.data[0]['text']}/${resData.data[0]["children"][0]['text']}`;
+        //       // 如果存在第二级
+        //       // 默认选中最后一级的值
+        //       cascaderValue.value = resData.data[0]["children"][0]["value"];
+        //     }
+        //     // 回显到input
+        //     emit('getareaname',areaName);
+        //   }
+        // }
+        if (resData && resData.code === "00000" && resData.data && resData.data.length > 0 && resData.data[0]["children"] && resData.data[0]["children"][0]) {
+          const firstLevelValue = resData.data[0]["value"];
+          const secondLevelValue = resData.data[0]["children"][0]["value"];
+          if (resData.data[0]["children"][0]["children"]) {
+            const thirdLevelValue = resData.data[0]["children"][0]["children"][0]["value"];
+            await getAddress(firstLevelValue, 0, thirdLevelValue);
+            emit('getareaname', `${resData.data[0]['text']}/${resData.data[0]["children"][0]['text']}/${resData.data[0]["children"][0]["children"][0]['text']}`);
+          } else {
+            await getAddress(firstLevelValue, 0, secondLevelValue);
+            emit('getareaname', `${resData.data[0]['text']}/${resData.data[0]["children"][0]['text']}`);
           }
         }
+        
       });
     };
     return {
@@ -162,5 +169,4 @@ export default {
 };
 </script>
 
-<style lang="less" scoped>
-</style>
+<style lang="less" scoped></style>

+ 2 - 2
src/utils/config.js

@@ -14,8 +14,8 @@ if (process.env.NODE_ENV === 'development') {
 } else {
     // 判断当前页面的主机名是否包含 'szwltest.sunzee.com.cn'。如果包含,则条件成立(即为 true);否则,条件不成立
     if (window.location.host.indexOf('szwltest.sunzee.com.cn') !== -1) {
-        // baseURL = 'https://szwl.sunzee.com.cn/'
-        baseURL = 'https://szwltest.sunzee.com.cn/'
+        baseURL = 'https://szwl.sunzee.com.cn/'
+        // baseURL = 'http://szwltest.sunzee.com.cn:49002/'
     } else {
         baseURL = 'https://sz.sunzee.com.cn/'
         // baseURL = 'https://xavi.c1.sidoc.cn'

+ 1 - 1
src/views/device/index.vue

@@ -60,7 +60,7 @@
                   <div class="l-flex-RC">
                     <!-- 报警标志 -->
                     <div v-if="item.hasTodayAlarm" class="box4 flex-col">
-                      <!-- <img class="pic1" src="../../assets/home/M4.png" /> -->
+                      <!-- <img class="pic1" src="../../assets/home/M15.png" /> -->
                     </div>
                     <div class="layer2 flex-col" :class="{
                       deviceOn: item.eqeStatus === 1,

+ 158 - 90
src/views/home/index.vue

@@ -2,39 +2,25 @@
   <!-- 主页 -->
   <div class="homePage flex-col">
     <div class="homeBox">
-      <s-header
-          :name="sys ? sys.title : $t('public.sysName')"
-          :noback="true"
-          :isFixed="false"
-      ></s-header>
+      <s-header :name="sys ? sys.title : $t('public.sysName')" :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"
-            left-icon="volume-o"
-            :text="noticeContent.title"
-        />
+        <van-notice-bar @click="noticeClk" mode="link" :scrollable="true" color="rgba(64,77,116,1)" background="#fff"
+          left-icon="volume-o" :text="noticeContent.title" />
       </template>
       <div class="intervalRow"></div>
       <div class="nameDeviceRow flex-col">
         <span class="txt3">{{ userName }}</span>
         <div class="l-flex-RC">
-          <span class="info3"
-          >{{ equipStatus.machineTotalNum }}
-            {{ $t("home.totalEquipment") }}</span
-          >
+          <span class="info3">{{ equipStatus.machineTotalNum }}
+            {{ $t("home.totalEquipment") }}</span>
           <div class="lineCon o-mlr-6"></div>
-          <span class="word2"
-          >{{ equipStatus.machineUseNum }} {{ $t("home.running") }}</span
-          >
+          <span class="word2">{{ equipStatus.machineUseNum }} {{ $t("home.running") }}</span>
         </div>
       </div>
+      <!-- 没有数据概览M14权限的人看不到数据概览和ECharts -->
       <!-- 数据概览 -->
-      <div class="titleBox flex-col">
+      <div v-if="showDataDiv" class="titleBox flex-col">
         <div class="layer2 flex-row">
           <div class="section5 flex-col"></div>
           <div class="TextGroup2 flex-col">
@@ -43,10 +29,10 @@
         </div>
       </div>
       <!-- 时间选择 -->
-      <dateSelectList @update="update($event)"></dateSelectList>
-      <typeSelectList :isHome="true" @upselectdata="upselectdata($event)"></typeSelectList>
+      <dateSelectList v-if="showDataDiv" @update="update($event)"></dateSelectList>
+      <typeSelectList v-if="showDataDiv" :isHome="true" @upselectdata="upselectdata($event)"></typeSelectList>
       <!-- 订单数据 -->
-      <div class="o-plr-8">
+      <div v-if="showDataDiv" class="o-plr-8">
         <div class="outer5 flex-col" @click="pushOrderCenter">
           <div class="block5 flex-col">
             <div class="topTitle flex-row justify-end">
@@ -78,13 +64,28 @@
         </div>
       </div>
       <!-- 时间 -->
-      <div class="c-text-c c-text-18">
+      <div v-if="showDataDiv" class="c-text-c c-text-18">
         {{ $M_FormatTime(dateSelect.startDate, 'YYYY-MM-DD') }}--{{ $M_FormatTime(dateSelect.endDate, 'YYYY-MM-DD') }}
       </div>
-      <div v-if="!noData(salesVolume, salesNumber)">
+      <!-- ECharts
+      <template v-if="showDataDiv && !noData(salesVolume, salesNumber)">
+        <div ref="chartBox" class="Chart1 flex-col"></div>
+      </template>
+      <template v-else>
+        <kNoData v-if="showDataDiv"></kNoData>
+      </template> -->
+
+      <!-- <div> -->
+      <div v-if="showDataDiv && !noData(salesVolume, salesNumber)">
         <div ref="chartBox" class="Chart1 flex-col"></div>
       </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">
@@ -98,13 +99,8 @@
         </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="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>
           </div>
@@ -112,19 +108,10 @@
       </div>
     </div>
     <!-- 通知弹窗 -->
-    <kDialog
-        :dialogTitle="$t('home.notificationPop.notification')"
-        :cancelBtnTxt="$t('home.notificationPop.nextTime')"
-        :confirmBtnTxt="$t('home.notificationPop.roger')"
-        ref="kDialogRef"
-        @confirmclk="confirmClk"
-    >
+    <kDialog :dialogTitle="$t('home.notificationPop.notification')" :cancelBtnTxt="$t('home.notificationPop.nextTime')"
+      :confirmBtnTxt="$t('home.notificationPop.roger')" ref="kDialogRef" @confirmclk="confirmClk">
       <template #content>
-        <div
-            class="o-w"
-            style="max-height: 50vh; overflow-y: auto"
-            v-html="noticeContent.note"
-        ></div>
+        <div class="o-w" style="max-height: 50vh; overflow-y: auto" v-html="noticeContent.note"></div>
       </template>
     </kDialog>
     <nav-bar></nav-bar>
@@ -135,13 +122,13 @@
 // 导入无数据组件
 import kNoData from "../../components/commom/kNoData/index.vue";
 import kDialog from "../../components/commom/kDialog/index.vue";
-import {onMounted, ref, nextTick} from "vue";
+import { onMounted, ref, nextTick } from "vue";
 import sHeader from "../../components/SimpleHeader";
 import navBar from "../../components/NavBar";
 import dateSelectList from "../../components/dateSelectList";
 import typeSelectList from "../../components/typeSelectList";
-import {getLoginUser, $M_Menus, $M_FormatTime, styleUrl} from "../../common/js/utils";
-import {useRouter} from "vue-router";
+import { getLoginUser, $M_Menus, $M_FormatTime, styleUrl } from "../../common/js/utils";
+import { useRouter } from "vue-router";
 import {
   getStatistics,
   Api_getNotice,
@@ -149,8 +136,9 @@ import {
   Api_getUpdateNotice,
 } from "../../service/home";
 import dateUtil from "../../utils/dateUtil";
-import {useI18n} from "vue-i18n";
-import {Toast} from "vant";
+import { useI18n } from "vue-i18n";
+import { Toast } from "vant";
+// import { once } from "lodash";
 
 export default {
   name: "home",
@@ -167,7 +155,7 @@ export default {
     const equipStatus = ref({});
     // 获取设备情况
     const getMachineNum = () => {
-      Api_postMachineNum({adminId: user.id}).then((res) => {
+      Api_postMachineNum({ adminId: user.id }).then((res) => {
         console.log("res", res);
         equipStatus.value = res.data.data || {};
       });
@@ -175,12 +163,12 @@ export default {
     const noticeContent = ref({});
     // 获取公告
     const getNotice = () => {
-      Api_getNotice({adminId: user.id}).then((res) => {
+      Api_getNotice({ adminId: user.id }).then((res) => {
         console.log("res", res);
         noticeContent.value = res.data.data || {};
       });
     };
-    const {t} = useI18n();
+    const { t } = useI18n();
     // 通知弹窗
     const kDialogRef = ref(null);
     // 点击通知栏
@@ -209,7 +197,7 @@ export default {
     let chartObj = null;
     // 跳转订单中心
     const pushOrderCenter = () => {
-      router.push({path: "/orderCenter"});
+      router.push({ path: "/orderCenter" });
     };
     const dateSelect = ref({});
     const update = (uDate) => {
@@ -235,9 +223,9 @@ export default {
         clientId: typeSelectData.clientId,
         username: typeSelectData.userName, // 商家
         equipmentId:
-            typeSelectData.equipmentId === "" ? null : typeSelectData.equipmentId,
+          typeSelectData.equipmentId === "" ? null : typeSelectData.equipmentId,
       };
-      const {data} = await getStatistics(params);
+      const { data } = await getStatistics(params);
       if (data.code && data.data) {
         salesVolume.value = 0;
         salesNumber.value = 0;
@@ -314,7 +302,7 @@ export default {
               {
                 ...data.data.series[0],
                 type: "bar",
-                itemStyle: {color: "#e59a6d"},
+                itemStyle: { color: "#e59a6d" },
                 name: t("home.productNum"),
                 label: {
                   show: true,
@@ -324,7 +312,7 @@ export default {
               {
                 ...data.data.series[1],
                 type: "bar",
-                itemStyle: {color: "#4d6add"},
+                itemStyle: { color: "#4d6add" },
                 name: t("home.salesAmount"),
                 label: {
                   show: true,
@@ -335,9 +323,9 @@ export default {
           };
 
           option.dataZoom[0]["startValue"] =
-              data.data.categories[data.data.categories.length - 5];
+            data.data.categories[data.data.categories.length - 5];
           option.dataZoom[0]["endValue"] =
-              data.data.categories[data.data.categories.length - 1];
+            data.data.categories[data.data.categories.length - 1];
           chartObj && chartObj.setOption(option);
           //图形宽度随屏幕宽度改变而改变
           window.onresize = chartObj.resize;
@@ -348,22 +336,24 @@ export default {
     // 页面初始化
     onMounted(() => {
       // 加载样式
-      styleUrl('home')
+      styleUrl('home');
       if (localStorage.getItem("loginSys")) {
         const loginSysString = localStorage.getItem("loginSys");
         sys.value = JSON.parse(loginSysString);
       }
       // 设置菜单权限
       menuSet();
+      // 设置菜单权限, 只执行一次
+      // once(menuSet);
       dateSelect.value = {
         chartType: "day",
         startDate: dateUtil.formateDate(
-            new Date(new Date(new Date().getTime()).setHours(0, 0, 0, 0)),
-            "yyyy-MM-dd hh:mm:ss"
+          new Date(new Date(new Date().getTime()).setHours(0, 0, 0, 0)),
+          "yyyy-MM-dd hh:mm:ss"
         ),
         endDate: dateUtil.formateDate(
-            new Date(new Date(new Date().getTime()).setHours(23, 59, 59, 59)),
-            "yyyy-MM-dd hh:mm:ss"
+          new Date(new Date(new Date().getTime()).setHours(23, 59, 59, 59)),
+          "yyyy-MM-dd hh:mm:ss"
         ),
       };
       typeSelectData = {
@@ -375,20 +365,36 @@ export default {
       getNotice();
       // 获取设备情况
       getMachineNum();
+
     });
+
+    const menuList = [];
+
+    const showDataDiv = ref(false);
+
+    const isOrderData = ref(false);
+
     // 设置菜单权限
     const menuSet = () => {
-      const menuList = [];
+
+      // 清空菜单列表
+      menuList.length = 0;
+
       // 组合菜单权限
       user.menuCodeList.forEach((item) => {
         for (const key in $M_Menus) {
-          // 除了设备查看M2,数据概况M14,订单退款M16,系统脱机M17不用加在菜单上
+          // 设备管理M1,设备查看M2,订单数据M4,任务消息M6,数据概览M14,订单退款M16,系统脱机M17 这些图标不用加载到底部菜单上
           if (
-              item === key &&
-              (item !== "M2" &&
-                  item !== "M14" &&
-                  item !== "M16" &&
-                  item !== "M17")
+            item === key &&
+            (
+              item !== "M1" &&
+              item !== "M2" && // M2本身就无logo
+              // item !== "M4" && // 这个隐藏没用
+              item !== "M6" &&
+              item !== "M14" &&
+              item !== "M16" &&
+              item !== "M17"
+            )
           ) {
             menuList.push({
               label: $M_Menus[key],
@@ -396,17 +402,37 @@ export default {
             });
           }
         }
+
       });
+
       // 赋值菜单
       pushToolList.value = menuList;
-      // 查询是否有apk管理
+
+      // 查询是否有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添加上去
@@ -417,6 +443,7 @@ export default {
           });
         }
       }
+
       // 如果没有账号权限
       if (!isAccount) {
         //  如果是公司人type=0,要把账号权限添加上去
@@ -427,61 +454,100 @@ export default {
           });
         }
       }
+
+      // 如果没有数据概览权限
+      // if (!isDataOverview) {
+      //   // 如果是 公司人 或 商家,把账号权限加上去
+      //   if (user.type === 0 || user.type === 1 || user.type === 2) {
+      //     pushToolList.value.push({
+      //       label: t("home.dataOverview"),
+      //       value: "M14"
+      //     });
+      //   }
+      // }
+
+      // 如果没有订单数据权限
+      if (isOrderData.value === false) {
+        // 如果是 公司人 或 商家,把账号权限加上去
+        // TODO: 先测试
+        if (user.type === 0 || user.type === 1 || user.type === 2) {
+          pushToolList.value.push({
+            label: t("home.orderData"),
+            value: "M4"
+          });
+        }
+      }
+
+      // 如果没有数据概览权限 和 订单数据权限
+      if (isDataOverview && isOrderData.value) {
+        showDataDiv.value = true;
+      }
+
+
     };
+
     // 常用操作跳转页面
     const pushToolPage = (index) => {
+      // console.log("常用操作跳转页面menuList >>> " + menuList);
       switch (index) {
         case "M1":
-          router.push({path: "/device"}); // 设备管理
+          router.push({ path: "/device" }); // 设备管理
           break;
         case "M3":
           // router.push({ path: "/distributionSet" });
-          router.push({path: "/accountOperation"}); // 账户操作
+          router.push({ path: "/accountOperation" }); // 账户操作
           break;
         case "M4":
-          router.push({path: "/orderCenter"}); // 报警历史
+          router.push({ path: "/orderCenter" }); // 订单数据
           break;
         case "M5":
-          router.push({path: "/advertManage"});
+          router.push({ path: "/advertManage" }); // 广告管理
           break;
         case "M6":
-          router.push({path: "/taskMessage"});
+          router.push({ path: "/taskMessage" });
           break;
         case "M7":
-          router.push({path: "/discountCode"});
+          router.push({ path: "/discountCode" });
           break;
         case "M8":
-          router.push({path: "/accountPer"});
+          router.push({ path: "/accountPer" });
           break;
         case "M9":
-          router.push({path: "/orderExport"});
+          // 同时具备 订单数据M4 权限的人才能使用订单导出功能
+          if (isOrderData.value) {
+            router.push({ path: "/orderExport" });
+          } else {
+            console.log("权限不足,无法跳转");
+          }
           break;
         case "M10":
-          router.push({path: "/subLedgerManage"});
+          router.push({ path: "/subLedgerManage" });
           break;
         case "M11":
-          router.push({path: "/robotranking"});
+          router.push({ path: "/robotranking" });
           break;
         case "M12":
-          router.push({path: "/joinpayMch"});
+          router.push({ path: "/joinpayMch" });
           break;
         case "M13":
-          router.push({path: "/shandeMch"});
+          router.push({ path: "/shandeMch" });
           break;
         case "M15":
-          router.push({path: "/alarmHistory"});
+          router.push({ path: "/alarmHistory" }); // 报警历史
           break;
         case "M18":
-          router.push({path: "/labelMan"});
+          router.push({ path: "/labelMan" });
           break;
         case "M19":
-          router.push({path: "/apkManage"});
+          router.push({ path: "/apkManage" });
           break;
         case "M20":
-          router.push({path: "/merchantManage"});
+          router.push({ path: "/merchantManage" });
           break;
       }
     };
+
+
     // 如果是空数据
     const noData = (volumes, nums) => {
       if (!volumes && !nums) {
@@ -515,8 +581,10 @@ export default {
       showLogo,
       dateSelect,
       $M_FormatTime,
+      showDataDiv
     };
   },
+
 };
 </script>
 

+ 1 - 1
src/views/orderExport/index.vue

@@ -183,7 +183,7 @@ export default {
       };
       getOrderList(Object.assign(param, searchParams)).then((res) => {
         const { data } = res.data;
-        console.log('data', data)
+        console.log('data的值是 >>>', data)
         if (data) {
           refreshing.value = false;
           ruleData.tableData.push(...data.records);

+ 1 - 1
src/views/role/add.vue

@@ -128,7 +128,7 @@ export default {
     });
     // 设置菜单权限
     const menuSet = ()=>{
-      // 如果不是管理员权限type=0,要删除
+      // 如果不是管理员权限type=0,要删除 广告管理M5,杉德分账M10,系统脱机M17,apk管理M19
       if(user.type !== 0){
         delete $M_Menus['M5'];
         delete $M_Menus['M10'];

+ 22 - 18
src/views/role/index.vue

@@ -85,25 +85,29 @@ export default {
     const accountPerList = ref([]); // 列表集合
     const operCheckShow = ref(false);
     const menuCodeList = [
-      { label: t('role.deviceManagement'), value: 'M1' },
+      { label: t('role.deviceManagement'), value: 'M1' }, //设备管理
       { label: t('role.deviceView'), value: 'M2' },
-      { label: t('role.distributionSettings'), value: 'M3' },
-      { label: t('role.alarmHistory'), value: 'M4' },
-      { label: t('role.advertisingManagement'), value: 'M5' },
-      { label: t('role.taskMessage'), value: 'M6' },
-      { label: t('role.discountCode'), value: 'M7' },
-      { label: t('role.accountPermission'), value: 'M8' },
-      { label: t('role.orderExport'), value: 'M9' },
-      { label: t('role.shandeSubLedger'), value: 'M10' },
-      { label: t('role.salesRanking'), value: 'M11' },
-      { label: t('role.withdrawalAccountNo'), value: 'M12' },
-      { label: t('role.standbyWithdrawalAccountNo'), value: 'M13' },
-      { label: t('role.dataOverview'), value: 'M14' },
-      { label: t('role.orderData'), value: 'M15' },
-      { label: t('role.orderRefund'), value: 'M16' },
-      { label: t('role.systemOffline'), value: 'M17' },
-      { label: t('role.labelMan'), value: 'M18' },
-      { label: t('role.apkMan'), value: 'M19' },
+      // { label: t('role.distributionSettings'), value: 'M3' }, //分销设置
+      { label: t('role.accountOperation'), value: 'M3' }, //账户操作
+      // { label: t('role.alarmHistory'), value: 'M4' },
+      { label: t('role.orderData'), value: 'M4' }, //订单数据
+      { label: t('role.advertisingManagement'), value: 'M5' }, //广告管理
+      { label: t('role.taskMessage'), value: 'M6' }, //任务消息
+      { label: t('role.discountCode'), value: 'M7' }, //优惠码
+      { label: t('role.accountPermission'), value: 'M8' }, //账号权限
+      { label: t('role.orderExport'), value: 'M9' }, //订单导出
+      { label: t('role.shandeSubLedger'), value: 'M10' }, //杉德分账
+      { label: t('role.salesRanking'), value: 'M11' }, //销售排行
+      { label: t('role.withdrawalAccountNo'), value: 'M12' }, //提现账号
+      { label: t('role.standbyWithdrawalAccountNo'), value: 'M13' }, //备用提现账号
+      { label: t('role.dataOverview'), value: 'M14' }, //数据概览
+      // { label: t('role.orderData'), value: 'M15' },
+      { label: t('role.alarmHistory'), value: 'M15' }, //报警历史
+      { label: t('role.orderRefund'), value: 'M16' }, //订单退款
+      { label: t('role.systemOffline'), value: 'M17' }, //系统脱机
+      { label: t('role.labelMan'), value: 'M18' }, //标签管理
+      { label: t('role.apkMan'), value: 'M19' } //apk管理
+      // { label: t('role.merchantMan'), value: 'M20' } //商户管理
     ];
     let searchParams = reactive({ adminId: user.id });
     // 初始化页面获取列表

+ 23 - 8
src/views/user.vue

@@ -149,10 +149,9 @@
                         </div>
                       </div>
                     </div>-->
-
           <!-- 绑定微信 -->
           <div v-if="isInWeChat" class="taskListRow flex-col" @click="pushPageList('/bindWechat')">
-            <!--                        <div class="taskListRow flex-col" @click="pushPageList('/bindWechat')">-->
+            <!--          <div class="taskListRow flex-col" @click="pushPageList('/bindWechat')">-->
             <div class="taskIcon bindWechatIcon"></div>
             <div class="taskRight">
               <div class="taskTitle">
@@ -215,7 +214,7 @@ import {
   $M_PhoneTest,
 } from "@/common/js/utils";
 import { useRouter } from "vue-router";
-import { tAdminGetRelation, tAdminSetRelationAdmin, getIfForeign } from "@/service/user";
+import { tAdminGetRelation, tAdminSetRelationAdmin } from "@/service/user";
 import { Toast } from "vant";
 import { useI18n } from "vue-i18n";
 import { styleUrl } from "../common/js/utils";
@@ -446,20 +445,36 @@ export default {
     // 是否内陆或海外
     const isInland = ref(true);
     const isAbroad = ref(false);
+    // const checkIsAbroad = async () => {
+    //   try {
+    //     const { data } = await getIfForeign(user.id);
+    //     console.log("isAbroad >>> ", data);
+
+    //     if (data.data === '1') {
+    //       // TODO: 这里先把isAbroad设置为fasle,等开发完成再改成true;
+    //       isAbroad.value = false;
+    //       isInland.value = false;
+    //     }
+    //   } catch (error) {
+    //     console.error(error);
+    //   }
+    // };
     const checkIsAbroad = async () => {
       try {
-        const { data } = await getIfForeign(user.id);
-        console.log("isAbroad >>> ", data);
-
-        if (data.data === '1') {
+        const userInfo = localStorage.getItem("loginUser");
+        const userIfForeign = JSON.parse(userInfo);
+        console.log("用户的海内外信息" + userIfForeign.ifForeign);
+        // console.log("看下user是什么***" + user.menuCodeList);
+        if (userIfForeign.ifForeign === '1') {
           // TODO: 这里先把isAbroad设置为fasle,等开发完成再改成true;
-          isAbroad.value = false;
+          isAbroad.value = true;
           isInland.value = false;
         }
       } catch (error) {
         console.error(error);
       }
     };
+
     onMounted(() => {
       checkInWechat();
       checkIsAbroad();