wechat_yxcl/pages/index/index.vue
ylj20011123 d23f7a9109 update
2025-07-28 18:54:09 +08:00

379 lines
12 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() {
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) {
if (res.scanType.indexOf("QR_CODE") > -1) {
if (res.result.indexOf("pages/walkAroundManager/index") > -1) {
// 地址路径
let pageUrl = res.result
console.log('res.resultres.resultres.result', res.result);
let pageObj = _this.handleGetId(res.result)
let CacheObj = uni.getStorageSync('CacheObj')
if (CacheObj) {
let title = ''
let content = ''
let same = false
console.log('CacheObj.id', CacheObj.id);
console.log('ididididid', pageObj.id);
// 判断缓存中的内容 是不是当前点位的信息
if (Number(CacheObj.id) === Number(pageObj.id)) {
title = '发现未提交的巡查草稿'
content = '检测到您上次有未提交的巡查内容,是否恢复这些数据继续编辑?'
same = true
} else if (CacheObj.id) {
title = `发现未提交的巡查`
content = `点击跳转将跳转到【${CacheObj.title}】点位巡查`
same = false
}
uni.showModal({
title: title,
content: content,
cancelText: '重新开始',
confirmText: same ? '恢复草稿' : "跳转点位",
success: async function (res) {
if (same) {
if (res.confirm) {
_this.$util.toNextRoute("navigateTo", "/" + pageUrl + `&&pageType=1`);
} else if (res.cancel) {
uni.setStorageSync('CacheObj', null)
_this.$util.toNextRoute("navigateTo", "/" + pageUrl);
}
} else {
if (res.confirm) {
_this.$util.toNextRoute("navigateTo", `/pages/walkAroundManager/index?id=${CacheObj.id}&&pageType=1`);
} else if (res.cancel) {
uni.setStorageSync('CacheObj', null)
_this.$util.toNextRoute("navigateTo", "/" + pageUrl);
}
}
}
})
} else {
_this.$util.toNextRoute("navigateTo", "/" + res.result);
}
// _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: "确定",
});
}
},
});
},
// 拿到二维码 ?id=388 的id值
handleGetId(url) {
const query = url.split('?')[1];
if (!query) return {};
return query.split('&').reduce((acc, item) => {
const [key, value] = item.split('=');
acc[key] = value;
return acc;
}, {});
},
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;
console.log("this.modelMenu", this.modelMenu);
},
},
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>