wechat_yxcl/pages/index/index.vue
2025-03-14 18:54:46 +08:00

330 lines
10 KiB
Vue

<template>
<view class="content" v-show="menus">
<menuModel
v-for="(menu, index) in modelMenu"
:key="index"
:title="menu.name"
:class="{ 'line-block': index != 0 }"
>
<view class="uni-flex align-top" name="slot">
<menuItem
v-for="item in menu.list"
:key="item.id"
:item="item"
:doCout="toDoMsg ? toDoMsg[item.id] : 0"
:active="
item.id == 'd5a9e3ef-3699-448f-abcc-819179df60bd' ||
menus[item.id] == 1 ||
this.membershipType === 9999
"
@handleClick="toPage"
></menuItem>
</view>
</menuModel>
<!-- <view class="home-model">
<div class="model-title">
<text class="text">综合办公</text>
</div>
<div class="model-content">
<menuItem v-for="item in modelMenu.zhbg"
:key="item.id"
:item ="item"
:doCout="toDoMsg[item.id]"
:active="menus[item.id]==1"
@tap="toPage(item)"
></menuItem>
<view class="model-c-menu" hover-class="navigator-hover" v-for="item in modelMenu.zhbg" :key="item.id" @tap="toPage(item)">
<image :src="menus[item.id]==1?item.imagePath:item.noImagePath" mode="aspectFill"></image>
<text class="ico-t-count" v-if="toDoMsg[item.id]>0">{{toDoMsg[item.id]> 99 ? '99+' : toDoMsg[item.id]}}</text>
<text class="menu-text" :class="{'noFn': !menus[item.id] || menus[item.id]==0}">{{item.name}}</text>
</view>
</div>
</view>
<view class="line-block"></view>
<view class="home-model">
<div class="model-title">
<text class="text">业务审批</text>
</div>
<div class="model-content">
<menuItem v-for="item in modelMenu.ywsp"
:key="item.id"
:item ="item"
:doCout="toDoMsg[item.id]"
:active="menus[item.id]"
@tap="toPage(item)"
></menuItem>
<view class="model-c-menu" v-for="item in yewuMode" hover-class="navigator-hover" :key="item.id" @tap="toPage(item)">
<image :src="menus[item.id]==1?item.imagePath:item.noImagePath" mode="aspectFill"></image>
<text class="ico-t-count" v-if="toDoMsg[item.id]>0">{{toDoMsg[item.id]> 99 ? '99+' : toDoMsg[item.id]}}</text>
<text class="menu-text" :class="{'noFn': !menus[item.id] || menus[item.id]==0}">{{item.name}}</text>
</view>
</div>
</view>
<view class="line-block"></view>
<view class="home-model">
<div class="model-title">
<text class="text">现场管理</text>
</div>
<div class="model-content">
<menuItem v-for="item in modelMenu.xcgl"
:key="item.id"
:item ="item"
:doCout="toDoMsg[item.id]"
:active="menus[item.id]"
@tap="toPage(item)"
>
</menuItem>
<view class="model-c-menu" v-for="item in sceneMode" hover-class="navigator-hover" :key="item.id" @tap="toPage(item)">
<image :src="menus[item.id]==1?item.imagePath:item.noImagePath" mode="aspectFill"></image>
<text class="ico-t-count" v-if="toDoMsg[item.id]>0">{{toDoMsg[item.id]> 99 ? '99+' : toDoMsg[item.id]}}</text>
<text class="menu-text" :class="{'noFn': !menus[item.id] || menus[item.id]==0}">{{item.name}}</text>
</view>
<view class="model-c-menu" @tap="scanCode()">
<image src="/static/images/index/saoyisao.png" mode="aspectFill" v-if="user.Membership_Id"></image>
<image src=" /static/images/index/saoyisao-no.png" mode="aspectFill" v-else></image>
<text class="menu-text" :class="{'noFn': !user.Membership_Id}">扫一扫</text>
</view>
</div>
</view>
<view class="line-block"></view>
<view class="home-model">
<div class="model-title">
<text class="text">商业经营</text>
</div>
<div class="model-content">
<view class="model-c-menu" v-for="item in managementMode" hover-class="navigator-hover" :key="item.id" @tap="toPage(item)">
<image :src="menus[item.id]==1?item.imagePath:item.noImagePath" mode="aspectFill"></image>
<text class="ico-t-count" v-if="toDoMsg[item.id]>0">{{toDoMsg[item.id]> 99 ? '99+' : toDoMsg[item.id]}}</text>
<text class="menu-text" :class="{'noFn': !menus[item.id] || menus[item.id]==0}">{{item.name}}</text>
</view>
</div>
</view> -->
</view>
</template>
<script>
import { mapState, mapMutations, mapActions } from "vuex";
import modelMenu from "./components/menus.js";
import menuModel from "./components/menuModel.vue";
import menuItem from "./components/menuItem.vue";
export default {
data() {
return {
modelMenu: null,
membershipType: null,
};
},
components: {
menuModel,
menuItem,
},
onLoad() {
console.log(this.user, 1111);
this.loadMenuSetting();
},
computed: {
...mapState({
user: (state) => {
return {
UserId: state.userData.UserId,
UserName: state.userData.UserName,
Membership_Phone: state.userData.Membership_Phone,
Membership_Id: state.userData.Membership_Id,
Membership_Type: state.userData.Membership_Type,
};
},
toDoMsg: (state) => {
return state.toDoMsg;
},
menus: (state) => {
return state.userData.AuthorityInfo;
},
}),
},
methods: {
...mapActions(["updateUser"]),
scanCode() {
let _this = this;
uni.scanCode({
onlyFromCamera: true,
success: function (res) {
console.log("条码类型:" + res.scanType);
console.log("条码内容:" + res.result);
if (res.scanType.indexOf("QR_CODE") > -1) {
if (res.result.indexOf("pages/walkAroundManager/index") > -1) {
_this.$util.toNextRoute("navigateTo", "/" + res.result);
} else {
let result = res.result.toLocaleLowerCase();
if (
result.indexOf("http://eshangtech.com:8000/mbwa/index.html") >
-1
) {
let mbwaId = res.result.split("?")[1];
mbwaId = mbwaId.split("=")[1];
_this.$util.toNextRoute(
"navigateTo",
"/pages/mbwa/mbwaUpload?mbwaID=" + mbwaId
);
} else if (res.result.indexOf("http") > -1) {
_this.$util.toNextRoute(
"navigateTo",
"/pages/webview/webview?src=" + encodeURIComponent(res.result)
);
} else {
let invoice = res.result.split(",");
// console.log(invoice.length)
if (invoice.length == 9) {
_this.$util.toNextRoute(
"navigateTo",
"/pages/invoice/invoice?invoice=" + invoice
);
} else {
uni.showModal({
title: "温馨提示",
content: "不识别该二维码,请扫描发票或商品条形码",
showCancel: false,
confirmText: "确定",
});
}
}
}
} else if (res.scanType.indexOf("EAN_13") > -1) {
this.$util.toNextRoute(
"navigateTo",
"/pages/commodtity/commodtity?commodtity=" + res.result
);
} else {
uni.showModal({
title: "温馨提示",
content: "不识别该二维码,请扫描发票或商品条形码",
showCancel: false,
confirmText: "确定",
});
}
},
});
},
recordBrowsing(item) {
// 点击业务模块事件
let _this = this;
if (!item.id) {
uni.showModal({
title: " 温馨提示",
content: "该模块正在开发,尽请期待",
});
} else if (
_this.menus &&
(_this.menus[item.id] == 1 || this.user.Membership_Type === 9999)
) {
// 记录用户访问业务事件
// } else {
this.$util.toNextRoute("navigateTo", item.homeUrl);
} else if (this.user.Membership_Type !== 9999) {
uni.showToast({
title: "您没有该模块权限,请联系管理员",
icon: "none",
});
}
},
toPage(item) {
console.log("item", item);
let _this = this;
if (!this.user.Membership_Phone) {
uni.showModal({
title: " 温馨提示",
content: "您还没有登录,快去登录吧!",
success(res) {
if (res.confirm) {
_this.$util.toNextRoute("navigateTo", "/pages/register/register");
}
},
});
} else if (item.id == "d5a9e3ef-3699-448f-abcc-819179df60bd") {
// 如果是扫一扫功能
this.scanCode();
} else if (this.user.UserId == "") {
uni.showModal({
title: " 温馨提示",
content: "您的账户未绑定综管平台账户,请先绑定以获取业务权限",
success(res) {
if (res.confirm) {
_this.$util.toNextRoute(
"navigateTo",
"/pages/bindingBack/bindingBack"
);
}
},
});
} else {
this.recordBrowsing(item);
}
},
async loadMenuSetting() {
//加载首页菜单配置
console.log("this.user", this.user);
this.membershipType = this.user.Membership_Type;
let res = await this.$request.$webGet(
"EShangApiMain/APPManage/GetWeChatAppletMenuList",
{
ModuleStatus: this.membershipType === 9999 ? "1,2" : "1",
AppletMenuStatus: this.membershipType === 9999 ? "1,2" : "1",
}
);
this.modelMenu = res.Result_Data.List;
},
},
onReady() {},
onShow() {},
onPullDownRefresh() {
let _this = this;
this.updateUser();
this.loadMenuSetting();
setTimeout(function () {
uni.stopPullDownRefresh();
}, 1000);
},
onTabItemTap(e) {
this.$util.addUserBehaviorNew({
outtoRoute: "/pages/index/index",
intoRoute: "/pages/userCenter/userCenter",
});
},
};
</script>
<style scoped>
.line-block {
border-top: 13rpx solid #f5f5f5;
}
.content {
display: flex;
flex-direction: column;
justify-content: center;
}
.uni-flex {
align-items: center;
flex-wrap: wrap;
}
</style>