mirror of
https://github.com/crmeb/CRMEB.git
synced 2026-03-26 23:33:17 +00:00
616 lines
16 KiB
Vue
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>
|