Commit 21f6d118 authored by chenwei's avatar chenwei

web side inital commit for memeber module

parent 09820606
......@@ -889,6 +889,11 @@ export default {
maxIntegral: "Cumulative maximum points",
date: "expiration date",
rulesIllustrate: "Rulesillustrate",
registerLabel: "{val} points for successful registration ",
referralCodeLabel:
"Get {val} points for every person invited to register and log in ",
shareLabel: "Get {val} points per click after sharing on social platforms ",
orderRuleLabel: "{low}{unit}-{high}{unit} get {score} points ",
},
log: {
total: "Total",
......
......@@ -1150,6 +1150,10 @@ export default {
addAddress: "新增收货地址",
totalScoreError: "积分不足",
illustrate: "积分说明",
registerLabel: "注册成功即可获得{val}积分",
referralCodeLabel: "每邀请1人注册并登录获得{val}积分",
shareLabel: "分享到社交平台后,每次点击获得{val}积分",
orderRuleLabel: " {low}{unit}-{high}{unit}获得{score}积分",
maxIntegral: "累计最高积分",
date: "有效期",
rulesIllustrate: "规则说明",
......
......@@ -113,7 +113,7 @@ const jiedaoRouter = {
meta: { title: "ExchangeOperate" },
},
{
path: "jd-address-maneger",
path: "jd-address-manager",
component: () => import("@/views/jiedao/profile/addressManager"),
name: "AddressManager",
meta: { title: "AddressManager" },
......
<template>
<div class="integral-exchange">
<div class="header">
<div class="text">{{ $t('integral.pointsTitle') }}</div>
<div class="red">{{ $t('integral.pointsRemark') }}</div>
<div class="text">{{ $t("integral.pointsTitle") }}</div>
<div class="red">{{ $t("integral.pointsRemark") }}</div>
</div>
<div class="content">
<!-- <div class="content-text">1、2、3</div>
......@@ -10,32 +10,50 @@
<el-cascader
v-model="selectedNodeId"
:props="{
label:language == 'zh_CN' ?'labelZh' : 'labelEn',
value:'id'
checkStrictly,
label: language == 'zh_CN' ? 'labelZh' : 'labelEn',
value: 'id',
}"
class="cascader"
:options="nodeList"
clearable
@visible-change="changeSelect"
:placeholder="$t('integral.outlets')"
/>
</div>
<div class="list">
<div v-for="item in list" :key="item.id" class="list-item" @click="toDetail(item.id)">
<div
v-for="item in list"
:key="item.id"
class="list-item"
@click="toDetail(item.id)"
>
<div class="item-image">
<img class="imgs" :src="language == 'zh_CN' ? item.imgZh : item.imgEn" alt="">
<img
class="imgs"
:src="language == 'zh_CN' ? item.imgZh : item.imgEn"
alt=""
/>
<div class="gift-tag">
<div class="tags">
<img class="tag-image" src="@/assets/integral/score.png">
<img class="tag-image" src="@/assets/integral/score.png" />
<div class="tag-text">{{ item.pointsRequire }}</div>
</div>
</div>
<div class="foot-tag">{{ $t('integral.remainder',{value:item.quantityRemain}) }}</div>
<div class="foot-tag">
{{ $t("integral.remainder", { value: item.quantityRemain }) }}
</div>
</div>
<div class="item-text">
{{ language == "zh_CN" ? item.titleZh : item.titleEn }}
</div>
<div class="item-text">{{ language == 'zh_CN' ? item.titleZh : item.titleEn }}</div>
<div class="item-menu">
<template v-if="item.pickMethodList">
<div v-for="ele in item.pickMethodList" :key="ele.value" class="menu-text">
{{ language == 'zh_CN' ? ele.labelZh : ele.labelEn }}
<div
v-for="ele in item.pickMethodList"
:key="ele.value"
class="menu-text"
>
{{ language == "zh_CN" ? ele.labelZh : ele.labelEn }}
</div>
</template>
</div>
......@@ -45,64 +63,77 @@
</template>
<script>
import { integralList, getBranchList } from '@/api/integral'
import { integralList, getBranchList } from "@/api/integral";
export default {
name: 'IntegralExchange',
name: "IntegralExchange",
data() {
return {
list: [],
nodeId: null,
nodeList: [],
selectedNodeId: null
}
selectedNodeId: null,
checkStrictly: true,
};
},
computed: {
language() {
return this.$store.getters.language
}
return this.$store.getters.language;
},
},
watch: {
selectedNodeId(val) {
this.nodeId = val[val.length - 1]
this.getIntegralList()
}
if (val && val.length > 2) {
this.nodeId = val[val.length - 1];
this.getIntegralList();
}
},
},
created() {
this.getIntegralList()
this.getNodeInfo()
this.getIntegralList();
this.getNodeInfo();
},
methods: {
changeSelect() {
this.checkStrictly = false;
},
// 获取礼品列表
async getIntegralList() {
try {
const memberId = this.$store.getters.id
const memberId = this.$store.getters.id;
const { code, data } = await integralList({
memberId,
nodeId: this.nodeId
})
if (code !== 0) return
this.list = data
nodeId: this.nodeId,
});
if (code !== 0) return;
this.list = data.list;
if (!this.nodeId) {
if (data.city) {
this.selectedNodeId = [data.country, data.city];
} else {
this.selectedNodeId = [data.country];
}
}
} catch (err) {
console.log(err)
console.log(err);
}
},
// 获取网点信息
async getNodeInfo() {
try {
const { code, data } = await getBranchList()
if (code !== 0) return
this.nodeList = data
console.log(data)
const { code, data } = await getBranchList();
if (code !== 0) return;
this.nodeList = data;
console.log(data);
} catch (err) {
console.log(err)
console.log(err);
}
},
// 跳转详情
toDetail(id) {
this.$router.push({ path: `/jiedao/jd-exchange-operate`, query: { id }})
}
}
}
this.$router.push({ path: `/jiedao/jd-exchange-operate`, query: { id } });
},
},
};
</script>
<style lang="scss" scoped>
......@@ -113,13 +144,13 @@ export default {
width: 100%;
height: 60px;
align-items: center;
.text{
.text {
padding-right: 10px;
font-size: 22px;
font-weight: 700;
border-right: 4px solid #1890FF;
border-right: 4px solid #1890ff;
}
.red{
.red {
font-size: 14px;
color: red;
margin-left: 5px;
......@@ -143,43 +174,43 @@ export default {
padding-bottom: 10px;
}
}
.list{
.list {
padding: 20px 0;
display: grid;
width: 100%;
gap: 20px;
grid-template-columns: repeat(5, 1fr);
.list-item{
.list-item {
width: 180px;
box-sizing: border-box;
}
.item-image{
.item-image {
width: 180px;
height: 120px;
position: relative;
.imgs{
.imgs {
width: 100%;
height: 100%;
object-fit: cover;
}
}
.item-text{
.item-text {
font-size: 16px;
color: #333;
padding: 10px 0;
}
.item-menu{
.item-menu {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 5px;
.menu-text{
.menu-text {
padding: 4px 10px;
font-size: 14px;
color: #EF8D15;
color: #ef8d15;
box-sizing: border-box;
border: 2px solid #EF8D15;
border: 2px solid #ef8d15;
border-radius: 20px;
}
}
......@@ -236,11 +267,10 @@ export default {
border-top-right-radius: 5px;
border-bottom-left-radius: 5px;
}
.cascader{
.cascader {
width: 100%;
}
::v-deep{
::v-deep {
.cascader .el-input__inner {
border: none !important;
box-shadow: none !important;
......
......@@ -19,14 +19,50 @@
: detailInfo.extraRecommend.shareContentEn
}}
</div>
<div
class="share-label"
v-if="detailInfo.type == 4"
v-html="
locale === 'zh_CN'
? detailInfo.extraShare.activityDescZh
: detailInfo.extraShare.activityDescEn
"
></div>
<div class="activity-cell">
<div class="cell-label">{{ $t("integral.illustrate") }}</div>
<div class="cell-content">
<img class="cell-image" src="@/assets/integral/score_b.png" />
<div class="cell-text">{{ detailInfo.getScoreOnce }}</div>
<div class="cell-text">
<span v-if="detailInfo.type == 4">{{
$t("integral.shareLabel", { val: detailInfo.getScoreOnce })
}}</span>
<span v-if="detailInfo.type == 3">{{
$t("integral.referralCodeLabel", { val: detailInfo.getScoreOnce })
}}</span>
<span v-if="detailInfo.type == 2">{{
$t("integral.registerLabel", { val: detailInfo.getScoreOnce })
}}</span>
<div v-if="detailInfo.type == 1">
<div
class="rule"
v-for="ruleItem in detailInfo.extraOrderV.orderVRule"
:key="ruleItem.low"
>
{{
$t("integral.orderRuleLabel", {
low: ruleItem.low,
high: ruleItem.high,
score: ruleItem.score,
unit:
detailInfo.extraOrderVtransportType == 1 ? "" : "kg",
})
}}
</div>
</div>
</div>
</div>
</div>
<div class="activity-cell">
<div class="activity-cell" v-if="detailInfo.type != 2">
<div class="cell-label">{{ $t("integral.maxIntegral") }}</div>
<div class="cell-content">
<img class="cell-image" src="@/assets/integral/score_b.png" />
......@@ -88,7 +124,7 @@ export default {
const hours = String(date.getHours()).padStart(2, "0");
const minutes = String(date.getMinutes()).padStart(2, "0");
const seconds = String(date.getSeconds()).padStart(2, "0");
return `${year}:${month}:${day} ${hours}:${minutes}:${seconds}`;
return `${year}:${month}:${day}`;
};
return `${formatDate(start)}${this.$t("exchange.to")}${formatDate(end)}`;
},
......
......@@ -99,7 +99,7 @@
v-model="paramsInfo.rewardCount"
@change="handleChange"
size="mini"
:min="0"
:min="1"
></el-input-number>
</div>
<el-divider></el-divider>
......@@ -171,7 +171,7 @@ export default {
memberId: this.$store.getters.id,
rewardId: this.$route.query.id,
redeemType: "1",
rewardCount: 0,
rewardCount: 1,
entrance: "3",
remark: "",
code: "",
......@@ -243,6 +243,7 @@ export default {
this.rewardDetailsInfo = res.data;
this.paramsInfo.redeemType =
this.rewardDetailsInfo.pickMethodList[0].value;
this.handleChange();
});
},
getPickList(label) {
......@@ -259,7 +260,7 @@ export default {
if (this.paramsInfo.redeemType == "1") {
return;
}
this.$router.push("/jiedao/jd-address-maneger");
this.$router.push("/jiedao/jd-address-manager");
},
},
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment