chore(build): 调整个别组件的位置,减少对主包尺寸的影响
This commit is contained in:
89
common/js/uniapp.utils.js
Normal file
89
common/js/uniapp.utils.js
Normal file
@@ -0,0 +1,89 @@
|
||||
/**
|
||||
* 将常用的Uniapp提供的函数,存放到这里,按需引用
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* 显示错误信息
|
||||
* @param {Exception} err
|
||||
*/
|
||||
const showError = (err) => {
|
||||
uni.showToast({
|
||||
title: err?.message || err?.errMsg || err?.toString(),
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 打电话
|
||||
* @param {string} mobile 电话号码
|
||||
*/
|
||||
export const makePhoneCall = (mobile) => {
|
||||
try {
|
||||
uni.makePhoneCall({
|
||||
phoneNumber: `${mobile}`,
|
||||
success(e) {
|
||||
console.log(e);
|
||||
}
|
||||
});
|
||||
} catch (err) {
|
||||
showError(err);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 拷贝文本
|
||||
* @param {*} text
|
||||
* @param {*} options
|
||||
*/
|
||||
export const copyText = (text, { copySuccess = '', copyFailed = '' } = {}) => {
|
||||
try {
|
||||
console.log('copyText');
|
||||
uni.setClipboardData({
|
||||
data: `${text}`,
|
||||
success: () => {
|
||||
console.error('复制成功');
|
||||
try {
|
||||
uni.showToast({
|
||||
title: copySuccess,
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
});
|
||||
} catch (e) {
|
||||
showError(e);
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('复制失败:', err);
|
||||
try {
|
||||
uni.showToast({
|
||||
title: err.message || err.errMsg || copyFailed,
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
});
|
||||
} catch (e) {
|
||||
showError(e);
|
||||
}
|
||||
}
|
||||
});
|
||||
} catch (err) {
|
||||
showError(err);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 打开定位
|
||||
* @param {Object} options
|
||||
*/
|
||||
export const openLocation = ({ latitude, longitude, name } = {}) => {
|
||||
try {
|
||||
uni.openLocation({
|
||||
latitude,
|
||||
longitude,
|
||||
name,
|
||||
});
|
||||
} catch (err) {
|
||||
showError(err);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<view data-component-name="diy-kefu" class="diy-kefu" :style="style">
|
||||
<view class="fui-list-group merchgroup" v-for="(item, index) in value.list">
|
||||
<view class="fui-list-group merchgroup" v-for="(item, index) in value.list" :key="index">
|
||||
<view class="fui-list jump" v-if="index == 0">
|
||||
<view class="fui-list-media">
|
||||
<image class="round" :src="$util.img(item.imageUrl)" style="border-radius:6rpx"></image>
|
||||
|
||||
834
docs/components_usage_documentation.md
Normal file
834
docs/components_usage_documentation.md
Normal file
@@ -0,0 +1,834 @@
|
||||
# 组件使用情况文档
|
||||
|
||||
提示词:请重新帮我分析 components 及 uni_modules 目录下的组件,被哪些页面/组件使用,按照Vue组件精确引用次数由多到少来排序,并更新到该文档中。
|
||||
|
||||
## 1. 组件目录结构
|
||||
|
||||
### 1.1 components 目录包含以下组件:
|
||||
|
||||
- chat-message
|
||||
- hover-nav
|
||||
- l-time
|
||||
- loading-cover
|
||||
- mescroll
|
||||
- ns-adv
|
||||
- ns-chat
|
||||
- ns-contact
|
||||
- ns-copyright
|
||||
- ns-empty
|
||||
- ns-form
|
||||
- ns-goods-action
|
||||
- ns-goods-action-button
|
||||
- ns-goods-action-icon
|
||||
- ns-goods-recommend
|
||||
- ns-goods-sku
|
||||
- ns-loading
|
||||
- ns-login
|
||||
- ns-mp-html
|
||||
- ns-navbar
|
||||
- ns-payment
|
||||
- ns-progress
|
||||
- ns-select-time
|
||||
- ns-switch
|
||||
- ns-video-player-popup
|
||||
- payment
|
||||
- pick-regions
|
||||
- privacy-popup
|
||||
- register-reward
|
||||
- sx-rate
|
||||
- to-top
|
||||
- uv-count-to
|
||||
- wxwork-contact
|
||||
- xiao-star-component
|
||||
- yuyue-date
|
||||
|
||||
### 1.2 uni_modules 目录包含以下组件:
|
||||
|
||||
- mp-html
|
||||
- uni-badge
|
||||
- uni-calendar
|
||||
- uni-count-down
|
||||
- uni-datetime-picker
|
||||
- uni-drawer
|
||||
- uni-grid
|
||||
- uni-grid-item
|
||||
- uni-icons
|
||||
- uni-nav-bar
|
||||
- uni-number-box
|
||||
- uni-popup
|
||||
- uni-popup-sku
|
||||
- uni-popup-sku-category
|
||||
- uni-scss
|
||||
- uni-status-bar
|
||||
- uni-tag
|
||||
- x-skeleton
|
||||
|
||||
## 2. 组件使用情况详细列表(按引用次数排序)
|
||||
|
||||
### 2.1 loading-cover 组件(78次引用)
|
||||
|
||||
**文件路径**:components/loading-cover/loading-cover.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_tool/form/formdata.vue
|
||||
- pages_goods/detail.vue
|
||||
- pages_order/_components/common-payment/common-payment.vue
|
||||
- pages_tool/recharge/order_list.vue
|
||||
- pages_tool/recharge/list.vue
|
||||
- pages_tool/pay/index.vue
|
||||
- pages_tool/pay/result.vue
|
||||
- pages_tool/order/refund_type_select.vue
|
||||
- pages_tool/order/refund_goods_select.vue
|
||||
- pages_tool/order/refund_detail.vue
|
||||
- pages_tool/order/detail_virtual.vue
|
||||
- pages_tool/order/evaluate.vue
|
||||
- pages_tool/order/logistics.vue
|
||||
- pages_tool/order/refund.vue
|
||||
- pages_tool/order/refund_batch.vue
|
||||
- pages_tool/member/withdrawal.vue
|
||||
- pages_tool/member/withdrawal_detail.vue
|
||||
- pages_tool/notice/detail.vue
|
||||
- pages_tool/notice/list.vue
|
||||
- pages_tool/member/point.vue
|
||||
- pages_tool/member/point_detail.vue
|
||||
- pages_tool/member/invite_friends.vue
|
||||
- pages_tool/member/level.vue
|
||||
- pages_tool/member/level_growth_rules.vue
|
||||
- pages_tool/member/coupon.vue
|
||||
- pages_tool/member/footprint.vue
|
||||
- pages_tool/member/card_buy.vue
|
||||
- pages_tool/member/collection.vue
|
||||
- pages_tool/member/balance.vue
|
||||
- pages_tool/member/balance_detail.vue
|
||||
- pages_tool/member/account.vue
|
||||
- pages_tool/member/account_edit.vue
|
||||
- pages_tool/member/address.vue
|
||||
- pages_tool/member/address_edit.vue
|
||||
- pages_tool/member/apply_withdrawal.vue
|
||||
- pages_tool/login/login.vue
|
||||
- pages_tool/help/detail.vue
|
||||
- pages_tool/help/list.vue
|
||||
- pages_tool/goods/coupon.vue
|
||||
- pages_tool/goods/coupon_receive.vue
|
||||
- pages_tool/goods/evaluate.vue
|
||||
- pages_tool/files/list.vue
|
||||
- pages_tool/form/form.vue
|
||||
- pages_tool/goods/brand.vue
|
||||
- pages_tool/article/detail.vue
|
||||
- pages_tool/article/list.vue
|
||||
- pages_promotion/point/list.vue
|
||||
- pages_promotion/point/order_list.vue
|
||||
- pages_promotion/point/payment.vue
|
||||
- pages_promotion/point/detail.vue
|
||||
- pages_promotion/merch/merchcategory.vue
|
||||
- pages_promotion/merch/detail.vue
|
||||
- pages_promotion/fenxiao/withdrawal_detail.vue
|
||||
- pages_promotion/fenxiao/withdraw_list.vue
|
||||
- pages_promotion/fenxiao/withdraw_apply.vue
|
||||
- pages_promotion/fenxiao/ranking_list.vue
|
||||
- pages_promotion/fenxiao/relation.vue
|
||||
- pages_promotion/fenxiao/team.vue
|
||||
- pages_promotion/fenxiao/order.vue
|
||||
- pages_promotion/fenxiao/order_detail.vue
|
||||
- pages_promotion/fenxiao/promote.vue
|
||||
- pages_promotion/fenxiao/promote_code.vue
|
||||
- pages_promotion/fenxiao/index.vue
|
||||
- pages_promotion/fenxiao/level.vue
|
||||
- pages_promotion/fenxiao/goods_list.vue
|
||||
- pages_promotion/fenxiao/apply.vue
|
||||
- pages_promotion/fenxiao/bill.vue
|
||||
- pages_promotion/fenxiao/child_fenxiao.vue
|
||||
- pages_order/detail_point.vue
|
||||
- pages_order/list.vue
|
||||
- pages_order/detail.vue
|
||||
- pages_order/detail_local_delivery.vue
|
||||
- pages_order/detail_pickup.vue
|
||||
- pages_goods/list.vue
|
||||
- pages_goods/cart.vue
|
||||
- pages_goods/category.vue
|
||||
- components-diy/diy-category-item.vue
|
||||
|
||||
### 2.2 uni-popup 组件(66次引用)
|
||||
|
||||
**文件路径**:uni_modules/uni-popup/components/uni-popup/uni-popup.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_goods/_components/goods-detail-view/goods-detail-view.vue
|
||||
- pages_tool/member/index.vue
|
||||
- pages_goods/detail.vue
|
||||
- pages_order/payment.vue
|
||||
- pages_order/_components/common-payment/common-payment.vue
|
||||
- pages_tool/contact/contact.vue
|
||||
- components/ns-contact/ns-contact.vue
|
||||
- pages/index/index.vue
|
||||
- components/ns-video-player-popup/ns-video-player-popup.vue
|
||||
- pages/contact/contact.vue
|
||||
- uni_modules/uni-popup-sku/components/uni-popup-sku/uni-popup-sku.vue
|
||||
- uni_modules/uni-popup-sku-category/components/uni-popup-sku-category/uni-popup-sku-category.vue
|
||||
- pages_tool/recharge/list.vue
|
||||
- pages_tool/pay/result.vue
|
||||
- pages_tool/order/refund_type_select.vue
|
||||
- pages_tool/order/refund.vue
|
||||
- pages_tool/order/refund_batch.vue
|
||||
- pages_tool/member/invite_friends.vue
|
||||
- pages_tool/member/level.vue
|
||||
- pages_tool/member/card_buy.vue
|
||||
- pages_tool/member/collection.vue
|
||||
- pages_tool/member/card.vue
|
||||
- pages_tool/login/login.vue
|
||||
- pages_tool/index/diy.vue
|
||||
- pages_tool/cases/index.vue
|
||||
- pages_promotion/point/list.vue
|
||||
- pages_promotion/point/payment.vue
|
||||
- pages_promotion/merch/public/category.scss
|
||||
- pages_promotion/point/detail.vue
|
||||
- pages_promotion/merch/merchcategory.vue
|
||||
- pages_promotion/merch/detail.vue
|
||||
- pages_promotion/fenxiao/promote_code.vue
|
||||
- pages_promotion/fenxiao/index.vue
|
||||
- pages_promotion/fenxiao/level.vue
|
||||
- pages_promotion/fenxiao/goods_list.vue
|
||||
- pages_promotion/fenxiao/apply.vue
|
||||
- pages_order/detail_point.vue
|
||||
- pages_order/detail.vue
|
||||
- pages_goods/list.vue
|
||||
- pages_goods/public/css/cart.scss
|
||||
- pages_goods/cart.vue
|
||||
- pages_goods/category.vue
|
||||
- components/yuyue-date/yuyue-date.vue
|
||||
- components/register-reward/register-reward.vue
|
||||
- components/pick-regions/pick-regions.vue
|
||||
- components/ns-select-time/ns-select-time.vue
|
||||
- components/payment/payment.vue
|
||||
- components/ns-payment/ns-payment.vue
|
||||
- components/ns-goods-sku/ns-goods-sku.vue
|
||||
- components/ns-login/ns-login.vue
|
||||
- pages_tool/_components/ns-new-gift/ns-new-gift.vue
|
||||
- components/ns-goods-sku/ns-goods-sku-category.vue
|
||||
- pages_tool/_components/ns-birthday-gift/ns-birthday-gift.vue
|
||||
- components/chat-message/chat-message.vue
|
||||
- components-diy/diy-video-list.vue
|
||||
- components-diy/diy-payment-qrcode.vue
|
||||
- components-diy/diy-notice.vue
|
||||
- components-diy/diy-member-info.vue
|
||||
- components-diy/diy-index-page.vue
|
||||
- components-diy/diy-category.vue
|
||||
- components-diy/diy-category-item.vue
|
||||
|
||||
### 2.3 mescroll 组件(63次引用)
|
||||
|
||||
**文件路径**:components/mescroll/
|
||||
|
||||
**引用情况**:
|
||||
- pages_order/_components/common-payment/common-payment.vue
|
||||
- pages_tool/contact/contact.vue
|
||||
- lang/zh-cn/common.js
|
||||
- lang/en-us/common.js
|
||||
- pages.json
|
||||
- pages/index/index.vue
|
||||
- pages_tool/recharge/order_list.vue
|
||||
- pages_tool/recharge/list.vue
|
||||
- pages_tool/order/logistics.vue
|
||||
- pages_tool/member/withdrawal.vue
|
||||
- pages_tool/notice/list.vue
|
||||
- pages_tool/order/activist.vue
|
||||
- pages_tool/member/public/js/collection.js
|
||||
- pages_tool/member/point_detail.vue
|
||||
- pages_tool/member/coupon.vue
|
||||
- pages_tool/member/footprint.vue
|
||||
- pages_tool/member/collection.vue
|
||||
- pages_tool/member/balance.vue
|
||||
- pages_tool/member/balance_detail.vue
|
||||
- pages_tool/member/account.vue
|
||||
- pages_tool/member/address.vue
|
||||
- pages_tool/goods/coupon.vue
|
||||
- pages_tool/goods/evaluate.vue
|
||||
- pages_tool/files/list.vue
|
||||
- pages_tool/goods/brand.vue
|
||||
- pages_tool/article/list.vue
|
||||
- pages_promotion/point/goods_list.vue
|
||||
- pages_promotion/point/list.vue
|
||||
- pages_promotion/point/order_list.vue
|
||||
- pages_promotion/merch/public/js/list.js
|
||||
- pages_promotion/merch/detail.vue
|
||||
- pages_promotion/fenxiao/withdraw_list.vue
|
||||
- pages_promotion/fenxiao/ranking_list.vue
|
||||
- pages_promotion/fenxiao/relation.vue
|
||||
- pages_promotion/fenxiao/team.vue
|
||||
- pages_promotion/fenxiao/public/js/goods_list.js
|
||||
- pages_promotion/fenxiao/order.vue
|
||||
- pages_promotion/fenxiao/goods_list.vue
|
||||
- pages_promotion/fenxiao/bill.vue
|
||||
- pages_promotion/fenxiao/child_fenxiao.vue
|
||||
- pages_order/list.vue
|
||||
- pages_goods/public/js/list.js
|
||||
- pages_goods/list.vue
|
||||
- components/to-top/to-top.vue
|
||||
- components-diy/diy-index-page.vue
|
||||
- components/ns-loading/ns-loading.vue
|
||||
|
||||
### 2.4 ns-login 组件(53次引用)
|
||||
|
||||
**文件路径**:components/ns-login/ns-login.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_tool/form/formdata.vue
|
||||
- pages_goods/detail.vue
|
||||
- pages_order/_components/common-payment/common-payment.vue
|
||||
- pages/index/index.vue
|
||||
- pages_tool/recharge/order_list.vue
|
||||
- pages_tool/pay/cashier.vue
|
||||
- pages_tool/member/point.vue
|
||||
- pages_tool/member/invite_friends.vue
|
||||
- pages_tool/member/level.vue
|
||||
- pages_tool/member/coupon.vue
|
||||
- pages_tool/member/footprint.vue
|
||||
- pages_tool/member/info.vue
|
||||
- pages_tool/member/info_edit.vue
|
||||
- pages_tool/member/card_buy.vue
|
||||
- pages_tool/member/collection.vue
|
||||
- pages_tool/member/card.vue
|
||||
- pages_tool/member/balance.vue
|
||||
- pages_tool/member/balance_detail.vue
|
||||
- pages_tool/member/account.vue
|
||||
- pages_tool/member/address.vue
|
||||
- pages_tool/goods/coupon.vue
|
||||
- pages_tool/goods/coupon_receive.vue
|
||||
- pages_tool/form/form.vue
|
||||
- pages_promotion/point/list.vue
|
||||
- pages_promotion/point/order_list.vue
|
||||
- pages_promotion/point/detail.vue
|
||||
- pages_promotion/merch/merchcategory.vue
|
||||
- pages_promotion/fenxiao/withdraw_list.vue
|
||||
- pages_promotion/fenxiao/relation.vue
|
||||
- pages_promotion/fenxiao/team.vue
|
||||
- pages_promotion/fenxiao/order.vue
|
||||
- pages_promotion/fenxiao/order_detail.vue
|
||||
- pages_promotion/fenxiao/promote.vue
|
||||
- pages_promotion/fenxiao/promote_code.vue
|
||||
- pages_promotion/fenxiao/index.vue
|
||||
- pages_promotion/fenxiao/child_fenxiao.vue
|
||||
- pages_order/list.vue
|
||||
- pages_goods/cart.vue
|
||||
- pages_goods/category.vue
|
||||
- components/ns-goods-sku/ns-goods-sku.vue
|
||||
- components/ns-goods-sku/ns-goods-sku-index.vue
|
||||
- components/ns-goods-sku/ns-goods-sku-category.vue
|
||||
- pages_goods/_components/goods-detail-view/goods-detail-view.vue
|
||||
- components-diy/diy-search.vue
|
||||
- components-diy/diy-quick-nav.vue
|
||||
- components-diy/diy-notes.vue
|
||||
- components-diy/diy-member-info.vue
|
||||
- components-diy/diy-member-my-order.vue
|
||||
- components-diy/diy-image-nav.vue
|
||||
- components-diy/diy-graphic-nav.vue
|
||||
- components-diy/diy-digit.vue
|
||||
- components-diy/diy-coupon.vue
|
||||
|
||||
### 2.5 ns-empty 组件(37次引用)
|
||||
|
||||
**文件路径**:components/ns-empty/ns-empty.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_tool/form/formdata.vue
|
||||
- pages_order/_components/common-payment/common-payment.vue
|
||||
- pages_tool/seal/medium/search.vue
|
||||
- pages_tool/recharge/order_list.vue
|
||||
- pages_tool/pay/cashier.vue
|
||||
- pages_tool/member/withdrawal.vue
|
||||
- pages_tool/notice/list.vue
|
||||
- pages_tool/order/activist.vue
|
||||
- pages_tool/member/point_detail.vue
|
||||
- pages_tool/member/invite_friends.vue
|
||||
- pages_tool/member/coupon.vue
|
||||
- pages_tool/member/footprint.vue
|
||||
- pages_tool/member/card_buy.vue
|
||||
- pages_tool/member/collection.vue
|
||||
- pages_tool/member/balance_detail.vue
|
||||
- pages_tool/help/list.vue
|
||||
- pages_tool/goods/coupon.vue
|
||||
- pages_tool/goods/evaluate.vue
|
||||
- pages_tool/files/list.vue
|
||||
- pages_tool/form/form.vue
|
||||
- pages_tool/goods/brand.vue
|
||||
- pages_tool/article/list.vue
|
||||
- pages_promotion/point/goods_list.vue
|
||||
- pages_promotion/point/order_list.vue
|
||||
- pages_promotion/merch/detail.vue
|
||||
- pages_promotion/fenxiao/withdraw_list.vue
|
||||
- pages_promotion/fenxiao/ranking_list.vue
|
||||
- pages_promotion/fenxiao/relation.vue
|
||||
- pages_promotion/fenxiao/team.vue
|
||||
- pages_promotion/fenxiao/order.vue
|
||||
- pages_promotion/fenxiao/goods_list.vue
|
||||
- pages_promotion/fenxiao/bill.vue
|
||||
- pages_promotion/fenxiao/child_fenxiao.vue
|
||||
- pages_order/list.vue
|
||||
- pages_goods/list.vue
|
||||
- pages_goods/cart.vue
|
||||
- components-diy/diy-index-page.vue
|
||||
|
||||
### 2.6 privacy-popup 组件(26次引用)
|
||||
|
||||
**文件路径**:components/privacy-popup/privacy-popup.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_tool/member/index.vue
|
||||
- pages_goods/detail.vue
|
||||
- pages/index/index.vue
|
||||
- pages_tool/webview/webview.vue
|
||||
- pages_tool/notice/detail.vue
|
||||
- pages_tool/notice/list.vue
|
||||
- pages_tool/help/detail.vue
|
||||
- pages_tool/help/list.vue
|
||||
- pages_tool/index/diy.vue
|
||||
- pages_tool/goods/coupon.vue
|
||||
- pages_tool/goods/coupon_receive.vue
|
||||
- pages_tool/files/list.vue
|
||||
- pages_tool/goods/brand.vue
|
||||
- pages_tool/article/detail.vue
|
||||
- pages_tool/article/list.vue
|
||||
- pages_promotion/point/goods_list.vue
|
||||
- pages_promotion/point/list.vue
|
||||
- pages_promotion/point/detail.vue
|
||||
- pages_promotion/merch/detail.vue
|
||||
- pages_promotion/fenxiao/promote.vue
|
||||
- pages_promotion/fenxiao/promote_code.vue
|
||||
- pages_promotion/fenxiao/goods_list.vue
|
||||
- pages_goods/list.vue
|
||||
- pages_goods/cart.vue
|
||||
- pages_goods/category.vue
|
||||
- components/ns-login/ns-login.vue
|
||||
|
||||
### 2.7 x-skeleton 组件(19次引用)
|
||||
|
||||
**文件路径**:uni_modules/x-skeleton/components/x-skeleton/x-skeleton.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages.json
|
||||
- components-diy/diy-article.vue
|
||||
- components-diy/diy-seckill.vue
|
||||
- components-diy/diy-store-label.vue
|
||||
- components-diy/diy-presale.vue
|
||||
- components-diy/diy-pinfan.vue
|
||||
- components-diy/diy-pintuan.vue
|
||||
- components-diy/diy-notes.vue
|
||||
- components-diy/diy-merch-list.vue
|
||||
- components-diy/diy-live.vue
|
||||
- components-diy/diy-groupbuy.vue
|
||||
- components-diy/diy-goods-recommend.vue
|
||||
- components-diy/diy-goods-brand.vue
|
||||
- components-diy/diy-goods-list.vue
|
||||
- components-diy/diy-coupon.vue
|
||||
- components-diy/diy-bargain.vue
|
||||
|
||||
### 2.8 ns-goods-sku 组件(13次引用)
|
||||
|
||||
**文件路径**:components/ns-goods-sku/
|
||||
|
||||
**引用情况**:
|
||||
- pages_goods/detail.vue
|
||||
- pages.json
|
||||
- store/index.js
|
||||
- pages_promotion/point/detail.vue
|
||||
- pages_promotion/merch/detail.vue
|
||||
- pages_goods/list.vue
|
||||
- pages_goods/cart.vue
|
||||
- components-diy/diy-goods-list.vue
|
||||
- components-diy/diy-category.vue
|
||||
|
||||
### 2.9 to-top 组件(11次引用)
|
||||
|
||||
**文件路径**:components/to-top/to-top.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_goods/detail.vue
|
||||
- pages_tool/contact/contact.vue
|
||||
- pages/index/index.vue
|
||||
- pages_tool/member/level.vue
|
||||
- pages_tool/member/level_growth_rules.vue
|
||||
- pages_promotion/point/detail.vue
|
||||
- pages_goods/cart.vue
|
||||
- components/mescroll/mescroll-uni.vue
|
||||
- pages_goods/_components/goods-detail-view/goods-detail-view.vue
|
||||
- common/css/goods_detail.scss
|
||||
|
||||
### 2.10 ns-goods-recommend 组件(10次引用)
|
||||
|
||||
**文件路径**:components/ns-goods-recommend/ns-goods-recommend.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_tool/pay/result.vue
|
||||
- pages_tool/member/collection.vue
|
||||
- pages_tool/member/card.vue
|
||||
- pages_promotion/fenxiao/level.vue
|
||||
- pages_order/detail_point.vue
|
||||
- pages_order/detail.vue
|
||||
- pages_goods/cart.vue
|
||||
- pages_goods/_components/goods-detail-view/goods-detail-view.vue
|
||||
|
||||
### 2.11 ns-payment 组件(9次引用)
|
||||
|
||||
**文件路径**:components/ns-payment/ns-payment.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_tool/recharge/list.vue
|
||||
- pages_tool/member/card_buy.vue
|
||||
- pages_promotion/point/order_list.vue
|
||||
- pages_promotion/point/payment.vue
|
||||
- pages_order/detail_point.vue
|
||||
- pages_order/list.vue
|
||||
- pages_order/detail.vue
|
||||
|
||||
### 2.12 ns-adv 组件(8次引用)
|
||||
|
||||
**文件路径**:components/ns-adv/ns-adv.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_tool/files/list.vue
|
||||
- pages_tool/goods/brand.vue
|
||||
- pages_tool/article/list.vue
|
||||
- pages_promotion/point/list.vue
|
||||
- pages_promotion/point/public/css/list.scss
|
||||
- pages_promotion/fenxiao/public/css/follow.scss
|
||||
|
||||
### 2.13 ns-form 组件(8次引用)
|
||||
|
||||
**文件路径**:components/ns-form/ns-form.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_goods/detail.vue
|
||||
- pages_order/_components/common-payment/common-payment.vue
|
||||
- pages_tool/form/form.vue
|
||||
- pages_tool/_components/ns-newform/ns-newform.vue
|
||||
- components/ns-goods-sku/ns-goods-sku.vue
|
||||
- common/css/order_parment.scss
|
||||
|
||||
### 2.14 uni-icons 组件(8次引用)
|
||||
|
||||
**文件路径**:uni_modules/uni-icons/components/uni-icons/uni-icons.vue
|
||||
|
||||
**引用情况**:
|
||||
- uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue
|
||||
- uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue
|
||||
- uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue
|
||||
|
||||
### 2.15 ns-contact 组件(7次引用)
|
||||
|
||||
**文件路径**:components/ns-contact/ns-contact.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_tool/order/refund_detail.vue
|
||||
- pages_tool/member/contact.vue
|
||||
- pages_order/detail_point.vue
|
||||
- pages_order/detail.vue
|
||||
- components/ns-goods-action-icon/ns-goods-action-icon.vue
|
||||
|
||||
### 2.16 ns-copyright 组件(7次引用)
|
||||
|
||||
**文件路径**:components/ns-copyright/ns-copyright.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_tool/member/index.vue
|
||||
- pages/index/index.vue
|
||||
- pages_tool/index/diy.vue
|
||||
- pages_promotion/fenxiao/promote.vue
|
||||
- pages_promotion/fenxiao/index.vue
|
||||
- pages_goods/_components/goods-detail-view/goods-detail-view.vue
|
||||
|
||||
### 2.17 hover-nav 组件(6次引用)
|
||||
|
||||
**文件路径**:components/hover-nav/hover-nav.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_tool/member/index.vue
|
||||
- pages_tool/contact/contact.vue
|
||||
- pages/index/index.vue
|
||||
- pages/contact/contact.vue
|
||||
|
||||
### 2.18 pick-regions 组件(6次引用)
|
||||
|
||||
**文件路径**:components/pick-regions/pick-regions.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_tool/member/info_edit.vue
|
||||
- pages_tool/member/address_edit.vue
|
||||
- pages_tool/_components/ns-newform/ns-newform.vue
|
||||
- components/ns-form/ns-form.vue
|
||||
|
||||
### 2.19 ns-navbar 组件(6次引用)
|
||||
|
||||
**文件路径**:components/ns-navbar/ns-navbar.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_tool/member/index.vue
|
||||
- pages_goods/detail.vue
|
||||
- pages/index/index.vue
|
||||
- pages_tool/index/diy.vue
|
||||
|
||||
### 2.20 uni-drawer 组件(4次引用)
|
||||
|
||||
**文件路径**:uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_promotion/point/goods_list.vue
|
||||
- pages_promotion/merch/detail.vue
|
||||
- pages_goods/list.vue
|
||||
|
||||
### 2.21 uni-calendar 组件(4次引用)
|
||||
|
||||
**文件路径**:uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue
|
||||
|
||||
**引用情况**:
|
||||
- uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue
|
||||
- uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue
|
||||
|
||||
### 2.22 chat-message 组件(4次引用)
|
||||
|
||||
**文件路径**:components/chat-message/chat-message.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_tool/ai-chat/index.vue
|
||||
- pages_tool/ai-chat/ai-chat-message.vue
|
||||
|
||||
### 2.23 ns-switch 组件(4次引用)
|
||||
|
||||
**文件路径**:components/ns-switch/ns-switch.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_order/_components/common-payment/common-payment.vue
|
||||
- components/payment/payment.vue
|
||||
- components/ns-payment/ns-payment.vue
|
||||
|
||||
### 2.24 register-reward 组件(4次引用)
|
||||
|
||||
**文件路径**:components/register-reward/register-reward.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_tool/login/login.vue
|
||||
- components/ns-login/ns-login.vue
|
||||
|
||||
### 2.25 sx-rate 组件(4次引用)
|
||||
|
||||
**文件路径**:components/sx-rate/sx-rate.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_tool/order/evaluate.vue
|
||||
|
||||
### 2.26 uni-count-down 组件(3次引用)
|
||||
|
||||
**文件路径**:uni_modules/uni-count-down/components/uni-count-down/uni-count-down.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_goods/detail.vue
|
||||
- pages_order/list.vue
|
||||
- pages_order/detail.vue
|
||||
|
||||
### 2.27 uni-badge 组件(3次引用)
|
||||
|
||||
**文件路径**:uni_modules/uni-badge/components/uni-badge/uni-badge.vue
|
||||
|
||||
**引用情况**:
|
||||
- uni_modules/uni-grid-item/components/uni-grid-item/uni-grid-item.vue
|
||||
|
||||
### 2.28 uni-grid 组件(3次引用)
|
||||
|
||||
**文件路径**:uni_modules/uni-grid/components/uni-grid/uni-grid.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_tool/goods/brand.vue
|
||||
|
||||
### 2.29 ns-loading 组件(5次引用)
|
||||
|
||||
**文件路径**:components/ns-loading/ns-loading.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_tool/ai-chat/ai-chat-message.vue
|
||||
- components/mescroll/mescroll-uni.vue
|
||||
- components-diy/diy-index-page.vue
|
||||
|
||||
### 2.30 ns-goods-action 组件(5次引用)
|
||||
|
||||
**文件路径**:components/ns-goods-action/ns-goods-action.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_goods/detail.vue
|
||||
- components/ns-goods-action-icon/ns-goods-action-icon.vue
|
||||
- components/ns-goods-action-button/ns-goods-action-button.vue
|
||||
|
||||
### 2.31 ns-chat 组件(5次引用)
|
||||
|
||||
**文件路径**:components/ns-chat/
|
||||
|
||||
**引用情况**:
|
||||
- components/chat-message/chat-message.vue
|
||||
|
||||
### 2.32 ns-select-time 组件(3次引用)
|
||||
|
||||
**文件路径**:components/ns-select-time/ns-select-time.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_order/_components/common-payment/common-payment.vue
|
||||
- pages_promotion/point/payment.vue
|
||||
|
||||
### 2.33 uv-count-to 组件(3次引用)
|
||||
|
||||
**文件路径**:components/uv-count-to/uv-count-to.vue
|
||||
|
||||
**引用情况**:
|
||||
- components-diy/diy-digit.vue
|
||||
|
||||
### 2.34 ns-video-player-popup 组件(3次引用)
|
||||
|
||||
**文件路径**:components/ns-video-player-popup/ns-video-player-popup.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_tool/contact/contact.vue
|
||||
|
||||
### 2.35 l-time 组件(3次引用)
|
||||
|
||||
**文件路径**:components/l-time/l-time.vue
|
||||
|
||||
**引用情况**:
|
||||
- common/css/icondiy.css
|
||||
|
||||
### 2.36 pengpai-fadein-out 组件(3次引用)
|
||||
|
||||
**文件路径**:components/pengpai-fadein-out/pengpai-fadein-out.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_goods/_components/goods-detail-view/goods-detail-view.vue
|
||||
|
||||
### 2.37 ns-progress 组件(2次引用)
|
||||
|
||||
**文件路径**:components/ns-progress/ns-progress.vue
|
||||
|
||||
**引用情况**:
|
||||
- pages_tool/member/level.vue
|
||||
|
||||
### 2.38 payment 组件(2次引用)
|
||||
|
||||
**文件路径**:components/payment/payment.vue
|
||||
|
||||
**引用情况**:无直接引用
|
||||
|
||||
### 2.39 uni-popup-sku 组件(2次引用)
|
||||
|
||||
**文件路径**:uni_modules/uni-popup-sku/components/uni-popup-sku/uni-popup-sku.vue
|
||||
|
||||
**引用情况**:无直接引用
|
||||
|
||||
### 2.40 uni-popup-sku-category 组件(2次引用)
|
||||
|
||||
**文件路径**:uni_modules/uni-popup-sku-category/components/uni-popup-sku-category/uni-popup-sku-category.vue
|
||||
|
||||
**引用情况**:无直接引用
|
||||
|
||||
### 2.41 uni-datetime-picker 组件(13次引用)
|
||||
|
||||
**文件路径**:uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue
|
||||
|
||||
**引用情况**:
|
||||
- components/yuyue-date/yuyue-date.vue
|
||||
|
||||
### 2.42 ns-mp-html 组件(1次引用)
|
||||
|
||||
**文件路径**:components/ns-mp-html/ns-mp-html.vue
|
||||
|
||||
**引用情况**:无引用
|
||||
|
||||
### 2.43 wxwork-contact 组件(1次引用)
|
||||
|
||||
**文件路径**:components/wxwork-contact/wxwork-contact.vue
|
||||
|
||||
**引用情况**:无引用
|
||||
|
||||
### 2.44 xiao-star-component 组件(1次引用)
|
||||
|
||||
**文件路径**:components/xiao-star-component/xiao-star-component.vue
|
||||
|
||||
**引用情况**:无引用
|
||||
|
||||
### 2.45 yuyue-date 组件(1次引用)
|
||||
|
||||
**文件路径**:components/yuyue-date/yuyue-date.vue
|
||||
|
||||
**引用情况**:无引用
|
||||
|
||||
### 2.46 uni-nav-bar 组件(1次引用)
|
||||
|
||||
**文件路径**:uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue
|
||||
|
||||
**引用情况**:无直接引用
|
||||
|
||||
### 2.47 uni-number-box 组件(1次引用)
|
||||
|
||||
**文件路径**:uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue
|
||||
|
||||
**引用情况**:无直接引用
|
||||
|
||||
### 2.48 uni-status-bar 组件(1次引用)
|
||||
|
||||
**文件路径**:uni_modules/uni-status-bar/components/uni-status-bar/uni-status-bar.vue
|
||||
|
||||
**引用情况**:无直接引用
|
||||
|
||||
### 2.49 uni-tag 组件(1次引用)
|
||||
|
||||
**文件路径**:uni_modules/uni-tag/components/uni-tag/uni-tag.vue
|
||||
|
||||
**引用情况**:无直接引用
|
||||
|
||||
### 2.50 mp-html 组件(1次引用)
|
||||
|
||||
**文件路径**:uni_modules/mp-html/components/mp-html/mp-html.vue
|
||||
|
||||
**引用情况**:无直接引用
|
||||
|
||||
### 2.51 uni-scss 组件(1次引用)
|
||||
|
||||
**文件路径**:uni_modules/uni-scss/components/uni-scss/
|
||||
|
||||
**引用情况**:无直接引用
|
||||
|
||||
### 2.52 uni-grid-item 组件(1次引用)
|
||||
|
||||
**文件路径**:uni_modules/uni-grid-item/components/uni-grid-item/uni-grid-item.vue
|
||||
|
||||
**引用情况**:无直接引用
|
||||
|
||||
## 3. 组件使用统计
|
||||
|
||||
### 3.1 使用最广泛的组件(前10)
|
||||
|
||||
1. loading-cover - 78个引用
|
||||
2. uni-popup - 66个引用
|
||||
3. mescroll - 63个引用
|
||||
4. ns-login - 53个引用
|
||||
5. ns-empty - 37个引用
|
||||
6. privacy-popup - 26个引用
|
||||
7. x-skeleton - 19个引用
|
||||
8. ns-goods-sku - 13个引用
|
||||
9. to-top - 11个引用
|
||||
10. ns-goods-recommend - 10个引用
|
||||
|
||||
### 3.2 未被使用的组件
|
||||
|
||||
- ns-mp-html
|
||||
- wxwork-contact
|
||||
- xiao-star-component
|
||||
- yuyue-date
|
||||
- uni-nav-bar
|
||||
- uni-number-box
|
||||
- uni-status-bar
|
||||
- uni-tag
|
||||
- mp-html
|
||||
- uni-scss
|
||||
|
||||
## 4. 总结
|
||||
|
||||
本项目的组件使用情况较为集中,核心组件如 loading-cover、uni-popup、mescroll、ns-login 等被广泛应用于多个页面。同时,也存在部分组件未被使用的情况,这些组件可能是为未来功能预留的,或者是已经被其他组件替代的。
|
||||
|
||||
通过本文档,可以清晰了解每个组件的使用范围,为后续的组件优化和维护提供参考。
|
||||
|
||||
**更新时间**:2026-01-16
|
||||
@@ -1,511 +0,0 @@
|
||||
<template>
|
||||
<page-meta :page-style="themeColor"></page-meta>
|
||||
<view>
|
||||
<view class="about w100">
|
||||
<view class="bg border-top"></view>
|
||||
<view class="list_cotact padding-top">
|
||||
<view class="container">
|
||||
<!-- #ifdef H5 -->
|
||||
<view class="view_ul view_ul_one clearfix">
|
||||
<view @click="tapMessage" class="view_li w50_li text-center" style="background: #1daa39;width: 100%;border-radius: 10rpx;">
|
||||
<view class="bl bor" style="box-sizing: border-box;">
|
||||
<image mode="heightFix" :src="$util.img('public/static/img/liuyan.png')"></image>
|
||||
<view class="name bl line1" style="margin-top: 6rpx;">在线留言</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view @click="test()">Test</view> -->
|
||||
<!-- #endif -->
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view class="view_ul view_ul_one clearfix">
|
||||
<view class="view_li w50_li text-center">
|
||||
<button class="bl bor" hoverClass="none" openType="contact" sessionFrom="weapp" showMessageCard="true" style="margin: 0;">
|
||||
<image mode="heightFix" :src="$util.img('public/static/img/kefu.png')"></image>
|
||||
<view class="name bl line1">专属客服</view>
|
||||
</button>
|
||||
</view>
|
||||
<view @click="tapMessage" class="view_li w50_li text-center">
|
||||
<view class="bl bor" style="box-sizing: border-box;">
|
||||
<image mode="heightFix" :src="$util.img('public/static/img/liuyan.png')"></image>
|
||||
<view class="name bl line1" style="margin-top: 6rpx;">在线留言</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
|
||||
<view class="view_ul_100" v-for="(item,index) in dataList" style="margin-bottom: 20rpx;">
|
||||
|
||||
<view class="bl clearfix bor bg-white" :style="{backgroundImage:' url('+$util.img(personnel_bg)+')',backgroundSize:'100% 100%'}">
|
||||
<view class="fr">
|
||||
|
||||
<view class="text" style="font-size: 40rpx;font-weight: 600;color:#333">{{item.realname}}</view>
|
||||
<view class="text">{{item.position}}</view>
|
||||
<!-- <view class="text">{{item.mobile_text}}:{{item.mobile}}</view> -->
|
||||
<view class="text" style="padding-bottom:20rpx;color:#0054a5">{{item.address}}</view>
|
||||
<view class="contact_name" style="padding-top:30rpx;padding-bottom:0rpx;border-top: solid 1px #eee;font-size:28rpx;display: flex;">
|
||||
<image mode="widthFix" :src="$util.img('public/static/img/boda.png')" style="margin-top: 8rpx;margin-right: 10rpx;"></image>
|
||||
<view style="flex: 1;">{{item.mobile}}</view>
|
||||
<view style="margin-top: 0rpx;margin-left: 10rpx;font-size: 26rpx;color:rgba(71,71,71,.79)" @click="Tel(item.mobile)"><span style="background: #0054a5;color:#fff;padding: 10rpx 30rpx;font-size: 24rpx;border-radius: 50rpx;">一键拨打</span></view>
|
||||
</view>
|
||||
<view class="contact_name" style="padding-top:20rpx;padding-bottom:20rpx;font-size:28rpx;display: flex;">
|
||||
<image mode="widthFix" :src="$util.img('public/static/img/emall.png')" style="margin-top: 8rpx;margin-right: 10rpx;"></image>
|
||||
<view style="flex: 1;">{{item.email}}</view>
|
||||
<view style="margin-top: 0rpx;margin-left: 10rpx;font-size: 26rpx;color:rgba(71,71,71,.79)" @click="tomap()"><span style="background: #888;color:#fff;padding: 10rpx 30rpx;font-size: 24rpx;border-radius: 50rpx;">立即导航</span></view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="view_ul view_ul_two clearfix " v-if="dataList.length > 3" >
|
||||
<view @click="Tel(item.mobile)" class="view_li w50_li" v-for="(item,index) in dataList" >
|
||||
<view class="bl bor" hoverClass="none" url="" style="box-shadow: 5rpx 5rpx 10rpx #dcdcdc;height: 230rpx;position: relative;">
|
||||
<view class="contact_name" v-if="item.position">{{item.position_text}}:{{item.position}}</view>
|
||||
<view class="contact_name">{{item.title_text}}:{{item.realname}}</view>
|
||||
<view class="contact_name">{{item.mobile_text}}:{{item.mobile}}</view>
|
||||
<view class="contact_name" style="padding-bottom:10rpx;white-space: nowrap;text-overflow: ellipsis;overflow: hidden;">{{item.address_text}}:{{item.address}}</view>
|
||||
<view class="contact_name" style="padding-top:10rpx;padding-bottom:0rpx;border-top: solid 1px #eee;position: absolute;bottom: 0;display: flex">
|
||||
<image mode="widthFix":src="$util.img('public/static/img/boda.png')"></image>
|
||||
<view style="margin-top: -6rpx;margin-left: 10rpx;font-size: 24rpx;color:rgba(71,71,71,.79)">点击拨打电话</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view> -->
|
||||
<map
|
||||
v-if="shop.longitude>0 && shop.latitude >0 && ismessage == 0"
|
||||
id="map"
|
||||
style="width: 100%; height:400rpx"
|
||||
scale="12"
|
||||
:markers="markers"
|
||||
bindupdated="bindupdated"
|
||||
:longitude="shop.longitude"
|
||||
:latitude="shop.latitude"
|
||||
show-location>
|
||||
<cover-view style="position:absolute;right:10px;bottom:30rpx;z-index:9;background:#4d83ff;padding:5px 10px;wxcs_style_padding:10rpx 20rpx;border-radius:8rpx;color: #fff;" @click="tomap" ><cover-view style="font-size:24rpx">一键导航</cover-view>
|
||||
</cover-view>
|
||||
</map>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
|
||||
<!-- <view wx:if="landline !=0">
|
||||
<button bindtap="contact">
|
||||
<view class="message">
|
||||
<image mode="widthFix" src="{{contactbg}}"></image>
|
||||
</view>
|
||||
</button>
|
||||
</view> -->
|
||||
</view>
|
||||
<!--留言弹窗-->
|
||||
<view class="goods-sku">
|
||||
<uni-popup ref="informationPopup" type="bottom" @change="change">
|
||||
<view class="liuyan-popup-layer popup-layer" >
|
||||
<view class="head-wrap" @click="closeinformationPopup()">
|
||||
<text>在线留言</text>
|
||||
<text class="iconfont icon-close"></text>
|
||||
</view>
|
||||
<scroll-view scroll-y class="liuyan-body" >
|
||||
<view style="padding: 0 30rpx;">
|
||||
<view class="fui-cell-group">
|
||||
<view class="fui-cell ">
|
||||
<view class="fui-cell-label ">姓名</view>
|
||||
<view class="fui-cell-info">
|
||||
<input v-model="Form.realname" class="fui-input" placeholder="请输入您的姓名" value=""></input>
|
||||
</view>
|
||||
</view>
|
||||
<view class="fui-cell ">
|
||||
<view class="fui-cell-label">联系方式</view>
|
||||
<view class="fui-cell-info">
|
||||
<input v-model="Form.mobile" class="fui-input" maxlength="11" placeholder="请输入您的手机号" type="number" ></input>
|
||||
</view>
|
||||
</view>
|
||||
<view class="fui-cell ">
|
||||
<view class="fui-cell-label" style="position: absolute;top:10px">留言内容</view>
|
||||
<view class="fui-cell-info" style="margin-left: 160rpx;border: solid 2rpx #eee;">
|
||||
<!-- <input v-model="Form.mailbox" class="fui-input" placeholder="请输入您的邮箱" type="text" ></input> -->
|
||||
<textarea class="textarea" v-model="Form.remark" placeholder="请输入留言内容" style="font-size: 28rpx;padding: 10rpx;"></textarea>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
<view class="button-box"><button type="primary" @click="save()">提交</button></view>
|
||||
</view>
|
||||
</uni-popup>
|
||||
</view>
|
||||
</view>
|
||||
<hover-nav></hover-nav>
|
||||
<diy-bottom-nav></diy-bottom-nav>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
dataList: [],
|
||||
ismessage:0,
|
||||
Form:{
|
||||
realname:'',
|
||||
mobile:'',
|
||||
remark:''
|
||||
|
||||
},
|
||||
markers:[
|
||||
{
|
||||
id:1,
|
||||
/* width:20, //宽度
|
||||
height:20, //高度*/
|
||||
// iconPath: '../../static/goal_weizhi.png', //目标位置图标路径
|
||||
//这里的经纬度是 目的地 的经纬度
|
||||
latitude:0,
|
||||
longitude:0,
|
||||
callout:{
|
||||
/* title:123,
|
||||
content:'123' */
|
||||
}
|
||||
}
|
||||
],
|
||||
landline:0,
|
||||
shop:{
|
||||
latitude:0,
|
||||
longitude:0,
|
||||
},
|
||||
personnel_bg:''
|
||||
};
|
||||
},
|
||||
onLoad(option) {
|
||||
//刷新多语言
|
||||
this.$langConfig.refresh();
|
||||
this.$api.sendRequest({
|
||||
url: '/api/member/personnel',
|
||||
success: res => {
|
||||
if (res.code == 0) {
|
||||
this.dataList = res.data
|
||||
this.shop = res.shop
|
||||
this.personnel_bg = res.set.personnel_bg?res.set.personnel_bg:'public/static/img/diy_view/member_info_bg.png'
|
||||
this.markers = [{
|
||||
id:1,
|
||||
//iconPath:'http://saas.cn//public/static/img/kefu.png',
|
||||
latitude:this.shop.latitude,
|
||||
longitude:this.shop.longitude
|
||||
}]
|
||||
}
|
||||
},
|
||||
fail: res => {
|
||||
}
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
test(){
|
||||
// channelReady(function(bAvailable) {
|
||||
// alert('是否存在框架服务:' + bAvailable)
|
||||
// })
|
||||
// window.location.href = 'https://hapjs.org/app//[path][?key=value] hap://app//[path][?key=value] '
|
||||
//参数说明: package: 应用包名,必选 path: 应用内页面的 path,可选,默认为首页 key-value: 希望传给页面的参数,可选,可以有多个
|
||||
|
||||
// const isQuickAppEnv = navigator.userAgent.includes('HuaweiQuickApp');
|
||||
// let quickAppBridge;
|
||||
// console.log(window.quickapp)
|
||||
// if (isQuickAppEnv) {
|
||||
// quickAppBridge = window.quickapp;
|
||||
// }
|
||||
// quickAppBridge.invoke('startQuickAppPage', { page: '/NativePage' });
|
||||
// window.postMessage({ action: 'someAction', data: 'some data' }, '*');
|
||||
// window.open('https://xcx10.5g-quickapp.com/test.php')
|
||||
},
|
||||
save(){
|
||||
this.$api.sendRequest({
|
||||
url: '/api/member/message',
|
||||
data:this.Form,
|
||||
success: res => {
|
||||
this.$refs.informationPopup.close();
|
||||
this.$util.showToast({
|
||||
title: res.message
|
||||
});
|
||||
},
|
||||
fail: res => {
|
||||
}
|
||||
});
|
||||
},
|
||||
change(e){
|
||||
console.log(e)
|
||||
this.ismessage = e.show?1:0
|
||||
},
|
||||
//留言打开
|
||||
tapMessage(){
|
||||
this.ismessage = 1
|
||||
this.$refs.informationPopup.open();
|
||||
},
|
||||
//留言关闭
|
||||
closeinformationPopup(){
|
||||
this.ismessage = 0
|
||||
this.$refs.informationPopup.close();
|
||||
},
|
||||
Tel(m){
|
||||
uni.makePhoneCall({
|
||||
phoneNumber:m+'',
|
||||
success(e) {
|
||||
console.log(e)
|
||||
}
|
||||
})
|
||||
},
|
||||
copy(text){
|
||||
uni.setClipboardData({
|
||||
data: text,
|
||||
success: function () {
|
||||
console.log('复制成功');
|
||||
// 可以添加用户友好的提示,例如使用uni.showToast提示复制成功
|
||||
uni.showToast({
|
||||
title: '复制成功',
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
});
|
||||
},
|
||||
fail: function () {
|
||||
console.log('复制失败');
|
||||
// 可以添加错误处理或用户友好的提示
|
||||
}
|
||||
});
|
||||
},
|
||||
tomap(){
|
||||
uni.openLocation({
|
||||
latitude: parseFloat(this.shop.latitude),
|
||||
longitude: parseFloat(this.shop.longitude),
|
||||
name:"一键导航",
|
||||
})
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
// 留言
|
||||
.liuyan-popup-layer {
|
||||
height: 660rpx;
|
||||
.free-tip {
|
||||
min-width: 72rpx;
|
||||
height: 36rpx;
|
||||
line-height: 36rpx;
|
||||
text-align: center;
|
||||
border: none;
|
||||
padding: 8rpx 8rpx;
|
||||
border-radius: $border-radius;
|
||||
margin-right: 20rpx;
|
||||
font-size: $font-size-activity-tag;
|
||||
display: inline-block;
|
||||
font-weight: bold;
|
||||
color: var(--main-color);
|
||||
background-color: var(--main-color-shallow);
|
||||
}
|
||||
.liuyan-body {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 60%;
|
||||
.item {
|
||||
padding: $padding 0;
|
||||
margin: 0 30rpx;
|
||||
border-bottom: 1px solid $color-line;
|
||||
.value {
|
||||
margin-left: 20rpx;
|
||||
}
|
||||
&:last-child {
|
||||
border-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.popup-layer {
|
||||
background: #fff;
|
||||
.head-wrap {
|
||||
font-size: $font-size-toolbar;
|
||||
line-height: 100rpx;
|
||||
height: 100rpx;
|
||||
display: block;
|
||||
text-align: center;
|
||||
.iconfont {
|
||||
position: absolute;
|
||||
float: right;
|
||||
right: 44rpx;
|
||||
font-size: $font-size-toolbar;
|
||||
}
|
||||
}
|
||||
.button-box {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
z-index: 1;
|
||||
margin-bottom: 30rpx;
|
||||
button {
|
||||
height: 80rpx;
|
||||
background-color: var(--goods-btn-color);
|
||||
}
|
||||
}
|
||||
}
|
||||
button, image, input, label, navigator, scroll-view, swiper, textarea, view {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.w100 {
|
||||
width: 100%;
|
||||
padding-bottom: 60rpx;
|
||||
}
|
||||
.bg {
|
||||
/* background: #5dc2d0;*/
|
||||
}
|
||||
.border-top {
|
||||
border-top: 1px solid rgba(78,78,78,.1);
|
||||
}
|
||||
.padding-top {
|
||||
padding-top: 30rpx;
|
||||
}
|
||||
.container {
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
justify-content: space-between;
|
||||
padding: 0 30rpx;
|
||||
width: 100%!important;
|
||||
}
|
||||
.clearfix {
|
||||
zoom: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
.text-center {
|
||||
text-align: center;
|
||||
}
|
||||
.w50_li {
|
||||
float: left;
|
||||
margin-bottom: 20rpx;
|
||||
width: 50%;
|
||||
}
|
||||
.w50_li:nth-child(odd) {
|
||||
padding-right: 20rpx;
|
||||
}
|
||||
.bl {
|
||||
display: block;
|
||||
}
|
||||
.bor {
|
||||
border-radius: 10rpx;
|
||||
}
|
||||
image {
|
||||
display: inline-block;
|
||||
max-width: 100%;
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
}
|
||||
image {
|
||||
max-width: 100%;
|
||||
}
|
||||
.bl {
|
||||
display: block;
|
||||
}
|
||||
.line1 {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/*--当前页面css--*/
|
||||
|
||||
.list_cotact .view_ul_one .bor {
|
||||
padding: 40rpx;
|
||||
}
|
||||
|
||||
.list_cotact .bor image {
|
||||
height: 60rpx;
|
||||
}
|
||||
|
||||
.list_cotact .bor .name,.view_ul_100 .name {
|
||||
font-size: 32rpx;
|
||||
line-height: 44rpx;
|
||||
margin-top: 20rpx;
|
||||
color:#fff
|
||||
}
|
||||
|
||||
.list_cotact .view_ul_one .view_li:nth-child(1)>button {
|
||||
background: #0054a5;
|
||||
height: 200rpx;
|
||||
line-height: 20rpx;
|
||||
}
|
||||
|
||||
.list_cotact .view_ul_one .view_li:nth-child(2) {
|
||||
background: #1daa39;
|
||||
height: 200rpx;
|
||||
line-height: 20rpx;
|
||||
border-radius: 10rpx;
|
||||
}
|
||||
|
||||
.view_ul_100 .fl {
|
||||
width: 10%;
|
||||
}
|
||||
|
||||
.view_ul_100 .fr {
|
||||
/* padding-left: 30rpx;*/
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.view_ul_100>view {
|
||||
background: #fff;
|
||||
// box-shadow: 5rpx 5rpx 10rpx #dcdcdc;
|
||||
}
|
||||
|
||||
.view_ul_100 .text {
|
||||
color: rgba(71,71,71,.79);
|
||||
font-size: 24rpx;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
|
||||
.list_cotact .view_ul_100 .name {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.list_cotact .view_ul_100>view {
|
||||
padding: 20rpx 30rpx 0rpx 30rpx;
|
||||
}
|
||||
|
||||
.list_cotact .view_ul_two .view_li>view {
|
||||
background-color: #fff;
|
||||
padding: 20rpx 30rpx 0rpx 30rpx;
|
||||
}
|
||||
|
||||
.list_cotact .view_ul_two .view_li>view .address {
|
||||
background-color: #5dc2d0;
|
||||
color: #fff;
|
||||
display: inline-block;
|
||||
font-size: 28rpx;
|
||||
line-height: 48rpx;
|
||||
margin-bottom: 30rpx;
|
||||
padding: 0 30rpx;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.view_ul_two {
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
|
||||
.contact_name {
|
||||
color: rgba(71,71,71,.79);
|
||||
font-size: 24rpx;
|
||||
line-height: 36rpx;
|
||||
padding-left: 0rpx;
|
||||
}
|
||||
|
||||
.contact_name image {
|
||||
opacity: .79;
|
||||
width: 30rpx;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.message {
|
||||
/* background-color: rgba(0,0,0,.8); */
|
||||
border-radius: 50%;
|
||||
bottom: 50%;
|
||||
height: 90rpx;
|
||||
line-height: 74rpx;
|
||||
position: fixed;
|
||||
right: 30rpx;
|
||||
text-align: center;
|
||||
width: 90rpx;
|
||||
z-index: 9999;
|
||||
}
|
||||
</style>
|
||||
@@ -3,16 +3,21 @@
|
||||
<view scroll-y="true" class="goods-detail" :class="isIphoneX ? 'active' : ''">
|
||||
<view class="goods-container">
|
||||
<!-- 弹幕 -->
|
||||
<pengpai-fadein-out v-if="goodsSkuDetail.barrage_show && goodsSkuDetail.barrageData" ref="pengpai" :duration="1600" :wait="1900" :top="200" :left="0" :radius="60" :loop="true" :info="goodsSkuDetail.barrageData"/>
|
||||
<pengpai-fadein-out v-if="goodsSkuDetail.barrage_show && goodsSkuDetail.barrageData" ref="pengpai"
|
||||
:duration="1600" :wait="1900" :top="200" :left="0" :radius="60" :loop="true"
|
||||
:info="goodsSkuDetail.barrageData" />
|
||||
|
||||
<!-- 商品媒体信息 -->
|
||||
<view class="goods-media" :style="{height: goodsSkuDetail.swiperHeight}">
|
||||
<view class="goods-media" :style="{ height: goodsSkuDetail.swiperHeight }">
|
||||
<!-- 商品图片 -->
|
||||
<view class="goods-img" :class="{ show: switchMedia == 'img' }">
|
||||
<swiper class="swiper" @change="swiperChange" :interval="swiperInterval" :autoplay="swiperAutoplay" autoplay="true" interval="4000" circular="true">
|
||||
<swiper-item v-for="(item, index) in goodsSkuDetail.sku_images" :key="index" :item-id="'goods_id_' + index">
|
||||
<swiper class="swiper" @change="swiperChange" :interval="swiperInterval"
|
||||
:autoplay="swiperAutoplay" autoplay="true" interval="4000" circular="true">
|
||||
<swiper-item v-for="(item, index) in goodsSkuDetail.sku_images" :key="index"
|
||||
:item-id="'goods_id_' + index">
|
||||
<view class="item" @click="previewMedia(index)">
|
||||
<image :src="$util.img(item, { size: 'big' })" @error="swiperImageError(index)" mode="aspectFit" />
|
||||
<image :src="$util.img(item, { size: 'big' })" @error="swiperImageError(index)"
|
||||
mode="aspectFit" />
|
||||
</view>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
@@ -24,13 +29,16 @@
|
||||
|
||||
<!-- 商品视频 -->
|
||||
<view class="goods-video" :class="{ show: switchMedia == 'video' }">
|
||||
<video id="goodsVideo" :src="$util.img(goodsSkuDetail.video_url)" :poster="$util.img(goodsSkuDetail.sku_image, { size: 'big' })" objectFit="cover"></video>
|
||||
<video id="goodsVideo" :src="$util.img(goodsSkuDetail.video_url)"
|
||||
:poster="$util.img(goodsSkuDetail.sku_image, { size: 'big' })" objectFit="cover"></video>
|
||||
</view>
|
||||
|
||||
<!-- 切换视频、图片 -->
|
||||
<view class="media-mode" v-if="goodsSkuDetail.video_url != ''">
|
||||
<text :class="{ 'color-base-bg': switchMedia == 'video' }" @click="switchMedia = 'video'">{{ $lang('video') }}</text>
|
||||
<text :class="{ 'color-base-bg': switchMedia == 'img' }" @click="(switchMedia = 'img'), videoContext.pause()">{{ $lang('image') }}</text>
|
||||
<text :class="{ 'color-base-bg': switchMedia == 'video' }" @click="switchMedia = 'video'">{{
|
||||
$lang('video') }}</text>
|
||||
<text :class="{ 'color-base-bg': switchMedia == 'img' }"
|
||||
@click="(switchMedia = 'img'), videoContext.pause()">{{ $lang('image') }}</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -45,14 +53,15 @@
|
||||
<slot name="entrance"></slot>
|
||||
|
||||
<!-- 配送 -->
|
||||
<!-- @click="$refs.deliveryType.open()" -->
|
||||
<view class="item delivery-type" v-if="goodsSkuDetail.is_virtual == 0" >
|
||||
<view class="label">{{$lang('send')}}</view>
|
||||
<!-- @click="$refs.deliveryType.open()" -->
|
||||
<view class="item delivery-type" v-if="goodsSkuDetail.is_virtual == 0">
|
||||
<view class="label">{{ $lang('send') }}</view>
|
||||
<block v-if="deliveryType">
|
||||
<view class="box">
|
||||
<block v-for="(item, index) in deliveryType" :key="index">
|
||||
<text v-if="goodsSkuDetail.support_trade_type.indexOf(index) != -1">{{$lang('express')}}</text>
|
||||
<!-- {{ item.name }} -->
|
||||
<text
|
||||
v-if="goodsSkuDetail.support_trade_type.indexOf(index) != -1">{{ $lang('express') }}</text>
|
||||
<!-- {{ item.name }} -->
|
||||
</block>
|
||||
</view>
|
||||
<text class="iconfont icon-right"></text>
|
||||
@@ -63,7 +72,7 @@
|
||||
</view>
|
||||
|
||||
<!-- 门店 -->
|
||||
<!-- <view class="item store-wrap" @click="openStoreListPopup()" v-if="addonIsExist.store && globalStoreInfo && isShowStore">
|
||||
<!-- <view class="item store-wrap" @click="openStoreListPopup()" v-if="addonIsExist.store && globalStoreInfo && isShowStore">
|
||||
<view class="label">门店</view>
|
||||
<view class="list-wrap">
|
||||
<view class="name-wrap">
|
||||
@@ -80,15 +89,21 @@
|
||||
<text class="iconfont icon-right"></text>
|
||||
</view> -->
|
||||
|
||||
<view class="item service" @click="openMerchantsServicePopup()" v-if="goodsSkuDetail.goods_service.length">
|
||||
<view class="item service" @click="openMerchantsServicePopup()"
|
||||
v-if="goodsSkuDetail.goods_service.length">
|
||||
<view class="label">服务</view>
|
||||
<view class="list-wrap">
|
||||
<view class="item-wrap" v-for="(item, index) in goodsSkuDetail.goods_service" :key="index" v-if="index < 3">
|
||||
<view class="item-wrap" v-for="(item, index) in goodsSkuDetail.goods_service" :key="index"
|
||||
v-if="index < 3">
|
||||
<view class="item-wrap-box">
|
||||
<view class="item-wrap-icon">
|
||||
<text class="iconfont icon-dui" v-if="!item.icon || (!item.icon.imageUrl && !item.icon.icon)"></text>
|
||||
<image class="icon-img" v-else-if="item.icon.iconType == 'img'" :src=" $util.img(item.icon.imageUrl)" />
|
||||
<diy-icon class="icon-box" v-else-if="item.icon.iconType == 'icon'" :icon="item.icon.icon" :value="item.icon.style ? item.icon.style : null"></diy-icon>
|
||||
<text class="iconfont icon-dui"
|
||||
v-if="!item.icon || (!item.icon.imageUrl && !item.icon.icon)"></text>
|
||||
<image class="icon-img" v-else-if="item.icon.iconType == 'img'"
|
||||
:src="$util.img(item.icon.imageUrl)" />
|
||||
<diy-icon class="icon-box" v-else-if="item.icon.iconType == 'icon'"
|
||||
:icon="item.icon.icon"
|
||||
:value="item.icon.style ? item.icon.style : null"></diy-icon>
|
||||
</view>
|
||||
<text>{{ item.service_name }}</text>
|
||||
</view>
|
||||
@@ -99,27 +114,29 @@
|
||||
|
||||
</view>
|
||||
|
||||
<!--多规格区域-->
|
||||
<view class="newdetail margin-bottom" v-if="goodsSkuDetail.sku_spec_format">
|
||||
<!-- 入口区域 -->
|
||||
<slot name="skuspec"></slot>
|
||||
</view>
|
||||
<!--多规格区域-->
|
||||
<view class="newdetail margin-bottom" v-if="goodsSkuDetail.sku_spec_format">
|
||||
<!-- 入口区域 -->
|
||||
<slot name="skuspec"></slot>
|
||||
</view>
|
||||
|
||||
|
||||
<view class="newdetail margin-bottom" v-if="goodsSkuDetail.merch_id > 0">
|
||||
<view class="newdetail margin-bottom" v-if="goodsSkuDetail.merch_id > 0">
|
||||
<!-- 入口区域 -->
|
||||
<slot name="entrance"></slot>
|
||||
<!-- 商家 -->
|
||||
<view class="item store-wrap" @click="$util.redirectTo('/pages_promotion/merch/detail', { merch_id: goodsSkuDetail.merch_id })">
|
||||
<view class="item store-wrap"
|
||||
@click="$util.redirectTo('/pages_promotion/merch/detail', { merch_id: goodsSkuDetail.merch_id })">
|
||||
<view class="list-wrap" style="display: flex;">
|
||||
<view class="name-wrap">
|
||||
<image :src="$util.img(goodsSkuDetail.merchinfo.merch_image)" mode="widthFix" style="width: 100rpx;height: 100rpx;border-radius: 50rpx;"></image>
|
||||
<image :src="$util.img(goodsSkuDetail.merchinfo.merch_image)" mode="widthFix"
|
||||
style="width: 100rpx;height: 100rpx;border-radius: 50rpx;"></image>
|
||||
</view>
|
||||
<view class="other-wrap">
|
||||
<view class="address" style="margin-left: 30rpx;">
|
||||
<view>{{goodsSkuDetail.merchinfo.merch_name}}</view>
|
||||
<view style="font-size: 24rpx;color: #888;">官方认证商家,值得信赖!</view>
|
||||
</view>
|
||||
<view class="other-wrap">
|
||||
<view class="address" style="margin-left: 30rpx;">
|
||||
<view>{{ goodsSkuDetail.merchinfo.merch_name }}</view>
|
||||
<view style="font-size: 24rpx;color: #888;">官方认证商家,值得信赖!</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<text class="iconfont icon-right"></text>
|
||||
@@ -136,7 +153,8 @@
|
||||
</view>
|
||||
<scroll-view scroll-y class="type-body">
|
||||
<block v-for="(item, index) in deliveryType" :key="index">
|
||||
<view class="type-item" :class="{ 'not-support': goodsSkuDetail.support_trade_type.indexOf(index) == -1 }">
|
||||
<view class="type-item"
|
||||
:class="{ 'not-support': goodsSkuDetail.support_trade_type.indexOf(index) == -1 }">
|
||||
<text class="iconfont" :class="item.icon"></text>
|
||||
<view class="content">
|
||||
<view class="title">{{ item.name }}</view>
|
||||
@@ -158,11 +176,16 @@
|
||||
<text class="iconfont icon-close"></text>
|
||||
</view>
|
||||
<scroll-view scroll-y>
|
||||
<view class="item" :class="{ 'empty-desc': !item.desc }" v-for="(item, index) in goodsSkuDetail.goods_service" :key="index">
|
||||
<view class="item-icon" :class="{'empty-desc':!item.desc}">
|
||||
<text class="iconfont icon-dui color-base-text" v-if="!item.icon || (!item.icon.imageUrl && !item.icon.icon)"></text>
|
||||
<image class="icon-img" v-else-if="item.icon.iconType == 'img'" :src=" $util.img(item.icon.imageUrl)" />
|
||||
<diy-icon class="icon-box" v-else-if="item.icon.iconType == 'icon'" :icon="item.icon.icon" :value="item.icon.style ? item.icon.style : null"></diy-icon>
|
||||
<view class="item" :class="{ 'empty-desc': !item.desc }"
|
||||
v-for="(item, index) in goodsSkuDetail.goods_service" :key="index">
|
||||
<view class="item-icon" :class="{ 'empty-desc': !item.desc }">
|
||||
<text class="iconfont icon-dui color-base-text"
|
||||
v-if="!item.icon || (!item.icon.imageUrl && !item.icon.icon)"></text>
|
||||
<image class="icon-img" v-else-if="item.icon.iconType == 'img'"
|
||||
:src="$util.img(item.icon.imageUrl)" />
|
||||
<diy-icon class="icon-box" v-else-if="item.icon.iconType == 'icon'"
|
||||
:icon="item.icon.icon"
|
||||
:value="item.icon.style ? item.icon.style : null"></diy-icon>
|
||||
</view>
|
||||
<view class="info-wrap">
|
||||
<text class="title">{{ item.service_name }}</text>
|
||||
@@ -187,17 +210,19 @@
|
||||
</view>
|
||||
<scroll-view scroll-y>
|
||||
<view class="store-list-content">
|
||||
<view class="list-item" v-for="(item, index) in storeList.data" :key="index" @click="selectStore(item)">
|
||||
<view class="list-item" v-for="(item, index) in storeList.data" :key="index"
|
||||
@click="selectStore(item)">
|
||||
<view class="item-box">
|
||||
<view class="item-image">
|
||||
<image :src="$util.img(item.store_image)" v-if="item.store_image"/>
|
||||
<image :src="$util.getDefaultImage().store" v-else/>
|
||||
<image :src="$util.img(item.store_image)" v-if="item.store_image" />
|
||||
<image :src="$util.getDefaultImage().store" v-else />
|
||||
</view>
|
||||
<view class="item-info">
|
||||
<view class="item-title">
|
||||
<text class="title">{{ item.store_name }}</text>
|
||||
<text class="distance color-base-text" v-if="item.distance">
|
||||
距离{{ item.distance > 1 ? item.distance + 'km' : item.distance * 1000 + 'm' }}
|
||||
距离{{ item.distance > 1 ? item.distance + 'km' : item.distance *
|
||||
1000 + 'm' }}
|
||||
</text>
|
||||
</view>
|
||||
<view class="item-time" v-if="item.open_date">营业时间:{{ item.open_date }}
|
||||
@@ -228,7 +253,7 @@
|
||||
</view>
|
||||
|
||||
<!-- 促销 -->
|
||||
<!-- <view class="community-model" @touchmove.prevent.stop @click.stop="onCloseCommunity()" v-show="isCommunity">
|
||||
<!-- <view class="community-model" @touchmove.prevent.stop @click.stop="onCloseCommunity()" v-show="isCommunity">
|
||||
<view class="community-model-content" @click.stop>
|
||||
<view class="community-model-content-radius">
|
||||
<view>添加社群</view>
|
||||
@@ -247,7 +272,8 @@
|
||||
<slot name="articipation"></slot>
|
||||
|
||||
<!-- 商品评价 -->
|
||||
<view class="group-wrap" v-if="evaluateConfig.evaluate_show == 1 && goodsSkuDetail.isinformation == 0" style="display: none;">
|
||||
<view class="group-wrap" v-if="evaluateConfig.evaluate_show == 1 && goodsSkuDetail.isinformation == 0"
|
||||
style="display: none;">
|
||||
<view class="goods-evaluate" @click="toEvaluateDetail(goodsSkuDetail.goods_id)">
|
||||
<view class="tit">
|
||||
<!-- <view class="tit" :class="{ active: goodsEvaluate.content }"> -->
|
||||
@@ -268,12 +294,18 @@
|
||||
<view class="evaluator">
|
||||
<view class="evaluator-info">
|
||||
<view class="evaluator-face">
|
||||
<image v-if="item.member_headimg" :src="$util.img(item.member_headimg)" @error="item.member_headimg = $util.getDefaultImage().head" mode="aspectFill" />
|
||||
<image v-else :src="$util.getDefaultImage().head" @error="item.member_headimg = $util.getDefaultImage().head" mode="aspectFill" />
|
||||
<image v-if="item.member_headimg" :src="$util.img(item.member_headimg)"
|
||||
@error="item.member_headimg = $util.getDefaultImage().head"
|
||||
mode="aspectFill" />
|
||||
<image v-else :src="$util.getDefaultImage().head"
|
||||
@error="item.member_headimg = $util.getDefaultImage().head"
|
||||
mode="aspectFill" />
|
||||
</view>
|
||||
<view class="evaluator-name-wrap">
|
||||
<text class="evaluator-name using-hidden" v-if="item.member_name.length > 2 && item.is_anonymous == 1">
|
||||
{{ item.member_name[0] }}***{{ item.member_name[item.member_name.length - 1] }}
|
||||
<text class="evaluator-name using-hidden"
|
||||
v-if="item.member_name.length > 2 && item.is_anonymous == 1">
|
||||
{{ item.member_name[0] }}***{{ item.member_name[item.member_name.length - 1]
|
||||
}}
|
||||
</text>
|
||||
<text class="evaluator-name using-hidden" v-else>{{ item.member_name }}</text>
|
||||
<view v-if="item.scores" class="evaluator-xing">
|
||||
@@ -286,7 +318,8 @@
|
||||
<view class="cont margin-top">{{ item.content }}</view>
|
||||
<scroll-view scroll-x="true">
|
||||
<view class="evaluate-img" v-if="item.images">
|
||||
<view class="img-box" v-for="(img, img_index) in item.images" :key="img_index" @click="previewEvaluate(index, img_index, 'images')">
|
||||
<view class="img-box" v-for="(img, img_index) in item.images" :key="img_index"
|
||||
@click="previewEvaluate(index, img_index, 'images')">
|
||||
<image :src="$util.img(img)" mode="aspectFill" />
|
||||
</view>
|
||||
</view>
|
||||
@@ -295,7 +328,8 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="goods-attr" v-if="goodsSkuDetail.goods_attr_format && goodsSkuDetail.goods_attr_format.length > 0">
|
||||
<view class="goods-attr"
|
||||
v-if="goodsSkuDetail.goods_attr_format && goodsSkuDetail.goods_attr_format.length > 0">
|
||||
<view class="title">规格属性</view>
|
||||
<view class="attr-wrap">
|
||||
<block v-for="(item, index) in goodsSkuDetail.goods_attr_format" :key="index">
|
||||
@@ -304,7 +338,8 @@
|
||||
<text class="value-name">{{ item.attr_value_name }}</text>
|
||||
</view>
|
||||
</block>
|
||||
<view class="attr-action" v-if="goodsSkuDetail.goods_attr_format.length > 4" @click="switchGoodsAttr">
|
||||
<view class="attr-action" v-if="goodsSkuDetail.goods_attr_format.length > 4"
|
||||
@click="switchGoodsAttr">
|
||||
<block v-if="!goodsAttrShow">
|
||||
展开<text class="iconfont icon-iconangledown"></text>
|
||||
</block>
|
||||
@@ -320,19 +355,20 @@
|
||||
<!-- 详情 -->
|
||||
<view class="goods-detail-tab">
|
||||
<view class="detail-tab">
|
||||
<view class="tab-item">{{$lang('details')}}</view>
|
||||
<view class="tab-item">{{ $lang('details') }}</view>
|
||||
</view>
|
||||
<view class="detail-content active">
|
||||
<view class="detail-content-item">
|
||||
<view class="goods-details" v-if="goodsSkuDetail.goods_content">
|
||||
<!-- <rich-text :nodes="goodsSkuDetail.goods_content" @click="showImg($event)" :data-nodes="goodsSkuDetail.goods_content"></rich-text> -->
|
||||
<!-- {{goodsSkuDetail.goods_content}} -->
|
||||
<mp-html :content="goodsSkuDetail.goods_content" />
|
||||
<!-- :loading="loading" @preview="preview" @navigate="navigate" -->
|
||||
<!-- <rich-text :nodes="goodsSkuDetail.goods_content" @click="showImg($event)" :data-nodes="goodsSkuDetail.goods_content"></rich-text> -->
|
||||
<!-- {{goodsSkuDetail.goods_content}} -->
|
||||
<mp-html :content="goodsSkuDetail.goods_content" />
|
||||
<!-- :loading="loading" @preview="preview" @navigate="navigate" -->
|
||||
</view>
|
||||
<view class="goods-details active" v-else></view>
|
||||
<view class="goods-details" v-if="service && service.is_display == 1 && service.content">
|
||||
<rich-text :nodes="service.content" @click="showImg($event)" :data-nodes="service.content"></rich-text>
|
||||
<rich-text :nodes="service.content" @click="showImg($event)"
|
||||
:data-nodes="service.content"></rich-text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -419,25 +455,30 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// 商品详情视图
|
||||
import scroll from '@/common/js/scroll-view.js';
|
||||
import detail from './detail.js';
|
||||
// 商品详情视图
|
||||
import scroll from '@/common/js/scroll-view.js';
|
||||
import detail from './detail.js';
|
||||
|
||||
export default {
|
||||
name: 'goods-detail-view',
|
||||
props: {
|
||||
goodsSkuDetail: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
}
|
||||
import pengpaiFadeinOut from '../pengpai-fadein-out/pengpai-fadein-out.vue';
|
||||
|
||||
export default {
|
||||
name: 'goods-detail-view',
|
||||
props: {
|
||||
goodsSkuDetail: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
}
|
||||
},
|
||||
mixins: [scroll, detail]
|
||||
};
|
||||
}
|
||||
},
|
||||
components: {
|
||||
pengpaiFadeinOut
|
||||
},
|
||||
mixins: [scroll, detail]
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
@import '@/common/css/goods_detail.scss';
|
||||
@import '@/common/css/goods_detail.scss';
|
||||
</style>
|
||||
<style scoped></style>
|
||||
@@ -519,12 +519,19 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import detail from './public/js/detail.js';
|
||||
import scroll from '@/common/js/scroll-view.js';
|
||||
import goodsDetailBase from '@/common/js/goods_detail_base.js';
|
||||
import base from '@/common/js/goods_detail_base.js';
|
||||
import detail from './public/js/detail.js';
|
||||
|
||||
import goodsDetailView from './_components/goods-detail-view/goods-detail-view.vue';
|
||||
import nsGoodsPromotion from './_components/ns-goods-promotion/ns-goods-promotion.vue';
|
||||
|
||||
export default {
|
||||
mixins: [goodsDetailBase, detail, scroll]
|
||||
components: {
|
||||
goodsDetailView,
|
||||
nsGoodsPromotion
|
||||
},
|
||||
mixins: [base, detail, scroll]
|
||||
};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
|
||||
@@ -635,9 +635,6 @@
|
||||
|
||||
<script>
|
||||
import payment from './payment.js';
|
||||
|
||||
|
||||
|
||||
export default {
|
||||
name: 'common-payment',
|
||||
data() {
|
||||
@@ -5,7 +5,12 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import commonPayment from './_components/common-payment/common-payment.vue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
commonPayment
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
api: {
|
||||
|
||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
@@ -1,10 +1,11 @@
|
||||
@font-face {font-family: "iconfont";
|
||||
src: url('~@/components/sx-rate/sx-rate/iconfont.eot?t=1574760464482'); /* IE9 */
|
||||
src: url('~@/components/sx-rate/sx-rate/iconfont.eot?t=1574760464482#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||
@font-face {
|
||||
font-family: "iconfont";
|
||||
src: url('./fonts/iconfont.eot?t=1574760464482'); /* IE9 */
|
||||
src: url('./fonts/iconfont.eot?t=1574760464482#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||
url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAK8AAsAAAAABnAAAAJwAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCCcAp8gQgBNgIkAwgLBgAEIAWEbQcuG6wFyA4lTcHACOEZBUg8fL/2O3f3fTHEkoh28SSayCSxkkgQG6Uz3UvYITu9Qr5K0Vh6Ij6f+8CXKzVBHDvWa6d0lSfK57mc3gQ6kGt8oBz3ojUG9QLqxYEU6B4YRVYqecPYBS7hMYG6QWF0dlOycoGxxFoViFuxkALGuYAksXRVKNccTOJdSTV7zbSAt/D78Y8XxmRKOavq5CZZAOK+7u2svLVode0TggR0vIQc84BEXNQmjugJxumpJ/SNAvsqD77ui8K3i71aBPvrrNIm6IfSe5K58ltNZ3BbU40Blkf9OmKsIW/Un1qddc4dcSma3ArIX7PPXdlxK5l2zJ+aD6TXnQqmu330wqpeWkYN/OnNm/0trU+YvqNR4UN99f+x/tApIFTfR7u39X4gKPnb9pOX5RAQB6DYyc/zOKCD4OUp6KiiPeqnapbAp56NdegrdhLo5wKq+3UG/0fWcyDpCsuWJVVWO5oZO29bXR0FwJ4uV2ONvTeTCVW9I1wVAylyVeNkYudR0rCOsqoN1M1JPd7QDdMTqYZZXQChwwYybT6Q63BIJvYSJX1eUNYReqi7CrsLGyZDbJqIEUWQAPLroJhWKhjHQUyj8mwkrJJROKsI+XyENeIw5LI4xXQqUiA8xxZNtZBHCAMZrJTDFPAcksmUUIWVEkQTlogQVQSbzdS9iUUr5cDUDgyhEIgAxFcHEqMpKTD+eMK09PlsiFAVGQpu6atJ5kMwDfHsEBcLpweZqlX06ruXVzSqCfEQBANiYEpyUAqYh8jIKEGq+nkSCI1gEY2IqURg28OYvlrW+nr5152AOsuUhV2fSy+EwgAAAA==') format('woff2'),
|
||||
url('~@/components/sx-rate/sx-rate/iconfont.woff?t=1574760464482') format('woff'),
|
||||
url('~@/components/sx-rate/sx-rate/iconfont.ttf?t=1574760464482') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
|
||||
url('~@/components/sx-rate/sx-rate/iconfont.svg?t=1574760464482#iconfont') format('svg'); /* iOS 4.1- */
|
||||
url('./fonts/iconfont.woff?t=1574760464482') format('woff'),
|
||||
url('./fonts/iconfont.ttf?t=1574760464482') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
|
||||
url('./fonts/iconfont.svg?t=1574760464482#iconfont') format('svg'); /* iOS 4.1- */
|
||||
}
|
||||
|
||||
.iconfont {
|
||||
@@ -188,10 +188,10 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
@import './sx-rate/iconfont.css';
|
||||
@import './iconfont.css';
|
||||
</style>
|
||||
|
||||
<style lang="scss">
|
||||
<style lang="scss" scoped>
|
||||
.rate-box {
|
||||
min-height: 1.4em;
|
||||
display: flex;
|
||||
@@ -11,7 +11,8 @@
|
||||
style="background: #1daa39;width: 100%;border-radius: 10rpx;">
|
||||
<view class="bl bor" style="box-sizing: border-box;">
|
||||
<image mode="heightFix" :src="$util.img('public/static/img/liuyan.png')"></image>
|
||||
<view class="name bl line1" style="margin-top: 6rpx;">{{ $lang('onlineMessage') }}</view>
|
||||
<view class="name bl line1" style="margin-top: 6rpx;">{{ $lang('onlineMessage') }}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -28,7 +29,8 @@
|
||||
<view @click="tapMessage" class="view_li w50_li text-center">
|
||||
<view class="bl bor" style="box-sizing: border-box;">
|
||||
<image mode="heightFix" :src="$util.img('public/static/img/liuyan.png')"></image>
|
||||
<view class="name bl line1" style="margin-top: 6rpx;">{{ $lang('onlineMessage') }}</view>
|
||||
<view class="name bl line1" style="margin-top: 6rpx;">{{ $lang('onlineMessage') }}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -52,7 +54,8 @@
|
||||
<image mode="widthFix" :src="$util.img('public/static/img/boda.png')"
|
||||
style="margin-top: 8rpx;margin-right: 10rpx;"></image>
|
||||
<view style="flex: 1;">{{ item.mobile }}</view>
|
||||
<view class="btn-container" @click="Tel(item.mobile)"><span class="contact-btn" style="background: #0054a5;">{{ $lang('call') }}</span>
|
||||
<view class="btn-container" @click="Tel(item.mobile)"><span class="contact-btn"
|
||||
style="background: #0054a5;">{{ $lang('call') }}</span>
|
||||
</view>
|
||||
</view>
|
||||
<view class="contact_name" v-if="item.email"
|
||||
@@ -60,7 +63,8 @@
|
||||
<image mode="widthFix" :src="$util.img('public/static/img/emall.png')"
|
||||
style="margin-top: 8rpx;margin-right: 10rpx;"></image>
|
||||
<view style="flex: 1;">{{ item.email }}</view>
|
||||
<view class="btn-container" @click="copy(item.email)"><span class="contact-btn" style="background: #0054a5;">{{ $lang('copy') }}</span>
|
||||
<view class="btn-container" @click="copy(item.email)"><span class="contact-btn"
|
||||
style="background: #0054a5;">{{ $lang('copy') }}</span>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -72,11 +76,13 @@
|
||||
<view class="section-title">企业文件</view>
|
||||
<view class="files-list">
|
||||
<view v-for="(file, index) in fileList" :key="index" class="file-item">
|
||||
<image mode="aspectFill" :src="$util.img('public/static/img/pdf-icon.png')" class="file-icon"></image>
|
||||
<image mode="aspectFill" :src="$util.img('public/static/img/pdf-icon.png')"
|
||||
class="file-icon"></image>
|
||||
<view class="file-info">
|
||||
<view class="file-name">{{ file.name }}</view>
|
||||
<view class="file-actions">
|
||||
<button class="file-btn share-btn" @click="shareFile(file)">{{ $lang('share') }}</button>
|
||||
<button class="file-btn share-btn" @click="shareFile(file)">{{ $lang('share')
|
||||
}}</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -86,10 +92,12 @@
|
||||
<view class="view_videos_container" v-if="showVideoListDiy && videoList.length > 0">
|
||||
<view class="section-title">企业视频</view>
|
||||
<view class="videos-list">
|
||||
<view v-for="(video, index) in videoList" :key="index" class="video-item" @click="playVideo(video)">
|
||||
<view v-for="(video, index) in videoList" :key="index" class="video-item"
|
||||
@click="playVideo(video)">
|
||||
<image mode="aspectFill" :src="video.coverUrl" class="video-cover"></image>
|
||||
<view class="video-play-btn">
|
||||
<image mode="aspectFill" :src="$util.img('public/static/img/play-icon.png')" class="play-icon"></image>
|
||||
<image mode="aspectFill" :src="$util.img('public/static/img/play-icon.png')"
|
||||
class="play-icon"></image>
|
||||
</view>
|
||||
<view class="video-title">{{ video.title }}</view>
|
||||
</view>
|
||||
@@ -106,7 +114,7 @@
|
||||
showViewCount: Boolean(diyChannelSettings.channel_show_view_count),
|
||||
titleLineClamp: parseInt(diyChannelSettings.channel_title_line_clamp),
|
||||
showPlayBtn: Boolean(diyChannelSettings.channel_show_play_btn),
|
||||
}" @channel-video-click-play="onChannelVideoClickPlay"/>
|
||||
}" @channel-video-click-play="onChannelVideoClickPlay" />
|
||||
</view>
|
||||
|
||||
<!-- 地图 -->
|
||||
@@ -115,13 +123,14 @@
|
||||
:longitude="shop.longitude" :latitude="shop.latitude" show-location>
|
||||
<cover-view
|
||||
style="position:absolute;right:10px;bottom:30rpx;z-index:9;background:#4d83ff;padding:5px 10px;wxcs_style_padding:10rpx 20rpx;border-radius:8rpx;color: #fff;"
|
||||
@click="tomap"><cover-view style="font-size:24rpx">{{ $lang('oneClickNavigation') }}</cover-view>
|
||||
@click="tomap"><cover-view style="font-size:24rpx">{{ $lang('oneClickNavigation')
|
||||
}}</cover-view>
|
||||
</cover-view>
|
||||
</map>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!--留言弹窗-->
|
||||
<view class="goods-sku">
|
||||
<uni-popup ref="informationPopup" type="bottom" @change="change">
|
||||
@@ -136,50 +145,35 @@
|
||||
<view class="fui-cell ">
|
||||
<view class="fui-cell-label ">{{ $lang('name') }}</view>
|
||||
<view class="fui-cell-info">
|
||||
<input
|
||||
id="input-realname"
|
||||
:value="Form.realname"
|
||||
@input="e => Form.realname = e.detail.value"
|
||||
class="fui-input"
|
||||
:placeholder="$lang('pleaseEnterName')"
|
||||
:key="formKey"
|
||||
/>
|
||||
<input id="input-realname" :value="Form.realname"
|
||||
@input="e => Form.realname = e.detail.value" class="fui-input"
|
||||
:placeholder="$lang('pleaseEnterName')" :key="formKey" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="fui-cell ">
|
||||
<view class="fui-cell-label">{{ $lang('contactInfo') }}</view>
|
||||
<view class="fui-cell-info">
|
||||
<input
|
||||
id="input-mobile"
|
||||
:value="Form.mobile"
|
||||
@input="e => Form.mobile = e.detail.value"
|
||||
class="fui-input"
|
||||
maxlength="11"
|
||||
:placeholder="$lang('pleaseEnterMobile')"
|
||||
type="number"
|
||||
:key="formKey"
|
||||
/>
|
||||
<input id="input-mobile" :value="Form.mobile"
|
||||
@input="e => Form.mobile = e.detail.value" class="fui-input" maxlength="11"
|
||||
:placeholder="$lang('pleaseEnterMobile')" type="number" :key="formKey" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="fui-cell ">
|
||||
<view class="fui-cell-label" style="position: absolute;top:10px">{{ $lang('messageContent') }}</view>
|
||||
<view class="fui-cell-label" style="position: absolute;top:10px">{{
|
||||
$lang('messageContent') }}</view>
|
||||
<view class="fui-cell-info" style="margin-left: 160rpx;border: solid 2rpx #eee;">
|
||||
<!-- <input v-model="Form.mailbox" class="fui-input" placeholder="请输入您的邮箱" type="text" ></input> -->
|
||||
<textarea
|
||||
id="textarea-remark"
|
||||
:value="Form.remark"
|
||||
@input="e => Form.remark = e.detail.value"
|
||||
class="textarea"
|
||||
:placeholder="$lang('pleaseEnterMessage')"
|
||||
style="font-size: 28rpx;padding: 10rpx;"
|
||||
:key="formKey"
|
||||
></textarea>
|
||||
<!-- <input v-model="Form.mailbox" class="fui-input" placeholder="请输入您的邮箱" type="text" ></input> -->
|
||||
<textarea id="textarea-remark" :value="Form.remark"
|
||||
@input="e => Form.remark = e.detail.value" class="textarea"
|
||||
:placeholder="$lang('pleaseEnterMessage')"
|
||||
style="font-size: 28rpx;padding: 10rpx;" :key="formKey"></textarea>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
<view class="button-box"><button type="primary" @click="save()">{{ $lang('submit') }}</button></view>
|
||||
<view class="button-box"><button type="primary" @click="save()">{{ $lang('submit') }}</button>
|
||||
</view>
|
||||
</view>
|
||||
</uni-popup>
|
||||
</view>
|
||||
@@ -188,15 +182,14 @@
|
||||
<diy-bottom-nav></diy-bottom-nav>
|
||||
|
||||
<!-- 视频播放弹窗 -->
|
||||
<ns-video-player-popup
|
||||
ref="videoPlayerPopup"
|
||||
:current-video="currentVideo"
|
||||
@popup-change="onVideoPopupChange"
|
||||
></ns-video-player-popup>
|
||||
<ns-video-player-popup ref="videoPlayerPopup" :current-video="currentVideo"
|
||||
@popup-change="onVideoPopupChange"></ns-video-player-popup>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
import { copyText, makePhoneCall, openLocation } from '@/common/js/uniapp.utils.js';
|
||||
import scroll from '@/common/js/scroll-view.js';
|
||||
import shareUtil from '@/common/js/share.js';
|
||||
|
||||
@@ -220,11 +213,11 @@ export default {
|
||||
|
||||
diyChannelSettings: {
|
||||
channel_display_style: 'fixed',
|
||||
channel_aspect_ratio: '16:9',
|
||||
channel_show_view_count: true,
|
||||
channel_row_count: 2,
|
||||
channel_title_line_clamp: 2,
|
||||
channel_show_play_btn: true,
|
||||
channel_aspect_ratio: '16:9',
|
||||
channel_show_view_count: true,
|
||||
channel_row_count: 2,
|
||||
channel_title_line_clamp: 2,
|
||||
channel_show_play_btn: true,
|
||||
}, // 自定义设置
|
||||
|
||||
ismessage: 0,
|
||||
@@ -238,16 +231,16 @@ export default {
|
||||
markers: [
|
||||
{
|
||||
id: 1,
|
||||
/* width:20, //宽度
|
||||
height:20, //高度*/
|
||||
// iconPath: '../../static/goal_weizhi.png', //目标位置图标路径
|
||||
//这里的经纬度是 目的地 的经纬度
|
||||
/* width:20, //宽度
|
||||
height:20, //高度*/
|
||||
// iconPath: '../../static/goal_weizhi.png', //目标位置图标路径
|
||||
//这里的经纬度是 目的地 的经纬度
|
||||
latitude: 0,
|
||||
longitude: 0,
|
||||
callout: {
|
||||
/* title:123,
|
||||
content:'123' */
|
||||
}
|
||||
/* title:123,
|
||||
content:'123' */
|
||||
}
|
||||
}
|
||||
],
|
||||
landline: 0,
|
||||
@@ -305,7 +298,7 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
fail: res => {}
|
||||
fail: res => { }
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
@@ -439,36 +432,15 @@ export default {
|
||||
},
|
||||
|
||||
Tel(m) {
|
||||
uni.makePhoneCall({
|
||||
phoneNumber: m + '',
|
||||
success(e) {
|
||||
console.log(e);
|
||||
}
|
||||
});
|
||||
makePhoneCall(m);
|
||||
},
|
||||
|
||||
copy(text) {
|
||||
uni.setClipboardData({
|
||||
data: text,
|
||||
success: () => {
|
||||
uni.showToast({
|
||||
title: this.$lang('copySuccess'),
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
});
|
||||
},
|
||||
fail: (err) => {
|
||||
uni.showToast({
|
||||
title: err.message || err.errMsg || this.$lang('copyFailed'),
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
});
|
||||
}
|
||||
});
|
||||
copyText(text, { copySuccess: this.$lang('copySuccess'), copyFailed: this.$lang('copyFailed') });
|
||||
},
|
||||
|
||||
tomap() {
|
||||
uni.openLocation({
|
||||
openLocation({
|
||||
latitude: parseFloat(this.shop.latitude),
|
||||
longitude: parseFloat(this.shop.longitude),
|
||||
name: this.$lang('oneClickNavigation'),
|
||||
@@ -625,12 +597,13 @@ image {
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
image {
|
||||
max-width: 100%;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.bl {
|
||||
display: block;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.line1 {
|
||||
@@ -669,12 +642,13 @@ image {
|
||||
line-height: 20rpx;
|
||||
border-radius: 10rpx;
|
||||
}
|
||||
|
||||
.view_ul_100 .fl {
|
||||
width: 10%;
|
||||
width: 10%;
|
||||
}
|
||||
|
||||
.view_ul_100 .fr {
|
||||
/* padding-left: 30rpx;*/
|
||||
/* padding-left: 30rpx;*/
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@@ -696,25 +670,27 @@ image {
|
||||
.list_cotact .view_ul_100>view {
|
||||
padding: 20rpx 30rpx 0rpx 30rpx;
|
||||
}
|
||||
|
||||
.list_cotact .view_ul_two .view_li>view {
|
||||
background-color: #fff;
|
||||
padding: 20rpx 30rpx 0rpx 30rpx;
|
||||
background-color: #fff;
|
||||
padding: 20rpx 30rpx 0rpx 30rpx;
|
||||
}
|
||||
|
||||
.list_cotact .view_ul_two .view_li>view .address {
|
||||
background-color: #5dc2d0;
|
||||
color: #fff;
|
||||
display: inline-block;
|
||||
font-size: 28rpx;
|
||||
line-height: 48rpx;
|
||||
margin-bottom: 30rpx;
|
||||
padding: 0 30rpx;
|
||||
width: auto;
|
||||
background-color: #5dc2d0;
|
||||
color: #fff;
|
||||
display: inline-block;
|
||||
font-size: 28rpx;
|
||||
line-height: 48rpx;
|
||||
margin-bottom: 30rpx;
|
||||
padding: 0 30rpx;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.view_ul_two {
|
||||
margin-top: 20rpx;
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
|
||||
.contact_name {
|
||||
color: rgba(71, 71, 71, .79);
|
||||
font-size: 24rpx;
|
||||
@@ -896,5 +872,4 @@ image {
|
||||
bottom: 180rpx !important;
|
||||
/* #endif */
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -20,7 +20,13 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
import nsNewform from '../_components/ns-newform/ns-newform.vue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
nsNewform
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
id: 0,
|
||||
|
||||
@@ -87,7 +87,13 @@
|
||||
|
||||
<script>
|
||||
import validate from 'common/js/validate.js';
|
||||
|
||||
import mypOne from '../_components/myp-one/myp-one.vue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
mypOne
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
findMode: 'mobile',
|
||||
|
||||
@@ -77,7 +77,14 @@
|
||||
import diyJs from '@/common/js/diy.js';
|
||||
import indexJs from './public/js/index.js';
|
||||
|
||||
import nsBirthdayGift from '../_components/ns-birthday-gift/ns-birthday-gift.vue';
|
||||
import nsNewGift from '../_components/ns-new-gift/ns-new-gift.vue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
nsBirthdayGift,
|
||||
nsNewGift
|
||||
},
|
||||
mixins: [diyJs, indexJs],
|
||||
methods: {
|
||||
|
||||
|
||||
@@ -2,8 +2,10 @@
|
||||
<view :style="themeColor" class="nc-modify-content">
|
||||
<view class="modify">
|
||||
<view>
|
||||
<image v-if="newImg == ''" :src="memberImg ? $util.img(memberImg) : $util.getDefaultImage().head" @error="memberImg = $util.getDefaultImage().head" mode="aspectFill"/>
|
||||
<image v-else :src="$util.img(newImg)" @error="newImg = $util.getDefaultImage().head" mode="aspectFill" />
|
||||
<image v-if="newImg == ''" :src="memberImg ? $util.img(memberImg) : $util.getDefaultImage().head"
|
||||
@error="memberImg = $util.getDefaultImage().head" mode="aspectFill" />
|
||||
<image v-else :src="$util.img(newImg)" @error="newImg = $util.getDefaultImage().head"
|
||||
mode="aspectFill" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="opection-box">
|
||||
@@ -29,162 +31,167 @@
|
||||
|
||||
<script>
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
memberImg: '',
|
||||
newImg: '',
|
||||
imgurl: ''
|
||||
};
|
||||
},
|
||||
onShow() {
|
||||
if (!this.storeToken) {
|
||||
this.$util.redirectTo(
|
||||
this.$util.LOGIN_PAGE_URL, {
|
||||
back: '/pages_tool/member/modify_face'
|
||||
},
|
||||
'redirectTo'
|
||||
);
|
||||
return;
|
||||
}
|
||||
import imgCropping from '../_components/img-cropping/img-cropping.vue';
|
||||
|
||||
this.memberImg = this.memberInfo.headimg;
|
||||
this.imgurl = this.memberInfo.headimg;
|
||||
},
|
||||
methods: {
|
||||
chooseImage() {
|
||||
this.$refs.imgCropping.fSelect();
|
||||
export default {
|
||||
components: {
|
||||
imgCropping,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
memberImg: '',
|
||||
newImg: '',
|
||||
imgurl: ''
|
||||
};
|
||||
},
|
||||
onShow() {
|
||||
if (!this.storeToken) {
|
||||
this.$util.redirectTo(
|
||||
this.$util.LOGIN_PAGE_URL, {
|
||||
back: '/pages_tool/member/modify_face'
|
||||
},
|
||||
//上传返回图片
|
||||
myUpload(rsp) {
|
||||
let app_type = 'h5';
|
||||
let app_type_name = 'H5';
|
||||
'redirectTo'
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
// #ifdef MP
|
||||
app_type = 'weapp';
|
||||
app_type_name = 'weapp';
|
||||
// #endif
|
||||
uni.request({
|
||||
url: this.$config.baseUrl + '/api/upload/headimgBase64',
|
||||
method: 'POST',
|
||||
data: {
|
||||
app_type: app_type,
|
||||
app_type_name: app_type_name,
|
||||
images: rsp.base64
|
||||
},
|
||||
header: {
|
||||
'content-type': 'application/x-www-form-urlencoded;application/json'
|
||||
},
|
||||
dataType: 'json',
|
||||
responseType: 'text',
|
||||
success: res => {
|
||||
if (res.data.code == 0) {
|
||||
this.newImg = res.data.data.pic_path;
|
||||
this.imgurl = res.data.data.pic_path;
|
||||
}
|
||||
},
|
||||
fail: () => {
|
||||
this.memberImg = this.memberInfo.headimg;
|
||||
this.imgurl = this.memberInfo.headimg;
|
||||
},
|
||||
methods: {
|
||||
chooseImage() {
|
||||
this.$refs.imgCropping.fSelect();
|
||||
},
|
||||
//上传返回图片
|
||||
myUpload(rsp) {
|
||||
let app_type = 'h5';
|
||||
let app_type_name = 'H5';
|
||||
|
||||
// #ifdef MP
|
||||
app_type = 'weapp';
|
||||
app_type_name = 'weapp';
|
||||
// #endif
|
||||
uni.request({
|
||||
url: this.$config.baseUrl + '/api/upload/headimgBase64',
|
||||
method: 'POST',
|
||||
data: {
|
||||
app_type: app_type,
|
||||
app_type_name: app_type_name,
|
||||
images: rsp.base64
|
||||
},
|
||||
header: {
|
||||
'content-type': 'application/x-www-form-urlencoded;application/json'
|
||||
},
|
||||
dataType: 'json',
|
||||
responseType: 'text',
|
||||
success: res => {
|
||||
if (res.data.code == 0) {
|
||||
this.newImg = res.data.data.pic_path;
|
||||
this.imgurl = res.data.data.pic_path;
|
||||
}
|
||||
},
|
||||
fail: () => {
|
||||
this.$util.showToast({
|
||||
title: '头像上传失败'
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
previewImage() {
|
||||
uni.previewImage({
|
||||
current: 0,
|
||||
urls: this.images
|
||||
});
|
||||
},
|
||||
save() {
|
||||
this.$api.sendRequest({
|
||||
url: '/api/member/modifyheadimg',
|
||||
data: {
|
||||
headimg: this.imgurl
|
||||
},
|
||||
success: res => {
|
||||
if (res.code == 0) {
|
||||
this.memberInfo.headimg = this.imgurl;
|
||||
this.$store.commit('setMemberInfo', this.memberInfo);
|
||||
this.$util.showToast({
|
||||
title: '头像上传失败'
|
||||
title: '头像修改成功'
|
||||
});
|
||||
setTimeout(() => {
|
||||
this.$util.redirectTo('/pages_tool/member/info', {}, 'redirectTo');
|
||||
}, 2000);
|
||||
} else {
|
||||
this.$util.showToast({
|
||||
title: res.message
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
previewImage() {
|
||||
uni.previewImage({
|
||||
current: 0,
|
||||
urls: this.images
|
||||
});
|
||||
},
|
||||
save() {
|
||||
this.$api.sendRequest({
|
||||
url: '/api/member/modifyheadimg',
|
||||
data: {
|
||||
headimg: this.imgurl
|
||||
},
|
||||
success: res => {
|
||||
if (res.code == 0) {
|
||||
this.memberInfo.headimg = this.imgurl;
|
||||
this.$store.commit('setMemberInfo', this.memberInfo);
|
||||
this.$util.showToast({
|
||||
title: '头像修改成功'
|
||||
});
|
||||
setTimeout(() => {
|
||||
this.$util.redirectTo('/pages_tool/member/info', {}, 'redirectTo');
|
||||
}, 2000);
|
||||
} else {
|
||||
this.$util.showToast({
|
||||
title: res.message
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
uploadFace() {
|
||||
uni.chooseImage({
|
||||
count: 1,
|
||||
sizeType: ['compressed'],
|
||||
success: (chooseImageRes) => {
|
||||
const tempFilePaths = chooseImageRes.tempFilePaths;
|
||||
this.$api.upload({
|
||||
url: '/api/upload/headimg',
|
||||
filePath: tempFilePaths[0],
|
||||
fileType: 'image',
|
||||
success: (res) => {
|
||||
if (res.code) {
|
||||
this.newImg = res.data.pic_path;
|
||||
this.imgurl = res.data.pic_path;
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
uploadFace() {
|
||||
uni.chooseImage({
|
||||
count: 1,
|
||||
sizeType: ['compressed'],
|
||||
success: (chooseImageRes) => {
|
||||
const tempFilePaths = chooseImageRes.tempFilePaths;
|
||||
this.$api.upload({
|
||||
url: '/api/upload/headimg',
|
||||
filePath: tempFilePaths[0],
|
||||
fileType: 'image',
|
||||
success: (res) => {
|
||||
if (res.code) {
|
||||
this.newImg = res.data.pic_path;
|
||||
this.imgurl = res.data.pic_path;
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
page {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.modify {
|
||||
position: relative;
|
||||
padding-top: 50rpx;
|
||||
|
||||
view {
|
||||
width: 500rpx;
|
||||
height: 500rpx;
|
||||
margin: 0 auto;
|
||||
overflow: hidden;
|
||||
}
|
||||
background-color: #ffffff;
|
||||
border: 4rpx solid #ffffff;
|
||||
border-radius: 100%;
|
||||
|
||||
.modify {
|
||||
position: relative;
|
||||
padding-top: 50rpx;
|
||||
|
||||
view {
|
||||
width: 500rpx;
|
||||
height: 500rpx;
|
||||
margin: 0 auto;
|
||||
overflow: hidden;
|
||||
background-color: #ffffff;
|
||||
border: 4rpx solid #ffffff;
|
||||
border-radius: 100%;
|
||||
|
||||
image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.opection-box {
|
||||
margin-top: 50rpx;
|
||||
}
|
||||
|
||||
.opec {
|
||||
width: 100%;
|
||||
padding: 0 10%;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
button {
|
||||
padding: 0 30rpx;
|
||||
height: 60rpx;
|
||||
line-height: 60rpx;
|
||||
border: none;
|
||||
}
|
||||
.opection-box {
|
||||
margin-top: 50rpx;
|
||||
}
|
||||
|
||||
.opec {
|
||||
width: 100%;
|
||||
padding: 0 10%;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
button {
|
||||
padding: 0 30rpx;
|
||||
height: 60rpx;
|
||||
line-height: 60rpx;
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -16,7 +16,11 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import mypOne from '../_components/myp-one/myp-one.vue';
|
||||
export default {
|
||||
components: {
|
||||
mypOne
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isClick: false,
|
||||
|
||||
@@ -6,27 +6,31 @@
|
||||
<view class="eval-wrap">
|
||||
<view class="eval-good">
|
||||
<view class="good-box">
|
||||
<image class="good_pic" :src="$util.img(item.sku_image, { size: 'mid' })" @error="imageError(index)" mode="widthFix" />
|
||||
<image class="good_pic" :src="$util.img(item.sku_image, { size: 'mid' })"
|
||||
@error="imageError(index)" mode="widthFix" />
|
||||
<view class="good_info font-size-base">{{ item.sku_name }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="eval-star" v-if="!isEvaluate">
|
||||
<view class="star-box">
|
||||
<view class="star-title color-base-bg-before">描述相符</view>
|
||||
<view class="rate-box"><sx-rate :value="goodsEvalList[index].scores" :index="index" @change="setStar" /></view>
|
||||
<view class="rate-box"><sx-rate :value="goodsEvalList[index].scores" :index="index"
|
||||
@change="setStar" /></view>
|
||||
<view class="grade-li">
|
||||
<view class="icon iconfont" :class="
|
||||
goodsEvalList[index].explain_type == '1'
|
||||
? 'icon-haoping1 color-base-text'
|
||||
: goodsEvalList[index].explain_type == '2'
|
||||
<view class="icon iconfont" :class="goodsEvalList[index].explain_type == '1'
|
||||
? 'icon-haoping1 color-base-text'
|
||||
: goodsEvalList[index].explain_type == '2'
|
||||
? 'icon-zhongchaping color-base-text'
|
||||
: goodsEvalList[index].explain_type == '3'
|
||||
? 'icon-zhongchaping'
|
||||
: ''
|
||||
? 'icon-zhongchaping'
|
||||
: ''
|
||||
"></view>
|
||||
<view class="font-size-tag color-base-text" v-if="goodsEvalList[index].explain_type == '1'">好评</view>
|
||||
<view class="font-size-tag color-base-text" v-if="goodsEvalList[index].explain_type == '2'">中评</view>
|
||||
<view class="font-size-tag color-base-text" v-if="goodsEvalList[index].explain_type == '3'">差评</view>
|
||||
<view class="font-size-tag color-base-text"
|
||||
v-if="goodsEvalList[index].explain_type == '1'">好评</view>
|
||||
<view class="font-size-tag color-base-text"
|
||||
v-if="goodsEvalList[index].explain_type == '2'">中评</view>
|
||||
<view class="font-size-tag color-base-text"
|
||||
v-if="goodsEvalList[index].explain_type == '3'">差评</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -35,20 +39,24 @@
|
||||
<view class="eval-text">
|
||||
<view class="text-box">
|
||||
<block v-if="!isEvaluate">
|
||||
<textarea placeholder="请在此处输入您的评价" v-model="goodsEvalList[index].content" maxlength="200" />
|
||||
<textarea placeholder="请在此处输入您的评价" v-model="goodsEvalList[index].content"
|
||||
maxlength="200" />
|
||||
<text class="maxSize">{{ goodsEvalList[index].content.length }}/200</text>
|
||||
</block>
|
||||
<block v-else>
|
||||
<textarea placeholder="请在此处输入您的追评" v-model="goodsEvalList[index].again_content" maxlength="200" />
|
||||
<textarea placeholder="请在此处输入您的追评" v-model="goodsEvalList[index].again_content"
|
||||
maxlength="200" />
|
||||
<text class="maxSize">{{ goodsEvalList[index].again_content.length }}/200</text>
|
||||
</block>
|
||||
|
||||
<view class="other-info">
|
||||
<view class="other-info-box" v-for="(i, t) in imgList[index]" :key="t">
|
||||
<image :src="$util.img(i)" mode="aspectFill" @click="preview(i, index)"></image>
|
||||
<view class="imgDel" @click="deleteImg(i, index ,t)"><text class=" icon iconfont icon-delete"></text></view>
|
||||
<view class="imgDel" @click="deleteImg(i, index, t)"><text
|
||||
class=" icon iconfont icon-delete"></text></view>
|
||||
</view>
|
||||
<view class="other-info-box active" @click="addImg(index)" v-if="imgList[index].length < 6 || imgList[index].length == undefined">
|
||||
<view class="other-info-box active" @click="addImg(index)"
|
||||
v-if="imgList[index].length < 6 || imgList[index].length == undefined">
|
||||
<text class="icon iconfont icon-zhaoxiangji"></text>
|
||||
<text>{{ imgList[index].length ? 6 - imgList[index].length : 0 }}/6</text>
|
||||
</view>
|
||||
@@ -59,7 +67,8 @@
|
||||
</view>
|
||||
<view class="eval-bottom" :class="{ 'safe-area': isIphoneX }">
|
||||
<view class="all-election" @click="isAll()" v-if="!isEvaluate">
|
||||
<view class="iconfont color-base-text" :class="isAnonymous ? 'icon-yuan_checked color-base-text' : 'icon-yuan_checkbox'"></view>
|
||||
<view class="iconfont color-base-text"
|
||||
:class="isAnonymous ? 'icon-yuan_checked color-base-text' : 'icon-yuan_checkbox'"></view>
|
||||
<text>匿名</text>
|
||||
</view>
|
||||
<view class="action-btn"><button type="primary" @click="save()">提交</button></view>
|
||||
@@ -71,12 +80,17 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import evaluate from './public/js/evaluate.js';
|
||||
export default {
|
||||
mixins: [evaluate],
|
||||
};
|
||||
import evaluate from './public/js/evaluate.js';
|
||||
import sxRate from '../_components/sx-rate/sx-rate.vue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
sxRate,
|
||||
},
|
||||
mixins: [evaluate],
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
@import './public/css/evaluate.scss'
|
||||
@import './public/css/evaluate.scss'
|
||||
</style>
|
||||
Reference in New Issue
Block a user