| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 | <script setup lang="ts">import router from "@/router";import hxs from "@/subPack/static/hxs.png";import hx from "@/static/index/hx.png";import bk from "@/static/index/bk.png";import pj from "@/static/index/pj.png";import ye from "@/static/index/ye.png";import yg from "@/static/index/yg.png";import pz from "@/static/index/pz.png";import ls from "@/static/index/ls.png";import nz from "@/static/index/nz.png";import sm from "@/static/index/sm.png";const { statusBarHeight } = uni.getSystemInfoSync();const { token, userInfo, orgCode, title, isShowLoging, topMenu, StoreMenu } =  storeToRefs(useUserStore());const { data: dept, send: getDeptList } = useRequest(  () => Apis.sys.getCurrentUserDeparts({}),  {    initialData: [],    immediate: false,  },).onSuccess(() => {  title.value = String(dept.value.list[0].departName);});const { data: sysMsg, send: getmsgData } = useRequest(  () => Apis.app.getMsg({}),  { immediate: false },);function handleCommenPath(url: string) {  if (url == "/subPack/writeOff/index") {    uni.scanCode({      success: function (res) {        console.log(res, "扫码信息");        if (res.result) {          handleCommenPath(`/subPack/writeOff/index?id=${res.result}`);        } else {          uni.showToast({            title: "请检查二维码是否正确",            icon: "none",          });        }      },      fail(result) {        console.log(result, "获取二维码失败");        uni.showToast({          title: "请检查二维码是否正确",          icon: "none",        });      },    });  } else {    router.push(url);  }}onMounted(() => {  if (token.value) {    getDeptList();  }});onShow(() => {  if (token.value) {    getmsgData();    useUserStore().getMenuList();  }});watch(  () => isShowLoging.value,  () => {    if (isShowLoging.value) {      setTimeout(() => {        uni.showToast({          image: hxs,          title: "核销成功",        });        isShowLoging.value = false;      }, 1000);    }  },);function getIcon(path: string) {  const iconMap: Record<string, string> = {    "/subPack/classInspection/index?type=0": pz,    "/subPack/classInspection/index?type=1": ls,    "/subPack/classInspection/index?type=2": nz,    "/subPack/writeOffDetaile/index": hx,    "/subPack/classInspection/index?type=3": bk,    "/subPack/Evaluation/index": pj,    "/subPack/Storebalance/index": ye,    "/subPack/EmployeeList/index": yg,    "/subPack/writeOff/index": sm,  };  return iconMap[path] || "";}function getItemClass(path: string) {  const classMap: Record<string, string> = {    "/subPack/classInspection/index?type=0": "header",    "/subPack/classInspection/index?type=1": "ls",    "/subPack/writeOff/index": "sm",    "/subPack/classInspection/index?type=2": "kc",  };  return classMap[path] || "";}</script><template>  <view class="h-screen box-border header" :style="{ paddingTop: `${statusBarHeight}px` }">    <view class="h-58rpx"></view>    <view class="px-32rpx mt-48rpx" v-if="!token">      <view class="bg-white rounded-16rpx flex items-center justify-between py-20rpx px-24rpx">        <view>您还未登录,快去登录吧!</view>        <commonbtn bg-color="#0074FF" @click="handleCommenPath('/pages/login/index')">去登录</commonbtn>      </view>    </view>    <view class="relative">      <wd-drop-menu>        <wd-drop-menu-item :options="dept.list" v-model:model-value="orgCode" value-key="orgCode" label-key="departName"          :title="title" @change="useUserStore().setTitile" />      </wd-drop-menu>      <view class="absolute top-50% -translate-y-50% right-50rpx" v-if="token">        <view class="flex items-center">          <image src="@/static/index/user.png" class="w-40rpx h-40rpx"></image>          <view class="text-32rpx font-semibold ml-3">{{            userInfo.realname          }}</view>        </view>      </view>    </view>    <view class="px-32rpx">      <view class="grid grid-cols-2 gap-3">        <view class="flex items-center px-40rpx header rounded-2xl h-162rpx" @click="handleCommenPath(item.route)"          v-for="item in topMenu" :class="getItemClass(item.route)" :key="item.id">          <image :src="getIcon(item.route)" class="w-100rpx h-100rpx"></image>          <view class="text-32rpx font-semibold">{{ item.name }}</view>        </view>      </view>      <view class="mt-3" v-if="sysMsg">        <wd-notice-bar :text="sysMsg.map((it) => it.titile)" color="#000000" background-color="#fff" :delay="3"          direction="vertical" @click="handleCommenPath('/subPack/notification/index')">          <template #prefix>            <image src="@/static/index/msg.png" class="w-30rpx h-30rpx mr2"></image>          </template>        </wd-notice-bar>      </view>      <view class="mt-3 rounded-2xl bg-white p-28rpx" v-if="StoreMenu">        <view class="font-semibold text-32rpx">门店经营</view>        <view class="grid grid-cols-4 gap-3 mt-3">          <view class="flex items-center justify-center flex-col" @click="handleCommenPath(item.route)"            v-for="item in StoreMenu" :key="item.id">            <image :src="getIcon(item.route)" class="w-52rpx h-52rpx"></image>            <view class="text-24rpx mt-3">{{              item.name            }}</view>          </view>          <button open-type="contact"            class="bg-transparent after:border-none after:h-full flex flex-col items-center justify-center p-l-0 pr-0">            <image src="@/static/index/kf.png" class="w-52rpx h-52rpx"></image>            <view class="text-24rpx text-[rgb(0,0,0,0.6)] mt-3">平台客服</view>          </button>        </view>      </view>    </view>  </view></template><route lang="json">{  "name": "home",  "style": {    "navigationBarTitleText": "首页",    "navigationStyle": "custom",    "disableScroll": true  }}</route><style scoped lang="scss">:deep(.wd-drop-menu__list) {  background-color: transparent !important;  .wd-drop-menu__item {    text-align: left !important;    .wd-drop-menu__item-title {      max-width: 300rpx !important;    }  }}.ls {  background: linear-gradient(180deg, #ffecec 0%, #ffffff 100%);}.kc {  background: linear-gradient(180deg, #fff9e5 0%, #ffffff 100%);}.sm {  background: linear-gradient(180deg, #efffff 0%, #ffffff 100%);}</style>
 |