Merge remote-tracking branch 'remotes/origin/dev/1.0' into dev/1.0
This commit is contained in:
@@ -6,6 +6,10 @@ const localDevConfig = ({
|
|||||||
uniacid: 460,
|
uniacid: 460,
|
||||||
domain: 'https://xcx30.5g-quickapp.com/',
|
domain: 'https://xcx30.5g-quickapp.com/',
|
||||||
},
|
},
|
||||||
|
'576-xcx30.5g': { // 活性石灰装备
|
||||||
|
uniacid: 576,
|
||||||
|
domain: 'https://xcx30.5g-quickapp.com/',
|
||||||
|
},
|
||||||
'2285': { // 数码喷墨墨水
|
'2285': { // 数码喷墨墨水
|
||||||
uniacid: 2285,
|
uniacid: 2285,
|
||||||
domain: 'https://xcx.aigc-quickapp.com/',
|
domain: 'https://xcx.aigc-quickapp.com/',
|
||||||
|
|||||||
@@ -6,6 +6,10 @@ const localDevConfig = ({
|
|||||||
uniacid: 460,
|
uniacid: 460,
|
||||||
domain: 'https://xcx30.5g-quickapp.com/',
|
domain: 'https://xcx30.5g-quickapp.com/',
|
||||||
},
|
},
|
||||||
|
'576-xcx30.5g': { // 活性石灰装备
|
||||||
|
uniacid: 576,
|
||||||
|
domain: 'https://xcx30.5g-quickapp.com/',
|
||||||
|
},
|
||||||
'2285': { // 数码喷墨墨水
|
'2285': { // 数码喷墨墨水
|
||||||
uniacid: 2285,
|
uniacid: 2285,
|
||||||
domain: 'https://xcx.aigc-quickapp.com/',
|
domain: 'https://xcx.aigc-quickapp.com/',
|
||||||
|
|||||||
5
App.vue
5
App.vue
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
export default {
|
export default {
|
||||||
mixins: [auth],
|
mixins: [auth],
|
||||||
onLaunch: function(options) {
|
onLaunch: async function(options) {
|
||||||
// 方式:支持快应用,从url中query部分获取uniacid,或useragent中获取uniacid
|
// 方式:支持快应用,从url中query部分获取uniacid,或useragent中获取uniacid
|
||||||
if(options.query.uniacid){
|
if(options.query.uniacid){
|
||||||
uni.setStorageSync('uniacid', options.query.uniacid);
|
uni.setStorageSync('uniacid', options.query.uniacid);
|
||||||
@@ -61,7 +61,8 @@
|
|||||||
|
|
||||||
// 主题风格
|
// 主题风格
|
||||||
if (uni.getStorageSync('themeStyle')) {
|
if (uni.getStorageSync('themeStyle')) {
|
||||||
this.$store.commit('setThemeStyle', configExternal.loadThemeSync(uni.getStorageSync('themeStyle')));
|
const themeData = await configExternal.loadTheme(uni.getStorageSync('themeStyle'));
|
||||||
|
this.$store.commit('setThemeStyle', themeData);
|
||||||
this.$store.dispatch('themeColorSet');
|
this.$store.dispatch('themeColorSet');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ export const langConfig = {
|
|||||||
// 主题配置
|
// 主题配置
|
||||||
export const themeConfig = {
|
export const themeConfig = {
|
||||||
// 主题列表
|
// 主题列表
|
||||||
themeList: ['default', 'red', 'green', 'blue'],
|
themeList: ['default', 'red', 'green', 'blue', 'pink', 'gold', 'purple', 'yellow', 'black'],
|
||||||
// 默认主题
|
// 默认主题
|
||||||
defaultTheme: 'default'
|
defaultTheme: 'default'
|
||||||
};
|
};
|
||||||
@@ -98,28 +98,6 @@ class ConfigExternal {
|
|||||||
return this.loadPromises[key];
|
return this.loadPromises[key];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 加载主题配置(同步方式)
|
|
||||||
* @param {string} theme - 主题名称
|
|
||||||
* @returns {object} - 主题配置
|
|
||||||
*/
|
|
||||||
loadThemeSync(theme = themeConfig.defaultTheme) {
|
|
||||||
if (this.loadedConfigs[`theme_${theme}`]) {
|
|
||||||
return this.loadedConfigs[`theme_${theme}`];
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
// 动态加载主题配置
|
|
||||||
const themeData = require(`@/common/js/style_color.js`)['default'][theme];
|
|
||||||
console.log('sync themeData => ', themeData);
|
|
||||||
this.loadedConfigs[`theme_${theme}`] = themeData;
|
|
||||||
return themeData;
|
|
||||||
} catch (error) {
|
|
||||||
console.error(`加载主题 ${theme} 失败:`, error);
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 加载主题配置(异步方式)
|
* 加载主题配置(异步方式)
|
||||||
* @param {string} theme - 主题名称
|
* @param {string} theme - 主题名称
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { langConfig } from './config-external.js';
|
import { langConfig } from './config-external.js';
|
||||||
|
|
||||||
var locale = uni.getStorageSync('lang') || "zh-cn"; //设置语言
|
|
||||||
// 缓存已加载的语言包
|
// 缓存已加载的语言包
|
||||||
var loadedLangPacks = {};
|
const loadedLangPacks = {};
|
||||||
|
|
||||||
// 处理页面目录映射
|
// 处理页面目录映射
|
||||||
function processRoutePath(route) {
|
function processRoutePath(route) {
|
||||||
@@ -64,6 +64,8 @@ export default {
|
|||||||
let _this = getCurrentPages()[getCurrentPages().length - 1];
|
let _this = getCurrentPages()[getCurrentPages().length - 1];
|
||||||
if (!_this) return;
|
if (!_this) return;
|
||||||
|
|
||||||
|
const locale = uni.getStorageSync('lang') || "zh-cn"; //设置语言
|
||||||
|
|
||||||
var value = '';
|
var value = '';
|
||||||
try {
|
try {
|
||||||
//公共语言包(同步加载)
|
//公共语言包(同步加载)
|
||||||
@@ -72,7 +74,7 @@ export default {
|
|||||||
//当前页面语言包(同步加载)
|
//当前页面语言包(同步加载)
|
||||||
let route = _this.route;
|
let route = _this.route;
|
||||||
let langPath = processRoutePath(route);
|
let langPath = processRoutePath(route);
|
||||||
// console.log(`当前页面语言包路径: ${langPath}`);
|
console.log(`当前语言: ${locale}, 当前页面语言包路径: ${langPath}`);
|
||||||
|
|
||||||
// 加载当前页面语言包
|
// 加载当前页面语言包
|
||||||
let currentPageLang = loadLangPackSync(locale, langPath);
|
let currentPageLang = loadLangPackSync(locale, langPath);
|
||||||
@@ -113,7 +115,7 @@ export default {
|
|||||||
if (value == undefined || (value == 'title' && field == 'title')) value = ''; // field
|
if (value == undefined || (value == 'title' && field == 'title')) value = ''; // field
|
||||||
|
|
||||||
// 多语言调试,注释后可以关闭控制台输出
|
// 多语言调试,注释后可以关闭控制台输出
|
||||||
// console.log(`字段: ${field}, 值: ${value}`)
|
console.log(`字段: ${field}, 值: ${value}`)
|
||||||
return value;
|
return value;
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
@@ -126,10 +128,14 @@ export default {
|
|||||||
if (!_this) return;
|
if (!_this) return;
|
||||||
|
|
||||||
uni.setStorageSync("lang", value);
|
uni.setStorageSync("lang", value);
|
||||||
locale = uni.getStorageSync('lang') || "zh-cn"; //设置语言
|
const locale = uni.getStorageSync('lang') || "zh-cn"; //设置语言
|
||||||
|
|
||||||
// 清空已加载的语言包缓存
|
// 清空已加载的语言包缓存
|
||||||
loadedLangPacks = {};
|
for (let key in loadedLangPacks) {
|
||||||
|
if (!key.startsWith(locale)) {
|
||||||
|
delete loadedLangPacks[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this.refresh();
|
this.refresh();
|
||||||
|
|
||||||
@@ -141,7 +147,7 @@ export default {
|
|||||||
refresh() {
|
refresh() {
|
||||||
let _this = getCurrentPages()[getCurrentPages().length - 1];
|
let _this = getCurrentPages()[getCurrentPages().length - 1];
|
||||||
if (!_this) return;
|
if (!_this) return;
|
||||||
locale = uni.getStorageSync('lang') || "zh-cn"; //设置语言
|
const locale = uni.getStorageSync('lang') || "zh-cn"; //设置语言
|
||||||
|
|
||||||
this.title(this.lang("title"));
|
this.title(this.lang("title"));
|
||||||
|
|
||||||
|
|||||||
@@ -61,8 +61,8 @@ export default {
|
|||||||
groupby_promotion_aux_color: '#F7B500',//活动辅色
|
groupby_promotion_aux_color: '#F7B500',//活动辅色
|
||||||
},
|
},
|
||||||
...{
|
...{
|
||||||
hover_nav_bg_color: '#c6251b', //背景色: 红色 '#c6251b', 白色: '#FFFC'
|
hover_nav_bg_color: '#FFFC', //背景色: 红色 '#c6251b', 白色: '#FFFC'
|
||||||
hover_nav_text_color: '#FFFFFF' // 文字颜色: 白色 '#FFFFFF', 黑色: '#000'
|
hover_nav_text_color: '#000' // 文字颜色: 白色 '#FFFFFF', 黑色: '#000'
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'green': {
|
'green': {
|
||||||
|
|||||||
@@ -32,10 +32,28 @@ export const adaptSubpackageUrl = (url) => {
|
|||||||
*/
|
*/
|
||||||
// 定义前缀映射表
|
// 定义前缀映射表
|
||||||
const urlPrefixMap = {
|
const urlPrefixMap = {
|
||||||
|
'/pages/promotion/': '/pages_promotion/',
|
||||||
|
'/pages/order/': '/pages_order/',
|
||||||
'/pages/goods/': '/pages_goods/',
|
'/pages/goods/': '/pages_goods/',
|
||||||
|
|
||||||
'/pages/contact/': '/pages_tool/contact/',
|
'/pages/contact/': '/pages_tool/contact/',
|
||||||
'/pages/member/': '/pages_tool/member/',
|
'/pages/member/': '/pages_tool/member/',
|
||||||
'/pages/vr': '/pages_tool/vr/'
|
'/pages/login/': '/pages_tool/login/',
|
||||||
|
'/pages/agreement/': '/pages_tool/agreement/',
|
||||||
|
'/pages/article/': '/pages_tool/article/',
|
||||||
|
'/pages/cases/': '/pages_tool/cases/',
|
||||||
|
'/pages/contact/': '/pages_tool/contact/',
|
||||||
|
'/pages/files/': '/pages_tool/files/',
|
||||||
|
'/pages/form/': '/pages_tool/form/',
|
||||||
|
'/pages/help/': '/pages_tool/help/',
|
||||||
|
'/pages/notice/': '/pages_tool/notice/',
|
||||||
|
'/pages/pay/': '/pages_tool/pay/',
|
||||||
|
'/pages/recharge/': '/pages_tool/recharge/',
|
||||||
|
'/pages/seal/': '/pages_tool/seal/',
|
||||||
|
'/pages/storeclose/': '/pages_tool/storeclose/',
|
||||||
|
'/pages/vr/': '/pages_tool/vr/',
|
||||||
|
'/pages/weapp/': '/pages_tool/weapp/',
|
||||||
|
'/pages/webview/': '/pages_tool/webview/',
|
||||||
};
|
};
|
||||||
|
|
||||||
// 构建正则表达式
|
// 构建正则表达式
|
||||||
|
|||||||
@@ -19,5 +19,10 @@ export const lang = {
|
|||||||
currencySymbol: '¥',
|
currencySymbol: '¥',
|
||||||
submit: 'Submit',
|
submit: 'Submit',
|
||||||
searchTip: 'Please enter search keywords'
|
searchTip: 'Please enter search keywords'
|
||||||
}
|
},
|
||||||
|
|
||||||
|
login: 'Login/Register',
|
||||||
|
loginTips: 'Click to login and enjoy more exciting information',
|
||||||
|
toLogin: 'Go to login',
|
||||||
|
toGoodsCategoryPage: 'Go shopping',
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,5 +19,16 @@ export const lang = {
|
|||||||
currencySymbol: '¥',
|
currencySymbol: '¥',
|
||||||
submit: '提交',
|
submit: '提交',
|
||||||
searchTip: '请输入搜索关键词'
|
searchTip: '请输入搜索关键词'
|
||||||
}
|
},
|
||||||
|
|
||||||
|
login: '登录/注册',
|
||||||
|
loginTpis: '点击登录 享受更多精彩信息',
|
||||||
|
toLogin: '去登录',
|
||||||
|
toGoodsCategoryPage: '去逛逛',
|
||||||
|
|
||||||
|
waitpay: '待付款',
|
||||||
|
waitsend: '待发货',
|
||||||
|
waitconfirm: '待收货',
|
||||||
|
activist: '售后',
|
||||||
|
completed: '已完成',
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,7 +65,7 @@
|
|||||||
{{ parseFloat(item.member_price).toFixed(2).split('.')[0] }}
|
{{ parseFloat(item.member_price).toFixed(2).split('.')[0] }}
|
||||||
<text class="unit price-style small">.{{
|
<text class="unit price-style small">.{{
|
||||||
parseFloat(item.member_price).toFixed(2).split('.')[1]
|
parseFloat(item.member_price).toFixed(2).split('.')[1]
|
||||||
}}</text>
|
}}</text>
|
||||||
<image :src="$util.img('public/uniapp/index/VIP.png')" />
|
<image :src="$util.img('public/uniapp/index/VIP.png')" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
}}
|
}}
|
||||||
<text class="unit price-style small">.{{
|
<text class="unit price-style small">.{{
|
||||||
parseFloat(item.discount_price).toFixed(2).split('.')[1]
|
parseFloat(item.discount_price).toFixed(2).split('.')[1]
|
||||||
}}</text>
|
}}</text>
|
||||||
<image
|
<image
|
||||||
:src="$util.img('public/uniapp/index/discount.png')" />
|
:src="$util.img('public/uniapp/index/discount.png')" />
|
||||||
</view>
|
</view>
|
||||||
@@ -95,7 +95,7 @@
|
|||||||
{{ parseFloat(item.member_price).toFixed(2).split('.')[0] }}
|
{{ parseFloat(item.member_price).toFixed(2).split('.')[0] }}
|
||||||
<text class="unit price-style small">.{{
|
<text class="unit price-style small">.{{
|
||||||
parseFloat(item.member_price).toFixed(2).split('.')[1]
|
parseFloat(item.member_price).toFixed(2).split('.')[1]
|
||||||
}}</text>
|
}}</text>
|
||||||
<image :src="$util.img('public/uniapp/index/VIP.png')" />
|
<image :src="$util.img('public/uniapp/index/VIP.png')" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -108,7 +108,7 @@
|
|||||||
{{ parseFloat(item.price).toFixed(2).split('.')[0] }}
|
{{ parseFloat(item.price).toFixed(2).split('.')[0] }}
|
||||||
<text class="unit price-style small">.{{
|
<text class="unit price-style small">.{{
|
||||||
parseFloat(item.price).toFixed(2).split('.')[1]
|
parseFloat(item.price).toFixed(2).split('.')[1]
|
||||||
}}</text>
|
}}</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</block>
|
</block>
|
||||||
@@ -175,7 +175,7 @@
|
|||||||
}}
|
}}
|
||||||
<text class="unit price-style small">.{{
|
<text class="unit price-style small">.{{
|
||||||
parseFloat(goodsItem.member_price).toFixed(2).split('.')[1]
|
parseFloat(goodsItem.member_price).toFixed(2).split('.')[1]
|
||||||
}}</text>
|
}}</text>
|
||||||
<image :src="$util.img('public/uniapp/index/VIP.png')" />
|
<image :src="$util.img('public/uniapp/index/VIP.png')" />
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
@@ -185,7 +185,7 @@
|
|||||||
}}
|
}}
|
||||||
<text class="unit price-style small">.{{
|
<text class="unit price-style small">.{{
|
||||||
parseFloat(goodsItem.discount_price).toFixed(2).split('.')[1]
|
parseFloat(goodsItem.discount_price).toFixed(2).split('.')[1]
|
||||||
}}</text>
|
}}</text>
|
||||||
</template>
|
</template>
|
||||||
</text>
|
</text>
|
||||||
</view>
|
</view>
|
||||||
@@ -199,9 +199,12 @@
|
|||||||
</block>
|
</block>
|
||||||
<block v-else>
|
<block v-else>
|
||||||
<view class="cart-empty">
|
<view class="cart-empty">
|
||||||
<ns-empty text="购物车为空" subText="赶紧去逛逛, 购买心仪的商品吧" :isIndex="Boolean(storeToken)"></ns-empty>
|
<ns-empty text="购物车为空" subText="赶紧去逛逛, 购买心仪的商品吧" :isIndex="Boolean(storeToken)"
|
||||||
<button type="primary" size="mini" class="button mini" v-if="!storeToken"
|
:emptyBtn="{ text: $lang('toGoodsCategoryPage'), url: '/pages_goods/category' }"></ns-empty>
|
||||||
@click="toLogin">去登录</button>
|
<button type="primary" size="mini" class="button mini" v-if="!storeToken" @click="toLogin">{{
|
||||||
|
$lang('toLogin')
|
||||||
|
}}</button>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
</block>
|
</block>
|
||||||
<ns-goods-recommend ref="goodrecommend" route="cart"></ns-goods-recommend>
|
<ns-goods-recommend ref="goodrecommend" route="cart"></ns-goods-recommend>
|
||||||
@@ -316,9 +319,9 @@
|
|||||||
<text class="unit price-font">{{ $lang('common.currencySymbol') }}</text>
|
<text class="unit price-font">{{ $lang('common.currencySymbol') }}</text>
|
||||||
<block v-if="Object.keys(discount).length">
|
<block v-if="Object.keys(discount).length">
|
||||||
<text class="value price-font">{{ parseFloat(discount.order_money).toFixed(2).split('.')[0]
|
<text class="value price-font">{{ parseFloat(discount.order_money).toFixed(2).split('.')[0]
|
||||||
}}</text>
|
}}</text>
|
||||||
<text class="unit price-font">.{{ parseFloat(discount.order_money).toFixed(2).split('.')[1]
|
<text class="unit price-font">.{{ parseFloat(discount.order_money).toFixed(2).split('.')[1]
|
||||||
}}</text>
|
}}</text>
|
||||||
</block>
|
</block>
|
||||||
<block v-else>
|
<block v-else>
|
||||||
<text class="value price-font">{{ parseFloat(totalPrice).toFixed(2).split('.')[0] }}</text>
|
<text class="value price-font">{{ parseFloat(totalPrice).toFixed(2).split('.')[0] }}</text>
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
|
import common from './common.js';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
mixins: [common],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
cartData: [], // 购物车
|
cartData: [], // 购物车
|
||||||
@@ -444,9 +447,6 @@ export default {
|
|||||||
// });
|
// });
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
toLogin() {
|
|
||||||
this.$refs.login.open();
|
|
||||||
},
|
|
||||||
// 重置编辑状态
|
// 重置编辑状态
|
||||||
resetEditStatus() {
|
resetEditStatus() {
|
||||||
if (this.cartData.length) {
|
if (this.cartData.length) {
|
||||||
|
|||||||
@@ -98,7 +98,8 @@ export default {
|
|||||||
markers: [],
|
markers: [],
|
||||||
Form: {
|
Form: {
|
||||||
realname: "",
|
realname: "",
|
||||||
mobile: ""
|
mobile: "",
|
||||||
|
remark: ""
|
||||||
},
|
},
|
||||||
ismessage: 0,
|
ismessage: 0,
|
||||||
video_url: ""
|
video_url: ""
|
||||||
@@ -263,6 +264,7 @@ export default {
|
|||||||
success: (res) => {
|
success: (res) => {
|
||||||
this.$refs.informationPopup.close();
|
this.$refs.informationPopup.close();
|
||||||
this.$util.showToast({ title: res.message });
|
this.$util.showToast({ title: res.message });
|
||||||
|
this.resetForm();
|
||||||
},
|
},
|
||||||
fail: (err) => {
|
fail: (err) => {
|
||||||
console.log(err);
|
console.log(err);
|
||||||
@@ -280,7 +282,15 @@ export default {
|
|||||||
closeinformationPopup() {
|
closeinformationPopup() {
|
||||||
this.ismessage = 0;
|
this.ismessage = 0;
|
||||||
this.$refs.informationPopup.close();
|
this.$refs.informationPopup.close();
|
||||||
|
this.resetForm();
|
||||||
},
|
},
|
||||||
|
resetForm() {
|
||||||
|
this.Form = {
|
||||||
|
realname: "",
|
||||||
|
mobile: "",
|
||||||
|
remark: ""
|
||||||
|
};
|
||||||
|
},
|
||||||
Tel(phone) {
|
Tel(phone) {
|
||||||
uni.makePhoneCall({
|
uni.makePhoneCall({
|
||||||
phoneNumber: phone + "",
|
phoneNumber: phone + "",
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
|
<<<<<<< HEAD
|
||||||
<view :style="themeColor">
|
<view :style="themeColor">
|
||||||
<mescroll-uni ref="mescroll" @getData="getData" class="member-point" :size="8" @listenRefresh="listenRefresh"
|
<mescroll-uni ref="mescroll" @getData="getData" class="member-point" :size="8" @listenRefresh="listenRefresh"
|
||||||
v-if="storeToken">
|
v-if="storeToken">
|
||||||
@@ -74,6 +75,78 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
=======
|
||||||
|
<view :style="themeColor">
|
||||||
|
<mescroll-uni ref="mescroll" @getData="getData" class="member-point" :size="8" @listenRefresh="listenRefresh">
|
||||||
|
<block class="goods_list" slot="list">
|
||||||
|
<block v-if="collectionList.length > 0">
|
||||||
|
<view class="goods_li margin-top" v-for="(item, index) in collectionList" :key="index"
|
||||||
|
@click.stop="toDetail(item)">
|
||||||
|
<view class="pic">
|
||||||
|
<image :src="$util.img(item.goods_image.split(',')[0], { size: 'mid' })" mode="aspectFill"
|
||||||
|
@error="goodsImageError(index)"></image>
|
||||||
|
</view>
|
||||||
|
<view class="goods_info">
|
||||||
|
<view class="goods_name font-size-base">{{ item.sku_name }}</view>
|
||||||
|
<view class="goods_opection">
|
||||||
|
<view class="left lineheight-clear ">
|
||||||
|
<text class="symbol price-style small">¥</text>
|
||||||
|
<text class="price price-style large">{{
|
||||||
|
parseFloat(item.discount_price).toFixed(2).split('.')[0] }}</text>
|
||||||
|
<text class="symbol price-style small">.{{
|
||||||
|
parseFloat(item.discount_price).toFixed(2).split('.')[1] }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="right">
|
||||||
|
<view class="cars" @click.stop="deleteItem(item.goods_id)">
|
||||||
|
<view class="icon iconfont icon-icon7"></view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</block>
|
||||||
|
<!-- 第一个列表为空时 -->
|
||||||
|
<view class="collection-empty" v-else>
|
||||||
|
<ns-empty v-if="collectionList.length == 0 && isShowEmpty" text="暂无关注的商品"
|
||||||
|
:isIndex="Boolean(storeToken)" :emptyBtn="{ text: $lang('toGoodsCategoryPage'), url: '/pages_goods/category' }"></ns-empty>
|
||||||
|
<button type="primary" size="mini" class="button mini" v-if="!storeToken"
|
||||||
|
@click="toLogin">{{ $lang('toLogin') }}</button>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<ns-goods-recommend ref="goodsRecommend"></ns-goods-recommend>
|
||||||
|
</block>
|
||||||
|
</mescroll-uni>
|
||||||
|
<ns-login ref="login"></ns-login>
|
||||||
|
<loading-cover ref="loadingCover"></loading-cover>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import common from './public/js/common.js';
|
||||||
|
import collection from './public/js/collection.js';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [common, collection],
|
||||||
|
data() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
onShow() {
|
||||||
|
if (this.storeToken) {
|
||||||
|
if (this.$refs.mescroll) this.$refs.mescroll.refresh();
|
||||||
|
} else {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.loadingCover.hide();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
storeToken: function (nVal, oVal) {
|
||||||
|
if (nVal) {
|
||||||
|
this.$refs.mescroll.refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>>>>>>> remotes/origin/dev/1.0
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
<view class="head-wrap" v-if="storeToken">
|
<view class="head-wrap" v-if="storeToken">
|
||||||
<text @click="manageFootprint">{{ manage ? '完成' : '管理' }}</text>
|
<text @click="manageFootprint">{{ manage ? '完成' : '管理' }}</text>
|
||||||
</view>
|
</view>
|
||||||
<mescroll-uni ref="mescroll" @getData="getListData" top="110rpx" v-if="storeToken">
|
<mescroll-uni ref="mescroll" @getData="getListData" top="110rpx">
|
||||||
<block slot="list">
|
<block slot="list">
|
||||||
<view class="goods-list single-column" v-if="goodsList.length">
|
<view class="goods-list single-column" v-if="goodsList.length > 0">
|
||||||
<view v-for="(item, index) in goodsList" :key="index">
|
<view v-for="(item, index) in goodsList" :key="index">
|
||||||
<view class="datetime">{{ datetime(item) }}</view>
|
<view class="datetime">{{ datetime(item) }}</view>
|
||||||
<view class="goods-item" :class="{ manage: manage }">
|
<view class="goods-item" :class="{ manage: manage }">
|
||||||
@@ -45,7 +45,11 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view v-else><ns-empty text="暂无浏览过的商品"></ns-empty></view>
|
<view class="footprint-empty" v-else>
|
||||||
|
<ns-empty text="暂无浏览过的商品" :isIndex="Boolean(storeToken)" :emptyBtn="{ text: $lang('toGoodsCategoryPage'), url: '/pages_goods/category' }"></ns-empty>
|
||||||
|
<button type="primary" size="mini" class="button mini" v-if="!storeToken"
|
||||||
|
@click="toLogin">{{ $lang('toLogin') }}</button>
|
||||||
|
</view>
|
||||||
|
|
||||||
<view class="bottom-wrap" v-if="goodsList.length && manage">
|
<view class="bottom-wrap" v-if="goodsList.length && manage">
|
||||||
<view class="all-election" @click="allElection">
|
<view class="all-election" @click="allElection">
|
||||||
@@ -65,7 +69,10 @@
|
|||||||
<script>
|
<script>
|
||||||
var dateList = [];
|
var dateList = [];
|
||||||
|
|
||||||
|
import common from './public/js/common.js';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
mixins: [common],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
goodsList: [],
|
goodsList: [],
|
||||||
@@ -81,7 +88,7 @@ export default {
|
|||||||
if (this.$refs.mescroll) this.$refs.mescroll.refresh();
|
if (this.$refs.mescroll) this.$refs.mescroll.refresh();
|
||||||
} else {
|
} else {
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$refs.login.open('/pages_tool/member/footprint');
|
this.$refs.loadingCover.hide();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -108,9 +115,7 @@ export default {
|
|||||||
if (res.code == 0 && res.data) {
|
if (res.code == 0 && res.data) {
|
||||||
newArr = res.data.list;
|
newArr = res.data.list;
|
||||||
} else {
|
} else {
|
||||||
this.$util.showToast({
|
console.log(`后台服务器返回的信息:${msg}`);
|
||||||
title: msg
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
mescroll.endSuccess(newArr.length);
|
mescroll.endSuccess(newArr.length);
|
||||||
//设置列表数据
|
//设置列表数据
|
||||||
|
|||||||
@@ -99,3 +99,24 @@
|
|||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
margin-top: 50rpx;
|
margin-top: 50rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.collection-empty {
|
||||||
|
text-align: center;
|
||||||
|
padding: 140rpx $padding 80rpx $padding;
|
||||||
|
|
||||||
|
image {
|
||||||
|
width: 380rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
min-width: 300rpx;
|
||||||
|
margin-top: 100rpx;
|
||||||
|
height: 70rpx;
|
||||||
|
line-height: 70rpx !important;
|
||||||
|
font-size: $font-size-base;
|
||||||
|
border-radius: 50rpx;
|
||||||
|
&.visit-the {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -2,6 +2,27 @@
|
|||||||
margin-top: 100rpx;
|
margin-top: 100rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.footprint-empty {
|
||||||
|
text-align: center;
|
||||||
|
padding: 140rpx $padding 80rpx $padding;
|
||||||
|
|
||||||
|
image {
|
||||||
|
width: 380rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
min-width: 300rpx;
|
||||||
|
margin-top: 100rpx;
|
||||||
|
height: 70rpx;
|
||||||
|
line-height: 70rpx !important;
|
||||||
|
font-size: $font-size-base;
|
||||||
|
border-radius: 50rpx;
|
||||||
|
&.visit-the {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.lineheight-clear {
|
.lineheight-clear {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ export default {
|
|||||||
},
|
},
|
||||||
async: false,
|
async: false,
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
let newArr = res.data.list;
|
let newArr = res.data?.list || [];
|
||||||
for (var i = 0; i < newArr.length; i++) {
|
for (var i = 0; i < newArr.length; i++) {
|
||||||
newArr[i].composite_score = Math.floor((parseFloat(newArr[i].shop_desccredit) + parseFloat(newArr[i].shop_servicecredit) + parseFloat(newArr[i].shop_deliverycredit)) / 3).toFixed(1);
|
newArr[i].composite_score = Math.floor((parseFloat(newArr[i].shop_desccredit) + parseFloat(newArr[i].shop_servicecredit) + parseFloat(newArr[i].shop_deliverycredit)) / 3).toFixed(1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -252,13 +252,14 @@ const store = new Vuex.Store({
|
|||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
init() {
|
init() {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise(async (resolve, reject) => {
|
||||||
Http.sendRequest({
|
Http.sendRequest({
|
||||||
url: '/api/config/init',
|
url: '/api/config/init',
|
||||||
success: res => {
|
success: async res => {
|
||||||
var data = res.data;
|
var data = res.data;
|
||||||
if (data) {
|
if (data) {
|
||||||
this.commit('setThemeStyle', configExternal.loadThemeSync(data.style_theme?.name));
|
const themeData = await configExternal.loadTheme(data.style_theme?.name);
|
||||||
|
this.commit('setThemeStyle', themeData);
|
||||||
this.dispatch('themeColorSet');
|
this.dispatch('themeColorSet');
|
||||||
|
|
||||||
// 底部导航
|
// 底部导航
|
||||||
|
|||||||
Reference in New Issue
Block a user