2026-03-23 14:57:47 +08:00

616 lines
16 KiB
Vue

<template>
<view class="new-users copy-data" :style="{ height: pageHeight }">
<view class="top" :style="colorStyle">
<!-- #ifdef MP || APP-PLUS -->
<view class="sys-head">
<view class="sys-bar" :style="{ height: sysHeight }"></view>
<!-- #ifdef MP -->
<view
class="sys-title"
:style="member_style == 3 ? 'color:#333' : ''"
>{{ $t("个人中心") }}</view
>
<!-- #endif -->
<view
class="bg"
:style="member_style == 3 ? 'background:#f5f5f5' : ''"
></view>
</view>
<!-- #endif -->
</view>
<PageDesign
:style="colorStyle"
:diyData="currentDiyData"
:isHome="false"
:isScrolled="isScrolled"
:isFixed="isFixed"
:belongIndex="belongIndex"
@bindSortId="bindSortId"
@bindHeight="bindHeighta"
@storeTap="storeTap"
@changeLogin="changeLogin"
@changeBarg="changeBarg"
@goDetail="goDetail"
></PageDesign>
<image :src="copyRightPic" alt="" class="support"></image>
<editUserModal
:isShow="editModal"
@closeEdit="closeEdit"
@editSuccess="editSuccess"
></editUserModal>
<pageFooter :style="colorStyle"></pageFooter>
</view>
</template>
<script>
let sysHeight = uni.getWindowInfo().statusBarHeight + "px";
import {
getMenuList,
getUserInfo,
setVisit,
mpBindingPhone,
} from "@/api/user.js";
import { getThemeInfo } from "@/api/api.js";
import { wechatAuthV2, silenceAuth } from "@/api/public.js";
import { toLogin } from "@/libs/login.js";
import { mapState, mapGetters } from "vuex";
// #ifdef H5
import Auth from "@/libs/wechat";
// #endif
const app = getApp();
import dayjs from "@/plugin/dayjs/dayjs.min.js";
import Routine from "@/libs/routine";
import colors from "@/mixins/color";
import pageFooter from "@/components/pageFooter/index.vue";
import { getCustomer } from "@/utils/index.js";
import editUserModal from "@/components/eidtUserModal/index.vue";
import couponWindow from "@/components/couponWindow/index";
import waterfallsFlow from "@/components/WaterfallsFlow/WaterfallsFlow.vue";
import emptyPage from "@/components/emptyPage.vue";
import Loading from "@/components/Loading/index.vue";
import { getCrmebCopyRight } from "@/api/api.js";
import { goShopDetail } from "@/libs/order.js";
import PageDesign from "@/subpackage/diyComponents/pageDesign.vue";
export default {
components: {
pageFooter,
editUserModal,
PageDesign,
couponWindow,
waterfallsFlow,
emptyPage,
Loading,
},
// computed: mapGetters(['isLogin','cartNum']),
computed: {
pdHeights() {
return { height: "100rpx" };
},
...mapGetters({
cartNum: "cartNum",
isLogin: "isLogin",
}),
},
filters: {
coundTime(val) {
var setTime = val * 1000;
var nowTime = new Date();
var rest = setTime - nowTime.getTime();
var day = parseInt(rest / (60 * 60 * 24 * 1000));
// var hour = parseInt(rest/(60*60*1000)%24) //小时
return day + this.$t("day");
},
dateFormat: function (value) {
return dayjs(value * 1000).format("YYYY-MM-DD");
},
},
mixins: [colors],
data() {
return {
currentDiyData: {},
editModal: false, // 编辑头像信息
storeMenu: [], // 商家管理
orderMenu: [
{
img: "icon-daifukuan",
title: "待付款",
url: "/pages/goods/order_list/index?status=0",
},
{
img: "icon-daifahuo",
title: "待发货",
url: "/pages/goods/order_list/index?status=1",
},
{
img: "icon-daishouhuo",
title: "待收货",
url: "/pages/goods/order_list/index?status=2",
},
{
img: "icon-daipingjia",
title: "待评价",
url: "/pages/goods/order_list/index?status=3",
},
{
img: "icon-a-shouhoutuikuan",
title: "售后/退款",
url: "/pages/users/user_return_list/index",
},
],
imgUrls: [],
autoplay: true,
circular: true,
interval: 3000,
duration: 500,
isAuto: false, //没有授权的不会自动授权
isShowAuth: false, //是否隐藏授权
orderStatusNum: {},
userInfo: {},
MyMenus: [],
sysHeight: sysHeight,
mpHeight: 0,
showStatus: 1,
activeRouter: "",
// #ifdef H5 || MP
pageHeight: "100%",
routineContact: 0,
// #endif
// #ifdef APP-PLUS
pageHeight: app.globalData.windowHeight,
// #endif
// #ifdef H5
isWeixin: Auth.isWeixin(),
//#endif
footerSee: false,
my_menus_status: 0,
business_status: 0,
member_style: 0,
my_banner_status: 0,
is_diy: uni.getStorageSync("is_diy"),
copyRightPic: require("static/images/support.png"), //版权图片
belongIndex: 0,
isScrolled: false,
isFixed: false,
product_video_status: false,
positionTop: 0,
sortMpTop: 0,
sortList: [],
curSort: 0,
goodList: [],
loaded: false,
loading: false,
isCouponShow: false,
couponObj: {},
site_config: "",
configData: {},
isFooter: false,
entryData: { select_store_id: "", store_id: "" },
sid: 0,
goodPage: 1,
};
},
onLoad(option) {
uni.hideTabBar();
let that = this;
// #ifdef MP
// 小程序静默授权
if (!this.$store.getters.isLogin) {
// Routine.getCode()
// .then(code => {
// Routine.silenceAuth(code).then(res => {
// this.onLoadFun();
// })
// })
// .catch(res => {
// uni.hideLoading();
// });
}
// #endif
// #ifdef H5 || APP-PLUS
// if (that.isLogin == false) {
// toLogin();
// }
//获取用户信息回来后授权
let cacheCode = this.$Cache.get("snsapi_userinfo_code");
let res1 = cacheCode ? option.code != cacheCode : true;
if (
this.isWeixin &&
option.code &&
res1 &&
option.scope === "snsapi_userinfo"
) {
this.$Cache.set("snsapi_userinfo_code", option.code);
Auth.auth(option.code)
.then((res) => {
this.getUserInfo();
})
.catch((err) => {});
}
// #endif
// #ifdef APP-PLUS
that.$set(that, "pageHeight", app.globalData.windowHeight);
// #endif
let routes = getCurrentPages(); // 获取当前打开过的页面路由数组
let curRoute = routes[routes.length - 1].route; //获取当前页面路由
this.activeRouter = "/" + curRoute;
this.getCopyRight();
},
onReady() {
let self = this;
// #ifdef MP
let info = uni.createSelectorQuery().select(".sys-head");
info
.boundingClientRect(function (data) {
//data - 各种参数
self.mpHeight = data.height;
})
.exec();
// #endif
},
onShow: function () {
let that = this;
// #ifdef APP-PLUS
uni.getSystemInfo({
success: function (res) {
that.pageHeight = res.windowHeight + "px";
},
});
// #endif
if (that.isLogin) {
this.getUserInfo();
this.setVisit();
}
this.getMyMenus();
this.getDiyData();
this.getCopyRight();
},
onPullDownRefresh() {
this.onLoadFun();
},
onPageScroll() {
uni.$emit("scroll");
},
methods: {
bindSortId(data) {
if (data.dataType.tabVal == 1) {
uni.navigateTo({
url: `/pages/goods/goods_list/index?cid=${data.classPage.id}&title=${data.classPage.name}`,
});
} else {
uni.navigateTo({
url: `/pages/annex/special/index?theme_id=${data.id}`,
});
}
},
storeTap(id) {
this.entryData.select_store_id = id;
this.entryData.store_id = "";
uni.removeStorageSync("rulesStoreId");
},
bindHeighta(data) {
// #ifdef APP-PLUS
this.sortMpTop = data.top + data.height;
// #endif
},
changeSort(item, index) {
if (this.curSort == index) return;
this.curSort = index;
this.sid = item.id;
this.goodList = [];
this.goodPage = 1;
this.loaded = false;
if (this.getGoodsList) this.getGoodsList();
},
goDetail(item) {
goShopDetail(item, this.$store.state.app.uid).then((res) => {
uni.navigateTo({
url: `/pages/goods_details/index?id=${item.id}`,
});
});
},
couponClose() {
this.isCouponShow = false;
if (!uni.getStorageSync("oldUser") && this.getNewCoupon) {
this.getNewCoupon();
}
},
goICP(url) {
// #ifdef H5
window.open(url);
// #endif
// #ifdef MP
uni.navigateTo({
url: `/pages/annex/web_view/index?url=${url}`,
});
// #endif
},
changeBarg(item) {
if (!this.isLogin) {
toLogin();
} else {
uni.navigateTo({
url: `/pages/activity/goods_bargain_details/index?id=${item.id}&spid=${this.$store.state.app.uid}`,
});
}
},
changeLogin() {
if (!this.isLogin) {
toLogin();
}
},
objToArr(data) {
if (!data || typeof data !== "object") return [];
let obj = Object.keys(data).sort();
let m = obj.map((key) => data[key]);
return m;
},
getDiyData() {
let previewThemeId = uni.getStorageSync("previewThemeId");
let data = {};
if (previewThemeId) data.theme_id = previewThemeId;
getThemeInfo("user", data).then((res) => {
console.log(res, "res");
this.currentDiyData = res.data;
});
},
getWechatuserinfo() {
//#ifdef H5
Auth.isWeixin() && Auth.toAuth("snsapi_userinfo", "/pages/user/index");
//#endif
},
editSuccess() {
this.editModal = false;
this.getUserInfo();
},
closeEdit() {
this.editModal = false;
},
// 记录会员访问
setVisit() {
setVisit({
url: "/pages/user/index",
}).then((res) => {});
},
// 打开授权
openAuto() {
toLogin();
},
// 授权回调
onLoadFun() {
this.getUserInfo();
this.getMyMenus();
this.getDiyData();
this.setVisit();
},
Setting: function () {
uni.openSetting({
success: function (res) {},
});
},
// 授权关闭
authColse: function (e) {
this.isShowAuth = e;
},
// 绑定手机
bindPhone() {
uni.navigateTo({
url: "/pages/users/user_phone/index",
});
},
getphonenumber(e) {
if (e.detail.errMsg == "getPhoneNumber:ok") {
Routine.getCode()
.then((code) => {
let data = {
code,
iv: e.detail.iv,
encryptedData: e.detail.encryptedData,
};
mpBindingPhone(data)
.then((res) => {
this.getUserInfo();
this.$util.Tips({
title: res.msg,
icon: "success",
});
})
.catch((err) => {
return this.$util.Tips({
title: err,
});
});
})
.catch((error) => {
uni.hideLoading();
});
}
},
/**
* 获取个人用户信息
*/
getUserInfo: function () {
let that = this;
getUserInfo().then((res) => {
that.userInfo = res.data;
this.$store.commit("UPDATE_USERINFO", res.data);
that.$store.commit("SETUID", res.data.uid);
that.orderMenu.forEach((item, index) => {
switch (item.title) {
case "待付款":
item.num = res.data.orderStatusNum.unpaid_count;
break;
case "待发货":
item.num = res.data.orderStatusNum.unshipped_count;
break;
case "待收货":
item.num = res.data.orderStatusNum.received_count;
break;
case "待评价":
item.num = res.data.orderStatusNum.evaluated_count;
break;
case "售后/退款":
item.num = res.data.orderStatusNum.refunding_count;
break;
}
});
uni.stopPullDownRefresh();
});
},
//小程序授权api替换 getUserInfo
getUserProfile() {
toLogin();
},
/**
*
* 获取个人中心图标
*/
switchTab(order) {
this.orderMenu.forEach((item, index) => {
switch (item.title) {
case "待付款":
item.img = order.dfk;
break;
case "待发货":
item.img = order.dfh;
break;
case "待收货":
item.img = order.dsh;
break;
case "待评价":
item.img = order.dpj;
break;
case "售后/退款":
item.img = order.sh;
break;
}
});
},
getMyMenus: function () {
let that = this;
// if (this.MyMenus.length) return;
getMenuList().then((res) => {
this.member_style = Number(res.data.diy_data.value);
this.my_banner_status = res.data.diy_data.my_banner_status;
this.my_menus_status = res.data.diy_data.my_menus_status;
this.business_status = res.data.diy_data.business_status;
let storeMenu = [];
let myMenu = [];
res.data.routine_my_menus.forEach((el, index, arr) => {
if (
el.url == "/pages/admin/order/index" ||
el.url == "/pages/admin/order_cancellation/index" ||
el.url == "/pages/admin/manage/index" ||
el.name == "客服接待"
) {
storeMenu.push(el);
} else {
myMenu.push(el);
}
});
let order01 = {
dfk: "icon-daifukuan",
dfh: "icon-daifahuo",
dsh: "icon-daishouhuo",
dpj: "icon-daipingjia",
sh: "icon-a-shouhoutuikuan",
};
let order02 = {
dfk: "icon-daifukuan-lan",
dfh: "icon-daifahuo-lan",
dsh: "icon-daishouhuo-lan",
dpj: "icon-daipingjia-lan",
sh: "icon-shouhoutuikuan-lan",
};
let order03 = {
dfk: "icon-daifukuan-ju",
dfh: "icon-daifahuo-ju",
dsh: "icon-daishouhuo-ju",
dpj: "icon-daipingjia-ju",
sh: "icon-shouhoutuikuan-ju",
};
let order04 = {
dfk: "icon-daifukuan-fen",
dfh: "icon-daifahuo-fen",
dsh: "icon-daishouhuo-fen",
dpj: "icon-daipingjia-fen",
sh: "icon-shouhoutuikuan-fen",
};
let order05 = {
dfk: "icon-daifukuan-lv",
dfh: "icon-daifahuo-lv",
dsh: "icon-daishouhuo-lv",
dpj: "icon-daipingjia-lv",
sh: "icon-shouhoutuikuan-lv",
};
if (this.member_style == 1) {
this.switchTab(order01);
} else if (this.member_style == 2) {
this.switchTab(order02);
} else if (this.member_style == 3) {
this.switchTab(order03);
} else if (this.member_style == 4) {
this.switchTab(order04);
} else if (this.member_style == 5) {
this.switchTab(order05);
}
this.storeMenu = storeMenu;
this.MyMenus = myMenu;
});
},
getCopyRight() {
getCrmebCopyRight().then((res) => {
if (res.data.copyrightImage)
this.copyRightPic = res.data.copyrightImage;
});
},
},
};
</script>
<style lang="scss">
.new-users {
padding-bottom: 100rpx;
.sys-head {
position: relative;
width: 100%;
background: #fff;
z-index: 50;
.sys-bar {
width: 100%;
}
.sys-title {
width: 100%;
height: 43px;
line-height: 43px;
text-align: center;
font-size: 32rpx;
color: #000;
font-weight: 500;
position: relative;
z-index: 10;
}
.bg {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
z-index: 5;
}
}
.support {
width: 219rpx;
height: 74rpx;
margin: 54rpx auto;
display: block;
}
}
</style>