This commit is contained in:
THK3121 2023-09-06 13:31:43 +08:00
commit 5b6c3a5b4b
354 changed files with 44837 additions and 16282 deletions

1
.gitignore vendored
View File

@ -2,6 +2,7 @@
node_modules
/dist
.hbuilderx
unpackage
# local env files
.env.local

96
App.vue
View File

@ -9,8 +9,10 @@
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
// #ifdef APP-PLUS
var jpushModule = uni.requireNativePlugin("JG-JPush");
// #endif import {
let jpushModule = uni.requireNativePlugin("JG-JPush");
const mp = uni.requireNativePlugin('uniMP');
// #endif
import {
checkLogin
} from "./libs/login";
import {
@ -21,7 +23,13 @@
history
} from '@/api/public.js'
import Routine from './libs/routine.js';
export default {
data() {
return {
audioTeam: []
}
},
globalData: {
spid: 0,
code: 0,
@ -67,7 +75,20 @@
},
onLaunch: function(option) {
this.globalData.statusBarHeight = uni.getSystemInfoSync().statusBarHeight + 'px';
this.globalData.uid = this.$store.state.app.uid
this.globalData.uid = this.$store.state.app.uid;
// #ifdef APP-PLUS
//uni
mp.onUniMPEventReceive(ret => {
console.log('小程序事件: ', ret);
if (ret.event == 'closeApp') {
mp.closeUniMP(ret.fromAppid, (ret) => {
console.log('closeUniMP: ' + JSON.stringify(ret));
});
}
});
// #endif
let that = this;
// #ifdef MP
if (HTTP_REQUEST_URL == '') {
@ -118,8 +139,9 @@
// #endif
that.getConfigData()
//#ifdef APP-PLUS
jpushModule.setLoggerEnable(true);
jpushModule.initJPushService()
jpushModule.addConnectEventListener(result => {
@ -151,6 +173,17 @@
let extras = result.extras
console.log("通知", result)
if (result.extras.type == 'ORDER_CREATE') {
if (this.audioTeam.length > 0) {
this.audioTeam.push(result.extras.type);
} else {
this.audio()
this.audioTeam.push(result.extras.type);
}
}
//
if (notificationEventType == 'notificationOpened') {
uni.navigateTo({
@ -169,7 +202,6 @@
},
onShow() {
let that = this
@ -199,12 +231,58 @@
}, 1500)
// #endif
},
mounted() {
uni.onTabBarMidButtonTap((e) => {
// console.log("", e);
uni.switchTab({
url: '/pages/plant_release/index'
})
// uni.navigateTo({
// url: '/pages/plant_release/index'
// })
});
uni.setTabBarItem((e) => { console.log("点击了", e)});
},
methods: {
/**
* 语音播报
*
*
*/
async audio() {
const innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.autoplay = true;
innerAudioContext.src = `/static/audio/order.mp3`;
innerAudioContext.onPlay(() => {
console.log('开始播放')
});
innerAudioContext.onEnded(() => {
console.log('语音播报结束')
innerAudioContext.destroy() //
if (this.audioTeam.length > 1) {
this.audioTeam.splice(0, 1);
console.log('队列中');
this.audio()
} else {
console.log('队列为零');
this.audioTeam = []
}
});
innerAudioContext.onError(() => {
console.log('语音播报失败')
innerAudioContext.destroy() //
});
},
//
setOpenShare: function(data) {
let that = this;
let href = location.href;
href = href.indexOf("?") === -1 ? href + "?spid=" + this.globalData.uid : href + "&spid=" + this.globalData
href = href.indexOf("?") === -1 ? href + "?spid=" + this.globalData.uid : href + "&spid=" + this
.globalData
.uid;
if (that.$wechat.isWeixin()) {
let configAppMessage = {
@ -213,7 +291,8 @@
link: href,
imgUrl: data.share_pic
};
that.$wechat.wechatEvevt(["updateAppMessageShareData", "updateTimelineShareData"], configAppMessage);
that.$wechat.wechatEvevt(["updateAppMessageShareData", "updateTimelineShareData"],
configAppMessage);
}
},
//
@ -254,6 +333,7 @@
this.globalData.community_reply_auth = res.data.community_reply_auth
this.globalData.margin_ico_switch = res.data.margin_ico_switch
this.globalData.margin_ico = res.data.margin_ico
// console.log(res.data.global_theme.theme + "")
this.$store.commit("VIEW_COLOR", res.data.global_theme.theme)
this.$store.commit("KEY_COLOR", '_' + res.data.global_theme.type)
try {
@ -289,8 +369,10 @@
@import 'static/css/base.css';
@import 'static/iconfont/iconfont.css';
@import 'static/iconfont/iconlihai.css';
@import 'static/iconfont/icontan.css';
@import 'static/css/style.scss';
view {
box-sizing: border-box;
}

View File

@ -1,13 +1,13 @@
{
"version" : "1",
"prompt" : "template",
"title": "服务协议和隐私政策",
"message": "  请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/>  你可阅读<a href=\"https://shop.lihaink.cn/pages/users/user_about/index?from=sys_user_agree\">《服务协议》</a>和<a href=\"https://shop.lihaink.cn/pages/users/user_about/index?from=sys_userr_privacy\">《隐私政策》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。",
"title" : "服务协议与隐私政策",
"message" : "\t请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志、OAID等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。<br/>\r\r\t你可以阅读 <a href=\"https://shop.lihaink.cn/pages/users/user_about/index?from=sys_user_agree\">《用户协议》</a> 与 <a href=\"https://shop.lihaink.cn/pages/users/user_about/index?from=sys_userr_privacy\">《隐私政策》</a>了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。",
"buttonAccept" : "同意并接受",
"buttonRefuse" : "暂不同意",
"second" : {
"title" : "确认提示",
"message": "  进入应用前,你需先同意<a href=\"https://shop.lihaink.cn/pages/users/user_about/index?from=sys_user_agree\">《服务协议》</a>和<a href=\"https://shop.lihaink.cn/pages/users/user_about/index?from=sys_userr_privacy\">《隐私政策》</a>,否则将退出应用。",
"message" : "进入应用前,你需先同意<a href=\"https://shop.lihaink.cn/pages/users/user_about/index?from=sys_user_agree\">《用户协议》</a> 与 <a href=\"https://shop.lihaink.cn/pages/users/user_about/index?from=sys_userr_privacy\">《隐私政策》</a>,否则将退出应用。",
"buttonAccept" : "同意并继续",
"buttonRefuse" : "退出应用"
},

View File

@ -13,68 +13,107 @@ import request from "@/utils/request.js";
* 统计数据
*/
export function getStatisticsInfo() {
return request.get("admin/order/statistics", {}, { login: true });
return request.get("admin/order/statistics", {}, {
login: true
});
}
/**
* 订单月统计
*/
export function getStatisticsMonth(where) {
return request.get("admin/order/data", where, { login: true });
return request.get("admin/order/data", where, {
login: true
});
}
/**
* 订单月统计
*/
export function getAdminOrderList(where) {
return request.get("admin/order/list", where, { login: true });
return request.get("admin/order/list", where, {
login: true
});
}
/**
* 订单改价
*/
export function setAdminOrderPrice(merId, id, data) {
return request.post("admin/" + merId + "/price/" + id, data, { login: true });
return request.post("admin/" + merId + "/price/" + id, data, {
login: true
});
}
/**
* 同意先货后款
*/
export function postconfirm(merId, data) {
return request.post("admin/" + merId + "/confirm", data, {
login: true
});
}
/**
* 先货后款订单结算
*/
export function postsettle(merId, data) {
return request.post("admin/" + merId + "/settle", data, {
login: true
});
}
/**
* 订单备注
*/
export function setAdminOrderRemark(merId, id, data) {
return request.post("admin/" + merId + "/mark/" + id, data, { login: true });
return request.post("admin/" + merId + "/mark/" + id, data, {
login: true
});
}
/**
* 订单详情
*/
export function getAdminOrderDetail(merId, orderId) {
return request.get("admin/" + merId + "/order/" + orderId, {}, { login: true });
return request.get("admin/" + merId + "/order/" + orderId, {}, {
login: true
});
}
/**
* 订单发货信息获取
*/
export function getAdminOrderDelivery(orderId) {
return request.get("admin/order/delivery/gain/" + orderId, {}, { login: true });
return request.get("admin/order/delivery/gain/" + orderId, {}, {
login: true
});
}
/**
* 订单发货保存
*/
export function setAdminOrderDelivery(merId, id, data) {
return request.post("admin/" + merId + "/delivery/" + id, data, { login: true });
return request.post("admin/" + merId + "/delivery/" + id, data, {
login: true
});
}
/**
* 订单统计图
*/
export function getStatisticsTime(data) {
return request.get("admin/order/time", data, { login: true });
return request.get("admin/order/time", data, {
login: true
});
}
/**
* 线下付款订单确认付款
*/
export function setOfflinePay(merId, data) {
return request.post("admin/" + merId + "/order/offline", data, { login: true });
return request.post("admin/" + merId + "/order/offline", data, {
login: true
});
}
/**
* 订单确认退款
*/
export function setOrderRefund(merId, data) {
return request.post("admin/" + merId + "/order/refund", data, { login: true });
return request.post("admin/" + merId + "/order/refund", data, {
login: true
});
}
/**
@ -82,7 +121,9 @@ export function setOrderRefund(merId, data) {
* @returns {*}
*/
export function getLogistics() {
return request.get("logistics", {}, { login: false });
return request.get("logistics", {}, {
login: false
});
}
/**
@ -108,40 +149,57 @@ export function verifierOrder(mer_id, code) {
export function orderStatistics(mer_id, data) {
return request.get("admin/" + mer_id + "/statistics", data);
}
/**
* 订单
* @returns {*}
*/
export function orderStat(data) {
return request.get("admin/1/statistics", data);
}
/**
* 每日成交额
* @returns {*}
*/
export function orderPrice(where, mer_id) {
return request.get("admin/" + mer_id + "/order_price", where, { login: true });
return request.get("admin/" + mer_id + "/order_price", where, {
login: true
});
}
/**
* 订单列表
* @returns {*}
*/
export function getOrderList(where, merId) {
return request.get(`admin/${merId}/order_list`, where, { login: true });
return request.get(`admin/${merId}/order_list`, where, {
login: true
});
}
/**
* 退款订单列表
* @returns {*}
*/
export function getRefundOrderList(where, merId) {
return request.get(`server/${merId}/refund/lst`, where, { login: true });
return request.get(`server/${merId}/refund/lst`, where, {
login: true
});
}
/**
* 营业额统计
* @returns {*}
*/
export function turnoverStatistics(where, merId) {
return request.get(`admin/${merId}/pay_price`, where, { login: true });
return request.get(`admin/${merId}/pay_price`, where, {
login: true
});
}
/**
* 订单统计
* @returns {*}
*/
export function orderNumberStatistics(where, merId) {
return request.get(`admin/${merId}/pay_number`, where, { login: true });
return request.get(`admin/${merId}/pay_number`, where, {
login: true
});
}
/**
* 获取订单打印默认配置
@ -183,26 +241,34 @@ export function getRefundOrderInfo(merId, id) {
* @returns {*}
*/
export function refundOrderSubmit(merId, id, data) {
return request.post(`server/${merId}/refund/status/${id}`, data, { login: true });
return request.post(`server/${merId}/refund/status/${id}`, data, {
login: true
});
}
/**
* 退款单确认收货
* @returns {*}
*/
export function refundOrderReceive(merId, id) {
return request.post(`server/${merId}/refund/confirm/${id}`, {}, { login: true });
return request.post(`server/${merId}/refund/confirm/${id}`, {}, {
login: true
});
}
/**
* 退款单详情
*/
export function getRefundOrderDetail(merId, orderId) {
return request.get(`server/${merId}/refund/detail/${orderId}`, {}, { login: true });
return request.get(`server/${merId}/refund/detail/${orderId}`, {}, {
login: true
});
}
/**
* 添加退款单备注信息
*/
export function setRefundMark(merId, orderId, data) {
return request.post(`server/${merId}/refund/mark/${orderId}`, data, { login: true });
return request.post(`server/${merId}/refund/mark/${orderId}`, data, {
login: true
});
}
/**
* 去核销
@ -211,3 +277,20 @@ export function setRefundMark(merId, orderId, data) {
export function orderCancellation(merId, id) {
return request.post(`admin/${merId}/verify/${id}`);
}
/**
* 去核销
* @param object data
*/
export function purchaseOrder(where, merId) {
return request.get(`admin/${merId}/purchaseOrder`, where, {
login: true
});
}
/**
* 商家物流取件二维码
* @param object data
*/
export function logisticsCode(id) {
return request.get(`order/logistics_code/${id}`);
}

View File

@ -103,6 +103,10 @@ export function getUserCoupons(data) {
export function getArticleCategoryList() {
return request.get('article/category/lst', {}, { noAuth: true })
}
export function getArticleCategoryLists() {
return request.get('article/category/lst?is_home='+1, {}, { noAuth: true })
}
/**
* 文章列表
* @param int cid
@ -269,3 +273,21 @@ export function ajcaptchaCheck(data) {
noAuth: true
});
}
/**
* 获取所在的地区数据
* @param {Object} data
*/
export function village(data) {
return request.get('v2/system/geo/lst', data, { noAuth: true });
}
/**
* 获取所在的村队数据
* @param {Object} data
*/
export function brigade(data) {
return request.get('v2/system/brigade', data, { noAuth: true });
}

View File

@ -82,11 +82,16 @@ export function videoList(data) {
});
}
/**自己的视频列表*/
export function deoList(id) {
return request.get(`community/show/${id}`);
}
export function myVideoList(id,data) {
return request.get(`community/user/community_video/${id}`, data, {
noAuth: true
});
}
/**文章点赞*/
export function graphicStartApi(id, status) {
return request.post(`community/start/${id}`, status);

View File

@ -107,7 +107,7 @@ export function orderDel(id) {
}
/**
* 订单详情
* 已付款订单详情
* @param string uni
*/
export function getOrderDetail(uni) {
@ -115,11 +115,11 @@ export function getOrderDetail(uni) {
}
/**
* 订单详情
* 未付款订单详情
* @param string uni
*/
export function groupOrderDetail(uni) {
return request.get('order/group_order_detail/' + uni);
export function groupOrderDetail(uni,product_type) {
return request.get('order/group_order_detail/' + uni+'?product_type=' + product_type);
}
// 支付状态订单
@ -327,3 +327,11 @@ export function applyInvoiceApi(id, data) {
export function refundCancelApi(id) {
return request.post(`refund/cancel/${id}`);
}
/**
* 售后
* @param object data
*/
export function refundlist(data) {
return request.get(`refund/list`,data);
}

View File

@ -14,6 +14,18 @@ import request from "@/utils/request.js";
*/
export const getProductDetailsAPI = (data) => request.get('micro/product_details', data)
/**
*商品列表
*/
export const spuInfo = (id,data) => request.get('product/spu/street/'+id, data)
/**
* 线下导入
*/
export function postImport(merid,data) {
return request.post(`server/${merid}/product/stockIn`, data);
}
/**
* 获取商户基本信息 http://127.0.0.1:8324/api/store/merchant/info?id=4
*/

43
api/release.js Normal file
View File

@ -0,0 +1,43 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from "@/utils/request.js";
/**
* 获取发布管理转售商品列表
* @param numType boolean true 购物车数量,false=购物车产品数量
*/
export function getResale(data) {
return request.get("community/resale/lst", data);
}
/**
* 清除发布管理转售商品
* @param object ids
*/
export function getResaledelete(id) {
return request.post('community/resale/delete/'+ id);
}
/**
* 用户是否同意转售商品折扣价
* @param object ids
*/
export function getResalecheck(id,data) {
return request.post('community/resale/check/'+ id,data);
}
/**
* 获取转售商品详情
* @param object ids
*/
export function getResaleid(id) {
return request.get('community/resale/' + id);
}

10
api/sale.js Normal file
View File

@ -0,0 +1,10 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from "@/utils/request.js";

View File

@ -467,7 +467,9 @@ export function getGeocoder(data) {
*
*/
export function getStoreTypeApi() {
return request.get('intention/type', {}, {
return request.get('intention/type', {
sift_store: 0
}, {
noAuth: true
});
}
@ -544,3 +546,30 @@ export function priceRuleApi(id) {
noAuth: true
});
}
/**
* 供销市场标签
* @returns {*}
*/
export function supMenuApi(data) {
return request.get('intention/v2/cate', data);
}
/**
* 供销市场标签
* @returns {*}
*/
export function supAgoodsApi(data) {
return request.get('store/merchant/lst', data);
}
// /api/store / merchant / lst ? page = 1 & limit = 10 & order = & category_id = 22 & type_id = 10 & street_id = &
// credit_buy =
// /api/region/:street_id/merchant
/**
* 附近商家
* @returns {*}
*/
// export function supAgoodsApi(data) {
// return request.get('store/merchant/lst', data);
// }
export function vicinityStoreApi(data) {
return request.get(`region/${data}/merchant`);
}

88
api/trading-floor.js Normal file
View File

@ -0,0 +1,88 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from "@/utils/request.js";
/**
* 调货列表
*
*/
export function getCommunityList(data) {
return request.get('community/lst', data, {
noAuth: true
});
}
/**
* 商品详情
*
*/
export function getCommunityshow(data) {
return request.get('community/show/' + data, {}, {
noAuth: true
});
}
/**
* 可转售的订单列表
*
*/
export function getCommunitygetOrderList(data) {
return request.get('community/product/lst', data, {
noAuth: true
});
}
/**
* 发起转售
*
*/
export function getCommunitycreate(data) {
return request.post(`community/create`, data, {
login: true
});
}
/**
* 修改转售
*
*/
export function getCommunityUpdate(data) {
return request.post(`community/update`, data, {
login: true
});
}
/**
* 加入购物车
*
*/
export function getCommunityaddCart(data) {
return request.post('community/addCart', data, {
noAuth: true
});
}
//商品宝贝详情
export function getProductDetail(id) {
return request.get('store/product/detail/' + id,
);
}
//获取转售商品详情
export function getresaleDetail(id) {
return request.get('community/resale/' + id,
);
}
//编辑转售商品
export function getresaleEdit(id,data) {
return request.post('community/resale/edit/' + id,data
);
}

18
api/uniMP.js Normal file
View File

@ -0,0 +1,18 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from "@/utils/request.js";
/**
* 获取供销平台版本信息
*/
export function getGXconfig(data) {
return request.get("global/config", data);
}

View File

@ -708,3 +708,7 @@ export function hasServiceApi(id) {
export function getBankInfo() {
return request.get(`user/extract/history_bank`)
}
// 商户账单管理
export function getBillDetil() {
return request.get(`mer/financial_record`)
}

View File

@ -0,0 +1,208 @@
<template>
<view :class="'wf-page wf-page'+type">
<!-- left -->
<view>
<view id="left" v-if="leftList.length">
<view v-for="(item,index) in leftList" :key="index"
class="wf-itema" @tap="itemTap(item)">
<WaterfallsFlowItem :item="item" :isStore="isStore" :type="type" @goShop="goShop"/>
</view>
</view>
</view>
<!-- right -->
<view>
<view id="right" v-if="rightList.length">
<view v-for="(item,index) in rightList" :key="index"
class="wf-itemb" @tap="itemTap(item)">
<WaterfallsFlowItem :item="item" :isStore="isStore" :type="type" @goShop="goShop"/>
</view>
</view>
</view>
</view>
</template>
<script>
import WaterfallsFlowItem from '../WaterfallsFlowItem/WaterfallsFlowItemo.vue'
export default {
components: {
WaterfallsFlowItem
},
props: {
//
wfList: {
type: Array,
require: true
},
updateNum: {
type: Number,
default: 10
},
type: {
type: Number,
default: 0
},
isStore: {
type: [String, Number],
default: '1'
},
},
data() {
return {
allList: [], //
leftList: [], //
rightList: [], //
mark: 0, //
boxHeight: [], // 01
};
},
watch: {
//
wfList: {
handler(nVal,oVal){
// 使
if (!this.wfList.length ||
(this.wfList.length === this.updateNum && this.wfList.length <= this.allList.length)) {
this.allList = [];
this.leftList = [];
this.rightList = [];
this.boxHeight = [];
this.mark = 0;
}
// waterfall
if (this.wfList.length) {
this.allList = this.wfList;
this.leftList = [];
this.rightList = [];
this.boxHeight = [];
this.allList.forEach((v, i) => {
if(this.allList.length < 3 || (this.allList.length <= 7 && this.allList.length - i > 1) || (this.allList.length > 7 && this.allList.length - i > 2)) {
if(i % 2){
this.rightList.push(v);
}else{
this.leftList.push(v);
}
}
});
if(this.allList.length < 3){
this.mark = this.allList.length+1;
}else if(this.allList.length <= 7){
this.mark = this.allList.length - 1;
}else{
this.mark = this.allList.length - 2;
}
if(this.mark < this.allList.length){
this.waterFall()
}
}
},
immediate: true,
deep:true
},
mounted(){
},
// item
mark() {
const len = this.allList.length;
if (this.mark < len && this.mark !== 0 && this.boxHeight.length) {
this.waterFall();
}
}
},
methods: {
//
waterFall() {
const i = this.mark;
if (i == 0) {
//
this.leftList.push(this.allList[i]);
//
this.getViewHeight(0);
} else if (i == 1) {
// item
this.rightList.push(this.allList[i]);
//
this.getViewHeight(1);
} else {
// item
if(!this.boxHeight.length){
this.rightList.length < this.leftList.length
? this.rightList.push(this.allList[i])
: this.leftList.push(this.allList[i]);
} else {
const leftOrRight = this.boxHeight[0] > this.boxHeight[1] ? 1 : 0;
if (leftOrRight) {
this.rightList.push(this.allList[i])
} else {
this.leftList.push(this.allList[i])
}
}
//
this.getViewHeight();
}
},
//
getViewHeight() {
// 使nextTick
this.$nextTick(() => {
setTimeout(()=>{
uni.createSelectorQuery().in(this).select('#right').boundingClientRect(res => {
res ? this.boxHeight[1] = res.height : '';
uni.createSelectorQuery().in(this).select('#left').boundingClientRect(res => {
res ? this.boxHeight[0] = res.height : '';
this.mark = this.mark + 1;
}).exec();
}).exec();
},100)
})
},
// item
itemTap(item) {
// this.$emit('itemTap', item)
},
// item
goShop(item) {
this.$emit('goShop', item)
}
}
}
</script>
<style lang="scss" scoped>
$page-padding: 10px;
$grid-gap: 5px;
.wf-page {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: $grid-gap;
}
.wf-itema {
width: 356rpx;
padding-bottom: $grid-gap;
}
.wf-itemb {
width: 356rpx;
padding-bottom: $grid-gap;
}
.wf-page1 .wf-item{
margin-top: 20rpx;
background-color: #fff;
border-radius: 20rpx;
padding-bottom: 0;
}
.wf-item-page{
padding-bottom: 20rpx;
}
</style>

View File

@ -0,0 +1,209 @@
<template>
<view :class="'wf-page wf-page'+type">
<!-- left -->
<view>
<view id="left" v-if="leftList.length">
<view v-for="(item,index) in leftList" :key="index"
class="wf-itema" @tap="itemTap(item)">
<WaterfallsFlowItem :item="item" :isStore="isStore" :type="type" @goShop="goShop"/>
</view>
</view>
</view>
<!-- right -->
<view>
<view id="right" v-if="rightList.length">
<view v-for="(item,index) in rightList" :key="index"
class="wf-itemb" @tap="itemTap(item)">
<WaterfallsFlowItem :item="item" :isStore="isStore" :type="type" @goShop="goShop"/>
</view>
</view>
</view>
</view>
</template>
<script>
import WaterfallsFlowItem from '../WaterfallsFlowItem/WaterfallsFlowItems.vue'
export default {
components: {
WaterfallsFlowItem
},
props: {
//
wfList: {
type: Array,
require: true
},
updateNum: {
type: Number,
default: 10
},
type: {
type: Number,
default: 0
},
isStore: {
type: [String, Number],
default: '1'
},
},
data() {
return {
allList: [], //
leftList: [], //
rightList: [], //
mark: 0, //
boxHeight: [], // 01
};
},
watch: {
//
wfList: {
handler(nVal,oVal){
// 使
if (!this.wfList.length ||
(this.wfList.length === this.updateNum && this.wfList.length <= this.allList.length)) {
this.allList = [];
this.leftList = [];
this.rightList = [];
this.boxHeight = [];
this.mark = 0;
}
// waterfall
if (this.wfList.length) {
this.allList = this.wfList;
this.leftList = [];
this.rightList = [];
this.boxHeight = [];
this.allList.forEach((v, i) => {
if(this.allList.length < 3 || (this.allList.length <= 7 && this.allList.length - i > 1) || (this.allList.length > 7 && this.allList.length - i > 2)) {
if(i % 2){
this.rightList.push(v);
}else{
this.leftList.push(v);
}
}
});
if(this.allList.length < 3){
this.mark = this.allList.length+1;
}else if(this.allList.length <= 7){
this.mark = this.allList.length - 1;
}else{
this.mark = this.allList.length - 2;
}
if(this.mark < this.allList.length){
this.waterFall()
}
}
},
immediate: true,
deep:true
},
mounted(){
this.getUserInfo()
},
// item
mark() {
const len = this.allList.length;
if (this.mark < len && this.mark !== 0 && this.boxHeight.length) {
this.waterFall();
}
}
},
methods: {
//
waterFall() {
const i = this.mark;
if (i == 0) {
//
this.leftList.push(this.allList[i]);
//
this.getViewHeight(0);
} else if (i == 1) {
// item
this.rightList.push(this.allList[i]);
//
this.getViewHeight(1);
} else {
// item
if(!this.boxHeight.length){
this.rightList.length < this.leftList.length
? this.rightList.push(this.allList[i])
: this.leftList.push(this.allList[i]);
} else {
const leftOrRight = this.boxHeight[0] > this.boxHeight[1] ? 1 : 0;
if (leftOrRight) {
this.rightList.push(this.allList[i])
} else {
this.leftList.push(this.allList[i])
}
}
//
this.getViewHeight();
}
},
//
getViewHeight() {
// 使nextTick
this.$nextTick(() => {
setTimeout(()=>{
uni.createSelectorQuery().in(this).select('#right').boundingClientRect(res => {
res ? this.boxHeight[1] = res.height : '';
uni.createSelectorQuery().in(this).select('#left').boundingClientRect(res => {
res ? this.boxHeight[0] = res.height : '';
this.mark = this.mark + 1;
}).exec();
}).exec();
},100)
})
},
// item
itemTap(item) {
// this.$emit('itemTap', item)
},
// item
goShop(item) {
this.$emit('goShop', item)
}
}
}
</script>
<style lang="scss" scoped>
$page-padding: 10px;
$grid-gap: 5px;
.wf-page {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: $grid-gap;
}
.wf-itema {
width: 356rpx;
padding-bottom: $grid-gap;
}
.wf-itemb {
width: 356rpx;
padding-bottom: $grid-gap;
}
.wf-page1 .wf-item{
margin-top: 20rpx;
background-color: #fff;
border-radius: 20rpx;
padding-bottom: 0;
}
.wf-item-page{
padding-bottom: 20rpx;
}
</style>

View File

@ -0,0 +1,206 @@
<template>
<view class="wf-item-page" @click="gogogo(item)">
<image :src="item.image" mode="widthFix" class="item-img" />
<view class="title">{{item.store_name}}</view>
<!-- <view class="tag">
<view class="tag-one">
自营商品
</view>
<view class="tag-two">
<text class="tag-twoa"></text>
<text class="tag-twob">满20包邮</text>
</view>
</view> -->
<view class="relase">
<view class="relase-one">
{{item.rate}}
</view>
<view class="relase-two">
{{item.reply_count}}评论
</view>
</view>
<view class="price">
<span></span>{{item.price.split('.')[0]}}.<text>{{item.price.split('.')[1]}}</text>
</view>
<view class="item-info">
<view class="info-title" style="margin-right: 10rpx;">
{{item.merchant.mer_name}}
</view>
<view class="info-img">
<image src="@/static/images/you.png" mode="aspectFit"></image>
</view>
</view>
</view>
</template>
<script>
export default {
props: {
item: {
type: Object,
require: true
}
},
methods: {
gogogo(item) {
uni.navigateTo({
url: '/pages/goods_details/index?id=' + item.product_id
})
},
}
}
</script>
<style lang="scss" scoped>
.wf-item-page {
background: #fff;
overflow: hidden;
border-radius: 5px;
}
.item-img {
width: 100%;
}
.item-info {}
.title {
font-size: 30rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
margin: 12px 0;
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
margin-left: 21rpx;
}
.tag {
display: flex;
margin-left: 21rpx;
.tag-one {
text-align: center;
padding: 2rpx 9rpx;
border-radius: 11rpx 11rpx 11rpx 11rpx;
border: 1px solid #3274F9;
font-size: 19rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
margin-right: 15rpx;
}
.tag-two {
.tag-twoa {
width: 130rpx;
text-align: center;
padding-left: 15rpx;
padding-right: 7rpx;
border-radius: 11rpx 0px 0px 0rpx;
border: 1px solid #F84221;
font-size: 19rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
}
.tag-twob {
width: 130rpx;
text-align: center;
padding: 2rpx 9rpx;
border-radius: 0px 11rpx 11rpx 0px;
border: 1px solid #F84221;
font-size: 19rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
}
}
}
.relase {
display: flex;
margin-left: 21rpx;
margin-top: 12rpx;
height: 26rpx;
line-height: 26rpx;
.relase-one {
// font-style: italic;
transform: skewX(-15deg);
font-size: 26rpx;
font-family: SF Pro Display-Regular Italic, SF Pro Display;
font-weight: 600;
color: #FF6D20;
}
.relase-two {
font-size: 23rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 500;
color: #B3B3B3;
margin-left: 13rpx;
}
}
.price {
margin-left: 21rpx;
margin-bottom: 10rpx;
color: #F84221;
font-size: 44rpx;
font-weight: 600;
span {
color: #F84221;
font-size: 30rpx;
font-weight: 500;
}
text {
color: #F84221;
font-size: 37rpx;
font-weight: 400;
}
}
.item-info {
margin-left: 21rpx;
margin-bottom: 25rpx;
display: flex;
width: 280rpx;
height: 39rpx;
line-height: 39rpx;
background: #F4F7FE;
border-radius: 19rpx 19rpx;
opacity: 1;
font-size: 23rpx;
padding-left: 11rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #737373;
.info-img {
width: 21rpx;
height: 21rpx;
margin-top: 5rpx;
image {
width: 100%;
height: 100%;
}
}
}
</style>

View File

@ -0,0 +1,134 @@
<template>
<view class="wf-item-page" @click="gogogo(item)">
<image :src="item.image[0]" mode="widthFix" class="item-img" />
<view class="goods_item_img" v-if="item.video_link.length>0">
<image src="@/static/images/sp.png" mode="aspectFit"></image>
</view>
<view class="title">{{item.title}}</view>
<view class="item-info">
<image :src="(item.author && item.author.avatar) || '/static/images/f.png'" mode="aspectFit"
class="info-avatar" />
<view class="info-nickname">{{ item.author.nickname }}</view>
</view>
</view>
</template>
<script>
import {
getUserInfo
} from '@/api/user.js';
export default {
props: {
item: {
type: Object,
require: true
}
},
data() {
return {
user_id: ''
}
},
mounted() {
this.getUserInfo()
},
methods: {
/**
* 获取个人用户信息
*/
getUserInfo: function() {
let that = this;
getUserInfo().then(res => {
this.user_id = res.data.uid
});
},
gogogo(item) {
if (item.video_link.length > 0) {
uni.navigateTo({
// #ifdef MP || H5
url: `/pages/short_video/nvueSwiper/index?id=${item.community_id}&uid=${this.user_id}&user=1`
// #endif
// #ifdef APP
url: `/pages/short_video/appSwiper/index?id=${item.community_id}&uid=${this.user_id}&user=1`
// #endif
})
} else {
uni.navigateTo({
url: `/pages/plantGrass/plant_detail/index?id=${item.community_id}`
})
}
},
}
}
</script>
<style lang="scss" scoped>
.wf-item-page {
background: #fff;
overflow: hidden;
border-radius: 5px;
position: relative;
}
.item-img {
width: 100%;
}
.item-info {
display: flex;
align-items: center;
padding: 5px;
}
.goods_item_img {
position: absolute;
top: 20rpx;
right: 18rpx;
width: 52rpx;
height: 52rpx;
z-index: 1 !important;
image {
width: 100%;
height: 100%;
}
}
.title {
font-size: 30rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
margin: 12px 0;
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
padding: 0 5px;
}
.info-avatar {
width: 49rpx;
height: 49rpx;
border-radius: 50%;
margin-right: 5px;
}
.info-nickname {
font-size: 12px;
color: #333;
}
</style>

View File

@ -8,7 +8,7 @@
<text class='iconfont icon-ditu' :class='active==index?"t-color":""'></text>
<view class='address'>
<view class='name' :class='active==index?"t-color":""'>{{item.real_name}}<text class='phone'>{{item.phone}}</text></view>
<view class='line1'>{{item.province}}{{item.city}}{{item.district}}{{item.street || ''}}{{item.detail}}</view>
<view class='line1'>{{item.province}}{{item.city}}{{item.district}}{{item.street || ''}}{{item.brigade}}{{item.detail}}</view>
</view>
<text class='iconfont icon-complete' :class='active==index?"t-color":""'></text>
</view>

View File

@ -36,7 +36,7 @@
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import {getAddressList} from '@/api/user.js';
import { getCityV2 } from '@/api/api.js';
import { getCityV2,village } from '@/api/api.js';
import { mapGetters } from "vuex";
const CACHE_ADDRESS = {};
export default {
@ -87,25 +87,74 @@
this.loadAddress(0)
},
methods: {
change(pid,index){
change(pid){
if(this.selectedIndex == index) return;
if(pid === -1){
pid = this.selectedArr.length ? this.selectedArr[this.selectedArr.length -1].id : 0;
}
console.log(index)
this.selectedIndex = index;
this.loadAddress(pid);
},
loadAddress(pid){
loadAddress(pid,type){
if(CACHE_ADDRESS[pid]){
this.addressList = CACHE_ADDRESS[pid];
return ;
}
this.is_loading = true;
getCityV2(pid).then(res=>{
// getCityV2(pid).then(res=>{
// this.is_loading = false;
// CACHE_ADDRESS[pid] = res.data;
// this.addressList = res.data;
// })
if(type=='province'){
village({province_code:pid}).then(res=>{
this.is_loading = false;
CACHE_ADDRESS[pid] = res.data;
this.addressList = res.data;
})
}else if(type=='city'){
village({city_code:pid}).then(res=>{
this.is_loading = false;
CACHE_ADDRESS[pid] = res.data;
this.addressList = res.data;
})
}else if(type=='area'){
village({area_code:pid}).then(res=>{
if(res.data.length>0){
this.is_loading = false;
CACHE_ADDRESS[pid] = res.data;
this.addressList = res.data;
}else{
this.$emit('submit', [...this.selectedArr]);
this.$emit('changeClose');
}
})
}else if(type=='street'){
village({street_code:pid}).then(res=>{
if(res.data.length>0){
this.is_loading = false;
CACHE_ADDRESS[pid] = res.data;
this.addressList = res.data;
}else{
this.$emit('submit', [...this.selectedArr]);
this.$emit('changeClose');
}
})
}else{
village().then(res=>{
this.is_loading = false;
CACHE_ADDRESS[pid] = res.data;
this.addressList = res.data;
})
}
this.goTop()
},
selected(item){
@ -114,17 +163,49 @@
this.selectedArr.splice(this.selectedIndex + 1,999)
this.selectedArr[this.selectedIndex] = item;
this.selectedIndex = -1;
}else if(!item.parent_id){
}
// else if(!item.parent_id){
// this.selectedArr = [item];
// }else{
// this.selectedArr.push(item);
// }
else if(!item.id){
this.selectedArr = [item];
}else{
if(this.selectedArr.length>4){
let arry=[]
arry.push(item)
this.selectedArr=arry
}else{
this.selectedArr.push(item);
}
if(item.snum){
this.loadAddress(item.id);
}
if(item.type=="province"){
this.loadAddress(item.code,"province");
}else if(item.type=="city"){
this.loadAddress(item.code,"city");
}else if(item.type=="area"){
this.loadAddress(item.code,"area");
}else if(item.type=="street"){
this.loadAddress(item.code,"street");
} else {
this.$emit('submit', [...this.selectedArr]);
this.$emit('changeClose');
}
// if(item.snum){
// this.loadAddress(item.id);
// } else {
// this.$emit('submit', [...this.selectedArr]);
// this.$emit('changeClose');
// }
this.goTop()
},
close: function() {

View File

@ -9,7 +9,8 @@
<view class="close" @click="closeShowBox"><text class="iconfont icon-guanbi"></text></view>
</view>
<view class="box">
<view class="check-item" v-for="(item,index) in radioList" :key="index" :class="{on:index == radioIndex}">
<view class="check-item" v-for="(item,index) in radioList" :key="index"
:class="{on:index == radioIndex}">
<view>{{item.title}}</view>
<view class="radio" @click="bindCheck(item,index)">
<block v-if="index == newData.order.isTake">
@ -39,7 +40,9 @@
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import { mapGetters } from "vuex";
import {
mapGetters
} from "vuex";
export default {
name: 'checkDelivery',
props: {
@ -59,8 +62,7 @@
},
radioList: {
type: Array,
default: [
{
default: [{
title: '快递配送',
check: true
},
@ -109,6 +111,7 @@
height: 100%;
background: rgba(0, 0, 0, 0.5);
}
.mask-content {
z-index: 40;
position: fixed;
@ -119,6 +122,7 @@
border-radius: 16rpx 16rpx 0 0;
transform: translate3d(0, 100%, 0);
transition: all .3s cubic-bezier(.25, .5, .5, .9);
.title-bar {
position: relative;
text-align: center;
@ -126,18 +130,22 @@
margin-bottom: 20rpx;
font-size: 32rpx;
color: #282828;
.close {
position: absolute;
right: 30rpx;
top: 50%;
transform: translateY(-50%);
.iconfont {
color: #8A8A8A;
}
}
}
.box {
padding: 0 30rpx;
.check-item {
display: flex;
align-items: center;
@ -145,18 +153,22 @@
height: 40rpx;
margin-bottom: 50rpx;
font-size: 28rpx;
.iconfont {
font-size: 38rpx;
color: #CCCCCC;
&.icon-xuanzhong1 {
color: var(--view-theme);
}
}
}
}
.foot {
padding: 15rpx 30rpx;
border-top: 1px solid #F5F5F5;
.btn {
width: 100%;
height: 70rpx;
@ -170,6 +182,7 @@
}
}
}
.animated {
animation-duration: .3s
}

129
components/cx-navTitle.vue Normal file
View File

@ -0,0 +1,129 @@
<template>
<!-- tab选项卡滑动切换 -->
<view class="my-tab" ref="myTabRef">
<view class="my-tab-item" v-for="(item, index) in tabs" :ref="`tab${item.name}Ref`"
:class="{ active: item.name === activeItem }" :key="index">
<view class="my-tab-text" ref="tabName" @click="tabClick(item,index)">
<view class="name">{{ item.label }}</view>
<view class="xian" v-if='isshow'></view>
</view>
</view>
</view>
</template>
<script>
/*
tabs -- 传入标签名 array类型 : tabs: [{name: "tabOne",label: "全部"},{...}]
activeItem -- 默认第一个class名 string
@tabClick -- 自定义点击事件 回传用到 做逻辑判断
标签大小默认颜色选中颜色下边框线等样式已在css中注释请根据注释修改即可
*/
export default {
name: "cx-navTitle",
props: {
tabs: { //
type: Array,
default: []
},
activeItem: { // class
type: String,
default: ''
},
show: {
type: Boolean,
default: ''
},
},
data() {
return {
isshow: true,
};
},
mounted() {
this.isshow = this.show
},
methods: {
// tab
tabClick(item, index) {
this.$emit('tabClick', item) //
//
this.scrollLeftTo(item.name);
},
//
scrollLeftTo(name) {
const ref = `tab${name}Ref`;
// myTabRefDOMmy-tab
const nav = this.$refs.myTabRef.$el;
// tabDOMmy-tab-item
const title = this.$refs[ref][0].$el;
//
// #ifdef H5
const to = title.offsetLeft - (nav.offsetWidth - title.offsetWidth) / 2;
nav.scrollLeft = to;
// #endif
},
},
};
</script>
<style lang="scss">
.my-tab {
width: 720rpx;
margin: 0 auto;
// height:80rpx;
// background: #ffffff;
// line-height:80rpx;
// border:1px solid red;
display: flex;
overflow-x: scroll;
padding-right: 0rpx;
scroll-behavior: smooth; //
font-size: 32rpx;
font-family: PingFang-SC-Heavy;
.my-tab-item {
padding: 20rpx 35rpx; // --
color: #707070; // --
// height: 0rpx;
text-align: center;
flex: 1 0 auto;
&.active {
color: #333333; // --
font-family: PingFang-SC-Heavy;
font-weight: 600;
position: relative;
.my-tab-text {
.xian {
position: relative;
top: 0rpx; //线 --
z-index: 8;
width: 26px;
margin: 0 auto;
border: 1rpx solid #F84221; //线 --
border-radius: 50rpx;
padding: 0rpx 30rpx;
opacity: 0.6; //线 --
}
.name {
position: relative;
z-index: 9;
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 500;
color: #F84221;
color: #F84221;
}
}
}
}
}
//
::-webkit-scrollbar {
height: 0;
width: 0;
color: transparent;
}
</style>

View File

@ -0,0 +1,448 @@
<template>
<view
class="e-stat__select"
:style="{ width: width, minWidth: minWidth }">
<!-- 主体区域 -->
<view class="e-select-main">
<view
class="e-select"
:class="{ 'e-select-disabled': disabled }">
<view
class="e-select__input-box"
@click="toggleSelector">
<!-- 微信小程序input组件在部分安卓机型上会出现文字重影placeholder抖动问题2019年时微信小程序就有这个问题一直没修复估计短时间内也别指望修复了 -->
<input
class="e-select__input-text"
:placeholder="placeholder"
v-model="currentData"
@input="filter"
v-if="search && !disabled" />
<view
class="e-select__input-text"
v-else>
{{ currentData || currentData === 0 ? currentData : placeholder }}
</view>
<!-- 用一个更大的盒子包裹图标,便于点击 -->
<view
class="e-select-icon"
@click.stop="clearVal"
v-if="currentData && clear && !disabled">
<uni-icons
type="clear"
color="#e1e1e1"
size="18"></uni-icons>
</view>
<view
class="e-select-icon"
@click.stop="toggleSelector"
v-else>
<uni-icons
size="14"
color="#999"
type="top"
class="arrowAnimation"
:class="showSelector ? 'top' : 'bottom'"></uni-icons>
</view>
</view>
<!-- 全屏遮罩-->
<view
class="e-select--mask"
v-if="showSelector"
@click="toggleSelector" />
<!-- 选项列表 这里用v-show是因为微信小程序会报警告 [Component] slot "" is not foundv-if会导致开发工具不能正确识别到slot -->
<!-- https://developers.weixin.qq.com/community/minihome/doc/000c8295730700d1cd7c81b9656c00 -->
<view
class="e-select__selector"
v-show="showSelector">
<!-- 三角小箭头 -->
<view class="e-popper__arrow"></view>
<scroll-view
scroll-y="true"
:scroll-top="scrollTop"
class="e-select__selector-scroll"
:scroll-into-view="scrollToId"
:scroll-with-animation="scrollWithAnimation"
v-if="showSelector">
<view
class="e-select__selector-empty"
v-if="currentOptions.length === 0">
<text>{{ emptyTips }}</text>
</view>
<!-- 非空,渲染选项列表 -->
<view
v-else
class="e-select__selector-item"
:class="[
{ highlight: currentData == item[props.text] },
{
'e-select__selector-item-disabled': item[props.disabled],
},
]"
v-for="(item, index) in currentOptions"
:key="index"
@click="change(item, index)">
<text>{{ item[props.text] }}</text>
<view
id="scrollToId"
v-if="currentData == item[props.text]"></view>
</view>
</scroll-view>
<slot />
</view>
</view>
</view>
</view>
</template>
<script>
export default {
name: 'e-select',
data() {
return {
//
showSelector: false,
//
currentOptions: [],
//
currentData: '',
//
oldScrollTop: 0,
//
scrollTop: 0,
// id
scrollToId: '',
//
scrollWithAnimation: false,
};
},
props: {
//
options: {
type: Array,
default() {
return [];
},
},
//
props: {
type: Object,
default: function () {
return {
text: 'text',
value: 'value',
disabled: 'disabled',
};
},
},
// vue2 v-model
value: {
type: [String, Number],
default: '',
},
// vue3 v-model
modelValue: {
type: [String, Number],
default: '',
},
//
placeholder: {
type: String,
default: '请选择',
},
//
width: {
type: String,
default: '100%',
},
//
minWidth: {
type: String,
default: '120rpx',
},
//
emptyTips: {
type: String,
default: '暂无选项',
},
//
clear: {
type: Boolean,
default: false,
},
//
disabled: {
type: Boolean,
default: false,
},
//
search: {
type: Boolean,
default: true,
},
//
animation: {
type: Boolean,
default: true,
},
},
watch: {
options: {
handler() {
this.currentOptions = this.options;
this.initData();
},
immediate: true,
deep: true,
},
modelValue: {
handler() {
this.initData();
},
immediate: true,
},
value: {
handler() {
this.initData();
},
immediate: true,
},
},
methods: {
/** 处理数据此函数用于兼容vue2 vue3 */
initData() {
this.currentData = '';
// vue2
if (this.value || this.value === 0) {
for (let item of this.options) {
if (item[this.props.value] === this.value) {
this.currentData = item[this.props.text];
this.$emit('getText', this.currentData);
return;
}
}
}
// vue3
if (this.modelValue || this.modelValue === 0) {
for (let item of this.options) {
if (item[this.props.value] === this.modelValue) {
this.currentData = item[this.props.text];
this.$emit('getText', this.currentData);
return;
}
}
}
},
/** 过滤选项列表,会自动回到顶部 */
filter() {
this.$emit('getText', this.currentData);
if (this.currentData) {
this.currentOptions = this.options.filter((item) => {
return item[this.props.text].indexOf(this.currentData) > -1;
});
} else {
this.currentOptions = this.options;
}
// scrollTop
this.scrollTop = 1;
this.$nextTick(() => {
this.scrollTop = 0;
});
},
/** 改变值 */
change(item, index) {
if (item[this.props.disabled]) return;
const data = {
...item,
index,
};
this.$emit('change', data);
this.emit(data);
this.toggleSelector();
},
/** 传递父组件值 */
emit(item) {
this.$emit('input', item[this.props.value]);
this.$emit('update:modelValue', item[this.props.value]);
},
/** 清空值 */
clearVal() {
this.$emit('change', 'clear');
this.$emit('input', '');
this.$emit('update:modelValue', '');
},
/** 切换下拉显示 */
toggleSelector() {
if (this.disabled) return;
this.showSelector = !this.showSelector;
if (this.showSelector) {
this.currentOptions = this.options;
// scrollToIdscroll-to-view
this.scrollToId = '';
this.$nextTick(() => {
this.scrollToId = 'scrollToId';
// filter
if (this.animation) {
setTimeout(() => {
//
this.scrollWithAnimation = true;
}, 100);
}
});
} else {
//
this.scrollWithAnimation = false;
}
},
},
};
</script>
<style lang="scss" scoped>
.e-stat__select {
display: flex;
align-items: center;
cursor: pointer;
box-sizing: border-box;
width: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
.e-select-main {
width: 100%;
}
.e-select-disabled {
background-color: #f5f7fa;
cursor: not-allowed;
}
.e-select {
font-size: 14px;
box-sizing: border-box;
border-radius: 4px;
padding: 0 5px;
position: relative;
display: flex;
user-select: none;
flex-direction: row;
align-items: center;
border: 1px solid #dcdfe6;
border-bottom: solid 1px #dddddd;
.e-select__input-box {
width: 100%;
min-height: 34px;
position: relative;
display: flex;
flex: 1;
flex-direction: row;
align-items: center;
.e-select-icon {
width: 50px;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
.arrowAnimation {
transition: transform 0.3s;
}
.top {
transform: rotateZ(0deg);
}
.bottom {
transform: rotateZ(180deg);
}
.e-select__input-text {
color: #303030;
padding-left: 7px;
width: 100%;
color: #333;
white-space: nowrap;
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
overflow: hidden;
}
.e-select__input-placeholder {
padding-left: 7px;
color: #666;
}
}
.e-select--mask {
position: fixed;
top: 0;
bottom: 0;
right: 0;
left: 0;
z-index: 999;
}
.e-select__selector {
box-sizing: border-box;
position: absolute;
top: calc(100% + 12px);
left: 0;
width: 100%;
background-color: #ffffff;
border: 1px solid #ebeef5;
border-radius: 6px;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
z-index: 999;
padding: 4px 4px;
transition: all 2s;
.e-popper__arrow,
.e-popper__arrow::after {
position: absolute;
display: block;
width: 0;
height: 0;
left: 50%;
border-color: transparent;
border-style: solid;
border-width: 6px;
}
.e-popper__arrow {
filter: drop-shadow(0 2px 12px rgba(0, 0, 0, 0.03));
top: -6px;
left: 50%;
transform: translateX(-50%);
margin-right: 3px;
border-top-width: 0;
border-bottom-color: #ebeef5;
}
.e-popper__arrow::after {
content: ' ';
top: 1px;
margin-left: -6px;
border-top-width: 0;
border-bottom-color: #fff;
}
.e-select__selector-scroll {
max-height: 200px;
box-sizing: border-box;
.e-select__selector-empty,
.e-select__selector-item {
display: flex;
cursor: pointer;
line-height: 34px;
font-size: 14px;
text-align: center;
padding: 0px 10px;
}
.e-select__selector-item:hover {
background-color: #f9f9f9;
}
.e-select__selector-empty:last-child,
.e-select__selector-item:last-child {
border-bottom: none;
}
.e-select__selector-item-disabled {
color: #b1b1b1;
cursor: not-allowed;
}
.highlight {
color: #409eff;
font-weight: bold;
background-color: #f5f7fa;
border-radius: 3px;
}
}
}
}
</style>

213
components/goodsCard.vue Normal file
View File

@ -0,0 +1,213 @@
<template>
<view>
<block>
<view class='lists'>
<view v-for="(item,index) in productList" class="card" :key="index" @click="godDetail(item)">
<view class='pictrue on'>
<u-image :src='item.image' width="336.45rpx" height="336.45rpx"> </u-image>
</view>
<view class="goods_content">
<view class='name line1'>
<text class="text-ellipsis">{{item.store_name}}</text>
</view>
<view class="item_tags">
<text v-if="item.merchant.type_name && item.product_type == 0"
class="store_type">{{item.merchant.type_name}}</text>
<text v-else-if="item.merchant.is_trader && item.product_type == 0"
class="store_type">自营</text>
<text v-if="item.product_type != 0"
:class="'font_bg-red bt-color type'+item.product_type">{{item.product_type == 1 ? "秒杀" : item.product_type == 2 ? "预售" : item.product_type == 3 ? "助力" : item.product_type == 4 ? "拼团" : ""}}</text>
<text class="tags_item ticket" v-if="item.issetCoupon">领券</text>
<text class="tags_item delivery" v-if="item.delivery_free == 1">包邮</text>
</view>
<view class="score"><text
style="font-style: italic;color: #FF6D20;margin-right: 20rpx;font-size: 30rpx;">{{item.rate}}</text>
{{item.reply_count}}评论
</view>
<view class='money'>
<text
class='num'>{{item.price.substring(0, item.price.length - 2)}}</text><text>{{item.price.slice(-2)}}</text>
</view>
<view class="company" v-if="item.merchant" @click.stop="goShop(item.mer_id)">
<text class="line1">{{item.merchant.mer_name}}</text>
<view class="flex">
<text class="iconfont icon-xiangyou"></text>
</view>
</view>
</view>
<!-- 返佣 -->
<!-- <block v-if="item.max_extension>0 && (item.product_type == 0 || item.product_type == 2)">
<view class="foot-bar on">
最高赚 ¥{{item.max_extension}}
</view>
</block> -->
</view>
</view>
<!-- <view class='noCommodity' v-if="productList.length==0">
<view class='pictrue' style=" margin: 60rpx auto;">
<image src='/static/images/noCart.png'></image>
<view>暂无商品</view>
</view>
<recommend v-if="recommend_switch == 1" :hostProduct="hostProduct" :isLogin="isLogin"></recommend>
</view> -->
</block>
</view>
</template>
<script>
import {
cloudWarehouse
} from '@/api/api.js'
import {
goShopDetail
} from '@/libs/order.js'
export default {
name: "goodsCard",
props: {
where: {
type: Object,
required: true
}
},
data() {
return {
is_switch: false,
productList: "",
};
},
mounted() {
this.$watch('where', (newValue, oldValue) => {
newValue.category_id ? this.get_product_list() : this.productList = []
}, {
deep: true
});
},
methods: {
test() {
// this.get_product_list()
// console.log(this.where)
},
godDetail(item) {
goShopDetail(item, this.uid).then(res => {
if (this.isLogin) {
initiateAssistApi(item.activity_id).then(res => {
let id = res.data.product_assist_set_id;
uni.hideLoading();
uni.navigateTo({
url: '/pages/activity/assist_detail/index?id=' + id
});
}).catch((err) => {
uni.showToast({
title: err,
icon: 'none'
})
});
} else {
this.isAuto = true;
this.isShowAuth = true
}
})
},
//
goShop(id) {
if (this.hide_mer_status != 1) {
uni.navigateTo({
url: `/pages/store/home/index?id=${id}`
})
}
},
get_product_list: function() {
let that = this;
cloudWarehouse(that.where).then(res => {
that.productList = res.data.list
}).catch(err => {
that.loading = false;
that.loadTitle = '加载更多';
});
},
}
}
</script>
<style lang="scss" scoped>
.lists {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
background-color: #F4F7FE;
.card {
border-radius: 21.03rpx 21.03rpx 21.03rpx 21.03rpx;
overflow: hidden;
margin-top: 20rpx;
background-color: white;
// width: 336.45rpx;
.store_type {
background: linear-gradient(to bottom, #6DD5FA, #3274F9);
color: white;
border-radius: 10.51rpx 10.51rpx 10.51rpx 10.51rpx;
padding: 2rpx 8rpx;
font-size: 22rpx;
}
.goods_content {
background-color: white;
padding: 25rpx 15rpx;
}
.name {
font-weight: bold;
.textellipsis {
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
// font-weight: bold;
}
}
.item_tags {
margin: 5rpx 0;
}
.score {
color: #B3B3B3;
font-size: 22.78rpx;
}
.money {
color: red;
margin: 5rpx 0;
.num {
font-size: 36rpx;
font-weight: bold;
}
}
.company {
background-color: #F4F7FE;
display: flex;
justify-content: space-between;
padding: 5rpx 14rpx;
border-radius: 19.28rpx 19.28rpx 19.28rpx 19.28rpx;
}
// width: 40vw;
}
}
</style>

View File

@ -7,28 +7,47 @@
</view>
<view v-for="(item,index) in cartInfo" :key="index">
<view v-if="activityType === 2">
<view class='item presell_item'>
<view class="acea-row row-between-wrapper">
<view class='pictrue' @click="jumpCon(item)">
<image :src='(item.cart_info.productAttr && item.cart_info.productAttr.image) || item.cart_info.product.image' ></image>
<image
:src='(item.cart_info.productAttr && item.cart_info.productAttr.image) || item.cart_info.product.image'>
</image>
</view>
<view class='text'>
<view class='acea-row row-between-wrapper'>
<view class='name line1' style="width: 360rpx;"><text class="event_name event_bg">预售</text>{{item.cart_info.product.store_name}}</view>
<view class='num'><text class="p-color">{{item.cart_info.productPresellAttr.presell_price}}</text><br/>x {{item.product_num}}</view>
<view class='name line1' style="width: 360rpx;"><text
class="event_name event_bg">预售</text>{{item.cart_info.product.store_name}}
</view>
<view class='attr line1' v-if="item.cart_info.productAttr.sku" style="margin-top: 0;">{{item.cart_info.productAttr.sku}}</view>
<view v-if="evaluate === 0 || evaluate === 10 || evaluate === 11" class="event_ship event_color">发货时间
<view class='num'><text
class="p-color">{{item.cart_info.productPresellAttr.presell_price}}</text><br />x
{{item.product_num}}</view>
</view>
<view class='attr line1' v-if="item.cart_info.productAttr.sku" style="margin-top: 0;">
{{item.cart_info.productAttr.sku}}</view>
<view v-if="evaluate === 0 || evaluate === 10 || evaluate === 11"
class="event_ship event_color">发货时间
<!--全款预售-->
<text v-if="item.cart_info.productPresell.presell_type === 1">{{ item.cart_info.productPresell.delivery_type === 1 ? '支付成功后' : '预售结束后' }}{{ item.cart_info.productPresell.delivery_day }}天内</text>
<text
v-if="item.cart_info.productPresell.presell_type === 1">{{ item.cart_info.productPresell.delivery_type === 1 ? '支付成功后' : '预售结束后' }}{{ item.cart_info.productPresell.delivery_day }}天内</text>
<!--定金预售-->
<text v-if="item.cart_info.productPresell.presell_type === 2">{{ item.cart_info.productPresell.delivery_type === 1 ? '支付尾款后' : '预售结束后' }}{{ item.cart_info.productPresell.delivery_day }}天内</text>
<text
v-if="item.cart_info.productPresell.presell_type === 2">{{ item.cart_info.productPresell.delivery_type === 1 ? '支付尾款后' : '预售结束后' }}{{ item.cart_info.productPresell.delivery_day }}天内</text>
</view>
<view class="right-btn-box event_box">
<view class="btn-item" v-if="item.is_refund ==0 && (evaluate != 10 && evaluate != 11) && orderData.refund_status || item.refund_num > 0" @click.stop="refund(item)">申请退款</view>
<view class="btn-item err" v-if="item.is_refund ==1">退款中 x {{item.product_num - item.refund_num}}</view>
<view class='btn-item err' v-if="item.is_refund >1">已退款 x {{item.product_num - item.refund_num}}</view>
<view class='btn-item' v-if='item.is_reply==0 && evaluate==2 && item.is_refund==0' @click.stop="evaluateTap(item.order_product_id,orderId)">去评价</view>
<view class="btn-item"
v-if="(item.is_refund ==0 && (evaluate != 10 && evaluate != 11) && orderData.refund_status || item.refund_num > 0)&&evaluate>=0 && evaluate != 1&& evaluate == 2"
@click.stop="refund(item)">申请退款</view>
<view class="btn-item err" v-if="item.is_refund ==1">退款中 x
{{item.product_num - item.refund_num}}</view>
<view class='btn-item err' v-if="item.is_refund >1">已退款 x
{{item.product_num - item.refund_num}}</view>
<view class='btn-item' v-if='item.is_reply==0 && evaluate==2 && item.is_refund==0'
@click.stop="evaluateTap(item.order_product_id,orderId)">去评价</view>
<view class='btn-item on' v-else-if="item.is_reply==1 && evaluate==2">已评价</view>
</view>
</view>
@ -37,44 +56,68 @@
<view v-if="orderData.status >= 10" class="event_progress">
<view class="progress_list">
<view class="progress_name">阶段一 买家已付款</view>
<view class="progress_price">商品定金 <text class="align_right">{{ orderData.pay_price }}</text></view>
<view class="progress_pay">定金实付款<text class="align_right t-color">{{ orderData.pay_price }}</text></view>
<view class="progress_price">商品定金 <text
class="align_right">{{ orderData.pay_price }}</text></view>
<view class="progress_pay">定金实付款<text
class="align_right t-color">{{ orderData.pay_price }}</text></view>
</view>
<view class="progress_list">
<view class="progress_name">阶段二
<text v-if="orderData.status == 10 && orderData.presellOrder.activeStatus == 0">未开始</text>
<text v-if="orderData.status == 10 && orderData.presellOrder.activeStatus == 1">等待买家付尾款</text>
<text v-if="orderData.status == 11 || orderData.presellOrder.activeStatus == 2">交易已关闭</text>
<text
v-if="orderData.status == 10 && orderData.presellOrder.activeStatus == 0">未开始</text>
<text
v-if="orderData.status == 10 && orderData.presellOrder.activeStatus == 1">等待买家付尾款</text>
<text
v-if="orderData.status == 11 || orderData.presellOrder.activeStatus == 2">交易已关闭</text>
</view>
<view class="progress_price">商品尾款 <text class="align_right">{{ orderData.presellOrder.pay_price }}</text></view>
<view class="progress_pay">尾款需付款<text class="align_right t-color">{{ orderData.presellOrder.pay_price }}</text></view>
<view class="progress_price">商品尾款 <text
class="align_right">{{ orderData.presellOrder.pay_price }}</text></view>
<view class="progress_pay">尾款需付款<text
class="align_right t-color">{{ orderData.presellOrder.pay_price }}</text></view>
</view>
</view>
</view>
<view v-else class='item'>
<view class="acea-row row-between-wrapper">
<view class='pictrue' @click="jumpCon(item)">
<image :src='(item.cart_info.productAttr && item.cart_info.productAttr.image) || item.cart_info.product.image' ></image>
<image
:src='(item.cart_info.productAttr && item.cart_info.productAttr.image) || item.cart_info.product.image'>
</image>
</view>
<view class='text'>
<view class='acea-row row-between-wrapper'>
<view class='name line1'><text v-if="item.product_type != 0 && item.product_type != 10" :class="'font_bg-red type'+item.product_type">{{item.product_type == 1 ? "秒杀" : item.product_type == 2 ? "预售" : item.product_type == 3 ? "助力" : item.product_type == 4 ? "拼团" : ""}}</text>{{item.cart_info.product.store_name}}</view>
<view class='name line1'><text v-if="item.product_type != 0 && item.product_type != 10"
:class="'font_bg-red type'+item.product_type">{{item.product_type == 1 ? "秒杀" : item.product_type == 2 ? "预售" : item.product_type == 3 ? "助力" : item.product_type == 4 ? "拼团" : ""}}</text>{{item.cart_info.product.store_name}}
</view>
<view class='num'>x {{item.product_num}}</view>
</view>
<view class='attr line1' v-if="item.cart_info.productAttr.sku">{{item.cart_info.productAttr.sku}}</view>
<view class='money p-color' v-if="item.cart_info.product_type ==3">{{item.cart_info.productAssistAttr.assist_price}}</view>
<view class='money p-color' v-else-if="item.cart_info.product_type ==4">{{item.cart_info.activeSku.active_price}}</view>
<view class='attr line1' v-if="item.cart_info.productAttr.sku">
{{item.cart_info.productAttr.sku}}</view>
<view class='money p-color' v-if="item.cart_info.product_type ==3">
{{item.cart_info.productAssistAttr.assist_price}}</view>
<view class='money p-color' v-else-if="item.cart_info.product_type ==4">
{{item.cart_info.activeSku.active_price}}</view>
<view class='money acea-row row-middle' v-else>
<text>{{item.cart_info.productAttr.price}}</text>
<image v-if="item.cart_info.productAttr.show_svip_price" class="svip-img" src="/static/images/svip.png"></image>
<image v-if="item.cart_info.productAttr.show_svip_price" class="svip-img"
src="/static/images/svip.png"></image>
</view>
</view>
</view>
<view class="right-btn-box">
<view class="btn-item err" v-if="item.is_refund ==1">退款中 x {{item.product_num - item.refund_num}}</view>
<view class='btn-item err' v-if="item.is_refund >1">已退款 x {{item.product_num - item.refund_num}}</view>
<view class="btn-item" v-if="(item.is_refund ==0 && evaluate!=9 && orderData.refund_status || item.refund_num > 0)&& evaluate!=3" @click.stop="refund(item)">申请退款</view>
<view class='btn-item' v-if='item.is_reply==0 && evaluate==2 && item.refund_num > 0' @click.stop="evaluateTap(item.order_product_id,orderId)">去评价</view>
<view class="btn-item err" v-if="item.is_refund ==1">退款中 x
{{item.product_num - item.refund_num}}</view>
<view class='btn-item err' v-if="item.is_refund >1">已退款 x {{item.product_num - item.refund_num}}
</view>
<view class="btn-item"
v-if="(item.is_refund ==0 && (evaluate != 10 && evaluate != 11) && orderData.refund_status || item.refund_num > 0)&& evaluate!=9 &&evaluate != 1&&evaluate !=4&& evaluate!=3 || evaluate==2"
@click.stop="refund(item)">申请退款</view>
<view class='btn-item'
v-if='item.is_reply==0 && evaluate!=2&& evaluate!=3&& evaluate!=7&& evaluate!=8&& evaluate!=9&& item.refund_num > 0'
@click.stop="evaluateTap(item.order_product_id,orderId)">去评价</view>
<view class='btn-item on' v-else-if="item.is_reply==1 && evaluate==2">已评价</view>
</view>
</view>
@ -93,10 +136,18 @@
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import { openOrderRefundSubscribe } from '@/utils/SubscribeMessage.js';
import { goShopDetail } from '@/libs/order.js'
import { initiateAssistApi } from '@/api/activity.js';
import { mapGetters } from "vuex";
import {
openOrderRefundSubscribe
} from '@/utils/SubscribeMessage.js';
import {
goShopDetail
} from '@/libs/order.js'
import {
initiateAssistApi
} from '@/api/activity.js';
import {
mapGetters
} from "vuex";
export default {
props: {
evaluate: {
@ -160,14 +211,17 @@
if (that.orderData.status === 10) {
if (new Date() < new Date(that.orderData.presellOrder.final_start_time)) {
that.isTimePay = false; //
}else if((new Date() >= new Date(that.orderData.presellOrder.final_start_time)) && (new Date() <= new Date(that.orderData.presellOrder.final_start_time)) ){
} else if ((new Date() >= new Date(that.orderData.presellOrder.final_start_time)) && (new Date() <=
new Date(that.orderData.presellOrder.final_start_time))) {
that.isTimePay = true; //
}
}
},
jumpCon: function(item) {
if(item.product_type == 4)item.activity_id = item.cart_info && item.cart_info.activeSku.product_group_id
if(item.product_type == 3)item.activity_id = item.cart_info && item.cart_info.productAssistAttr.product_assist_id
if (item.product_type == 4) item.activity_id = item.cart_info && item.cart_info.activeSku
.product_group_id
if (item.product_type == 3) item.activity_id = item.cart_info && item.cart_info.productAssistAttr
.product_assist_id
goShopDetail(item).then(res => {
initiateAssistApi(item.activity_id).then(res => {
let id = res.data.product_assist_set_id;
@ -190,11 +244,15 @@
uni.hideLoading();
if (this.evaluate == 0 || this.evaluate == 9 || this.orderData.is_virtual == 1) {
uni.navigateTo({
url:'/pages/users/refund/confirm?order_id='+this.orderId+'&type=1'+'&ids='+item.order_product_id+'&refund_type=1&order_type='+this.orderData.order_type
url: '/pages/users/refund/confirm?order_id=' + this.orderId + '&type=1' +
'&ids=' + item.order_product_id + '&refund_type=1&order_type=' + this
.orderData.order_type
})
} else {
uni.navigateTo({
url:'/pages/users/refund/select?order_id='+this.orderId+'&type=1&order_type='+this.orderData.order_type+'&ids='+item.order_product_id
url: '/pages/users/refund/select?order_id=' + this.orderId +
'&type=1&order_type=' + this.orderData.order_type + '&ids=' + item
.order_product_id
})
}
}).catch(() => {
@ -204,11 +262,13 @@
// #ifdef H5 || APP-PLUS
if (this.evaluate == 0 || this.evaluate == 9 || this.orderData.is_virtual == 1) {
uni.navigateTo({
url:'/pages/users/refund/confirm?order_id='+this.orderId+'&type=1'+'&ids='+item.order_product_id+'&refund_type=1&order_type='+this.orderData.order_type
url: '/pages/users/refund/confirm?order_id=' + this.orderId + '&type=1' + '&ids=' + item
.order_product_id + '&refund_type=1&order_type=' + this.orderData.order_type
})
} else {
uni.navigateTo({
url:'/pages/users/refund/select?order_id='+this.orderId+'&type=1&order_type='+this.orderData.order_type+'&ids='+item.order_product_id
url: '/pages/users/refund/select?order_id=' + this.orderId + '&type=1&order_type=' + this
.orderData.order_type + '&ids=' + item.order_product_id
})
}
// #endif
@ -221,21 +281,26 @@
.orderGoods {
background-color: #fff;
}
.p-color {
color: var(--view-priceColor);
}
.t-color {
color: var(--view-theme);
}
.svip-img {
width: 65rpx;
height: 28rpx;
margin: 4rpx 0 0 4rpx;
}
.title {
height: 86rpx;
position: relative;
padding: 0 30rpx;
&::after {
content: "";
width: 750rpx;
@ -244,25 +309,31 @@
bottom: 0;
left: 0;
}
.item-status {
color: #999999;
font-size: 30rpx;
&.status0 {
color: #2291F8;
}
}
.item-date {
color: #666666;
font-size: 28rpx;
}
}
.right-btn-box {
display: flex;
align-items: center;
justify-content: flex-end;
&.event_box {
position: static;
}
.btn-item {
display: flex;
align-items: center;
@ -274,10 +345,12 @@
border-radius: 23rpx;
font-size: 24rpx;
color: #282828;
&.on {
background: rgba(220, 220, 220, 1);
border-color: rgba(220, 220, 220, 1);
}
&.err {
background: rgba(247, 247, 247, 1);
border-color: rgba(247, 247, 247, 1);
@ -285,19 +358,24 @@
}
}
}
.event_bg {
background: #FF7F00;
}
.event_color {
color: #FF7F00;
}
.presell_item {
height: auto;
padding-bottom: 15rpx;
}
.event_progress {
margin-top: 20rpx;
background: #fff;
.progress_name {
padding-left: 30rpx;
height: 60rpx;
@ -306,6 +384,7 @@
font-weight: bold;
position: relative;
color: var(--view-theme);
&::before {
content: "";
display: inline-block;
@ -317,15 +396,18 @@
left: 0;
}
}
.align_right {
float: right;
font-weight: bold;
}
.progress_price {
padding: 20rpx 30rpx;
color: #999999;
font-size: 22rpx;
}
.progress_pay {
padding: 25rpx 30rpx;
background: var(--view-minorColor);
@ -333,6 +415,7 @@
color: #282828;
}
}
.event_name {
display: inline-block;
margin-right: 9rpx;
@ -343,10 +426,12 @@
text-align: center;
border-radius: 6rpx;
}
.event_ship {
font-size: 20rpx;
margin-top: 10rpx;
}
.goodWrapper.item1 {
&::after {
content: "";

View File

@ -4,8 +4,8 @@
<view class="title acea-row row-center-wrapper">
选择付款方式<text class="iconfont icon-guanbi" @click='close'></text>
</view>
<view class="item acea-row row-between-wrapper" @click='goPay(item.number || 0 , item.value)' v-for="(item,index) in payMode"
:key="index" v-if="item.payStatus == 1">
<view class="item acea-row row-between-wrapper" @click='goPay(item.number || 0 , item.value)'
v-for="(item,index) in payMode" :key="index" v-if="item.payStatus == 1">
<view class="left acea-row row-between-wrapper">
<view class="iconfont" :class="item.icon"></view>
<view class="text">
@ -78,6 +78,7 @@
});
},
goPay: function(number, paytype) {
if (this.isCall) {
return this.$emit('onChangeFun', {
action: 'payCheck',
@ -98,6 +99,7 @@
// #endif
} else if (paytype == 'balance') {
type = 'balance';
console.log('123');
} else if (paytype == 'alipay') {
// #ifndef MP
type = 'alipay';
@ -105,6 +107,9 @@
// #ifdef MP
type = 'alipayQr';
// #endif
} else if (paytype == 'creditBuy') {
console.log('123123');
type = 'creditBuy'
}
if (!that.order_id) return that.$util.Tips({
title: '请选择要支付的订单'
@ -119,7 +124,12 @@
orderApi(that.order_id, {
type: type,
// #ifdef H5
return_url: 'http://'+window.location.host+'/pages/users/order_list/index',
return_url: this.order_type == 98 ? 'http://' + window.location.host +
'/pages/users/order_list/indexCopy' : 'http://' + window.location.host +
'/pages/users/order_list/index',
// #endif
}).then(res => {
@ -127,7 +137,9 @@
orderId = res.data.result.order_id,
jsConfig = res.data.result.config,
callback_key = res.data.result.pay_key,
goPages = '/pages/users/order_list/index';
goPages = this.order_type == 98 ? '/pages/users/order_list/indexCopy' :
'/pages/users/order_list/index'
switch (status) {
case 'ORDER_EXIST':
case 'EXTEND_ORDER':
@ -151,7 +163,7 @@
icon: 'success'
}, {
tab: 5,
url: goPages + '?status=1'
url: goPages + '?status=2'
});
break;
case 'alipay':
@ -161,7 +173,8 @@
action: 'payClose'
});
uni.navigateTo({
url: '/pages/order_pay_back/index?keyCode='+callback_key+'&url='+jsConfig,
url: '/pages/order_pay_back/index?keyCode=' + callback_key + '&url=' +
jsConfig,
})
return
break;
@ -182,7 +195,7 @@
icon: 'success'
}, {
tab: 5,
url: goPages + 'status=1'
url: goPages + 'status=2'
});
}).catch(res => {
// console.log('catch'+res.data)
@ -196,7 +209,7 @@
title: '取消支付'
}, {
tab: 5,
url: goPages + '?status=0'
url: goPages + '?status=1'
});
}
}
@ -209,6 +222,7 @@
} else {
mp_pay_name = 'requestPayment'
}
console.log(mp_pay_name, jsConfig)
uni[mp_pay_name]({
provider: 'wxpay',
orderInfo: jsConfig,
@ -221,10 +235,11 @@
icon: 'success'
}, {
tab: 5,
url: goPages + 'status=1'
url: goPages + 'status=2'
});
},
fail: (e) => {
console.log(e)
if (that.isCall) {
return that.$util.Tips({
title: '取消支付'
@ -234,7 +249,7 @@
title: '取消支付'
}, {
tab: 5,
url: goPages + '?status=0'
url: goPages + '?status=1'
});
}
},
@ -262,13 +277,14 @@
that.$emit('onChangeFun', {
action: 'payClose'
});
if (that.BargainId || that.combinationId || that.pinkId || that.seckillId)
if (that.BargainId || that.combinationId || that.pinkId || that
.seckillId)
return that.$util.Tips({
title: '支付成功',
icon: 'success'
}, {
tab: 5,
url: goPages + '?status=1'
url: goPages + '?status=2'
});
return that.$util.Tips({
@ -276,7 +292,7 @@
icon: 'success'
}, {
tab: 5,
url: goPages + '?status=1'
url: goPages + '?status=2'
});
},
fail: function(e) {
@ -291,7 +307,8 @@
complete: function(e) {
uni.hideLoading();
//
if (res.errMsg == 'requestPayment:cancel') return that.$util.Tips({
if (res.errMsg == 'requestPayment:cancel') return that.$util
.Tips({
title: '取消支付'
});
that.$emit('onChangeFun', {
@ -338,7 +355,7 @@
icon: 'success'
}, {
tab: 5,
url: goPages + 'status=1'
url: goPages + 'status=2'
});
},
@ -375,7 +392,7 @@
border-radius: 16rpx 16rpx 0 0;
background-color: #fff;
padding-bottom: 60rpx;
z-index: 99;
z-index: 99999;
transition: all 0.3s cubic-bezier(0.25, 0.5, 0.5, 0.9);
transform: translate3d(0, 100%, 0);
}

View File

@ -360,27 +360,36 @@
margin-right: 30rpx;
}
.product-window .cart .carnum .item {
border: 1px solid #a4a4a4;
width: 84rpx;
width: 63rpx;
text-align: center;
height: 100%;
line-height: 54rpx;
color: #a4a4a4;
font-size: 45rpx;
line-height: 42rpx;
color: #333333;
font-weight: 400;
font-size: 26rpx;
}
.product-window .cart .carnum .reduce {
border-right: 0;
border-radius: 6rpx 0 0 6rpx;
line-height: 48rpx;
border: 1px solid #a4a4a4;
width: 44rpx;
height: 42rpx;
// border-right: 0;
border-radius: 0 7rpx 7rpx 0;
line-height: 30rpx;
}
.product-window .cart .carnum .reduce.on {
border-color: #e3e3e3;
color: #dedede;
}
.product-window .cart .carnum .plus {
border-left: 0;
border-radius: 0 6rpx 6rpx 0;
line-height: 46rpx;
border: 1px solid #a4a4a4;
width: 44rpx;
height: 42rpx;
// border-right: 0;
border-radius: 0 7rpx 7rpx 0;
line-height: 30rpx
}
.product-window .cart .carnum .plus.on {
border-color: #e3e3e3;

View File

@ -0,0 +1,621 @@
<template>
<view class="containers" :style="viewColor">
<view class="header">
<view class="search">
<text class="iconfont icon-xiazai5"></text>
<input type="text" placeholder="请输入商品名称" v-model="searchVal" @input="setValue" confirm-type="search"
@confirm="searchBut()" placeholder-class='placeholder'>
</view>
<view class="iconclose" @click="close">
X
</view>
</view>
<view class="main">
<scroll-view scroll-y="true" @touchmove.stop>
<block>
<view v-if="bought.length" @touchmove="onTouchmove" id="goods" class="goods">
<view class="picTxt acea-row" v-for="(item, i) in bought" :key="i">
<view class="checkbox">
<text @click.stop="goodsCheck(item)" v-if="item.check"
class="iconfont icon-xuanzhong1"></text>
<text @click.stop="goodsCheck(item)" v-else
:class="checkedArr.length >=5 ? 'disabled': ''"
class="iconfont icon-weixuanzhong"></text>
</view>
<view class='pictrue'>
<image :src='item.image'></image>
</view>
<view class='text'>
<view class='line2 name'>{{item.store_name}}</view>
<view class="picTxt_one" v-if="item.attrValue.length>0">
<picker class="slecte" v-if="item.attrValue.length>1"
@change="bindPickerChange($event,item.attrValue,i)" :value="index"
:range="item.attrValue" :range-key="'sku'">
<view class="uni-input">{{item.attrValue[index].sku}}</view>
</picker>
<view class="" style="margin-top: 10rpx;">
库存:{{item.attrValue[index].stock}}
</view>
</view>
</view>
<view class="picTxt_price">
<view class="price">
<span>委托价格</span>
<input type="text" :value="item.price" placeholder="输入出售价格"
@input="producrprice($event,i,item)" adjust-position=""
placeholder-style="color: #CCCCCC;" />
</view>
<view class="price_num">
<span>委托数量</span>
<subtractive v-if='item.number==0' style="margin-top: 10rpx;margin-left: 20rpx;"
class="step" :min="1" :max="item.attrValue[index].stock" :value="peicenumber"
:isMax="true" :isMin="true" index="11" @eventChange="numberChange($event,i)">
</subtractive>
<subtractive v-else style="margin-top: 10rpx;margin-left: 20rpx;" class="step"
:min="1" :max="item.attrValue[index].stock" :value="item.number" :isMax="true"
:isMin="true" index="11" @increment="incrementTotal($event,i,item)"
@eventChange="numberChange($event,i)"></subtractive>
</view>
</view>
</view>
</view>
<view v-else class="empty">
<image src="/static/images/no_thing.png"></image>
<text>暂无内容哦~</text>
</view>
</block>
</scroll-view>
<view class="foot_bar">
<button class="confirm_btn" @click="submit">确定({{checkedArr.length}})</button>
</view>
</view>
</view>
</template>
<script>
import Loading from '@/components/Loading/index.vue';
import subtractive from '@/components/subtractive/subtractive.vue';
import {
getCommunitygetOrderList
} from "@/api/trading-floor";
import {
mapGetters
} from "vuex";
export default {
props: {
checkedObj: {
type: Array,
default: []
}
},
computed: mapGetters(['viewColor']),
components: {
Loading,
subtractive
},
data() {
return {
isActive: 0,
loadedb: false,
loadingb: false,
loadedc: false,
loadingc: false,
loadeds: false,
loadings: false,
whereb: {
page: 1,
limit: 10,
keyword: '',
},
peicenumber: 0,
searchVal: "",
checked: [],
list: [],
bought: [],
checkedArr: [],
aryys: [],
// picker
storageCustomList: [{
CustGoodsCode: "TEST001",
CustGoodsName: "测试货主001",
IfBoxId: 0,
IfProductId: 0,
}, {
CustGoodsCode: "TEST002",
CustGoodsName: "测试货主002",
IfBoxId: 0,
IfProductId: 0,
}, {
CustGoodsCode: "TEST003",
CustGoodsName: "测试货主003",
IfBoxId: 0,
IfProductId: 0,
}],
index: 0,
pickerData: '请选择',
itstock: '',
};
},
watch: {
checkedObj: {
handler(n) {
this.checkedArr = n
},
deep: true
}
},
mounted() {
this.checkedArr = this.checkedObj
this.aryys = this.checkedObj
this.getBounht();
},
methods: {
//
producrprice(e, i, item) {
this.bought[i].price = e.detail.value
this.$set(item, 'check', false);
for (let i in this.checkedArr) {
if (this.checkedArr[i].product_id == item.product_id) {
this.checkedArr.splice(i, 1)
}
}
},
incrementTotal(e, i, item) {
this.$set(item, 'check', false);
for (let i in this.checkedArr) {
if (this.checkedArr[i].product_id == item.product_id) {
this.checkedArr.splice(i, 1)
}
}
},
// picker
bindPickerChange: function(e, storage, num) {
this.bought[num].attrValue[this.index].sku = storage[e.detail.value].sku
this.bought[num].attrValue[this.index].stock = storage[e.detail.value].stock
this.bought[num].product_attr_unique = storage[e.detail.value].unique
this.pickerData = storage[this.index] //
if (this.bought[num].attrValue[this.index].stock == 0) {
this.$util.Tips({
title: '库存不足'
});
}
},
//
close() {
this.$emit('close');
},
numberChange(data, i) {
this.peicenumber = data.number;
this.bought[i].number = data.number
},
tabs(index) {
this.isActive = index
this.$set(this.whereb, 'keyword', '');
this.searchVal = ''
this.searchBut()
},
onTouchmove(e) {
if (this.loadendb) return;
if (this.loadingb) return;
const query = uni.createSelectorQuery().in(this);
query.select('#goods').boundingClientRect(data => {
if (data.bottom < 1500 && data.top < 0) {
this.getBounht();
}
}).exec();
//
},
setValue: function(event) {
this.$set(this.whereb, 'keyword', event.detail.value);
if (!event.detail.value) {
this.whereb.page = 1
this.loadedb = false
this.getBounht()
}
},
searchBut() {
this.bought = []
this.whereb.page = 1
this.loadedb = false
this.getBounht()
},
getBounht() {
var that = this;
// console.log('1111111', that.loadingb, that.loadedb)
if (that.loadingb || that.loadedb) return;
that.loadingb = true;
getCommunitygetOrderList(that.whereb).then(
res => {
that.loadingb = false;
that.loadedb = res.data.list.length < that.whereb.limit;
that.bought.push.apply(that.bought, res.data.list);
that.whereb.page = that.whereb.page + 1;
that.getInitchecked(that.bought);
},
error => {
that.$util.Tips({
title: error.msg
})
}
);
},
/*获取初始化选中的数据*/
getInitchecked(arr) {
let that = this;
arr.forEach((item, index) => {
that.$set(item, 'check', false);
that.checkedArr.forEach((val, i) => {
if (item.product_id == val.product_id) {
that.$set(item, 'check', true);
that.$set(item, 'number', val.number);
that.$set(item, 'price', val.price);
}
})
})
},
/*已选中的商品打钩*/
getCheckedGoods() {
this.checked = []
this.checkedArr.forEach((item, index) => {
this.checkedArr.push(item)
})
},
/*点击选中与否*/
goodsCheck(item) {
this.$set(item, 'check', !item.check);
if (item.check) {
if (this.peicenumber == 0) {
item.number = 1
}
if (!item.product_attr_unique) {
item.product_attr_unique = item.attrValue[0].unique
}
this.checkedArr.push(item)
this.arrayUnique(this.checkedArr, 'product_id')
} else {
this.checkedArr.splice(this.checkedArr.findIndex(itemn => ((itemn.product_id == item.product_id))), 1)
}
},
//
arrayUnique(arr, name) {
let hash = {}
const result = arr.reduce((acc, cru, index) => {
if (!hash[cru[name]]) {
hash[cru[name]] = {
index: acc.length
}
acc.push(cru)
} else {
console.log(acc, hash[cru[name]])
acc.splice(hash[cru[name]]['index'], 1, cru)
}
return acc;
}, [])
this.checkedArr = result
},
/*确定提交*/
submit() {
this.$emit('getProduct', this.checkedArr);
},
}
}
</script>
<style lang="scss" scoped>
.containers {
background: #ffffff;
border-radius: 16rpx 16rpx 0 0;
padding: 40rpx 0;
position: relative;
.header {
position: relative;
padding: 0 30rpx;
.title {
width: 100%;
text-align: center;
text {
position: relative;
margin: 0 50rpx;
color: #999999;
font-size: 30rpx;
&.on {
color: #333333;
font-weight: bold;
font-size: 34rpx;
&::after {
content: "";
display: inline-block;
width: 40rpx;
height: 5rpx;
background: var(--view-theme);
position: absolute;
bottom: -10rpx;
left: 10rpx;
}
}
}
}
.iconclose {
width: 44rpx;
height: 44rpx;
line-height: 44rpx;
border: 2rpx solid #fff;
border-radius: 50%;
text-align: center;
color: #fff;
position: absolute;
top: -150rpx;
right: 30rpx;
}
.search {
margin-top: 44rpx;
background: #F5F5F5;
border-radius: 30rpx;
padding: 12rpx 30rpx 12rpx 66rpx;
position: relative;
.iconfont {
font-size: 24rpx;
color: #939393;
position: absolute;
top: 20rpx;
left: 30rpx;
}
.placeholder {
color: #999999;
font-size: 26rpx;
}
}
.sub_title {
color: #282828;
font-size: 26rpx;
margin-top: 30rpx;
}
.iconfont {
color: #8A8A8A;
font-size: 28rpx;
position: absolute;
top: 0;
right: 30rpx;
}
}
scroll-view {
height: 650rpx;
}
.main {
height: 650rpx;
margin: 40rpx 0 80rpx;
padding: 0 30rpx;
}
}
.picTxt {
width: 100%;
padding: 25rpx 0;
position: relative;
align-items: center;
justify-content: space-between;
border-top: 2rpx solid #E7E6E4;
.picTxt_one {
white-space: nowrap;
overflow: hidden;
}
.picTxt_one {
display: flex;
margin-top: 20rpx;
.slecte {
margin-right: 30rpx;
width: 280rpx;
height: 60rpx;
line-height: 60rpx;
text-align: center;
font-size: 28rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #959595;
background-color: #E7E6E4;
border-radius: 10rpx 10rpx 10rpx 10rpx;
white-space: nowrap;
overflow: hidden;
}
}
.picTxt_price {
display: flex;
margin-top: 37rpx;
height: 70rpx;
line-height: 70rpx;
.price {
display: flex;
margin-right: 15rpx;
input {
width: 210rpx;
text-align: center;
height: 70rpx;
background: #F5F5F5;
border-radius: 7rpx 7rpx 7rpx 7rpx;
font-size: 28rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
margin-left: 20rpx;
}
}
.price_num {
display: flex;
}
}
.checkbox {
margin-right: 30rpx;
.iconfont {
font-size: 38rpx;
color: #CCCCCC;
}
.icon-xuanzhong1 {
color: var(--view-theme);
}
.disabled {
pointer-events: none;
cursor: default;
opacity: 0.3;
}
}
.pictrue {
width: 160rpx;
height: 160rpx;
image {
width: 100%;
height: 100%;
border-radius: 8rpx;
}
}
.text {
width: 430rpx;
margin-left: 30rpx;
font-size: 28rpx;
color: #282828;
position: relative;
height: 160rpx;
.name {
color: #282828;
font-size: 28rpx;
}
.money {
position: absolute;
bottom: 0;
left: 0;
color: var(--view-priceColor);
font-size: 22rpx;
font-weight: bold;
text {
font-size: 26rpx;
}
}
}
}
.foot_bar {
width: 100%;
position: fixed;
// bottom: 54px;
left: 0;
padding: 20rpx 0;
z-index: 5;
.confirm_btn {
width: 710rpx;
height: 86rpx;
line-height: 86rpx;
color: #ffffff;
text-align: center;
font-size: 32rpx;
background: var(--view-theme);
border-radius: 43rpx;
margin: 0 auto;
}
}
.empty {
margin: 130rpx 0 150rpx;
text-align: center;
image,
uni-image {
display: inline-block;
width: 414rpx;
height: 305rpx;
}
text {
display: block;
color: #999999;
font-size: 26rpx;
}
}
</style>

View File

@ -0,0 +1,190 @@
<template>
<view class="mark" v-if="isShow" @click="close">
<view class="release">
<view class="release_content" v-for="(item,i) in list" :key="i" @click="navigtion(item)">
<view class="release_content_left">
<view :class="i==1?'release_imga':'release_img'">
<image :src="item.img" mode="aspectFit"></image>
</view>
<view class="title">
<view class="title1">
{{item.title1}}
</view>
<view class="title2">
{{item.title2}}
</view>
</view>
</view>
<view class="release_content_right ">
<text class="iconfont icon-xiangyou"></text>
</view>
</view>
<view class="release_close" @click="close">
<image src="@/static/images/trad-close.png" mode="aspectFit"></image>
</view>
</view>
</view>
</view>
</template>
<script>
import {
navigateTo
} from '../../libs/uniApi'
export default {
props: {
isShow: {
type: Boolean,
default: false
},
// bottomtruefalse
bottom: {
type: Boolean,
default: false
}
},
data() {
return {
list: [{
img: require('@/static/images/season.png'),
title1: '发布调货商品',
title2: '镇街店铺快捷调货',
},
{
img: require('@/static/images/discounts.png'),
title1: '发布打折商品',
title2: '发布店铺打折商品',
}
]
}
},
methods: {
navigtion(item) {
if (item.title1 =='发布调货商品') {
uni.navigateTo({
url: '/pages/trading_hall/transfer_goods/index'
})
} else {
uni.navigateTo({
url: '/pages/trading_hall/adddiscounts/index'
})
}
},
close() {
this.$emit('close')
},
cancel() {
this.$emit('cancel')
},
confirm() {
this.$emit('confirm')
},
}
}
</script>
<style lang="scss">
.mark {
position: fixed;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.3);
left: 0;
bottom: 0;
top: 0;
right: 0;
display: flex;
justify-content: center;
align-items: center;
}
.release {
position: absolute;
bottom: 0px;
}
.release_content {
width: 694rpx;
height: 137rpx;
background: #FCF3EE;
border-radius: 14rpx 14rpx 14rpx 14rpx;
opacity: 1;
margin-bottom: 21rpx;
display: flex;
justify-content: space-between;
padding: 0 26rpx;
.release_content_left {
display: flex;
}
.release_content_right {
height: 137rpx;
line-height: 137rpx;
}
.release_img {
width: 111rpx;
height: 96rpx;
margin-top: 21rpx;
margin-right: 19rpx;
image {
width: 111rpx;
height: 96rpx;
}
}
.release_imga {
width: 76rpx;
height: 113rpx;
margin-top: 5rpx;
margin-right: 50rpx;
image {
width: 76rpx;
height: 113rpx;
}
}
.title {
margin-top: 23rpx;
}
.title1 {
font-size: 32rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
}
.title2 {
font-size: 28rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #666666;
margin-top: 11rpx;
}
}
.release_close {
width: 248rpx;
height: 248rpx;
margin: 0 auto;
image {
width: 248rpx;
height: 248rpx;
}
}
</style>

View File

@ -0,0 +1,571 @@
<template>
<view class="containers" :style="viewColor">
<view class="header">
<view class="search">
<text class="iconfont icon-xiazai5"></text>
<input type="text" placeholder="请输入商品名称" v-model="searchVal" @input="setValue" confirm-type="search"
@confirm="searchBut()" placeholder-class='placeholder'>
</view>
<view class="iconclose" @click="close">
X
</view>
</view>
<view class="main">
<scroll-view scroll-y="true" @touchmove.stop>
<block>
<view v-if="bought.length" @touchmove="onTouchmove" id="goods" class="goods">
<view class="picTxt acea-row" v-for="(item, i) in bought" :key="i">
<view class="checkbox">
<text @click.stop="goodsCheck(item)" v-if="item.check"
class="iconfont icon-xuanzhong1"></text>
<text @click.stop="goodsCheck(item)" v-else
:class="checkedArr.length >=5 ? 'disabled': ''"
class="iconfont icon-weixuanzhong"></text>
</view>
<view class='pictrue'>
<image :src='item.image'></image>
</view>
<view class='text'>
<view class='line2 name'>{{item.store_name}}</view>
<view class="picTxt_one" v-if="item.attrValue.length>0">
<picker class="slecte" v-if="item.attrValue.length>1"
@change="bindPickerChange($event,item.attrValue,i)" :value="index"
:range="item.attrValue" :range-key="'sku'">
<view class="uni-input">{{item.attrValue[index].sku}}</view>
</picker>
<view class="" style="margin-top: 10rpx;">
库存:{{item.attrValue[index].stock}}
</view>
</view>
</view>
<view class="picTxt_price">
<view class="price">
<span>出售价格</span>
<input type="text" :value="item.price" placeholder="输入出售价格"
@input="producrprice($event,i,item)" adjust-position=""
placeholder-style="color: #CCCCCC;" />
</view>
<view class="price_num">
<span>出售数量</span>
<subtractive v-if='item.number==0' style="margin-top: 10rpx;margin-left: 20rpx;"
class="step" :min="1" :max="item.attrValue[index].stock" :value="peicenumber"
:isMax="true" :isMin="true" index="11" @eventChange="numberChange($event,i)" >
</subtractive>
<subtractive v-else style="margin-top: 10rpx;margin-left: 20rpx;" class="step"
:min="1" :max="item.attrValue[index].stock" :value="item.number" :isMax="true"
:isMin="true" index="11" @eventChange="numberChange($event,i)" ></subtractive>
</view>
</view>
</view>
</view>
<view v-else class="empty">
<image src="/static/images/no_thing.png"></image>
<text>暂无内容哦~</text>
</view>
</block>
</scroll-view>
<view class="foot_bar">
<button class="confirm_btn" @click="submit">确定({{checkedArr.length}})</button>
</view>
</view>
</view>
</template>
<script>
import Loading from '@/components/Loading/index.vue';
import subtractive from '@/components/subtractive/subtractive.vue';
import {
getCommunitygetOrderList
} from "@/api/trading-floor";
import {
mapGetters
} from "vuex";
export default {
props: {
checkedObj: {
type: Array,
default: []
}
},
computed: mapGetters(['viewColor']),
components: {
Loading,
subtractive
},
data() {
return {
isActive: 0,
loadedb: false,
loadingb: false,
loadedc: false,
loadingc: false,
loadeds: false,
loadings: false,
whereb: {
page: 1,
limit: 10,
keyword: '',
},
peicenumber: 0,
searchVal: "",
checked: [],
list: [],
bought: [],
checkedArr: [],
// picker
storageCustomList: [{
CustGoodsCode: "TEST001",
CustGoodsName: "测试货主001",
IfBoxId: 0,
IfProductId: 0,
}, {
CustGoodsCode: "TEST002",
CustGoodsName: "测试货主002",
IfBoxId: 0,
IfProductId: 0,
}, {
CustGoodsCode: "TEST003",
CustGoodsName: "测试货主003",
IfBoxId: 0,
IfProductId: 0,
}],
index: 0,
pickerData: '请选择',
itstock: '',
};
},
watch: {
checkedObj: {
handler(n) {
this.checkedArr = n
},
deep: true
}
},
mounted() {
this.checkedArr = this.checkedObj
this.getBounht();
},
methods: {
//
producrprice(e, i,item) {
this.bought[i].price = e.detail.value
this.$set(item, 'check',false);
},
// picker
bindPickerChange: function(e, storage, num) {
this.bought[num].attrValue[this.index].sku = storage[e.detail.value].sku
this.bought[num].attrValue[this.index].stock = storage[e.detail.value].stock
this.bought[num].product_attr_unique = storage[e.detail.value].unique
this.pickerData = storage[this.index] //
if (this.bought[num].attrValue[this.index].stock == 0) {
this.$util.Tips({
title: '库存不足'
});
}
},
//
close() {
this.$emit('close');
},
numberChange(data, i) {
this.peicenumber = data.number;
this.bought[i].number = data.number
},
tabs(index) {
this.isActive = index
this.$set(this.whereb, 'keyword', '');
this.searchVal = ''
this.searchBut()
},
onTouchmove(e) {
if (this.loadendb) return;
if (this.loadingb) return;
const query = uni.createSelectorQuery().in(this);
query.select('#goods').boundingClientRect(data => {
if (data.bottom < 1500 && data.top < 0) {
this.getBounht();
}
}).exec();
//
},
setValue: function(event) {
this.$set(this.whereb, 'keyword', event.detail.value);
},
searchBut() {
this.whereb.page = this.wherec.page = this.wheres.page =
this.bought = []
this.isActive == 0 ? this.getBounht() : ''
},
getBounht() {
var that = this;
if (that.loadingb || that.loadedb) return;
that.loadingb = true;
getCommunitygetOrderList(that.whereb).then(
res => {
that.loadingb = false;
that.loadedb = res.data.list.length < that.whereb.limit;
that.bought.push.apply(that.bought, res.data.list);
that.whereb.page = that.whereb.page + 1;
that.getInitchecked(that.bought);
},
error => {
that.$util.Tips({
title: error.msg
})
}
);
},
/*获取初始化选中的数据*/
getInitchecked(arr) {
let that = this;
arr.forEach((item, index) => {
that.$set(item, 'check', false);
that.checkedArr.forEach((val, i) => {
if (item.product_id == val.product_id) {
that.$set(item, 'check', true);
that.$set(item, 'number', val.number);
that.$set(item, 'price', val.price);
}
})
})
},
/*已选中的商品打钩*/
getCheckedGoods() {
this.checked = []
this.checkedArr.forEach((item, index) => {
this.check.push(item)
})
},
/*点击选中与否*/
goodsCheck(item) {
this.$set(item, 'check', !item.check);
if (item.check) {
if (this.peicenumber == 0) {
item.number = 1
}
if (!item.product_attr_unique) {
item.product_attr_unique = item.attrValue[0].unique
}
this.checkedArr.push(item)
} else {
this.checkedArr.splice(this.checkedArr.findIndex(itemn => ((itemn.spu_id == item.spu_id) || (item
.spu_id == (
itemn.spu && itemn.spu.spu_id)))), 1)
}
},
/*确定提交*/
submit() {
this.$emit('getProduct', this.checkedArr);
},
}
}
</script>
<style lang="scss" scoped>
.containers {
background: #ffffff;
border-radius: 16rpx 16rpx 0 0;
padding: 40rpx 0;
position: relative;
.header {
position: relative;
padding: 0 30rpx;
.title {
width: 100%;
text-align: center;
text {
position: relative;
margin: 0 50rpx;
color: #999999;
font-size: 30rpx;
&.on {
color: #333333;
font-weight: bold;
font-size: 34rpx;
&::after {
content: "";
display: inline-block;
width: 40rpx;
height: 5rpx;
background: var(--view-theme);
position: absolute;
bottom: -10rpx;
left: 10rpx;
}
}
}
}
.iconclose {
width: 44rpx;
height: 44rpx;
line-height: 44rpx;
border: 2rpx solid #fff;
border-radius: 50%;
text-align: center;
color: #fff;
position: absolute;
top: -150rpx;
right: 30rpx;
}
.search {
margin-top: 44rpx;
background: #F5F5F5;
border-radius: 30rpx;
padding: 12rpx 30rpx 12rpx 66rpx;
position: relative;
.iconfont {
font-size: 24rpx;
color: #939393;
position: absolute;
top: 20rpx;
left: 30rpx;
}
.placeholder {
color: #999999;
font-size: 26rpx;
}
}
.sub_title {
color: #282828;
font-size: 26rpx;
margin-top: 30rpx;
}
.iconfont {
color: #8A8A8A;
font-size: 28rpx;
position: absolute;
top: 0;
right: 30rpx;
}
}
scroll-view {
height: 650rpx;
}
.main {
height: 650rpx;
margin: 40rpx 0 80rpx;
padding: 0 30rpx;
}
}
.picTxt {
width: 100%;
padding: 25rpx 0;
position: relative;
align-items: center;
justify-content: space-between;
border-top: 2rpx solid #E7E6E4;
.picTxt_one {
white-space: nowrap;
overflow: hidden;
}
.picTxt_one {
display: flex;
margin-top: 20rpx;
.slecte {
margin-right: 30rpx;
width: 280rpx;
height: 60rpx;
line-height: 60rpx;
text-align: center;
font-size: 28rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #959595;
background-color: #E7E6E4;
border-radius: 10rpx 10rpx 10rpx 10rpx;
white-space: nowrap;
overflow: hidden;
}
}
.picTxt_price {
display: flex;
margin-top: 37rpx;
height: 70rpx;
line-height: 70rpx;
.price {
display: flex;
margin-right: 15rpx;
input {
width: 210rpx;
text-align: center;
height: 70rpx;
background: #F5F5F5;
border-radius: 7rpx 7rpx 7rpx 7rpx;
font-size: 28rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
margin-left: 20rpx;
}
}
.price_num {
display: flex;
}
}
.checkbox {
margin-right: 30rpx;
.iconfont {
font-size: 38rpx;
color: #CCCCCC;
}
.icon-xuanzhong1 {
color: var(--view-theme);
}
.disabled {
pointer-events: none;
cursor: default;
opacity: 0.3;
}
}
.pictrue {
width: 160rpx;
height: 160rpx;
image {
width: 100%;
height: 100%;
border-radius: 8rpx;
}
}
.text {
width: 430rpx;
margin-left: 30rpx;
font-size: 28rpx;
color: #282828;
position: relative;
height: 160rpx;
.name {
color: #282828;
font-size: 28rpx;
}
.money {
position: absolute;
bottom: 0;
left: 0;
color: var(--view-priceColor);
font-size: 22rpx;
font-weight: bold;
text {
font-size: 26rpx;
}
}
}
}
.foot_bar {
width: 100%;
position: fixed;
// bottom: 54px;
left: 0;
padding: 20rpx 0;
z-index: 5;
.confirm_btn {
width: 710rpx;
height: 86rpx;
line-height: 86rpx;
color: #ffffff;
text-align: center;
font-size: 32rpx;
background: var(--view-theme);
border-radius: 43rpx;
margin: 0 auto;
}
}
.empty {
margin: 130rpx 0 150rpx;
text-align: center;
image,
uni-image {
display: inline-block;
width: 414rpx;
height: 305rpx;
}
text {
display: block;
color: #999999;
font-size: 26rpx;
}
}
</style>

View File

@ -0,0 +1,208 @@
<template>
<view class="uni-numbox">
<!-- -部分 -->
<view class="uni-numbox-minus" @click="_calcValue('subtract')">
<text :class="minDisabled?'uni-numbox-disabled': ''">-</text>
</view>
<!-- 中间输入数值部分 -->
<input class="uni-numbox-value" type="number" :disabled="disabled" :value="inputValue" @blur="_onBlur">
<!-- + 部分 -->
<view class="uni-numbox-plus" @click="_calcValue('add')">
<text :class="maxDisabled?'uni-numbox-disabled': ''">+</text>
</view>
</view>
</template>
<script>
export default {
name: 'uni-number-box',
props: {
// isMax
isMax: {
type: Boolean,
default: false
},
// isMin
isMin: {
type: Boolean,
default: false
},
// index
index: {
type: String,
default: 0
},
// value
value: {
type: Number,
default: 0
},
// min
min: {
type: Number,
default: -Infinity
},
// max
max: {
type: Number,
default: Infinity
},
// step
step: {
type: Number,
default: 1
},
// disabled
disabled: {
type: Boolean,
default: false
}
},
data() {
return {
inputValue: this.value,
minDisabled: false,
maxDisabled: false
}
},
created() {
this.maxDisabled = this.isMax;
this.minDisabled = this.isMin;
},
computed: {
},
watch: {
inputValue(number) {
const data = {
number: number,
index: this.index
}
this.$emit('eventChange', data);
}
},
methods: {
_calcValue(type) {
const scale = this._getDecimalScale();
let value = this.inputValue * scale;
let newValue = 0;
let step = this.step * scale;
if (type === 'subtract') {
newValue = value - step;
if (newValue <= this.min) {
this.minDisabled = true;
}
if (newValue < this.min) {
newValue = this.min
}
if (newValue < this.max && this.maxDisabled === true) {
this.maxDisabled = false;
}
} else if (type === 'add') {
newValue = value + step;
if (newValue >= this.max) {
this.maxDisabled = true;
}
if (newValue > this.max) {
newValue = this.max
}
if (newValue > this.min && this.minDisabled === true) {
this.minDisabled = false;
}
}
if (newValue === value) {
return;
}
this.inputValue = newValue / scale;
},
_getDecimalScale() {
let scale = 1;
//
if (~~this.step !== this.step) {
scale = Math.pow(10, (this.step + '').split('.')[1].length);
}
return scale;
},
_onBlur(event) {
let value = event.detail.value;
if (!value) {
this.inputValue = 0;
return
}
value = +value;
if (value > this.max) {
value = this.max;
} else if (value < this.min) {
value = this.min
}
this.inputValue = value
}
}
}
</script>
<style>
.uni-numbox {
/* position:absolute; */
/* left: 30upx;
bottom: 0; */
display: flex;
justify-content: flex-start;
align-items: center;
width: 200upx;
height: 50upx;
/* background:#f5f5f5; */
}
.uni-numbox-minus {
background: #EEEEEE !important;
color: #909399 !important;
}
.uni-numbox-minus,
.uni-numbox-plus {
margin: 0;
width: 53rpx;
height: 53rpx;
background-color: #F84221;
opacity: 1;
line-height: 53rpx;
text-align: center;
position: relative;
color: #fff;
font-size: 40upx;
}
.uni-numbox-minus .yticon,
.uni-numbox-plus .yticon {
font-size: 36upx;
color: #555;
}
.uni-numbox-minus {
/* border-right: none;
border-top-left-radius: 6upx;
border-bottom-left-radius: 6upx; */
}
.uni-numbox-plus {
/* border-left: none;
border-top-right-radius: 6upx;
border-bottom-right-radius: 6upx; */
}
.uni-numbox-value {
position: relative;
/* background-color: #f5f5f5; */
width: 90upx;
height: 50upx;
text-align: center;
padding: 0;
font-size: 30upx;
}
.uni-numbox-disabled.yticon {
color: #d6d6d6;
}
</style>

View File

@ -0,0 +1,261 @@
<template>
<view :style="viewColor">
<view class="address-window" :class="display==true?'on':''">
<view class='title'>请选择所在村队<text class='iconfont icon-guanbi' @tap='close'></text></view>
<view class="address-count">
<view class="address-selected">
<view v-for="(item,index) in selectedArr" :key="index" class="selected-list" :class="{active:index === selectedIndex}" @click="change(item.parent_id, index)">
{{item.name}}
<text class="iconfont icon-xiangyou"></text>
</view>
<view class="selected-list" :class="{active:-1 === selectedIndex}" v-if="showMore" @click="change(-1, -1)">
<text class="iconfont icon-xiangyou"></text>
请选择
</view>
</view>
<scroll-view scroll-y="true" :scroll-top="scrollTop" class="address-list" @scroll="scroll">
<view v-for="(item,index) in addressList" :key="index" class="list" :class="{active:item.id === activeId}" @click="selected(item)">
<text class="item-name">{{item.name}}</text>
<text v-if="item.id === activeId" class="iconfont icon-duihao2"></text>
</view>
</scroll-view>
</view>
</view>
<view class='mask' catchtouchmove="true" :hidden='display==false' @tap='close'></view>
</view>
</template>
<script>
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEBCRMEB
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import {getAddressList} from '@/api/user.js';
import {brigade } from '@/api/api.js';
import { mapGetters } from "vuex";
const CACHE_ADDRESS = {};
export default {
props: {
display: {
type: Boolean,
default: true
},
address: Array,
},
data() {
return {
active: 0,
//
addressList: [],
selectedArr: [],
selectedIndex: -1,
is_loading: false,
old: { scrollTop: 0 },
scrollTop: 0
};
},
computed:{
...mapGetters(['viewColor']),
activeId(){
return this.selectedIndex == -1 ? 0 : this.selectedArr[this.selectedIndex].id
},
showMore(){
return this.selectedArr.length ? this.selectedArr[this.selectedArr.length - 1].snum > 0 : true
}
},
watch:{
address(n){
this.selectedArr = n ? [...n] : []
},
display(n){
if(!n) {
this.addressList = [];
this.selectedArr = this.address ? [...this.address] : [];
this.selectedIndex = -1;
this.is_loading = false;
}else{
this.loadAddress()
}
}
},
mounted() {
this.loadAddress()
},
methods: {
change(pid,index){
if(this.selectedIndex == index) return;
if(pid === -1){
pid = this.selectedArr.length ? this.selectedArr[this.selectedArr.length -1].id : 0;
}
console.log(index)
this.selectedIndex = index;
this.loadAddress();
},
loadAddress(pid){
if(CACHE_ADDRESS[pid]){
this.addressList = CACHE_ADDRESS[pid];
return ;
}
this.is_loading = true;
brigade(pid).then(res=>{
console.log(res.data)
this.is_loading = false;
CACHE_ADDRESS[pid] = res.data;
this.addressList = res.data;
})
this.goTop()
},
selected(item){
if(this.is_loading) return;
if(this.selectedIndex > -1){
this.selectedArr.splice(this.selectedIndex + 1,999)
this.selectedArr[this.selectedIndex] = item;
this.selectedIndex = -1;
}else if(!item.parent_id){
this.selectedArr = [item];
}else{
this.selectedArr.push(item);
}
if(item.snum){
this.loadAddress(item.id);
} else {
this.$emit('submit', [...this.selectedArr]);
this.$emit('changeClose');
}
this.goTop()
},
close: function() {
this.$emit('changeClose');
},
scroll : function(e) {
this.old.scrollTop = e.detail.scrollTop
},
goTop: function(e) {
this.scrollTop = this.old.scrollTop
this.$nextTick(() => {
this.scrollTop = 0
});
}
}
}
</script>
<style scoped lang="scss">
.address-window {
background-color: #fff;
position: fixed;
bottom: 0;
left: 0;
width: 100%;
z-index: 101;
border-radius: 30rpx 30rpx 0 0;
transform: translate3d(0, 100%, 0);
transition: all .3s cubic-bezier(.25, .5, .5, .9);
}
.address-window.on {
transform: translate3d(0, 0, 0);
}
.address-window .title {
font-size: 32rpx;
font-weight: bold;
text-align: center;
height: 123rpx;
line-height: 123rpx;
position: relative;
}
.address-window .title .iconfont {
position: absolute;
right: 30rpx;
color: #8a8a8a;
font-size: 35rpx;
}
.address-count{
.address-selected{
padding: 0 30rpx;
margin-top: 10rpx;
position: relative;
padding-bottom: 20rpx;
border-bottom: 2rpx solid #f7f7f7;
}
.selected-list{
font-size: 26rpx;
color: #282828;
line-height: 50rpx;
padding-bottom: 10rpx;
padding-left: 60rpx;
position: relative;
&.active{
color: #e28d54;
}
&:before,&:after{
content: '';
display: block;
position: absolute;
}
&:before{
width: 4rpx;
height: 100%;
background-color: var(--view-theme);
top: 0;
left: 10rpx;
}
&:after{
width: 12rpx;
height: 12rpx;
background: var(--view-theme);
border-radius: 100%;
left: 6rpx;
top: 50%;
margin-top: -8rpx;
}
&:first-child,&:last-child{
&:before{
height: 50%;
}
}
&:first-child{
&:before{
top: auto;
bottom: 0;
}
}
.iconfont{
font-size: 20rpx;
float: right;
color: #dddddd;
}
}
scroll-view{
height: 550rpx;
}
.address-list{
padding: 0 30rpx;
margin-top: 20rpx;
box-sizing: border-box;
.list{
.iconfont{
float: right;
color: #ddd;
font-size: 22rpx;
}
.item-name{
display: inline-block;
line-height: 50rpx;
margin-bottom: 20rpx;
font-size: 26rpx;
}
&.active{
color: #e28d54;
.iconfont{
color: #e28d54;
}
}
}
}
}
</style>

View File

@ -4,7 +4,9 @@
<view class="bg-img">
<img :src="bgColor" alt="">
</view>
<view class="site-box flex_a_c_j_sb">
<view class="place_wrapper flex_a_c" @click="selectLocation">
<view class="iconfont icon-weizhi"></view>
<view class="town_name">{{street}}</view>
@ -16,8 +18,9 @@
<!-- 搜索栏 -->
<navigator url="/pages/columnGoods/goods_search/index" hover-class="none" class="search_content flex_a_c_j_sb">
<view class="flex_a_c">
<view class="iconfont icon-sousuo"></view>
<input type="text" v-model="keyword" placeholder="搜索产品或店铺" disabled>
<view class="iconfont icon-sousuo" style="font-size: 39rpx;"></view>
<input type="text" v-model="keyword" placeholder="搜索产品或店铺" placeholder-style="font-size: 30rpx;"
disabled>
</view>
<button class="search_btn">搜索</button>
</navigator>
@ -28,7 +31,7 @@
indicator-active-color="#fff">
<block v-for="(item,index) in swiper['url']" :key="index">
<swiper-item class="swi_item" @click="swiperClick(item)">
<u--image :showLoading="true" :src="item.img" width="694.74rpx" height="242.11rpx" mode="aspectFill">
<u--image :showLoading="true" :src="item.img" width="724rpx" height="259rpx" mode="aspectFit">
</u--image>
</swiper-item>
</block>
@ -40,11 +43,23 @@
</template>
<script>
import { getArea, getStreet } from '@/api/article.js';
import { getIndexData, getDiy } from '@/api/api.js'
import { getGeocoder } from '@/api/store.js';
import { mapGetters } from 'vuex'
import { Toast } from '../libs/uniApi';
import {
getArea,
getStreet
} from '@/api/article.js';
import {
getIndexData,
getDiy
} from '@/api/api.js'
import {
getGeocoder
} from '@/api/store.js';
import {
mapGetters
} from 'vuex'
import {
Toast
} from '../libs/uniApi';
import Cache from '@/utils/cache';
export default {
props: {
@ -55,12 +70,18 @@
location_Arr: {
type: Object,
default: () => ({})
}
},
town: {
type: String,
default: false
},
},
data() {
return {
defaInd: [0, 0],
street: '',
showPicker: false,
styleConfig: [],
columnData: [],
@ -77,22 +98,29 @@
interval: 2000, //
duration: 400 //
},
}
},
computed: mapGetters(['location']),
watch: {
location: {
handler(newVal, oldVal) {
if (newVal.address_component?.street) this.street = newVal.address_component.street
},
immediate: true
street(nval, val) {
this.street = nval
}
},
created() {
this.getBanner()
this.Area()
if (this.location.address_component?.street) this.street = this.location.address_component.street
},
mounted() {
this.$bus.$on('value-updated', (newValue) => {
//
this.street = newValue.split(',')[0]
});
},
methods: {
swiperClick(item) {
const url = item.info[1].value
@ -102,13 +130,22 @@
},
selectLocation() {
this.isSelectPlace ? this.showPicker = true : ''
},
confirm(e) {
this.street = e.value[1].name
this.showPicker = false
this.$emit('selectPlce', e)
let adress = Cache.get('LOCATION_DATA',true)
Cache.set('LOCATION_DATA',adress)
this.$emit('change', e)
this.street = e.value[1].name
this.$nextTick(() => {
this.$bus.$emit('value-updated',e.value[1].name + ',' +e.value[1].code);
})
},
changeHandler(e) {
const {
@ -119,29 +156,41 @@
picker = this.$refs.uPicker
} = e;
if (columnIndex === 0) {
getStreet({ area_code: value[0]['code'] }).then(res => {
getStreet({
area_code: value[0]['code']
}).then(res => {
picker.setColumnValues(1, res.data);
});
}
},
Area() {
getArea({ city_code: 510500 }).then(res => {
getArea({
city_code: 510500
}).then(res => {
this.$refs.uPicker.setColumnValues(0, res.data);
this.Street(res.data[0]['code']);
});
},
Street(code) {
getStreet({ area_code: code }).then(res => {
getStreet({
area_code: code
}).then(res => {
this.$refs.uPicker.setColumnValues(1, res.data);
});
},
swiperChange(e) {
let { current, source } = e.detail;
let {
current,
source
} = e.detail;
if (source === 'autoplay' || source === 'touch') {
this.bgColor = this.swiper.url[e.detail.current]['img']
this.$emit('kkchange', this.bgColor)
}
},
//
objToArr(data) {
let obj = Object.keys(data).sort();
@ -150,7 +199,11 @@
},
async getBanner(id) {
let that = this;
const { data } = await getDiy({ id: 0 })
const {
data
} = await getDiy({
id: 0
})
that.styleConfig = that.objToArr(data.value);
/* 循环数组得到数据*/
that.styleConfig.forEach((item, index, arr) => {
@ -166,7 +219,7 @@
}
</script>
<style lang="scss">
<style lang="scss" scoped>
.zbp-head-wrapper {
position: relative;
padding-top: 78.95rpx;
@ -213,15 +266,17 @@
height: 66.67rpx;
margin-bottom: 26.32rpx;
position: relative;
z-index: 9999;
//
.place_wrapper {
color: #fff;
margin-right: 24.56rpx;
font-size: 31.58rpx;
font-size: 30rpx;
.town_name {
margin-left: 10.53rpx;
margin-left: 21rpx;
}
}
@ -236,12 +291,12 @@
.search_content {
margin: 0 auto;
width: 694.74rpx;
height: 61.4rpx;
width: 724rpx;
height: 74rpx;
padding: 2px 2px 2px 21.05rpx;
border-radius: 100px;
border-radius: 175rpx;
background: #fff;
margin-bottom: 17.54rpx;
margin-bottom: 21rpx;
position: relative;
box-sizing: border-box;
@ -269,15 +324,15 @@
z-index: 2;
.swiper {
width: 694.74rpx;
height: 242.11rpx;
width: 724rpx;
height: 259rpx;
margin: 0 auto;
border-radius: 15px;
border-radius: 20rpx 20rpx 20rpx 20rpx;
overflow: hidden;
.swi_item {
width: 100%;
height: 242.11rpx;
height: 259rpx;
}
}
}

View File

@ -9,9 +9,11 @@ let httpApiThree
// 网络接口修改此字符 小程序域名要求https
// let httpApi = 'http://192.168.31.110:8324' // 测试
if (process.env.NODE_ENV === "development") {
// httpApi = 'https://shop.lihaink.cn' // 生产
httpApi = "https://crmeb-test.shop.lihaink.cn"
httpApi = 'https://shop.lihaink.cn' // 生产
// httpApi = "https://crmeb-test.shop.lihaink.cn"
// httpApi = "http://192.168.0.222"
// httpApi = "http://192.168.0.108:8325"
// httpApi = 'http://192.168.0.108:8325'
// #ifdef MP-WEIXIN
httpApiTwo = "https://nk.lihaink.cn"
httpApiThree = 'http://ceshi-oa.lihaink.cn'
@ -22,8 +24,8 @@ if (process.env.NODE_ENV === "development") {
// httpApiThree = 'baseUrlTest' // h5跨域配置
// #endif
} else if (process.env.NODE_ENV === 'production') {
// httpApi = 'https://shop.lihaink.cn' // 生产
httpApi = "https://crmeb-test.shop.lihaink.cn"
httpApi = 'https://shop.lihaink.cn' // 生产
// httpApi = "https://crmeb-test.shop.lihaink.cn"
httpApiTwo = 'https://nk.lihaink.cn' // 生产
httpApiThree = 'http://ceshi-oa.lihaink.cn' //生产
}

View File

@ -38,4 +38,6 @@ module.exports = {
CACHE_LONGITUDE: 'LONGITUDE',
//缓存纬度
CACHE_LATITUDE: 'LATITUDE',
//缓存地址信息
ADRESS_LOCATION:'ADRESS_LOCATION'
}

View File

@ -23,7 +23,7 @@ Vue.prototype.$util = util;
Vue.prototype.$Cache = Cache;
Vue.prototype.$eventHub = new Vue();
Vue.config.productionTip = false
Vue.prototype.$bus = new Vue();
// #ifdef H5
import { parseQuery } from "./utils";
import Auth from './libs/wechat';

View File

@ -2,8 +2,8 @@
"name" : "惠农生活",
"appid" : "__UNI__3A527D1",
"description" : "",
"versionName" : "1.0.15",
"versionCode" : 138,
"versionName" : "1.1.0",
"versionCode" : 110,
"transformPx" : false,
/* 5+App */
"app-plus" : {
@ -26,7 +26,12 @@
"Camera" : {},
"Geolocation" : {},
"Payment" : {},
"Share" : {}
"Share" : {},
"OAuth" : {},
"UniMP" : {
"description" : "uni小程序"
},
"Maps" : {}
},
"safearea" : {
"bottom" : {
@ -80,7 +85,8 @@
"NSPhotoLibraryAddUsageDescription" : "上传用户头像保存分享海报",
"NSCameraUsageDescription" : "上传用户头像保存分享海报",
"NSLocationWhenInUseUsageDescription" : "根据客户地理位置推荐最近门店",
"NSLocationAlwaysUsageDescription" : "根据客户地理位置推荐最近门店"
"NSLocationAlwaysUsageDescription" : "根据客户地理位置推荐最近门店",
"NSLocationAlwaysAndWhenInUseUsageDescription" : "根据客户地理位置推荐最近门店"
},
"idfa" : false,
"dSYMs" : false
@ -89,13 +95,13 @@
"sdkConfigs" : {
"maps" : {
"amap" : {
"appkey_ios" : "",
"appkey_android" : ""
"appkey_ios" : "048d9f3f323eea894b49c3a7edbc8d87",
"appkey_android" : "048d9f3f323eea894b49c3a7edbc8d87"
}
},
"payment" : {
"weixin" : {
"__platform__" : [ "android" ],
"__platform__" : [ "ios", "android" ],
"appid" : "wx9d68c92b550ddd1e",
"UniversalLinks" : "https://mer.crmeb.net/"
}
@ -111,9 +117,7 @@
"__platform__" : [ "ios", "android" ]
}
},
"oauth" : {
"apple" : {}
},
"oauth" : {},
"ad" : {}
},
"icons" : {
@ -329,3 +333,6 @@
"template" : "template.h5.html"
}
}
//
/* ios */

16
package.json Normal file
View File

@ -0,0 +1,16 @@
{
"id": "e-select",
"name": "e-select下拉选择器",
"displayName": "e-select下拉选择器",
"version": "1.0.7",
"description": "select下拉选择器支持vue2、vue3支持搜索过滤支持滚动动画内置插槽可用于搭配分页组件",
"keywords": [
"下拉选择框"
],
"dcloudext": {
"category": [
"前端组件",
"通用组件"
]
}
}

View File

@ -1,5 +1,6 @@
{
"pages": [ //pageshttps://uniapp.dcloud.io/collocation/pages
"pages": [
//pageshttps://uniapp.dcloud.io/collocation/pages
{
"path": "pages/index/index",
"style": {
@ -27,7 +28,7 @@
"style": {
"navigationBarTitleText": "常用",
"navigationStyle": "custom",
"enablePullDownRefresh": true
"enablePullDownRefresh": false
}
},
{
@ -93,6 +94,13 @@
"navigationStyle": "custom"
}
}, {
"path": "pages/moreProject/moreProject",
"style": {
"navigationBarTitleText": "更多功能",
"enablePullDownRefresh": false
}
}
],
"subPackages": [{
@ -166,7 +174,7 @@
"pages": [{
"path": "gather/select_warehouse",
"style": {
"navigationBarTitleText": "",
"navigationBarTitleText": "入库管理",
"enablePullDownRefresh": true
}
}, {
@ -193,16 +201,43 @@
}, {
"path": "supply_chain/supplier",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": true,
"navigationBarBackgroundColor": "#e93323"
// "navigationStyle": "custom"
"navigationBarTitleText": "",
"navigationBarBackgroundColor": "#e93323",
"navigationStyle": "custom"
}
}, {
"path": "supply_chain/supplierA",
"style": {
"enablePullDownRefresh": true,
"navigationBarTitleText": "",
"navigationBarBackgroundColor": "#e93323",
"navigationStyle": "custom"
}
},
{
"path": "supply_chain/suppliers",
"style": {
"enablePullDownRefresh": true,
"navigationBarTitleText": "",
"navigationBarBackgroundColor": "#e93323",
"navigationStyle": "custom"
}
}, {
"path": "supply_chain/maps",
"style": {
"navigationBarTitleText": "",
"navigationBarBackgroundColor": "#e93323",
"navigationStyle": "custom"
}
}, {
"path": "supply_chain/merchant",
"style": {
"navigationBarTitleText": "",
"navigationBarTitleText": "商品",
"enablePullDownRefresh": false
}
@ -227,16 +262,54 @@
"enablePullDownRefresh": false
}
}
,{
}, {
"path": "teach_video/teach_video",
"style" :
{
"style": {
"navigationBarTitleText": "教学视频",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
}, {
"path": "specialty/index",
"style": {
"navigationBarTitleText": "名优特产",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
}, {
"path": "specialty/indexa",
"style": {
"navigationBarTitleText": "名优特产",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
}, {
"path": "food/index",
"style": {
"navigationBarTitleText": "当地美食",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
}, {
"path": "food/indexa",
"style": {
"navigationBarTitleText": "当地美食",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
}, {
"path": "tourism/index",
"style": {
"navigationBarTitleText": "特色文旅",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
}
]
},
@ -249,12 +322,24 @@
"navigationBarTitleText": "忘记密码"
}
},
{
"path": "online_warehousing/index",
"style": {
"navigationBarTitleText": "采购订单"
}
},
{
"path": "user_setting/index",
"style": {
"navigationBarTitleText": "设置"
}
},
{
"path": "supply_procurement/index",
"style": {
"navigationBarTitleText": "供货采购"
}
},
//
{
"path": "user_about/index",
@ -474,6 +559,18 @@
"navigationBarTitleText": "我的订单"
}
},
{
"path": "order_list/indexCopy",
"style": {
"navigationBarTitleText": "采购订单"
}
},
{
"path": "order_list/order",
"style": {
"navigationBarTitleText": "我的订单"
}
},
{
"path": "order_list/search",
"style": {
@ -656,14 +753,125 @@
}
}, {
"path": "embody/embody",
"style": {
"navigationBarTitleText": "提现",
"enablePullDownRefresh": false
}
}, {
"path": "payment/payment",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}, {
"path": "trading_hall/index",
"style": {
"navigationBarTitleText": "交易大厅",
"enablePullDownRefresh": false
}
}
]
},
{
"root": "pages/releaseManagement",
"name": "releaseManagement",
"pages": [{
"path": "index",
"style": {
"navigationBarTitleText": "发布管理",
"enablePullDownRefresh": false
}
},
{
"path": "details/index",
"style": {
"navigationBarTitleText": "发起委托",
"enablePullDownRefresh": false
}
}
]
},
{
"root": "pages/commissionedSales",
"name": "commissionedSales",
"pages": [{
"path": "index/index",
"style": {
"navigationBarTitleText": "委托销售",
"enablePullDownRefresh": false
}
},
{
"path": "initiateDelegation/index",
"style": {
"navigationBarTitleText": "发起委托",
"enablePullDownRefresh": false
}
},
{
"path": "addDelegation/index",
"style": {
"navigationBarTitleText": "新增委托",
"enablePullDownRefresh": false
}
},
{
"path": "receivedCommission/index",
"style": {
"navigationBarTitleText": "收到委托",
"enablePullDownRefresh": false
}
},
{
"path": "delegation_details/index",
"style": {
"navigationBarTitleText": "委托销售详情",
"enablePullDownRefresh": false
}
}
]
},
{
"root": "pages/trading_hall",
"name": "trading_hall",
"pages": [
{
"path": "transfer_goods/index",
"style": {
"navigationBarTitleText": "新增调货",
"enablePullDownRefresh": false
}
}, {
"path": "adddiscounts/index",
"style": {
"navigationBarTitleText": "新增打折",
"enablePullDownRefresh": false
}
}, {
"path": "product_details/index",
"style": {
"navigationBarTitleText": "商品详情",
"enablePullDownRefresh": false
}
}
]
},
{
"root": "pages/store",
"name": "store",
@ -822,6 +1030,12 @@
"enablePullDownRefresh": false
}
}, {
"path": "order/monitor",
"style": {
"navigationBarTitleText": "订单监控",
"enablePullDownRefresh": false
}
}
]
},
@ -949,7 +1163,7 @@
"path": "plant_release/index",
"style": {
"navigationBarTitleText": "内容发布",
"enablePullDownRefresh":true
"enablePullDownRefresh": false
}
},
{
@ -1028,12 +1242,16 @@
"path": "goods_search/index",
"style": {
"navigationBarTitleText": "搜索商品"
}
},
{
"path": "goods_search_con/index",
"style": {
"navigationBarTitleText": "搜索商品"
"navigationBarTitleText": "搜索商品",
"app-plus": {
"titleNView": false
}
}
}
]
@ -1209,10 +1427,11 @@
"path": "nvueSwiper/index",
//#endif
"style": {
"navigationBarTitleText": "社区视频",
"navigationBarTitleText": "社区视频",
"navigationStyle": "custom",
"app-plus": {
"titleNView": false,
"bounce": "none"
}
}
@ -1326,10 +1545,12 @@
"pagePath": "pages/plant_release/index",
"iconPath": "static/tabbar_icon/d.png",
"selectedIconPath": "static/tabbar_icon/d-a.png",
"text": "发布"
"text": "发布",
"visible": false
},
{
"pagePath": "pages/supply_chains/supply_chains",
"iconPath": "static/tabbar_icon/c.png",
"selectedIconPath": "static/tabbar_icon/c-a.png",
"text": "供应"
@ -1340,7 +1561,18 @@
"selectedIconPath": "static/tabbar_icon/e-a.png",
"text": "我的"
}
]
],
"midButton": {
"width": "68px",
"height": "70px",
"iconWidth": "48px",
"pagePath": "pages/plant_release/index",
"iconPath": "static/tabbar_icon/d.png",
"text": "发布"
}
},
"condition": { //
"current": 0, //(list )

File diff suppressed because it is too large Load Diff

View File

@ -280,6 +280,7 @@
// console.log(res)
this.detaile_address = res.data.address;
this.recommend_address = res.data.address.length > 4 ? res.data.address.slice(0,4) + '...' : res.data.address
uni.setStorageSync('adress_location',res.data.address)
})
},
fail: (res) => {

View File

@ -2,30 +2,36 @@
<view>
<view class="order-index" ref="container">
<view class="header acea-row">
<navigator class="item" :url="`/pages/admin/orderList/index?types=1&merId=${mer_id}`" hover-class="none">
<navigator class="item" :url="`/pages/admin/orderList/index?types=1&merId=${mer_id}`"
hover-class="none">
<view class="num">{{ census.unpaid }}</view>
<view>待付款</view>
</navigator>
<navigator class="item" :url="`/pages/admin/orderList/index?types=2&merId=${mer_id}`" hover-class="none">
<navigator class="item" :url="`/pages/admin/orderList/index?types=2&merId=${mer_id}`"
hover-class="none">
<view class="num">{{ census.unshipped }}</view>
<view>待发货</view>
</navigator>
<navigator class="item" :url="`/pages/admin/orderList/index?types=3&merId=${mer_id}`" hover-class="none">
<navigator class="item" :url="`/pages/admin/orderList/index?types=3&merId=${mer_id}`"
hover-class="none">
<view class="num">{{ census.untake }}</view>
<view>待收货</view>
</navigator>
<navigator class="item" :url="`/pages/admin/orderList/index?types=4&merId=${mer_id}`" hover-class="none">
<navigator class="item" :url="`/pages/admin/orderList/index?types=4&merId=${mer_id}`"
hover-class="none">
<view class="num">{{ census.unevaluate }}</view>
<view>待评价</view>
</navigator>
<navigator class="item" :url="`/pages/admin/orderList/index?types=6&merId=${mer_id}`" hover-class="none">
<navigator class="item" :url="`/pages/admin/orderList/index?types=6&merId=${mer_id}`"
hover-class="none">
<view class="num">{{ census.refund }}</view>
<view>退款</view>
</navigator>
</view>
<view class="wrapper">
<view class="title">
<span class="iconfont icon-shujutongji"></span>数据统计
<image src="@/static/images/sjtj.png" mode="widthFix" style="width:40rpx;translate: 0 10rpx;">
</image>数据统计
</view>
<view class="list acea-row" v-if="orderData">
<navigator class="item" :url="`/pages/admin/statistics/index?type=price&time=today&merId=${mer_id}`"
@ -33,7 +39,8 @@
<view class="num">{{ orderData.today.payPrice }}</view>
<view>今日成交额</view>
</navigator>
<navigator class="item" :url="`/pages/admin/statistics/index?type=price&time=yesterday&merId=${mer_id}`"
<navigator class="item"
:url="`/pages/admin/statistics/index?type=price&time=yesterday&merId=${mer_id}`"
hover-class="none">
<view class="num">{{ orderData.yesterday.payPrice }}</view>
<view>昨日成交额</view>
@ -48,7 +55,8 @@
<view class="num">{{ orderData.today.orderNum}}</view>
<view>今日订单数</view>
</navigator>
<navigator class="item" :url="`/pages/admin/statistics/index?type=order&time=yesterday&merId=${mer_id}`"
<navigator class="item"
:url="`/pages/admin/statistics/index?type=order&time=yesterday&merId=${mer_id}`"
hover-class="none">
<view class="num">{{ orderData.yesterday.orderNum }}</view>
<view>昨日订单数</view>
@ -62,7 +70,8 @@
</view>
<view class="public-wrapper">
<view class="title">
<span class="iconfont icon-xiangxishuju"></span>详细数据
<image src="@/static/images/xxsj.png" mode="widthFix" style="width:40rpx;translate: 0 10rpx;">
</image>详细数据
</view>
<view class="nav acea-row row-between-wrapper">
<view class="data">日期</view>
@ -77,13 +86,83 @@
</view>
</view>
</view>
<view class="public_footer" v-if="this.type_id == 12">
<view class="footer_bon">
<view class="footer_top public-wrapper ">
<image src="@/static/images/ddjk.png" mode="widthFix" style="width:40rpx;"></image>订单监控
</view>
<view v-for="(item,index) in OrderList" :key="index">
<view class="" v-for="(val, key) in item.orderProduct">
<view class="bon_top" :key="key" @click="toDetail(item)">
<view class="public_img">
<image class="public_img" :src="val.cart_info.product.image" mode=""></image>
</view>
<view>
<view class="text_top">
<view class="text">
{{ val.cart_info.product.store_name }}
</view>
<view class="monry">
{{ val.total_price }}
</view>
</view>
<view class="text_order">
订单号: {{ item.order_sn }}
</view>
</view>
</view>
<view class="bon_bon" :key="key" @click="toDetail(item)">
<view class="order">
采购数量
<view class="txt">
{{ val.product_num }}
</view>
</view>
<view class="order"
style="border-left: 1px solid #999999;border-right: 1px solid #999999;">
已售数量
<view class="txt">
{{ val.sales_volume }}
</view>
</view>
<view class="order">
库存数量
<view class="txt">
{{ val.product_num - val.sales_volume }}
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<button v-if="this.type_id == 12" class="footer-bnt" @click="navigator()">查看更多 ></button>
<!-- <view class="public-wrapper">
<navigator class="item" :url="`/pages/admin/order/monitor?merId=${mer_id}`"
hover-class="none">
<view class="num">订单监控</view>
</navigator>
</view> -->
<Loading :loaded="loaded" :loading="loading"></Loading>
</view>
</view>
</template>
<script>
import { getStatisticsInfo, getStatisticsMonth, orderStatistics, orderPrice } from "@/api/admin";
import {
getStatisticsInfo,
getStatisticsMonth,
orderStatistics,
orderPrice,
purchaseOrder
} from "@/api/admin";
import Loading from '@/components/Loading/index.vue'
export default {
name: 'adminOrder',
@ -99,22 +178,28 @@
month: {}
},
list: [],
OrderList: [], //
where: {
page: 1,
limit: 15,
limit: 10,
status: 1,
keyword: '',
product_type: ''
},
loaded: false,
loading: false,
mer_id: '',
type_id: '', //
}
},
onLoad(options) {
this.type_id = options.type_id
this.where.product_type = options.product_type ?? 0
this.mer_id = options.mer_id
options.product_type ? uni.setStorageSync("PRODUCT_TYPE", 98) : uni.removeStorageSync("PRODUCT_TYPE");
this.getOrderStatistics(this.mer_id);
this.getList(this.mer_id)
this.purchaseOrderList(this.mer_id)
},
methods: {
getIndex: function() {
@ -151,7 +236,9 @@
},
getOrderStatistics: function(mer_id) {
let that = this;
const data = { product_type: this.where.product_type }
const data = {
product_type: this.where.product_type
}
console.log('data', data);
orderStatistics(mer_id, data).then(
res => {
@ -164,6 +251,24 @@
})
}
);
},
toDetail(item) {
uni.navigateTo({
url: `/pages/admin/orderDetail/index?id=${item.order_id}&mer_id=${item.mer_id}`
})
},
navigator() {
uni.navigateTo({
url: `/pages/admin/order/monitor?merId=${this.mer_id}`
})
},
purchaseOrderList(mer_id) {
this.where.limit = 2
purchaseOrder(this.where, mer_id).then(res => {
// console.log(res);
this.OrderList = res.data
// console.log(this.OrderList);
})
}
},
onReachBottom() {
@ -172,7 +277,7 @@
}
</script>
<style lang="scss">
<style lang="scss" scoped>
.popupn {
position: fixed;
width: 100%;
@ -201,6 +306,14 @@
color: #fff;
}
.supervisory_img {
display: inline-block;
width: 500rpx;
height: 500rpx;
background-color: red;
overflow: hidden;
}
.iconfont {
display: inline-block;
position: relative;
@ -228,7 +341,7 @@
/*订单首页*/
.order-index .header {
background-image: url("https://lihai001.oss-cn-chengdu.aliyuncs.com/public/kk/beijing2.png");
background: url("@/static/images/beijin.png") no-repeat;
background-size: 100% 100%;
width: 100%;
height: 280upx;
@ -307,6 +420,14 @@
background-color: #fff;
border-radius: 10upx;
padding-top: 25upx;
.item {
.num {
display: flex;
justify-content: flex-start;
align-items: center;
}
}
}
.public-wrapper .nav {
@ -340,9 +461,118 @@
border-bottom: 1px solid #f7f7f7;
height: 70upx;
font-size: 24upx;
}
.public-wrapper .conter .item .turnover {
color: #d84242;
}
.public_footer {
width: 90vw;
margin: auto;
.footer_top {
display: flex;
align-items: center;
margin: 16px 0 16px 25rpx;
.jk_img {
width: 18px;
height: 18px;
overflow: hidden;
// border: 1px solid red;
border-radius: 40px;
image {
width: 22px;
height: 22px;
margin-right: 5px;
}
}
}
.footer_bon {
width: 100%;
border-radius: 8px;
background-color: #fff;
padding-bottom: 10px;
margin-bottom: 10px;
.bon_top {
display: flex;
justify-content: flex-start;
align-items: center;
.public_img {
width: 60px;
height: 60px;
margin: 12px;
}
.text_top {
display: flex;
justify-content: flex-start;
align-items: center;
margin: 3px 0 3px 3px;
.text {
width: 140px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.monry {
margin-left: 10px;
color: #F84221;
}
}
.text_order {
width: 200px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
margin-left: 3px;
}
}
.bon_bon {
width: 90%;
height: 66px;
background: #F5F5F5;
border-radius: 4px 4px 4px 4px;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
margin: auto;
margin-bottom: 10px;
margin-top: 5px;
.order {
width: 120px;
.txt {
margin-top: 5px;
}
}
}
}
}
.footer-bnt {
width: 100px;
height: 40px;
border-radius: 15px;
margin: auto;
line-height: 40px;
border: 1px solid #CCCCCC;
background-color: #f5f5f5;
color: #999999;
font-size: 13px
}
</style>

View File

@ -0,0 +1,663 @@
<template>
<view class="pos-order-list" ref="container">
<view class="top-header">
<view class="search">
<view class="search-content acea-row row-middle">
<text class="iconfont icon-sousuo"></text>
<input v-model="where.keyword" confirm-type="search" placeholder="请输收货人手机号或订单号搜索" class="input"
@confirm="handleSearch" />
</view>
</view>
</view>
<view class="pubilc_footer">
<view class="footer_bon" v-for="(item,index) in list" :key="index">
<view class="" v-for="(val, key) in item.orderProduct">
<view class="bon_top" :key="key" @click="toDetail(item)">
<view class="public_img">
<image class="public_img" :src="val.cart_info.product.image" mode=""></image>
</view>
<view>
<view class="text_top">
<view class="text">
{{ val.cart_info.product.store_name }}
</view>
<view class="monry">
{{ val.total_price }}
</view>
</view>
<view class="text_order">
订单号: {{ item.order_sn }}
</view>
</view>
</view>
<view class="bon_bon" :key="key" @click="toDetail(item)">
<view class="order">
采购数量
<view class="txt">
{{ val.product_num }}
</view>
</view>
<view class="order" style="border-left: 1px solid #999999;border-right: 1px solid #999999;">
已售数量
<view class="txt">
{{ val.sales_volume }}
</view>
</view>
<view class="order">
库存数量
<view class="txt">
{{ val.product_num - val.sales_volume }}
</view>
</view>
</view>
</view>
</view>
</view>
<Loading :loaded="loaded" :loading="loading"></Loading>
<view v-if="!loading && list.length <= 0" class="nothing">
<image src="/static/images/no_thing.png" mode="widthFix"></image>
<view class="nothing_text">暂无订单~</view>
</view>
</view>
</template>
<script>
import {
purchaseOrder
} from "@/api/admin";
import Loading from '@/components/Loading/index'
export default {
name: "AdminOrderList",
components: {
Loading
},
data() {
return {
current: "",
change: false,
refundMark: false,
types: 1,
where: {
page: 1,
limit: 10,
status: 1,
keyword: '',
product_type: ''
},
list: [],
loaded: false,
loading: false,
refundInfo: {},
orderInfo: {},
status: "",
merId: ''
};
},
watch: {
"$route.params.types": function(newVal) {
let that = this;
if (newVal != undefined) {
that.where.status = newVal;
that.init();
}
},
types: function() {
this.getIndex();
}
},
onLoad(option) {
this.where.product_type = uni.getStorageSync("PRODUCT_TYPE") ?? ""
this.current = "";
this.merId = option.merId;
this.getIndex();
},
methods: {
handleSearch() {
this.loaded = false;
this.where.page = 1;
this.list = [];
this.getIndex();
},
//
getIndex() {
let that = this;
if (that.loading || that.loaded) return;
that.loading = true;
purchaseOrder(that.where, that.merId).then(
res => {
that.loading = false;
that.loaded = res.data.length < that.where.limit;
that.list.push.apply(that.list, res.data);
that.where.page = that.where.page + 1;
},
err => {
that.$util.Tips({
title: err
});
}
);
},
//
init: function() {
this.list = [];
this.where.page = 1;
this.loaded = false;
this.loading = false;
this.getIndex();
this.current = "";
},
toDetail(item) {
uni.navigateTo({
url: `/pages/admin/orderDetail/index?id=${item.order_id}&mer_id=${item.mer_id}`
})
}
},
onReachBottom() {
this.getIndex()
}
}
</script>
<style lang="scss">
.pos-order-list .top-header {
position: fixed;
top: 0;
left: 0;
z-index: 9999;
width: 100%;
background-color: #fff;
}
.pos-order-list .nav {
// width: 100%;
height: 96upx;
font-size: 30upx;
color: #282828;
width: 690rpx;
margin: 0 auto;
}
.pos-order-list .nav .item {
display: inline-block;
text-align: center;
color: #333333;
max-width: 160rpx;
margin-right: 50rpx;
line-height: 96upx;
&:last-child {
margin-right: 0;
}
}
.pos-order-list .nav .item.on {
color: #2291f8;
}
.pos-order-list .list {
margin-top: 100upx;
}
.pos-order-list .list .item {
background-color: #fff;
width: 100%;
position: relative;
}
.pos-order-list .list .item .item-status {
position: absolute;
top: 14rpx;
right: 20rpx;
.iconfont {
font-size: 98rpx;
color: #CCCCCC;
&.on {
color: #FFE3BC;
}
}
}
.pos-order-list .list .item~.item {
margin-top: 24upx;
}
.pos-order-list .list .activity_type {
display: inline-block;
color: #E93323;
font-size: 20rpx;
text-align: center;
border-radius: 5rpx;
padding: 0 4rpx;
line-height: 28rpx;
margin-right: 8rpx;
border: 1rpx solid #E93323;
}
.pos-order-list .list .item .order-num {
height: 124upx;
border-bottom: 1px solid #eee;
font-size: 30upx;
font-weight: bold;
color: #282828;
padding: 0 30upx;
position: relative;
}
.pos-order-list .list .item .order-status {
color: #ff9600;
position: absolute;
top: 24rpx;
right: 20rpx;
text-align: right;
width: 160rpx;
font-weight: normal;
font-size: 26rpx;
}
.pos-order-list .list .item .order-num .time {
font-size: 26upx;
font-weight: normal;
color: #999;
margin-top: -40upx;
}
.pos-order-list .list .item .operation {
padding: 20upx 30upx 20upx 0;
margin: 30upx 0 0 30upx;
border-top: 1rpx solid #EEEEEE;
}
.pos-order-list .list .item .operation .more {
position: relative;
}
.pos-order-list .list .item .operation .icon-gengduo {
font-size: 50upx;
color: #aaa;
}
.pos-order-list .list .item .operation .order .arrow {
width: 0;
height: 0;
border-left: 11upx solid transparent;
border-right: 11upx solid transparent;
border-top: 20upx solid #e5e5e5;
position: absolute;
left: 15upx;
bottom: -18upx;
}
.pos-order-list .list .item .operation .order .arrow:before {
content: '';
width: 0;
height: 0;
border-left: 7upx solid transparent;
border-right: 7upx solid transparent;
border-top: 20upx solid #fff;
position: absolute;
left: -7upx;
bottom: 0;
}
.pos-order-list .list .item .operation .order {
width: 200upx;
background-color: #fff;
border: 1px solid #eee;
border-radius: 10upx;
position: absolute;
top: -100upx;
z-index: 9;
}
.pos-order-list .list .item .operation .order .items {
height: 77upx;
line-height: 77upx;
text-align: center;
}
.pos-order-list .list .item .operation .order .items~.items {
border-top: 1px solid #f5f5f5;
}
.pos-order-list .list .item .operation .bnt {
font-size: 28upx;
color: #5c5c5c;
width: 170upx;
height: 60upx;
border-radius: 30upx;
border: 1px solid #bbb;
text-align: center;
line-height: 60upx;
}
.pos-order-list .list .item .operation .bnt_color {
border: none;
color: #fff;
background: linear-gradient(90deg, #2291F8 0%, #1CD1DC 100%);
}
.pos-order-list .list .item .operation .bnt~.bnt {
margin-left: 14upx;
}
.pos-order-goods {
padding: 0 30upx;
background-color: #fff;
}
.pos-order-goods .goods {
padding-top: 20rpx;
overflow: hidden;
}
.pos-order-goods .goods~.goods {
border-top: 1px dashed #e5e5e5;
}
.pos-order-goods .cancellate {
font-size: 24rpx;
float: right;
margin-top: 10rpx;
text {
margin-left: 26rpx;
}
}
.pos-order-goods .cancelled {
color: #FF9600;
}
.pos-order-goods .goods .uncancell {
color: #999999;
}
.pos-order-goods .goods .picTxt {
width: 515upx;
}
.pos-order-goods .goods .picTxt .pictrue {
width: 130upx;
height: 130upx;
}
.pos-order-goods .goods .picTxt .pictrue image {
width: 100%;
height: 100%;
border-radius: 6upx;
}
.pos-order-goods .goods .picTxt .text {
flex-direction: column;
width: 365upx;
}
.pos-order-goods .goods .picTxt .text .info {
font-size: 28upx;
color: #282828;
&.refund-info {
width: 460upx;
}
}
.refund-y-money {
margin-top: 16rpx;
font-size: 26rpx;
}
.pos-order-goods .goods .picTxt .text .attr {
margin-top: 5rpx;
font-size: 24upx;
color: #999;
}
.pos-order-goods .goods .money {
width: 164upx;
text-align: right;
font-size: 28upx;
&.refund-money {
width: auto;
position: relative;
top: -50rpx;
.num {
color: #999999;
}
}
.refund-num {
font-size: 24rpx;
color: #282828;
}
}
.pos-order-goods .goods .money .x-money {
color: #282828;
}
.pos-order-goods .goods .money .num {
color: #ff9600;
margin: 5upx 0;
}
.pos-order-goods .goods .money .y-money {
color: #999;
text-decoration: line-through;
}
.pos-order-goods .goods .refund_num {
display: inline-block;
margin-left: 10rpx;
}
.public-total {
font-size: 28upx;
color: #282828;
height: 92upx;
line-height: 92upx;
text-align: right;
padding: 0 30upx;
background-color: #fff;
}
.public-total .money {
color: #ff4c3c;
}
.nothing {
margin-top: 200rpx;
text-align: center;
}
.nothing_text {
margin-top: 20rpx;
color: #999999;
}
.priceChange {
position: fixed;
width: 580upx;
background-color: #fff;
border-radius: 10upx;
top: 50%;
left: 50%;
margin-left: -290upx;
margin-top: -335upx;
z-index: 666;
transition: all 0.3s ease-in-out 0s;
transform: scale(0);
opacity: 0;
}
.priceChange.on {
opacity: 1;
transform: scale(1);
}
.priceChange .priceTitle {
background: url("~@/static/images/pricetitle.jpg") no-repeat;
background-size: 100% 100%;
width: 100%;
height: 160upx;
border-radius: 10upx 10upx 0 0;
text-align: center;
font-size: 40upx;
color: #fff;
line-height: 160upx;
position: relative;
}
.priceChange .priceTitle .iconfont {
position: absolute;
font-size: 40upx;
right: 26upx;
top: 23upx;
width: 40upx;
height: 40upx;
line-height: 40upx;
}
.priceChange .listChange {
padding: 0 40upx;
}
.priceChange .listChange textarea {
box-sizing: border-box;
}
.priceChange .listChange .item {
height: 103upx;
border-bottom: 1px solid #e3e3e3;
font-size: 32upx;
color: #333;
}
.priceChange .modify {
font-size: 32upx;
color: #fff;
width: 490upx;
height: 90upx;
text-align: center;
line-height: 90upx;
border-radius: 45upx;
background-color: #2291f8;
margin: 53upx auto;
}
.priceChange .listChange textarea {
border: 1px solid #eee;
width: 100%;
height: 200upx;
margin-top: 50upx;
border-radius: 10upx;
color: #333;
padding: 20upx;
}
.search {
padding: 17rpx 30rpx;
.search-content {
width: 100%;
height: 60rpx;
padding: 0 30rpx;
border-radius: 30rpx;
background-color: #F5F5F5;
font-size: 26rpx;
}
.iconfont {
margin-right: 10rpx;
font-size: 26rpx;
color: #999999;
}
.input-placeholder {
font-size: 26rpx;
color: #999999;
}
.input {
flex: 1;
}
}
.pubilc_footer {
margin-top: 50px;
.footer_bon {
width: 100%;
border-radius: 8px;
background-color: #fff;
padding-bottom: 10px;
margin-bottom: 10px;
.bon_top {
display: flex;
justify-content: flex-start;
align-items: center;
.public_img {
width: 60px;
height: 60px;
margin: 12px;
}
.text_top {
display: flex;
justify-content: flex-start;
align-items: center;
margin: 3px 0 3px 3px;
.text {
width: 180px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.monry {
margin-left: 20px;
color: #F84221;
}
}
.text_order {
width: 200px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
margin-left: 3px;
}
}
.bon_bon {
width: 90%;
height: 66px;
background: #F5F5F5;
border-radius: 4px 4px 4px 4px;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
margin: auto;
margin-bottom: 10px;
margin-top: 5px;
.order {
width: 120px;
.txt {
margin-top: 5px;
}
}
}
}
}
</style>

View File

@ -86,7 +86,7 @@
</view>
<view class="item acea-row row-between">
<view>支付方式</view>
<view class="conter">{{ orderInfo.pay_type == 0 ? "余额支付" : (orderInfo.pay_type == 1 || orderInfo.pay_type == 2 || orderInfo.pay_type == 3) ? "微信支付" : "支付宝支付" }}</view>
<view class="conter">{{ orderInfo.pay_type == 0 ? "余额支付" : (orderInfo.pay_type == 1 || orderInfo.pay_type == 2 || orderInfo.pay_type == 3) ? "微信支付" : "先货后款" }}</view>
</view>
<view class="item acea-row row-between">
<view>买家留言</view>
@ -148,6 +148,12 @@
<view style="height:120upx;"></view>
<view class="footer acea-row row-right row-middle" v-if="goname != 'looks'">
<view class="more"></view>
<view class="bnt cancel" v-if="orderInfo.pay_type == 8 && orderInfo.status == 12" @click="tongyi(order_id,1)">
同意
</view>
<view class="bnt cancel" v-if="orderInfo.pay_type == 8 && orderInfo.status == 12" @click="tongyi(order_id,2)">
拒绝
</view>
<view class="bnt cancel" @click="modify('0')" v-if="orderInfo.paid == 0">
一键改价
</view>
@ -158,11 +164,24 @@
<view class="bnt cancel" v-if="orderInfo.pay_type === 'offline' && orderInfo.paid === 0" @click="offlinePay">
确认付款
</view>
<navigator class="bnt delivery" v-if="orderInfo.paid == 1 && orderInfo.status == 0 && orderInfo.order_type == 0" :url="'/pages/admin/delivery/index?id='+orderInfo.order_id+'&merId='+mer_id">去发货</navigator>
<view class="bnt delivery" @click="toPostagequ(orderInfo)" v-if="orderInfo.status == 0&&orderInfo.activity_type==0&& orderInfo.order_type !=1 ">
收件码
</view>
<navigator class="bnt delivery" v-if="orderInfo.paid == 1 && orderInfo.status == 0 && orderInfo.order_type == 0&&orderInfo.activity_type==98" :url="'/pages/admin/delivery/index?id='+orderInfo.order_id+'&merId='+mer_id">去发货</navigator>
<view class="bnt delivery" v-if="orderInfo.paid == 1 && (orderInfo.status == 0 || orderInfo.status == 9) && orderInfo.order_type == 1" @click="goCancellation">去核销</view>
</view>
<PriceChange :change="change" :orderInfo="orderInfo" v-on:closechange="changeclose($event)" v-on:savePrice="savePrice"
:status="status"></PriceChange>
<u-popup :show="popUpShow" mode="center" :closeOnClickOverlay="true" round="12" @close="popUpClose">
<view style="text-align: center;margin-top: 30rpx;">
请把二维码展示给取货人员
</view>
<view style="padding: 28.07rpx;">
<image :src="payCodeUrl" style="width:400rpx;height: 400rpx;"></image>
</view>
</u-popup>
</view>
</template>
<script>
@ -185,7 +204,9 @@
setAdminOrderRemark,
setOfflinePay,
setOrderRefund,
orderCancellation
orderCancellation,
logisticsCode,
postconfirm
} from "@/api/admin";
import { isMoney } from '@/utils/validate.js'
import { HTTP_REQUEST_URL } from '@/config/app';
@ -211,7 +232,10 @@
payType: "",
types: "",
clickNum: 1,
goname:''
goname:'',
popUpShow: false,
payCodeUrl:''
};
},
watch: {
@ -225,12 +249,12 @@
},
onLoad: function(option) {
let self = this
this.order_id = option.id
this.mer_id = option.mer_id
this.goname = option.goname
this.getIndex();
self.order_id = option.id
self.mer_id = option.mer_id
self.goname = option.goname
self.getIndex();
// #ifdef H5
this.$nextTick(function() {
self.$nextTick(function() {
var clipboard = new ClipboardJS('.copy-data');
// var copybtn = document.getElementsByClassName("copy-data");
// var clipboard = new Clipboard(copybtn);
@ -249,6 +273,42 @@
},
methods: {
//
toPostagequ(item){
this.popUpShow = true
logisticsCode(item.order_id).then(res => {
if (res.status == 200) {
this.payCodeUrl = res.data.qrcode
}
})
},
//
popUpClose() {
this.popUpShow = false
},
//
tongyi(id,number){
let data={
id:id,
type:number
}
if(number == 1){
this.$nextTick(()=>{
uni.navigateTo({
url:`/pages/admin/orderList/index?types=1&merId=${this.mer_id}`
})
})
}else if(number == 2){
uni.navigateTo({
url:`/pages/admin/orderList/index?types=1&merId=${this.mer_id}`
})
}
postconfirm(this.mer_id,data).then(res=>{
})
},
more: function() {
this.order = !this.order;
},

View File

@ -45,7 +45,8 @@
退款单号{{ item.refund_order_sn }}
<text class="time">申请时间{{ item.create_time }}</text>
</view>
<view class="pos-order-goods" v-for="(val, key) in item.refundProduct" :key="key" @click="toRefundDetail(item)">
<view class="pos-order-goods" v-for="(val, key) in item.refundProduct" :key="key"
@click="toRefundDetail(item)">
<view class="goods acea-row row-between-wrapper">
<view class="picTxt acea-row row-between-wrapper">
<view class="pictrue">
@ -80,9 +81,11 @@
<view class="acea-row row-middle">
<view class="bnt" @click="refundModify(item, 1)">订单备注</view>
<navigator class="bnt bnt_color" v-if="item.status == 0"
:url="'/pages/admin/orderRefund/index?id='+item.refund_order_id+'&merId='+merId">立即退款</navigator>
:url="'/pages/admin/orderRefund/index?id='+item.refund_order_id+'&merId='+merId">立即退款
</navigator>
<navigator class="bnt" v-if="item.status == 2"
:url="'/pages/users/goods_logistics/index?refundId='+item.refund_order_id+'&merId='+merId">查看物流
:url="'/pages/users/goods_logistics/index?refundId='+item.refund_order_id+'&merId='+merId">
查看物流
</navigator>
<view class="bnt bnt_color" v-if="item.status == 2" @tap='confirmOrder(item)'>确认收货</view>
</view>
@ -100,7 +103,8 @@
<text class="order-status"
v-if="item.refunding != 0 && where.status != 1">{{item.refunding==1 ? '退款中' : item.refunding==2 ? '部分退款' : '全部退款'}}</text>
</view>
<view class="pos-order-goods" v-for="(val, key) in item.orderProduct" :key="key" @click="toDetail(item)">
<view class="pos-order-goods" v-for="(val, key) in item.orderProduct" :key="key"
@click="toDetail(item)">
<view class="goods">
<view class="acea-row row-between-wrapper">
<view class="picTxt acea-row row-between-wrapper">
@ -130,24 +134,49 @@
</view>
</view>
<view class="public-total">
<view class="public-total" v-if="item.pay_type !== 8">
{{ item.total_num }}件商品
<span v-if="where.status <= 1"></span>
<span v-else></span>
支付
<span class="money">{{ item.pay_price }}</span> (邮费 ¥{{ item.pay_postage}})
<span class="money" style="margin-right: 30rpx;">{{ item.pay_price }}</span> (邮费
¥{{ item.pay_postage}})
</view>
<view class="public-total" v-else>
先货后款
<span v-if="where.status <= 1"></span>
<span v-else></span>
支付
<span class="money" style="margin-right: 30rpx;">0.00</span> (邮费 ¥{{ item.pay_postage}})
</view>
<view class="public-total" v-if="item.pay_type == 8 ">
{{item.total_num}}件商品结算周期到期后付款{{ item.pay_price }}
</view>
<view class="operation acea-row row-between-wrapper">
<view class="more">
</view>
<view class="acea-row row-middle">
<view class="bnt" @click="modify(item, 0)" v-if="where.status == 1 && item.activity_type != 2">
<view class="bnt" v-if="item.pay_type == 8 && item.status == 12"
@click="tongyi(item.group_order_id,1)">
同意
</view>
<view class="bnt" v-if="item.pay_type == 8 && item.status == 12 "
@click="tongyi(item.group_order_id,2)">
拒绝
</view>
<view class="bnt" @click="modify(item, 0)"
v-if="item.pay_type !=8 && item.paid !=1 &&!(item.status ==2 && item.pau_type==8) ">
一键改价
</view>
<view class="bnt" @click="modify(item, 1)">订单备注</view>
<view class="bnt bnt_color" v-if="where.status == 2 && item.order_type == 0" @click="toPostage(item)">去发货
<view class="bnt bnt_color" v-if="where.status == 2 && item.order_type == 0&&item.activity_type==98"
@click="toPostage(item)">去发货
</view>
<view class="bnt bnt_color" v-if="(where.status == 2 && item.order_type == 1) || where.is_verify == 1"
<view class="bnt bnt_color" v-if="where.status == 2 && item.order_type == 0&& item.order_type !=1 &&item.activity_type==0"
@click="toPostagequ(item)">收件码
</view>
<view class="bnt bnt_color"
v-if="(where.status == 2 && item.order_type == 1) || where.is_verify == 1"
@click="toDetail(item)">去核销</view>
</view>
</view>
@ -175,6 +204,16 @@
</view>
<view class="mask" @touchmove.prevent v-show="refundMark === true"></view>
</view>
<u-popup :show="popUpShow" mode="center" :closeOnClickOverlay="true" round="12" @close="popUpClose">
<view style="text-align: center;margin-top: 30rpx;">
请把二维码展示给取货人员
</view>
<view style="padding: 28.07rpx;">
<image :src="payCodeUrl" style="width:400rpx;height: 400rpx;"></image>
</view>
</u-popup>
</view>
</template>
@ -196,11 +235,16 @@
setOfflinePay,
setOrderRefund,
refundOrderReceive,
setRefundMark
setRefundMark,
postconfirm,
logisticsCode
} from "@/api/admin";
import Loading from '@/components/Loading/index'
import PriceChange from '@/components/PriceChange/index'
import { isMoney } from '@/utils/validate.js'
import {
isMoney
} from '@/utils/validate.js'
export default {
name: "AdminOrderList",
components: {
@ -226,7 +270,10 @@
refundInfo: {},
orderInfo: {},
status: "",
merId: ''
codeShow: false,
merId: '',
popUpShow: false,
payCodeUrl: ''
};
},
watch: {
@ -249,9 +296,35 @@
this.getIndex();
},
methods: {
//
popUpClose() {
this.popUpShow = false
},
//
tongyi(id, number) {
let data = {
id: id,
type: number
}
if (number == 1) {
this.$nextTick(() => {
this.where.status = 2;
delete this.where.is_verify;
this.init();
})
} else if (number == 2) {
uni.navigateTo({
url: `/pages/admin/orderList/index?types=1&merId=${this.merId}`
})
}
postconfirm(this.merId, data).then(res => {
// console.log(res);
})
},
handleSearch() {
this.loaded = false;
this.where.page = 1;
this.where.page = 3;
this.list = [];
this.getIndex();
},
@ -265,11 +338,14 @@
res => {
that.loading = false;
that.loaded = res.data.list.length < that.where.limit;
that.list.push.apply(that.list, res.data.list);
that.where.page = that.where.page + 1;
},
err => {
that.$util.Tips({ title: err });
that.$util.Tips({
title: err
});
}
);
} else {
@ -279,9 +355,14 @@
that.loaded = res.data.list.length < that.where.limit;
that.list.push.apply(that.list, res.data.list);
that.where.page = that.where.page + 1;
console.log(that.list)
// console.log(that.list);
},
err => {
that.$util.Tips({ title: err });
that.$util.Tips({
title: err
});
}
);
}
@ -328,7 +409,9 @@
title: '请输入备注'
})
}
setRefundMark(that.merId, that.refundInfo.refund_order_id, { mer_mark: that.refundInfo.mer_mark }).then(
setRefundMark(that.merId, that.refundInfo.refund_order_id, {
mer_mark: that.refundInfo.mer_mark
}).then(
res => {
that.refundMark = false;
this.$util.Tips({
@ -371,6 +454,16 @@
}
})
},
//
toPostagequ(item) {
this.popUpShow = true
logisticsCode(item.order_id).then(res => {
if (res.status == 200) {
this.payCodeUrl = res.data.qrcode
}
})
},
toPostage(item) {
let that = this;
if (item.refunding != 0) {
@ -382,6 +475,7 @@
uni.navigateTo({
url: `/pages/admin/delivery/index?id=${item.order_id}&merId=${that.merId}`
})
}
}
})
@ -406,7 +500,9 @@
let id = that.orderInfo.order_id;
if (that.status == 0) {
if (!isMoney(opt.orderInfo.pay_postage || opt.orderInfo.total_price)) {
return that.$util.Tips({ title: '请输入正确的金额' });
return that.$util.Tips({
title: '请输入正确的金额'
});
}
data.pay_price = price;
setAdminOrderPrice(this.merId, id, parmas).then(
@ -432,7 +528,9 @@
title: '请输入备注'
})
}
setAdminOrderRemark(this.merId, id, { remark: remark }).then(
setAdminOrderRemark(this.merId, id, {
remark: remark
}).then(
res => {
that.change = false;
this.$util.Tips({
@ -443,7 +541,9 @@
},
err => {
that.change = false;
that.$util.Tips({ title: err });
that.$util.Tips({
title: err
});
}
);
}
@ -631,7 +731,7 @@
.pos-order-list .list .item .operation .bnt {
font-size: 28upx;
color: #5c5c5c;
width: 170upx;
width: 160upx;
height: 60upx;
border-radius: 30upx;
border: 1px solid #bbb;

View File

@ -2,19 +2,17 @@
<view :style="viewColor">
<view class='productList'>
<view class='search acea-row row-between-wrapper'>
<!--#ifdef H5-->
<view class="back" @click='set_where(1)'>
<view class="iconfont icon-xiangzuo"></view>
</view>
<!--#endif-->
<view class='input acea-row row-between-wrapper'><text class='iconfont icon-sousuo'></text>
<input placeholder='搜索商品名称' placeholder-class='placeholder' confirm-type='search' name="search"
:value='where.keyword' @confirm="searchSubmit" @input="inputChange"></input>
</view>
<view style="text-align: right;" v-if="tabIndex==1" class='iconfont'
:class='is_switch==true?"icon-pailie":"icon-tupianpailie"' @click='Changswitch'></view>
<view v-else-if="mer_location == 1" style="text-align: right;" class='iconfont icon-dingwei'
@click="showMaoLocation(latitude,longitude)"></view>
<!-- <view v-else-if="mer_location == 1" style="text-align: right;" class='iconfont icon-dingwei'
@click="showMaoLocation(latitude,longitude)"></view> -->
</view>
<view class="nav-wrapper">
<view v-if="hide_mer_status == 0" class="tab-bar">
@ -413,7 +411,7 @@
}
}
});
this.mTop = this.hide_mer_status == 0 ? '238rpx' : '170rpx'
this.mTop = this.hide_mer_status == 0 ? '308rpx' : '170rpx'
},
computed: {
shopTab: function() {
@ -561,9 +559,10 @@
limit: this.sotreParam.limit,
order: this.sotreParam.order,
category_id: this.sotreParam.category_id,
type_id: 10
type_id: this.sotreParam.type_id
}
console.log(this.sotreParam.category_id)
if (this.latitude) {
serachData.location = this.latitude + ',' + this.longitude
}
@ -578,7 +577,7 @@
this.storeList = this.storeList.concat(res.data.list)
this.count = res.data.count
this.loading = false
console.log(this.storeList);
})
},
//
@ -684,6 +683,7 @@
},
//
confirm2(data) {
let arr1 = [],
arr2 = []
if (data.storeTypeArr.length == 0) {
@ -897,12 +897,13 @@
.productList .search {
width: 100%;
height: 86rpx;
height: 170rpx;
padding: 0 20rpx;
box-sizing: border-box;
// box-sizing: border-box;
position: fixed;
left: 0;
top: 0;
top: 0rpx;
padding-top: 60rpx;
z-index: 9;
background-color: var(--view-theme);
@ -966,7 +967,7 @@
z-index: 9;
position: fixed;
left: 0;
top: 0;
top: 70rpx;
width: 100%;
margin-top: 86rpx;
background-color: var(--view-theme);
@ -1040,6 +1041,7 @@
.productList .list {
padding: 0 20rpx;
}
.productList .list.on {
@ -1075,6 +1077,7 @@
position: relative;
width: 100%;
height: 345rpx;
}
.productList .list .item .pictrue.on {
@ -1417,7 +1420,8 @@
}
.store-wrapper {
margin-top: 240rpx;
margin-top: 310rpx;
border-top: 1px solid #F6F6F6;
.star-box {

View File

@ -0,0 +1,423 @@
<template>
<!-- #ifdef APP || H5 -->
<view>
<!-- #endif -->
<form @submit="formSubmit" report-submit='true'>
<view class="release_content">
<view class="release_item">
<view class="release_item-one">
<view class="item-one">
被委托商家
</view>
<e-select v-model="value1" :options="options1" placeholder="选择选项"></e-select>
</view>
<view class="release_item-one">
<view class="item-one">
委托周期
</view>
<view class="" @click="calendar">
<input type="number" v-model="date" />
</view>
<!-- <e-select v-model="value1" :options="options1" placeholder="选择选项"></e-select> -->
</view>
<view class='item acea-row row-between-wrapper'>
<view class='name'><text class="iconfont icon-baobeilianjie"></text>添加产品({{productList.length}})
</view>
<view class="select">
<view class="select_count" @click.stop="addProduct">
<text v-if="productList.length == 0" class="text">选择产品</text>
<view v-else class="text">
<image class="image" v-for="(item,index) in productList" :key="index"
:src="item.image || (item.spu && item.spu.image)"></image>
</view>
<text class="iconfont icon-xiangyou"></text>
</view>
</view>
</view>
<view class="content_center-one" v-for="(item,i) in productList" :key="i">
<view class="center-one">
<view class="center-one-img">
<image :src="item.image" mode=""></image>
</view>
<view class="center-one-txt">
<view class="one-txta">
{{item.store_name}}
</view>
<view class="one-txtb">
<view class="">
委托价:¥<span>{{item.price}}</span>
</view>
<view class="">
数量:{{item.number}}
</view>
</view>
</view>
</view>
</view>
</view>
<button class="release_btn button" form-type="submit">发布</button>
</view>
</form>
<uni-calendar ref="calendar" :date="info.date" :insert="info.insert" :lunar="info.lunar"
:startDate="info.startDate" :endDate="info.endDate" :range="info.range" @confirm="confirm"
:showMonth="info.showMonth" @close="close" />
<!-- 提到的宝贝弹窗 -->
<uni-popup ref="associated" type="bottom">
<associated @close="close" @getProduct="getProduct" :checkedObj="productList"></associated>
</uni-popup>
</view>
</template>
<script>
import associated from '@/components/realselist/realselist.vue';
import eselect from '@/components/e-select/e-select.vue';
// import {} from '@/api/sale.js'
export default {
components: {
associated,
eselect
},
data() {
return {
value1: 1,
value2: "",
options1: [{
text: "Shenzhen1",
value: 1
}, {
text: "Shenzhen2",
value: 2
}, {
text: "Shenzhen3",
value: 3
}],
date: 1,
productList: [],
info: {
startDate: '',
endDate: '',
lunar: false,
range: true,
insert: false,
selected: [],
showMonth: false
},
};
},
computed: {
},
onLoad(options) {
},
methods: {
//
confirm(e) {
let self = this
if (e.range.after && e.range.before) {
let star = new Date(e.range.after).getTime()
let stop = new Date(e.range.before).getTime()
let arr = stop - star
this.date = Math.floor(arr / (24 * 3600 * 1000));
// console.log(days)
if (this.date < 0) {
this.date = this.date * -1
}
}
},
calendar() {
this.$refs.calendar.open()
},
//
close() {
this.$refs.associated.close()
},
//
addProduct() {
this.$refs.associated.open()
},
//
getProduct(data) {
console.log(data)
this.$refs.associated.close()
},
//
formSubmit(e) {
console.log(e)
}
}
}
</script>
<style lang="scss" scoped>
page {
background: #F5F5F5;
}
.release_content {
padding: 0 28rpx;
margin-top: 28rpx;
.content_center-one {
display: flex;
.center-one {
margin-top: 32rpx;
margin-bottom: 32rpx;
display: flex;
.center-one-img {
width: 154rpx;
height: 154rpx;
margin-right: 21rpx;
image {
width: 154rpx;
height: 154rpx;
}
}
.center-one-txt {
.one-txta {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
}
.one-txtb {
display: flex;
margin-top: 28rpx;
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 400;
color: #999999;
span {
color: #F84221;
margin-right: 30rpx;
}
}
}
}
}
.release_item {
background: #ffffff;
padding: 0 30rpx;
border-radius: 10rpx;
padding-top: 20rpx;
.release_item-one {
.item-one {
margin-top: 32rpx;
margin-bottom: 20rpx;
font-size: 32rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
}
}
}
.photo_count {
padding: 30rpx 0;
}
}
/deep/.loading-img {
width: 180rpx;
height: 180rpx;
border-radius: 12rpx;
}
.input_photo .pictrue {
margin-bottom: 20rpx;
.videoHover {
width: 180rpx;
height: 180rpx;
display: flex;
align-items: center;
justify-content: center;
position: absolute;
top: 0;
left: 0;
z-index: 10;
>view {
width: 50rpx;
height: 50rpx;
background: #000000;
border-radius: 50rpx;
display: flex;
align-items: center;
justify-content: center;
.iconfont {
color: #ffffff;
font-size: 21rpx;
}
}
}
.video-text {
display: block;
width: 180rpx;
text-align: center;
color: #ffffff;
font-size: 18rpx;
z-index: 13;
position: absolute;
bottom: 20rpx;
}
video {
width: 180rpx;
height: 180rpx;
border-radius: 12rpx;
}
}
.input_photo .add {
background: #f6f6f6;
color: #666666;
.iconfont {
font-size: 50rpx;
}
.text {
margin-top: 20rpx;
font-size: 27rpx;
}
}
.textarea textarea {
font-size: 28rpx;
padding-bottom: 38rpx;
width: 100%;
box-sizing: border-box;
height: 400rpx;
overflow: hidden;
}
.textarea .placeholder {
color: #BBBBBB;
}
.release_item .item {
height: 106rpx;
border-bottom: 1rpx solid #eee;
position: relative;
font-size: 30rpx;
&:last-child {
border-bottom: none;
}
.name {
color: #333333;
.iconfont {
margin-right: 10rpx;
font-size: 28rpx;
}
}
.select {
color: #bbbbbb;
.select_count {
display: flex;
align-items: center;
}
.text {
margin-right: 15rpx;
display: flex;
align-items: center;
.image,
image,
uni-image {
width: 60rpx;
height: 60rpx;
margin-right: 5rpx;
}
}
.iconfont {
font-size: 24rpx;
}
.text_name {
color: var(--view-theme);
padding: 5rpx 12rpx;
background: var(--view-minorColor);
border-radius: 23rpx;
font-size: 24rpx;
margin-right: 10rpx;
.icon {
color: var(--view-theme);
font-weight: bold;
font-size: 24rpx;
}
.title {
margin: 0 10rpx;
}
.iconfont {
font-size: 16rpx;
}
}
}
}
.button {
width: 694rpx;
height: 84rpx;
line-height: 84rpx;
text-align: center;
background: linear-gradient(84deg, #F98649 0%, #F34E45 100%);
border-radius: 42px 42px 42px 42px;
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 500;
color: #FFFFFF;
}
.release_btn {
margin-top: 100rpx;
}
</style>

View File

@ -0,0 +1,282 @@
<template>
<view class="content">
<view class="content_top">
</view>
<view class="content_center">
<view class="content_center-one">
<view class="center-one">
<view class="center-one-img">
<image src="../../annex/static/left.png" mode=""></image>
</view>
<view class="center-one-txt">
<view class="one-txta">
良品铺子肉松饼1000g/ ...
</view>
<view class="one-txtb">
<view class="">
委托价:¥<span>34.90</span>
</view>
<view class="">
数量:100
</view>
</view>
</view>
</view>
</view>
<view class="content_center-one">
<view class="center-one">
<view class="center-one-img">
<image src="../../annex/static/left.png" mode=""></image>
</view>
<view class="center-one-txt">
<view class="one-txta">
良品铺子肉松饼1000g/ ...
</view>
<view class="one-txtb">
<view class="">
委托价:¥<span>34.90</span>
</view>
<view class="">
数量:100
</view>
</view>
</view>
</view>
</view>
<view class="content_center-two">
<view class="center-two">
<view class="center-twoa">
委托方:
</view>
<view class="center-twob">
通滩镇镇街店铺
</view>
</view>
<view class="center-two">
<view class="center-twoa">
被委托方:
</view>
<view class="center-twob">
通滩镇镇街店铺
</view>
</view>
<view class="center-two">
<view class="center-twoa">
委托周期:
</view>
<view class="center-twob">
通滩镇镇街店铺
</view>
</view>
<view class="center-two">
<view class="center-twoa">
结算周期:
</view>
<view class="center-twob">
通滩镇镇街店铺
</view>
</view>
<view class="center-two">
<view class="center-twoa">
状态:
</view>
<view class="center-twob">
通滩镇镇街店铺
</view>
</view>
<view class="center-two">
<view class="center-twoa">
是否结束委托:
</view>
<view class="center-twob">
通滩镇镇街店铺
</view>
</view>
<view class="center-two">
<view class="center-twoa">
拒绝原因:
</view>
<view class="center-twob">
通滩镇镇街店铺
</view>
</view>
</view>
</view>
<view class="content_bootm">
<view class="content_bootm_txt">
查看TA提到的宝贝(2)
</view>
<view class="content_bootm_one">
<view class="bootm_oneimg">
<image src="@/static/images/bg2.png" mode=""></image>
</view>
<view class="">
良品铺子肉松饼1000g/ 面包糕...
</view>
</view>
<view class="content_bootm_one">
<view class="bootm_oneimg">
<image src="@/static/images/bg2.png" mode=""></image>
</view>
<view class="">
良品铺子肉松饼1000g/ 面包糕...
</view>
</view>
</view>
<button class="release_btn button" form-type="submit">发布</button>
</view>
</template>
<script>
</script>
<style lang="scss">
.content{
position: relative;
}
.content_top {
height: 151rpx;
background: linear-gradient(84deg, #2352FA 0%, #6497FF 100%);
}
.content_center {
background: #FFFFFF;
border-radius: 14px 14px 14px 14px;
margin: 28rpx 28rpx;
.content_center-one {
display: flex;
padding: 0 28rpx;
.center-one {
margin-top: 32rpx;
margin-bottom: 32rpx;
display: flex;
.center-one-img {
width: 154rpx;
height: 154rpx;
margin-right: 21rpx;
image {
width: 154rpx;
height: 154rpx;
}
}
.center-one-txt {
.one-txta {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
}
.one-txtb {
display: flex;
margin-top: 28rpx;
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 400;
color: #999999;
span {
color: #F84221;
margin-right: 30rpx;
}
}
}
}
}
.content_center-two {
padding: 0 28rpx;
padding-bottom: 2rpx;
.center-two {
display: flex;
justify-content: space-between;
margin-top: 32rpx;
margin-bottom: 32rpx;
.center-twoa {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 400;
color: #333333;
}
.center-twob {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 400;
color: #999999;
}
}
}
}
.content_bootm {
margin-bottom: 150rpx;
.content_bootm_txt {
margin-top: 42rpx;
padding-left: 28rpx;
}
.content_bootm_one {
height: 112rpx;
line-height: 112rpx;
background: #FFFFFF;
display: flex;
margin-top: 21rpx;
.bootm_oneimg {
width: 80rpx;
height: 80rpx;
margin: auto 0;
margin-left: 28rpx;
margin-right: 21rpx;
image {
width: 80rpx;
height: 80rpx;
}
}
}
}
.button {
width: 694rpx;
height: 84rpx;
line-height: 84rpx;
text-align: center;
background: linear-gradient(84deg, #F98649 0%, #F34E45 100%);
border-radius: 42px 42px 42px 42px;
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 500;
color: #FFFFFF;
position: absolute;
left: 50%;
margin-left:-347rpx;
position: fixed;
bottom: 100rpx;
}
</style>

View File

@ -0,0 +1,164 @@
<template>
<view class="select_warehouse">
<view class="wrapper flex_a_c_j_sb">
<block v-for="item in goodsData" :key="item.name">
<view class="select_item" @click="navigato(item.type)"
:style="{'background-image': `url(${item.src})`}">
<view class="select_itemimga" v-if='item.type==1'>
<image :src="item.img" mode=""></image>
</view>
<view class="select_itemimgb" v-else>
<image :src="item.img" mode=""></image>
</view>
<view class="title">
<view class="titlea">
{{ item.name }}
</view>
<view class="titleb">
{{ item.name1 }}
</view>
</view>
</view>
</block>
</view>
</view>
</template>
<script>
export default {
data() {
return {
goodsData: [{
name: '我发起的',
name1: '委托销售商品',
type: 1,
src: require('@/static/images/wtbg1.png'),
img: require('@/static/images/wtt1.png')
},
{
name: '我收到的',
name1: '帮助销售商品',
type: 2,
src: require('@/static/images/wtbg2.png'),
img: require('@/static/images/wtt2.png')
}
],
}
},
onLoad() {
},
onShow() {
},
methods: {
navigato(type) {
if (type === 1) {
uni.navigateTo({
url: `/pages/commissionedSales/initiateDelegation/index`
});
} else {
uni.navigateTo({
url: `/pages/commissionedSales/receivedCommission/index`
});
}
},
},
}
</script>
<style lang="scss">
.select_warehouse {
padding-top: 20px;
}
.wrapper {
width: 694.74rpx;
margin: 0 auto;
}
.goods-wrapper {
.item {
display: flex;
height: 175.44rpx;
width: 100%;
background-color: #fff;
margin-top: 21.05rpx;
border-radius: 8px;
padding: 12px;
.l_cont {
image {
width: 133.33rpx;
height: 133.33rpx;
border-radius: 8px;
}
}
.r_cont {
margin-left: 17.54rpx;
}
}
}
.select_item {
width: 336rpx;
height: 161rpx;
border-radius: 8px;
background-color: #eee;
display: flex;
color: #fff;
background-size: 100% 100%;
background-repeat: no-repeat;
.select_itemimga {
width: 59rpx;
height: 63rpx;
margin-top: 49rpx;
margin-left: 42rpx;
image {
width: 100%;
height: 100%;
}
}
.select_itemimgb {
width: 75rpx;
height: 65rpx;
margin-top: 49rpx;
margin-left: 42rpx;
image {
width: 100%;
height: 100%;
}
}
.title {
margin-left: 23rpx;
margin-top: 37rpx;
.titlea {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 500;
color: #FFFFFF;
}
.titleb {
margin-top: 5rpx;
font-size: 25rpx;
font-family: PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.8);
}
}
}
</style>

View File

@ -0,0 +1,824 @@
<template>
<view class="content">
<view class="content_top">
<!--选项卡滑动切换-->
<cxNavTitle :tabs="tabs" :activeItem="activeItem" @tabClick="tabClick" :show='false'></cxNavTitle>
</view>
<!-- 审核通过 打折的拒绝同意功能 调货不需要功能 -->
<view class="content-content" v-for="(item,i) in list" :key="i" >
<view class="content-one">
<view class="content-one-img">
<image src="@/static/images/bg2.png" mode="aspectFit"></image>
</view>
<view class="content-one-txt">
<view class="one-txt-a">
{{item.content}}
</view>
<view class="one-txt-b">
委托周期:{{item.day}}
</view>
</view>
</view>
<view class="content-two_one" v-if="item.type==1">
<view class="content-two-edita" @click="soldEdit">
待处理
</view>
<view class="contentgn">
<view class="contentgn_a">
处理
</view>
<span></span>
<view class="contentgn_b">
详情
</view>
</view>
</view>
<view class="content-two_oneq" v-if="item.type==2">
<view class="content-two-editb" @click="accepted">
已接受
</view>
<view class="contentgn">
<view class="contentgn_a" @click="closingorder">
结束委托
</view>
<span></span>
<view class="contentgn_b">
详情
</view>
</view>
</view>
<view class="content-two_one" v-if="item.type==3">
<view class="content-two-editc" @click="declined">
已拒绝
</view>
<view class="contentgn">
<view class="contentgn_a">
删除
</view>
<span></span>
<view class="contentgn_b">
详情
</view>
</view>
</view>
<view class="content-two_one" v-if="item.type==4">
<view class="content-two-editd" @click="soldEdit">
已完成
</view>
<view class="contentgn">
<view class="contentgn_a">
删除
</view>
<span></span>
<view class="contentgn_b">
详情
</view>
</view>
</view>
</view>
<view v-if="orderList.length == 0 && this.where.page > 1">
<emptyPage title="暂无订单~"></emptyPage>
</view>
<uni-popup ref="bindmobile" type="center" @click="close">
<view class="" style="position: relative;">
<view class="entrust">
<view class="entrust_close" @click="close">
<image src="@/static/images/wt_close.png" mode=""></image>
</view>
<view class="entrust_bg">
<view class="entrust_bg-content">
<view class="bg-content-a">
委托申请处理
</view>
<view class="bg-content-b">
结算周期: <span>30</span>
</view>
<view class="bg-content-c">
利息比例: <span>0.05%</span>
</view>
<view class="entrust_bga_btn">
<view class="cancellation">
拒绝
</view>
<view class="determine">
接受
</view>
</view>
</view>
</view>
</view>
</view>
</uni-popup>
<uni-popup ref="bindmobile1" type="center" @click="close">
<view class="" style="position: relative;">
<view class="entrust">
<view class="entrust_close" @click="close">
<image src="@/static/images/wt_close.png" mode=""></image>
</view>
<view class="entrust_bga">
<view class="entrust_bg-content">
<view class="bg-content-a">
确定结束委托?
</view>
<view class="entrust_bga_btn">
<view class="cancellation">
取消
</view>
<view class="determine">
确定
</view>
</view>
</view>
</view>
</view>
</view>
</uni-popup>
<uni-popup ref="bindmobile2" type="center" @click="close">
<view class="" style="position: relative;">
<view class="entrust">
<view class="entrust_close" @click="close">
<image src="@/static/images/wt_close.png" mode=""></image>
</view>
<view class="entrust_bg">
<view class="entrust_bg-content">
<view class="bg-content-a" style="margin-left: 207rpx;">
结束委托申请处理
</view>
<view class="bg-content-b">
结算周期: <span>30</span>
</view>
<view class="bg-content-c">
利息比例: <span>0.05%</span>
</view>
<view class="entrust_bga_btn">
<view class="cancellation">
拒绝
</view>
<view class="determine">
接受
</view>
</view>
</view>
</view>
</view>
</view>
</uni-popup>
<uni-popup ref="bindmobile3" type="center" @click="close">
<view class="" style="position: relative;">
<view class="entrust">
<view class="entrust_close" @click="close">
<image src="@/static/images/wt_close.png" mode=""></image>
</view>
<view class="entrust_bgb">
<view class="entrust_bg-content">
<view class="bg-content-a" style="margin-left: 207rpx;">
结束委托申请处理
</view>
<view class="bg-content-b">
结算周期: <span>30</span>
</view>
<view class="bg-content-c">
利息比例: <span>0.05%</span>
</view>
<view class="bg-content-c">
拒绝原因
<view class="" style="margin-top: 21rpx;">
<textarea value="" placeholder="输入拒绝原因" class="bg-content_textarea" />
</view>
</view>
<view class="entrust_bga_btn">
<view class="determine">
接受
</view>
</view>
</view>
</view>
</view>
</view>
</uni-popup>
</view>
</template>
<script>
import cxNavTitle from '@/components/cx-navTitle.vue'
import emptyPage from '@/components/emptyPage.vue';
export default {
components: {
cxNavTitle,
emptyPage
},
data() {
return {
activeItem: "tabOne",
tabTitle: "",
orderList: [],
where: {
page: 1,
limit: 10
},
tabs: [{
name: "tabOne",
label: '待处理',
type: '1'
},
{
name: "tabTwo",
label: '已接受',
type: '2'
},
{
name: "tabThree",
label: '已拒绝',
type: '3'
},
],
list: [{
content: '张三生产资料供销供应链',
day: 10,
type: 1
},
{
content: '张三生产资料供销供应链',
day: 10,
type: 2
},
{
content: '张三生产资料供销供应链',
day: 10,
type: 3
},
{
content: '张三生产资料供销供应链',
day: 10,
type: 4
}
]
}
},
onLoad() {
this.tabTitle = this.tabs[0].name
// -- :
console.log(this.tabs[0])
},
mounted() {
},
methods: {
nav(item) {
// uni.navigateTo({
// url: '/pages/commissionedSales/delegation_details/index'
// })
},
tabClick(e) { //
this.activeItem = e.name; //class
this.tabTitle = e.name; //
},
//
close() {
console.log('1111111')
this.$refs.bindmobile.close()
this.$refs.bindmobile1.close()
this.$refs.bindmobile2.close()
this.$refs.bindmobile3.close()
},
//
soldEdit() {
this.$refs.bindmobile.open()
},
//
accepted() {
this.$refs.bindmobile1.open()
},
//
closingorder() {
this.$refs.bindmobile3.open()
},
//
declined() {
this.$refs.bindmobile2.open()
},
//
auditEdit() {
},
//
passDelete() {
},
//
passagree() {
}
}
}
</script>
<style lang="scss" scoped>
.content_top {
background-color: #FFFFFF;
}
.content_top {
width: 100%;
}
.content-content {
margin-top: 21rpx;
background: #FFFFFF;
padding: 0 28rpx;
padding-top: 28rpx;
background: #FFFFFF;
position: relative;
display: flex;
justify-content: space-between;
.content-one {
display: flex;
padding-bottom: 23rpx;
.content-one-img {
width: 148rpx;
height: 148rpx;
margin-right: 28rpx;
border: 1px solid;
image {
width: 100%;
height: 100%;
}
}
.content-one-txt {
.txt-b-a {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
}
.one-txt-b {
display: flex;
margin-top: 30rpx;
.txt-b-a {
font-size: 32rpx;
font-family: SF Pro Display-Medium, SF Pro Display;
font-weight: 500;
color: #F84221;
margin-right: 74rpx;
}
.txt-b-b {
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #333333
}
}
}
}
.content-two_oneq {
position: absolute;
right: 20rpx;
text-align: right;
.content-two-edita {
font-size: 32rpx;
font-weight: 500;
color: #F84221;
}
.content-two-editb {
font-size: 32rpx;
font-weight: 500;
color: #FE9A10;
}
.content-two-editc {
font-size: 32rpx;
font-weight: 500;
color: #20A162;
}
.content-two-editd {
font-size: 32rpx;
font-weight: 500;
color: #999999;
}
.contentgn {
display: flex;
justify-content: space-between;
margin-top: 47rpx;
.contentgn_a {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 400;
color: #F84221;
margin-right: 10rpx;
}
span {
width: 0px;
height: 30rpx;
opacity: 1;
margin-top: 10rpx;
border: 2rpx solid #CCCCCC;
}
.contentgn_b {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 400;
color: #999999;
margin-left: 10rpx;
}
}
}
.content-two_one {
text-align: right;
.content-two-edita {
font-size: 32rpx;
font-weight: 500;
color: #F84221;
}
.content-two-editb {
font-size: 32rpx;
font-weight: 500;
color: #FE9A10;
}
.content-two-editc {
font-size: 32rpx;
font-weight: 500;
color: #20A162;
}
.content-two-editd {
font-size: 32rpx;
font-weight: 500;
color: #999999;
}
.contentgn {
display: flex;
justify-content: space-between;
margin-top: 47rpx;
.contentgn_a {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 400;
color: #F84221;
margin-right: 10rpx;
}
span {
width: 0px;
height: 30rpx;
opacity: 1;
margin-top: 10rpx;
border: 2rpx solid #CCCCCC;
}
.contentgn_b {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 400;
color: #999999;
margin-left: 10rpx;
}
}
}
}
.entrust {
.entrust_close {
width: 44rpx;
height: 44rpx;
image {
width: 100%;
height: 100%;
}
z-index: 99999;
position: absolute;
right: 0;
}
.entrust_bg {
width: 694rpx;
height: 676rpx;
background: url('@/static/images/wtbg3.png') no-repeat;
background-size: 100% 100%;
position: relative;
.entrust_bg-content {
position: absolute;
top: 284rpx;
.bg-content-a {
margin-left: 242rpx;
font-size: 35rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
}
.bg-content-b {
margin-left: 35rpx;
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
margin-top: 32rpx;
span {
font-size: 32rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #F84221;
margin-left: 18rpx;
}
}
.bg-content-c {
margin-left: 35rpx;
font-size: 35rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
margin-top: 32rpx;
span {
font-size: 32rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #F84221;
margin-left: 18rpx;
}
}
}
.entrust_bga_btn {
display: flex;
margin-top: 53rpx;
.cancellation {
height: 95rpx;
line-height: 95rpx;
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 400;
color: #999999;
margin-left: 121rpx;
margin-right: 49rpx;
}
.determine {
width: 249rpx;
height: 95rpx;
line-height: 95rpx;
text-align: center;
font-size: 32rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #FFFFFF;
background: linear-gradient(180deg, #F98649 0%, #F34E45 100%);
border-radius: 47rpx 47rpx 47rpx 47rpx;
}
}
}
.entrust_bga {
width: 694rpx;
height: 520rpx;
background: url('@/static/images/wtbg4.png') no-repeat;
background-size: 100% 100%;
position: relative;
.entrust_bg-content {
position: absolute;
top: 284rpx;
.bg-content-a {
margin-left: 242rpx;
font-size: 35rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
}
.entrust_bga_btn {
display: flex;
margin-top: 53rpx;
.cancellation {
height: 95rpx;
line-height: 95rpx;
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 400;
color: #999999;
margin-left: 121rpx;
margin-right: 49rpx;
}
.determine {
width: 249rpx;
height: 95rpx;
line-height: 95rpx;
text-align: center;
font-size: 32rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #FFFFFF;
background: linear-gradient(180deg, #F98649 0%, #F34E45 100%);
border-radius: 47rpx 47rpx 47rpx 47rpx;
}
}
}
}
.entrust_bgb {
width: 694rpx;
height: 994rpx;
background: url('@/static/images/wtbg5.png') no-repeat;
background-size: 100% 100%;
position: relative;
.entrust_bg-content {
position: absolute;
top: 404rpx;
.bg-content-a {
margin-left: 242rpx;
font-size: 35rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
}
.bg-content-b {
margin-left: 35rpx;
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
margin-top: 32rpx;
span {
font-size: 32rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #F84221;
margin-left: 18rpx;
}
}
.bg-content-c {
margin-left: 35rpx;
font-size: 35rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
margin-top: 22rpx;
span {
font-size: 32rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #F84221;
margin-left: 18rpx;
}
}
.bg-content_textarea {
width: 624rpx;
height: 152rpx;
padding: 25rpx 18rpx;
background: #F5F5F5;
}
}
.entrust_bga_btn {
display: flex;
margin-top: 33rpx;
.determine {
margin-left: 188rpx;
width: 249rpx;
height: 95rpx;
line-height: 95rpx;
text-align: center;
font-size: 32rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #FFFFFF;
background: linear-gradient(180deg, #F98649 0%, #F34E45 100%);
border-radius: 47rpx 47rpx 47rpx 47rpx;
}
}
}
}
</style>

View File

@ -0,0 +1,816 @@
<template>
<view class="content">
<view class="content_top">
<!--选项卡滑动切换-->
<cxNavTitle :tabs="tabs" :activeItem="activeItem" @tabClick="tabClick" :show='false'></cxNavTitle>
</view>
<view class="content-content" v-for="(item,i) in list" :key="i" @click="nav(item)">
<view class="content-one">
<view class="content-one-img">
<image src="@/static/images/bg2.png" mode="aspectFit"></image>
</view>
<view class="content-one-txt">
<view class="one-txt-a">
{{item.content}}
</view>
<view class="one-txt-b">
委托周期:{{item.day}}
</view>
</view>
</view>
<view class="content-two_one" v-if="item.type==1">
<view class="content-two-edita" @click="soldEdit">
待处理
</view>
<view class="contentgn">
<view class="contentgn_a">
处理
</view>
<span></span>
<view class="contentgn_b">
详情
</view>
</view>
</view>
<view class="content-two_oneq" v-if="item.type==2">
<view class="content-two-editb" @click="accepted">
已接受
</view>
<view class="contentgn">
<view class="contentgn_a" @click="closingorder">
结束委托
</view>
<span></span>
<view class="contentgn_b">
详情
</view>
</view>
</view>
<view class="content-two_one" v-if="item.type==3">
<view class="content-two-editc" @click="declined">
已拒绝
</view>
<view class="contentgn">
<view class="contentgn_a">
删除
</view>
<span></span>
<view class="contentgn_b">
详情
</view>
</view>
</view>
<view class="content-two_one" v-if="item.type==4">
<view class="content-two-editd" @click="soldEdit">
已完成
</view>
<view class="contentgn">
<view class="contentgn_a">
删除
</view>
<span></span>
<view class="contentgn_b">
详情
</view>
</view>
</view>
</view>
<view v-if="orderList.length == 0 && this.where.page > 1">
<emptyPage title="暂无订单~"></emptyPage>
</view>
<uni-popup ref="bindmobile" type="center" @click="close">
<view class="" style="position: relative;">
<view class="entrust">
<view class="entrust_close" @click="close">
<image src="@/static/images/wt_close.png" mode=""></image>
</view>
<view class="entrust_bg">
<view class="entrust_bg-content">
<view class="bg-content-a">
委托申请处理
</view>
<view class="bg-content-b">
结算周期: <span>30</span>
</view>
<view class="bg-content-c">
利息比例: <span>0.05%</span>
</view>
<view class="entrust_bga_btn">
<view class="cancellation">
拒绝
</view>
<view class="determine">
接受
</view>
</view>
</view>
</view>
</view>
</view>
</uni-popup>
<uni-popup ref="bindmobile1" type="center" @click="close">
<view class="" style="position: relative;">
<view class="entrust">
<view class="entrust_close" @click="close">
<image src="@/static/images/wt_close.png" mode=""></image>
</view>
<view class="entrust_bga">
<view class="entrust_bg-content">
<view class="bg-content-a">
确定结束委托?
</view>
<view class="entrust_bga_btn">
<view class="cancellation">
取消
</view>
<view class="determine">
确定
</view>
</view>
</view>
</view>
</view>
</view>
</uni-popup>
<uni-popup ref="bindmobile2" type="center" @click="close">
<view class="" style="position: relative;">
<view class="entrust">
<view class="entrust_close" @click="close">
<image src="@/static/images/wt_close.png" mode=""></image>
</view>
<view class="entrust_bg">
<view class="entrust_bg-content">
<view class="bg-content-a" style="margin-left: 207rpx;">
结束委托申请处理
</view>
<view class="bg-content-b">
结算周期: <span>30</span>
</view>
<view class="bg-content-c">
利息比例: <span>0.05%</span>
</view>
<view class="entrust_bga_btn">
<view class="cancellation">
拒绝
</view>
<view class="determine">
接受
</view>
</view>
</view>
</view>
</view>
</view>
</uni-popup>
<uni-popup ref="bindmobile3" type="center" @click="close">
<view class="" style="position: relative;">
<view class="entrust">
<view class="entrust_close" @click="close">
<image src="@/static/images/wt_close.png" mode=""></image>
</view>
<view class="entrust_bgb">
<view class="entrust_bg-content">
<view class="bg-content-a" style="margin-left: 207rpx;">
结束委托申请处理
</view>
<view class="bg-content-b">
结算周期: <span>30</span>
</view>
<view class="bg-content-c">
利息比例: <span>0.05%</span>
</view>
<view class="bg-content-c">
拒绝原因
<view class="" style="margin-top: 21rpx;">
<textarea value="" placeholder="输入拒绝原因" class="bg-content_textarea" />
</view>
</view>
<view class="entrust_bga_btn">
<view class="determine">
接受
</view>
</view>
</view>
</view>
</view>
</view>
</uni-popup>
</view>
</template>
<script>
import cxNavTitle from '@/components/cx-navTitle.vue'
import emptyPage from '@/components/emptyPage.vue';
import {} from '@/api/sale.js'
export default {
components: {
cxNavTitle,
emptyPage
},
data() {
return {
activeItem: "tabOne",
tabTitle: "",
orderList: [],
where: {
page: 1,
limit: 10
},
tabs: [{
name: "tabOne",
label: '待处理',
type: '1'
},
{
name: "tabTwo",
label: '已接受',
type: '2'
},
{
name: "tabThree",
label: '已拒绝',
type: '3'
},
],
list: [{
content: '张三生产资料供销供应链',
day: 10,
type: 1
},
{
content: '张三生产资料供销供应链',
day: 10,
type: 2
},
{
content: '张三生产资料供销供应链',
day: 10,
type: 3
},
{
content: '张三生产资料供销供应链',
day: 10,
type: 4
}
]
}
},
onLoad() {
this.tabTitle = this.tabs[0].name
// -- :
console.log(this.tabs[0])
},
mounted() {
},
methods: {
nav(item) {
uni.navigateTo({
url: '/pages/commissionedSales/delegation_details/index'
})
},
tabClick(e) { //
this.activeItem = e.name; //class
this.tabTitle = e.name; //
},
//
close() {
console.log('1111111')
this.$refs.bindmobile.close()
this.$refs.bindmobile1.close()
this.$refs.bindmobile2.close()
this.$refs.bindmobile3.close()
},
//
soldEdit() {
this.$refs.bindmobile.open()
},
//
accepted() {
this.$refs.bindmobile1.open()
},
//
closingorder() {
this.$refs.bindmobile3.open()
},
//
declined() {
this.$refs.bindmobile2.open()
},
//
auditEdit() {
},
//
passDelete() {
},
//
passagree() {
}
}
}
</script>
<style lang="scss" scoped>
.content_top {
background-color: #FFFFFF;
}
.content_top {
width: 100%;
}
.content-content {
margin-top: 21rpx;
background: #FFFFFF;
padding: 0 28rpx;
padding-top: 28rpx;
background: #FFFFFF;
position: relative;
display: flex;
justify-content: space-between;
.content-one {
display: flex;
padding-bottom: 23rpx;
.content-one-img {
width: 148rpx;
height: 148rpx;
margin-right: 28rpx;
border: 1px solid;
image {
width: 100%;
height: 100%;
}
}
.content-one-txt {
.txt-b-a {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
}
.one-txt-b {
display: flex;
margin-top: 30rpx;
.txt-b-a {
font-size: 32rpx;
font-family: SF Pro Display-Medium, SF Pro Display;
font-weight: 500;
color: #F84221;
margin-right: 74rpx;
}
.txt-b-b {
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #333333
}
}
}
}
.content-two_oneq {
position: absolute;
right: 20rpx;
text-align: right;
.content-two-edita {
font-size: 32rpx;
font-weight: 500;
color: #F84221;
}
.content-two-editb {
font-size: 32rpx;
font-weight: 500;
color: #FE9A10;
}
.content-two-editc {
font-size: 32rpx;
font-weight: 500;
color: #20A162;
}
.content-two-editd {
font-size: 32rpx;
font-weight: 500;
color: #999999;
}
.contentgn {
display: flex;
justify-content: space-between;
margin-top: 47rpx;
.contentgn_a {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 400;
color: #F84221;
margin-right: 10rpx;
}
span {
width: 0px;
height: 30rpx;
opacity: 1;
margin-top: 10rpx;
border: 2rpx solid #CCCCCC;
}
.contentgn_b {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 400;
color: #999999;
margin-left: 10rpx;
}
}
}
.content-two_one {
text-align: right;
.content-two-edita {
font-size: 32rpx;
font-weight: 500;
color: #F84221;
}
.content-two-editb {
font-size: 32rpx;
font-weight: 500;
color: #FE9A10;
}
.content-two-editc {
font-size: 32rpx;
font-weight: 500;
color: #20A162;
}
.content-two-editd {
font-size: 32rpx;
font-weight: 500;
color: #999999;
}
.contentgn {
display: flex;
justify-content: space-between;
margin-top: 47rpx;
.contentgn_a {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 400;
color: #F84221;
margin-right: 10rpx;
}
span {
width: 0px;
height: 30rpx;
opacity: 1;
margin-top: 10rpx;
border: 2rpx solid #CCCCCC;
}
.contentgn_b {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 400;
color: #999999;
margin-left: 10rpx;
}
}
}
}
.entrust {
.entrust_close {
width: 44rpx;
height: 44rpx;
image {
width: 100%;
height: 100%;
}
z-index: 99999;
position: absolute;
right: 0;
}
.entrust_bg {
width: 694rpx;
height: 676rpx;
background: url('@/static/images/wtbg3.png') no-repeat;
background-size: 100% 100%;
position: relative;
.entrust_bg-content {
position: absolute;
top: 284rpx;
.bg-content-a {
margin-left: 242rpx;
font-size: 35rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
}
.bg-content-b {
margin-left: 35rpx;
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
margin-top: 32rpx;
span {
font-size: 32rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #F84221;
margin-left: 18rpx;
}
}
.bg-content-c {
margin-left: 35rpx;
font-size: 35rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
margin-top: 32rpx;
span {
font-size: 32rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #F84221;
margin-left: 18rpx;
}
}
}
.entrust_bga_btn {
display: flex;
margin-top: 53rpx;
.cancellation {
height: 95rpx;
line-height: 95rpx;
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 400;
color: #999999;
margin-left: 121rpx;
margin-right: 49rpx;
}
.determine {
width: 249rpx;
height: 95rpx;
line-height: 95rpx;
text-align: center;
font-size: 32rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #FFFFFF;
background: linear-gradient(180deg, #F98649 0%, #F34E45 100%);
border-radius: 47rpx 47rpx 47rpx 47rpx;
}
}
}
.entrust_bga {
width: 694rpx;
height: 520rpx;
background: url('@/static/images/wtbg4.png') no-repeat;
background-size: 100% 100%;
position: relative;
.entrust_bg-content {
position: absolute;
top: 284rpx;
.bg-content-a {
margin-left: 242rpx;
font-size: 35rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
}
.entrust_bga_btn {
display: flex;
margin-top: 53rpx;
.cancellation {
height: 95rpx;
line-height: 95rpx;
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 400;
color: #999999;
margin-left: 121rpx;
margin-right: 49rpx;
}
.determine {
width: 249rpx;
height: 95rpx;
line-height: 95rpx;
text-align: center;
font-size: 32rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #FFFFFF;
background: linear-gradient(180deg, #F98649 0%, #F34E45 100%);
border-radius: 47rpx 47rpx 47rpx 47rpx;
}
}
}
}
.entrust_bgb {
width: 694rpx;
height: 994rpx;
background: url('@/static/images/wtbg5.png') no-repeat;
background-size: 100% 100%;
position: relative;
.entrust_bg-content {
position: absolute;
top: 404rpx;
.bg-content-a {
margin-left: 242rpx;
font-size: 35rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
}
.bg-content-b {
margin-left: 35rpx;
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
margin-top: 32rpx;
span {
font-size: 32rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #F84221;
margin-left: 18rpx;
}
}
.bg-content-c {
margin-left: 35rpx;
font-size: 35rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
margin-top: 22rpx;
span {
font-size: 32rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #F84221;
margin-left: 18rpx;
}
}
.bg-content_textarea {
width: 624rpx;
height: 152rpx;
padding: 25rpx 18rpx;
background: #F5F5F5;
}
}
.entrust_bga_btn {
display: flex;
margin-top: 33rpx;
.determine {
margin-left: 188rpx;
width: 249rpx;
height: 95rpx;
line-height: 95rpx;
text-align: center;
font-size: 32rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #FFFFFF;
background: linear-gradient(180deg, #F98649 0%, #F34E45 100%);
border-radius: 47rpx 47rpx 47rpx 47rpx;
}
}
}
}
</style>

View File

@ -1,203 +1,75 @@
<template>
<view class="gather">
<zbpSwiper></zbpSwiper>
<u-empty :show="jurisdiction" marginTop="260" mode="permission" :text="emptyText"
<view @click="selectLocation" v-if="isFshow">
<view class="site-box flex_a_c_j_sb" :style="{'background-color':backColor}">
<view :class="['place_wrapper','flex_a_c',isFshow?'sitebox':'']" @click="selectLocation">
<view :class="['iconfont','icon-weizhi',isFshow?'sitebox':'']"
style="color:#000;margin-left: 20rpx;">
</view>
<view class="town_name" style="color:#000;">{{street}}</view>
</view>
<navigator url="/pages/chat/customer_list/index?type=0" hover-class="none">
<view :class="['iconfont','icon-xiaoxi',isFshow?'sitebox':'']" style="color:#000;"></view>
</navigator>
</view>
<!-- <view class="site-box ','flex_a_c_j_sb'" v-if="ishshow">
<view class="bg-img">
<img :src="bgColor" alt="">
</view>
</view> -->
</view>
<zbpSwiper :isSelectPlace="true" :location_Arr="locationArr" :town="street" @kkchange="kkchange"></zbpSwiper>
<u-empty :show="jurisdiction" mode="permission" :text="emptyText"
icon="http://cdn.uviewui.com/uview/empty/permission.png"></u-empty>
<block v-if="isShow">
<view class="special_work com" v-if="userInfoData.mer_info.type_id === 12">
<view class="special_work com" v-if="true">
<view class="title">市级供应链</view>
<view class="business com special_work" v-if="jurisdiction == false">
<view class="title project">
<view>更多功能</view>
<view v-if="!editFlag" class="edit" @click="editFlag = true">编辑</view>
<view v-else class="edit" @click="editComfirm">完成</view>
</view>
<view class="content">
<view class="examine" @click="navigator(`/pages/nongKe/supply_chain/goods_list?merid=${mer_id}`)">
<image class="icon_img" :src="`${prefix}zsgl.png`" mode="aspectFill"></image>
<text class="text">在售管理</text>
</view>
<view class="examine"
@click="navigator(`/pages/admin/order/index?mer_id=${mer_id}&product_type=98`)">
<image class="icon_img" :src="`${prefix}cwgl.png`" mode="aspectFill"></image>
<text class="text">财务管理</text>
</view>
<view class="examine"
@click="navigator(`/pages/nongKe/gather/select_warehouse?mer_id=${mer_id}&stype=1`)">
<image class="icon_img" :src="`${prefix}rkgl.png`" mode="aspectFill">
<block v-if="nowMenuList.length > 0">
<u-transition v-for="(item, index) in nowMenuList" :key="item.name" show>
<view class="examine" @click="
editFlag ? removeMenu(item) : clickMenu(item.type, item.data)
">
<image class="icon_img" :src="item.icon" mode="aspectFit">
</image>
<text class="text">入库管理</text>
</view>
<view class="examine"
@click="navigator(`/pages/product/basicSet?mer_id=${mer_id}&product_type=98`, '商户设置')">
<image class="icon_img" :src="`${prefix}shsz.png`" mode="aspectFill"></image>
<text class="text">商户设置</text>
</view>
<view class="examine" @click="navigator(`/pages/product/list/index?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}spgl.png`" mode="aspectFill">
</image>
<text class="text">商品管理</text>
</view>
<view class="examine" @click="navigator(`/pages/users/embody/embody?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}txgl.png`" mode="aspectFill">
</image>
<text class="text">提现管理</text>
</view>
<view class="examine" @click="navigator(`/pages/nongKe/teach_video/teach_video`)">
<image class="icon_img" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/kk/spjs.png"
mode="aspectFill">
</image>
<text class="text">视频教学</text>
</view>
<!-- <view class="examine" @click="navigator(`/pages/users/user_invoice_Finance/index?mer_id=${mer_id}`)">
<image class="icon_img" src="@/static/images/cwgk.png" mode="aspectFill">
</image>
<text class="text">财务公开</text>
</view> -->
<!-- <view class="examine" @click="navigator(`/pages/admin/order/index?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}ddgl.png`" mode="aspectFill">
</image>
<text class="text">订单管理</text>
</view> -->
</view>
</view>
</view>
<view class="business com" v-if="userInfoData.mer_info.type_id === 10">
<view class="business com" v-if="true">
<view class="special_work com">
<view class="title">我的店铺</view>
<view class="content ">
<view class="examine"
@click="navigator(`/pages/nongKe/supply_chain/supplier?type_id=12&isDetail=1&product_type=98&cate_id=${userInfoData.mer_info.category_id}`)">
<image class="icon_img" :src="`${prefix}ghcg.png`" mode="aspectFill"></image>
<text class="text">供货采购</text>
</view>
<view class="examine" @click="navigator('/pages/users/order_list/index?status=-1')">
<image class="icon_img" :src="`${prefix}jhgl.png`" mode="aspectFill"></image>
<text class="text">进货管理</text>
</view>
<view class="examine" @click="navigator(`/pages/admin/stockOut/index?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}smck.png`" mode="aspectFill">
</image>
<text class="text">扫码出库</text>
</view>
<view class="examine"
@click="navigator(`/pages/nongKe/gather/select_warehouse?mer_id=${mer_id}&stype=2`)">
<image class="icon_img" :src="`${prefix}rkgl.png`" mode="aspectFill">
</image>
<text class="text">入库管理</text>
</view>
<view class="examine" @click="navigator(`/pages/users/embody/embody?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}txgl.png`" mode="aspectFill">
</image>
<text class="text">提现管理</text>
</view>
<view class="examine"
@click="navigator(`/pages/chat/customer_list/index?type=1&mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}kfjl.png`" mode="aspectFill">
</image>
<text class="text">客服记录</text>
</view>
<view class="examine"
@click="navigator(`/pages/admin/order_cancellation/index?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}ddhx.png`" mode="aspectFill">
</image>
<text class="text">订单核销</text>
</view>
<view class="examine" @click="navigator(`/pages/admin/order/index?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}ddgl.png`" mode="aspectFill">
</image>
<text class="text">订单管理</text>
</view>
<view class="examine" @click="navigator(`/pages/product/list/index?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}spgl.png`" mode="aspectFill">
</image>
<text class="text">商品管理</text>
</view>
<view class="examine" @click="navigator(`/pages/product/basicSet?mer_id=${mer_id}`, '商户设置')">
<image class="icon_img" :src="`${prefix}shsz.png`" mode="aspectFill">
</image>
<text class="text">商户设置</text>
</view>
<!-- <view class="examine" @click="navigator(`/pages/users/user_invoice_Finance/index?mer_id=${mer_id}`)">
<image class="icon_img" src="@/static/images/cwgk.png" mode="aspectFill">
</image>
<text class="text">财务公开</text>
</view> -->
</view>
</view>
<!-- <gatherBusiness :userInfoData="userInfoData" /> -->
</view>
</view>
<view class="business com" v-if="userInfoData.mer_info.type_id === 11">
<view class="business com" v-if="true">
<view class="special_work com">
<view class="title">里海云仓</view>
<view class="content ">
<view class="examine"
@click="navigator(`/pages/nongKe/supply_chain/supplier?type_id=12&isDetail=1&product_type=98&cate_id=${userInfoData.mer_info.category_id}`)">
<image class="icon_img" :src="`${prefix}ghcg.png`" mode="aspectFill"></image>
<text class="text">供货采购</text>
</view>
<view class="examine" @click="navigator('/pages/users/order_list/index?status=-1')">
<image class="icon_img" :src="`${prefix}jhgl.png`" mode="aspectFill"></image>
<text class="text">进货管理</text>
</view>
<view class="examine" @click="navigator(`/pages/admin/stockOut/index?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}smck.png`" mode="aspectFill">
</image>
<text class="text">扫码出库</text>
</view>
<view class="examine"
@click="navigator(`/pages/nongKe/gather/select_warehouse?mer_id=${mer_id}&stype=2`)">
<image class="icon_img" :src="`${prefix}rkgl.png`" mode="aspectFill">
</image>
<text class="text">入库管理</text>
</view>
<view class="examine" @click="navigator(`/pages/users/embody/embody?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}txgl.png`" mode="aspectFill">
</image>
<text class="text">提现管理</text>
</view>
<view class="examine"
@click="navigator(`/pages/chat/customer_list/index?type=1&mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}kfjl.png`" mode="aspectFill">
</image>
<text class="text">客服记录</text>
</view>
<view class="examine"
@click="navigator(`/pages/admin/order_cancellation/index?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}ddhx.png`" mode="aspectFill">
</image>
<text class="text">订单核销</text>
</view>
<view class="examine" @click="navigator(`/pages/admin/order/index?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}ddgl.png`" mode="aspectFill">
</image>
<text class="text">订单管理</text>
</view>
<view class="examine" @click="navigator(`/pages/product/list/index?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}spgl.png`" mode="aspectFill">
</image>
<text class="text">商品管理</text>
</view>
<view class="examine" @click="navigator(`/pages/product/basicSet?mer_id=${mer_id}`, '商户设置')">
<image class="icon_img" :src="`${prefix}shsz.png`" mode="aspectFill">
</image>
<text class="text">商户设置</text>
</view>
<!-- <view class="examine" @click="navigator(`/pages/users/user_invoice_Finance/index?mer_id=${mer_id}`)">
<image class="icon_img" src="@/static/images/cwgk.png" mode="aspectFill">
</image>
<text class="text">财务公开</text>
</view> -->
</view>
</view>
</view>
<u-icon v-if="editFlag" class="icon" name="minus-circle-fill" color="red"></u-icon>
<text class="text">{{ item.name }}</text>
</view>
</u-transition>
</block>
<view v-else-if="!editFlag" @click="editFlag = true"
style="text-align: center; width: 100%; color: #aaa">还没有应用,点我添加应用</view>
</view>
</view>
<view v-if="editFlag" class="business com special_work edit_card">
<view class="title project" style="padding: 0 28rpx">
<view>编辑功能</view>
<view class="edit2" @click="editComfirm">完成</view>
</view>
<view class="content">
<u-transition v-for="(item, index) in AllMenuList" :key="item.name" show>
<view class="examine" @click="pushMenu(item)">
<image class="icon_img" :src="item.icon" mode="aspectFit">
</image>
<u-icon class="icon" name="plus-circle-fill"></u-icon>
<text class="text">{{ item.name }}</text>
</view>
</u-transition>
</view>
</view>
<view class="" v-if="jurisdiction == false && isShow == false">
<emptyPage title="暂无信息"></emptyPage>
</view>
<u-picker :defaultIndex="[0,0]" :show="showPicker" ref="uPicker" :columns="columnData" @confirm="confirm"
@cancel="showPicker = false" @change="changeHandler" keyName="name"></u-picker>
<!-- <m-tabbar native>
<template v-slot:tabbar_index_2>
<view class="custom_style">
@ -209,8 +81,14 @@
</template>
<script>
import Cache from '@/utils/cache';
import mTabbar from '@/components/m-tabbar/m-tabbar.vue'
import emptyPage from '@/components/emptyPage.vue';
import zbpSwiper from '@/components/zbpSwiper'
import {
getArea,
getStreet
} from '@/api/article.js';
import {
mapState,
mapGetters
@ -224,6 +102,7 @@
getUserInfo
} from '@/api/user.js'
import {
getGeocoder,
microSeachBarCode,
microEadtProduct
} from '@/api/store.js'
@ -232,14 +111,20 @@
} from '@/libs/uniApi';
import {
getDiy
} from '@/api/api.js'
} from '@/api/api.js';
// #ifdef APP-PLUS
import uniMP from '@/utils/uniMP.js';
// #endif
export default {
components: {
mTabbar,
zbpSwiper
zbpSwiper,
emptyPage
},
data() {
return {
locationArr: ({}),
emptyText: '暂无可用应用',
jurisdiction: false, //
mer_id: '',
@ -249,14 +134,44 @@
}
},
prefix: 'https://lihai001.oss-cn-chengdu.aliyuncs.com/public/kk/luzhou/static4/11/',
isShow: false
isShow: false,
bgColor: '',
isFshow: false,
street: '',
//
editFlag: false,
//
AllMenuList: [{
name: '商户平台',
icon: '/static/applet/shop_app.png',
data: '/pages/moreProject/moreProject',
type: 2,
},
{
name: '供销平台',
icon: '/static/applet/gx_app.png',
data: '__UNI__B5B1EDD',
type: 1,
},
],
nowMenuList: [],
street: '',
showPicker: false,
columnData: [],
bgColor: '',
isFshow: false,
backColor: 'rgba(252, 252, 252, 0)'
};
},
computed: {
...mapGetters(['userInfo', 'location', 'isLogin'])
},
created() {},
onLoad() {},
onLoad() {
this.Area()
this.initMenu();
},
onShow() {
if (this.isLogin) {
this.emptyText = '暂无可用应用'
@ -266,12 +181,235 @@
this.jurisdiction = true
}
this.getUserInfo()
},
onPullDownRefresh() {
this.getUserInfo()
uni.stopPullDownRefresh()
},
beforeDestroy() {
//
this.$bus.$off('value-updated')
},
mounted() {
if (this.street.length <= 0) {
this.appLocation()
}
// #ifdef H5
//
window.addEventListener("scroll", this.scrolling);
// #endif
this.$bus.$on('value-updated', (newValue) => {
//
this.street = newValue.split(',')[0]
});
},
// #ifdef APP-PLUS
onPageScroll(e) {
const scrollTop = e.scrollTop;
if (scrollTop <= 20) {
this.backColor = 'rgba(252, 252, 252, 0)'
this.isFshow = false
} else if (20 < scrollTop && scrollTop <= 100) {
this.backColor = 'rgba(252, 252, 252, .5)'
this.isFshow = true
} else if (scrollTop > 100) {
this.backColor = 'rgba(252, 252, 252, 1)'
this.isFshow = true
}
},
// #endif
methods: {
scrolling() {
//
let scrollTop =
window.pageYOffset ||
document.documentElement.scrollTop ||
document.body.scrollTop;
//
let scrollStep = scrollTop - this.oldScrollTop;
// console.log("header ", scrollTop);
//
this.oldScrollTop = scrollTop;
//windowHeight
let windowHeight =
document.documentElement.clientHeight || document.body.clientHeight;
//scrollHeight
let scrollHeight =
document.documentElement.scrollHeight || document.body.scrollHeight;
//
if (scrollTop + windowHeight == scrollHeight) {
//
// console.log("header ");
}
if (scrollTop <= 20) {
this.backColor = 'rgba(252, 252, 252, 0)'
this.isFshow = false
} else if (20 < scrollTop && scrollTop <= 100) {
this.backColor = 'rgba(252, 252, 252, .5)'
this.isFshow = true
} else if (scrollTop > 100) {
this.backColor = 'rgba(252, 252, 252, 1)'
this.isFshow = true
}
},
//
initMenu() {
let now = uni.getStorageSync('gatherNowMenuList');
try {
this.nowMenuList = JSON.parse(now);
this.AllMenuList = this.AllMenuList.filter((item) => {
return this.nowMenuList.find(t => t.name == item.name)?.name != item.name;
})
} catch (e) {
this.nowMenuList = [];
}
},
clickMenu(e, data) {
switch (e) {
case 1:
this.getUniMp(data);
break;
case 2:
this.navigator(data);
break;
}
},
//
pushMenu(data) {
this.nowMenuList.push(data);
this.AllMenuList = this.AllMenuList.filter((item) => {
return item.name != data.name;
})
},
//
removeMenu(data) {
this.AllMenuList.push(data);
this.nowMenuList = this.nowMenuList.filter((item) => {
return item.name != data.name;
})
},
//
editComfirm() {
this.editFlag = false;
uni.setStorageSync('gatherNowMenuList', JSON.stringify(this.nowMenuList));
},
getUniMp(appid) {
console.log('点击供销平台');
// #ifdef APP-PLUS
uniMP.loadMP(appid);
return;
// #endif
uni.showToast({
icon: 'none',
title: 'H5不支持打开小程序'
})
},
changeHandler(e) {
const {
columnIndex,
value,
values,
index,
picker = this.$refs.uPicker
} = e;
if (columnIndex === 0) {
getStreet({
area_code: value[0]['code']
}).then(res => {
this.$refs.uPicker.setColumnValues(1, res.data);
});
}
},
Area() {
getArea({
city_code: 510500
}).then(res => {
this.$refs.uPicker.setColumnValues(0, res.data);
this.Street(res.data[0]['code']);
});
},
Street(code) {
getStreet({
area_code: code
}).then(res => {
this.$refs.uPicker.setColumnValues(1, res.data);
});
},
selectLocation() {
this.showPicker = true
},
confirm(e) {
this.street = e.value[1].name
this.$nextTick(() => {
this.$bus.$emit('value-updated', e.value[1].name + ',' + e.value[1].code);
})
this.showPicker = false
},
appLocation() {
uni.getLocation({
type: 'wgs84',
timeout: '10',
success: (res) => {
// console.log(res)
let latitude, longitude;
latitude = res.latitude.toString();
longitude = res.longitude.toString();
getGeocoder({
lat: latitude,
long: longitude
}).then(res => {
let town = res.data.address_reference.town.title
let street_id = res.data.address_reference.town.id
this.street = res.data.address_component.street
this.$nextTick(() => {
this.$bus.$emit('value-updated', this.street + ',' +
street_id);
})
}).catch(err => {
uni.showToast({
title: err,
icon: 'none'
})
})
},
fail: (err) => {
uni.showToast({
title: "获取定位超时",
icon: 'none',
duration: 2000
});
}
});
},
kkchange(e) {
this.bgColor = e
},
navigator(url, t) {
// if (this.userInfoData.is_wsxx === 0 && t != '') return Toast("");
uni.navigateTo({
@ -290,10 +428,11 @@
this.isShow = true
this.mer_id = res.data.service.mer_id
}
if (!res.data.mer_info) {
that.$set(this, 'jurisdiction', false);
}
console.log(that.userInfoData);
// console.log(that.userInfoData);
});
}
}
@ -302,12 +441,71 @@
<style lang="scss" scoped>
.gather {
padding-bottom: 164.91rpx;
background: linear-gradient(180deg, #FFFFFF 0%, #F6F6F6 100%);
background: linear-gradient(180deg, #ffffff 0%, #f6f6f6 100%);
position: relative;
}
.sitebox {
animation-name: fadeIn;
animation-duration: 3s;
animation-fill-mode: forwards;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.site-box {
width: 100%;
/* #ifdef MP || APP-PLUS */
height: 160rpx;
/* #endif */
/* #ifdef H5 */
height: 120rpx;
/* #endif */
margin-bottom: 26.32rpx;
position: absolute;
top: 0rpx;
position: fixed;
z-index: 999;
/* #ifdef MP || APP-PLUS */
padding-top: 75rpx;
/* #endif */
/* #ifdef H5 */
padding-top: 25rpx;
/* #endif */
padding-right: 20rpx;
//
.place_wrapper {
color: #fff;
margin-right: 24.56rpx;
font-size: 30rpx;
opacity: 0;
.town_name {
margin-left: 21rpx;
}
}
.iconfont {
opacity: 0;
font-size: 30rpx;
font-size: 35.09rpx;
}
}
.top_box {
// padding-top: 180rpx;
background: linear-gradient(#36A2FF, #fff);
background: linear-gradient(#36a2ff, #fff);
}
.com {
@ -333,6 +531,27 @@
margin-bottom: 38.6rpx;
}
.project {
display: flex;
justify-content: space-between;
align-items: flex-end;
.edit {
font-size: 26rpx;
font-weight: 400;
&::after {
content: ">";
margin-left: 10rpx;
}
}
.edit2 {
font-size: 26rpx;
font-weight: 400;
}
}
.content {
display: flex;
align-content: center;
@ -346,11 +565,18 @@
flex-direction: column;
justify-content: center;
align-items: center;
position: relative;
// margin: 0 0 33.33rpx 33.33rpx !important;
.icon_img {
width: 63.16rpx;
height: 63.16rpx;
width: 83.16rpx;
height: 83.16rpx;
}
.icon {
position: absolute;
top: -5rpx;
right: 25rpx;
}
.text {
@ -383,4 +609,9 @@
}
}
}
.edit_card {
background-color: #fff;
padding-top: 28rpx;
}
</style>

View File

@ -585,6 +585,7 @@
])),
},
onLoad(options) {
// console.log(options)
this.referer = options.referer
if (options.product_type) {
this.product_type = options.product_type
@ -1349,9 +1350,10 @@
postCartAdd(q)
.then(function(res) {
that.isOpen = that.attr.cartAttr = false;
// console.log(that.storeInfo);
if (news) {
uni.navigateTo({
url: `/pages/users/order_confirm/index?cartId=${res.data.cart_id}`
url: `/pages/users/order_confirm/index?cartId=${res.data.cart_id}&type_id=${that.storeInfo.merchant.type_id}`
});
} else {
that.$util.Tips({

View File

@ -11,17 +11,18 @@
<view class="goods">
<block v-for="(item,index) in cateGoods" :key="index">
<view class="goods_item" @click="gogogo(item)">
<image class="goods_img" :src="item.image[0]" mode="aspectFill"></image>
<image class="goods_img" :src="item.image[0]" mode="aspectFit"></image>
<view class="botm">
<view class="title">{{item.title}}</view>
<view class="goods_info flex_a_c">
<view class="l_info flex_a_c">
<image :src="(item.author && item.author.avatar) || '/static/images/f.png'" mode="aspectFill"
class="g_img"></image>
<image :src="(item.author && item.author.avatar) || '/static/images/f.png'"
mode="aspectFit" class="g_img"></image>
<view class="g_name">{{item.author && item.author.nickname}}</view>
</view>
<view class="nice_box" @click.stop="giveStart(item)">
<text class="iconfont" :class="item.relevance_id ? 'icon-shoucang1' : 'icon-dianzan'"></text>
<text class="iconfont"
:class="item.relevance_id ? 'icon-shoucang1' : 'icon-dianzan'"></text>
<text class="collect">{{item.count_start}}</text>
</view>
</view>
@ -52,12 +53,29 @@
<script>
import mTabbar from '@/components/m-tabbar/m-tabbar.vue'
import zbpSwiper from '@/components/zbpSwiper'
import { getSlideAPI } from '@/api/lihai.js'
import { graphicLstApi, getTopicList, graphicStartApi } from '@/api/community.js'
import { getIndexData, getDiy } from '@/api/api.js'
import { getGeocoder, merClassifly } from '@/api/store.js';
import { getArea, getStreet } from '@/api/article.js';
import { Toast } from '@/libs/uniApi'
import {
getSlideAPI
} from '@/api/lihai.js'
import {
graphicLstApi,
getTopicList,
graphicStartApi
} from '@/api/community.js'
import {
getIndexData,
getDiy
} from '@/api/api.js'
import {
getGeocoder,
merClassifly
} from '@/api/store.js';
import {
getArea,
getStreet
} from '@/api/article.js';
import {
Toast
} from '@/libs/uniApi'
export default {
components: {
mTabbar,
@ -115,6 +133,7 @@
this.where.street_id = e.value[1].code
this.showPicker = false
},
changeHandler(e) {
const {
columnIndex,
@ -149,13 +168,9 @@
gogogo(item) {
if (this.tabsData.tabsActive == 1) {
uni.navigateTo({
//#ifdef APP
url: '/pages/short_video/appSwiper/index?id=' + item.community_id
//#endif
//#ifndef APP
url: '/pages/short_video/nvueSwiper/index?id=' + item.community_id
//#endif
url: `/pages/short_video/appSwiper/index?id=${this.cateGoods[0].community_id}`
})
} else {
uni.navigateTo({
url: '/pages/plantGrass/plant_detail/index?id=' + item.community_id
@ -203,12 +218,7 @@
this.tabsData.tabsActive = item.index
if (item.index == 1) {
uni.navigateTo({
// #ifdef MP || H5
url: '/pages/short_video/nvueSwiper/index?id=' + this.cateGoods[0].community_id
// #endif
// #ifdef APP
url: `/pages/short_video/appSwiper/index?id=${this.cateGoods[0].community_id}`
// #endif
})
}
},
@ -219,7 +229,10 @@
let latitude, longitude;
latitude = res.latitude.toString();
longitude = res.longitude.toString();
getGeocoder({ lat: latitude, long: longitude }).then(res => {
getGeocoder({
lat: latitude,
long: longitude
}).then(res => {
this.$store.commit('setLocation', res.data)
this.street = res.data.address_component.street
}).catch(err => {

View File

@ -28,7 +28,7 @@
</view>
<view class="advertItem02 advertItem05 acea-row" v-if="style==4">
<view class="item" v-for="(item,index) in picList" :key="index" @click="goDetail(item)">
<image :src="item.image" mode="aspectFill" :style="'height:'+ imageH +'rpx;'"></image>
<image :src="item.image" mode="aspectFit" :style="'height:'+ imageH +'rpx;'"></image>
</view>
</view>
<view class="advertItem02 advertItem06 acea-row" v-if="style==5">

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,614 @@
<template>
<view class="gather">
<block v-if="isShow">
<view class="special_work com" v-if="userInfoData.mer_info.type_code === 'TypeSupplyChain'">
<view class="special_work com" v-if="true">
<view class="title">市级供应链</view>
<view class="content">
<view class="examine"
@click="navigator(`/pages/nongKe/supply_chain/goods_list?merid=${mer_id}`)">
<image class="icon_img" :src="`${prefix}zsgl.png`" mode="aspectFill"></image>
<text class="text">在售管理</text>
</view>
<view class="examine"
@click="navigator(`/pages/admin/order/index?mer_id=${mer_id}&product_type=98&type_id=${userInfoData.mer_info.type_id}`)">
<image class="icon_img" :src="`${prefix}cwgl.png`" mode="aspectFill"></image>
<text class="text">财务管理</text>
</view>
<view class="examine"
@click="navigator(`/pages/nongKe/gather/select_warehouse?mer_id=${mer_id}&stype=1`)">
<image class="icon_img" :src="`${prefix}rkgl.png`" mode="aspectFill">
</image>
<text class="text">入库管理</text>
</view>
<view class="examine"
@click="navigator(`/pages/product/basicSet?mer_id=${mer_id}&product_type=98`, '商户设置')">
<image class="icon_img" :src="`${prefix}shsz.png`" mode="aspectFill"></image>
<text class="text">商户设置</text>
</view>
<view class="examine" @click="navigator(`/pages/product/list/index?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}spgl.png`" mode="aspectFill">
</image>
<text class="text">商品管理</text>
</view>
<view class="examine" @click="navigator(`/pages/users/embody/embody?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}txgl.png`" mode="aspectFill">
</image>
<text class="text">提现管理</text>
</view>
<view class="examine"
@click="navigator(`/pages/admin/order_cancellation/index?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}ddhx.png`" mode="aspectFill">
</image>
<text class="text">订单核销</text>
</view>
<!-- <view class="examine" @click="navigator(`/pages/nongKe/teach_video/teach_video`)">
<image class="icon_img"
src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/kk/spjs.png" mode="aspectFill">
</image>
<text class="text">视频教学</text>
</view> -->
<!-- <view class="examine" @click="navigator(`/pages/users/user_invoice_Finance/index?mer_id=${mer_id}`)">
<image class="icon_img" src="@/static/images/cwgk.png" mode="aspectFill">
</image>
<text class="text">财务公开</text>
</view> -->
<!-- <view class="examine" @click="navigator(`/pages/admin/order/index?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}ddgl.png`" mode="aspectFill">
</image>
<text class="text">订单管理</text>
</view> -->
</view>
</view>
</view>
<view class="business com" v-if="userInfoData.mer_info.type_code === 'TypeStore'">
<view class="business com" v-if="true">
<view class="special_work com">
<view class="title">我的店铺</view>
<view class="content ">
<view class="examine"
@click="navigator(`/pages/users/supply_procurement/index?type_id=12&isDetail=1&product_type=98&cate_id=${userInfoData.mer_info.category_id}`)">
<!-- @click="navigator(`/pages/nongKe/supply_chain/supplier?type_id=12&isDetail=1&product_type=98&cate_id=${userInfoData.mer_info.category_id}`) -->
<image class="icon_img" :src="`${prefix}ghcg.png`" mode="aspectFill"></image>
<text class="text">供货采购</text>
</view>
<view class="examine"
@click="navigator('/pages/users/order_list/indexCopy?status=-1&product_type=98')">
<image class="icon_img" :src="`${prefix}jhgl.png`" mode="aspectFill"></image>
<text class="text">进货管理</text>
</view>
<view class="examine" @click="navigator(`/pages/admin/stockOut/index?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}smck.png`" mode="aspectFill">
</image>
<text class="text">扫码出库</text>
</view>
<view class="examine"
@click="navigator(`/pages/nongKe/gather/select_warehouse?mer_id=${mer_id}&stype=2`)">
<image class="icon_img" :src="`${prefix}rkgl.png`" mode="aspectFill">
</image>
<text class="text">入库管理</text>
</view>
<view class="examine" @click="navigator(`/pages/users/embody/embody?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}txgl.png`" mode="aspectFill">
</image>
<text class="text">提现管理</text>
</view>
<view class="examine"
@click="navigator(`/pages/chat/customer_list/index?type=1&mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}kfjl.png`" mode="aspectFill">
</image>
<text class="text">客服记录</text>
</view>
<view class="examine"
@click="navigator(`/pages/admin/order_cancellation/index?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}ddhx.png`" mode="aspectFill">
</image>
<text class="text">订单核销</text>
</view>
<view class="examine"
@click="navigator(`/pages/admin/order/index?mer_id=${mer_id}&type_id=${userInfoData.mer_info.type_id}`)">
<image class="icon_img" :src="`${prefix}ddgl.png`" mode="aspectFill">
</image>
<text class="text">订单管理</text>
</view>
<view class="examine" @click="navigator(`/pages/product/list/index?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}spgl.png`" mode="aspectFill">
</image>
<text class="text">商品管理</text>
</view>
<view class="examine"
@click="navigator(`/pages/product/basicSet?mer_id=${mer_id}`, '商户设置')">
<image class="icon_img" :src="`${prefix}shsz.png`" mode="aspectFill">
</image>
<text class="text">商户设置</text>
</view>
<!-- <view class="examine"
@click="navigator(`/pages/users/trading_hall/index?mer_id=${mer_id}`)">
<image class="icon_img" src="@/static/images/diaohuo.png" mode="aspectFill">
</image>
<text class="text">交易大厅</text>
</view>
<view class="examine"
@click="navigator(`/pages/commissionedSales/index/index?mer_id=${mer_id}`)">
<image class="icon_img" src="@/static/images/weituo.png" mode="aspectFill">
</image>
<text class="text">委托销售</text>
</view>
<view class="examine" @click="navigator(`/pages/releaseManagement/index?mer_id=${mer_id}`)">
<image class="icon_img" src="@/static/images/fabu.png" mode="aspectFill">
</image>
<text class="text">发布管理</text>
</view> -->
<!-- <view class="examine" @click="navigator(`/pages/users/user_invoice_Finance/index?mer_id=${mer_id}`)">
<image class="icon_img" src="@/static/images/cwgk.png" mode="aspectFill">
</image>
<text class="text">财务公开</text>
</view> -->
</view>
</view>
<!-- <gatherBusiness :userInfoData="userInfoData" /> -->
</view>
</view>
<view class="business com" v-if="userInfoData.mer_info.type_code === 'TypeCloudWarehouse'">
<view class="business com" v-if="true">
<view class="special_work com">
<view class="title">里海云仓</view>
<view class="content ">
<view class="examine"
@click="navigator(`/pages/nongKe/supply_chain/supplier?type_id=12&isDetail=1&product_type=98&cate_id=${userInfoData.mer_info.category_id}`)">
<image class="icon_img" :src="`${prefix}ghcg.png`" mode="aspectFill"></image>
<text class="text">供货采购</text>
</view>
<view class="examine" @click="navigator('/pages/users/order_list/index?status=-1')">
<image class="icon_img" :src="`${prefix}jhgl.png`" mode="aspectFill"></image>
<text class="text">进货管理</text>
</view>
<view class="examine" @click="navigator(`/pages/admin/stockOut/index?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}smck.png`" mode="aspectFill">
</image>
<text class="text">扫码出库</text>
</view>
<view class="examine"
@click="navigator(`/pages/nongKe/gather/select_warehouse?mer_id=${mer_id}&stype=2`)">
<image class="icon_img" :src="`${prefix}rkgl.png`" mode="aspectFill">
</image>
<text class="text">入库管理</text>
</view>
<view class="examine" @click="navigator(`/pages/users/embody/embody?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}txgl.png`" mode="aspectFill">
</image>
<text class="text">提现管理</text>
</view>
<view class="examine"
@click="navigator(`/pages/chat/customer_list/index?type=1&mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}kfjl.png`" mode="aspectFill">
</image>
<text class="text">客服记录</text>
</view>
<view class="examine"
@click="navigator(`/pages/admin/order_cancellation/index?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}ddhx.png`" mode="aspectFill">
</image>
<text class="text">订单核销</text>
</view>
<view class="examine"
@click="navigator(`/pages/admin/order/index?mer_id=${mer_id}&type_id=${userInfoData.mer_info.type_id}`)">
<image class="icon_img" :src="`${prefix}ddgl.png`" mode="aspectFill">
</image>
<text class="text">订单管理</text>
</view>
<view class="examine" @click="navigator(`/pages/product/list/index?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}spgl.png`" mode="aspectFill">
</image>
<text class="text">商品管理</text>
</view>
<view class="examine"
@click="navigator(`/pages/product/basicSet?mer_id=${mer_id}`, '商户设置')">
<image class="icon_img" :src="`${prefix}shsz.png`" mode="aspectFill">
</image>
<text class="text">商户设置</text>
</view>
<!-- <view class="examine" @click="navigator(`/pages/users/user_invoice_Finance/index?mer_id=${mer_id}`)">
<image class="icon_img" src="@/static/images/cwgk.png" mode="aspectFill">
</image>
<text class="text">财务公开</text>
</view> -->
</view>
</view>
</view>
</view>
<view class="business com" v-if="userInfoData.mer_info.type_code === 'TypeFeaturedCultural'|| userInfoData.mer_info.type_code === 'TypeFamousSpecialties'|| userInfoData.mer_info.type_code === 'TypeLocalCuisine' ">
<view class="business com" v-if="true">
<view class="special_work com">
<view class="title">我的店铺</view>
<view class="content ">
<view class="examine" @click="navigator(`/pages/users/embody/embody?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}txgl.png`" mode="aspectFill">
</image>
<text class="text">提现管理</text>
</view>
<view class="examine"
@click="navigator(`/pages/chat/customer_list/index?type=1&mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}kfjl.png`" mode="aspectFill">
</image>
<text class="text">客服记录</text>
</view>
<view class="examine"
@click="navigator(`/pages/admin/order_cancellation/index?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}ddhx.png`" mode="aspectFill">
</image>
<text class="text">订单核销</text>
</view>
<view class="examine"
@click="navigator(`/pages/admin/order/index?mer_id=${mer_id}&type_id=${userInfoData.mer_info.type_id}`)">
<image class="icon_img" :src="`${prefix}ddgl.png`" mode="aspectFill">
</image>
<text class="text">订单管理</text>
</view>
<view class="examine" @click="navigator(`/pages/product/list/index?mer_id=${mer_id}`)">
<image class="icon_img" :src="`${prefix}spgl.png`" mode="aspectFill">
</image>
<text class="text">商品管理</text>
</view>
<view class="examine"
@click="navigator(`/pages/product/basicSet?mer_id=${mer_id}`, '商户设置')">
<image class="icon_img" :src="`${prefix}shsz.png`" mode="aspectFill">
</image>
<text class="text">商户设置</text>
</view>
</view>
</view>
</view>
</view>
</block>
<!-- <m-tabbar native>
<template v-slot:tabbar_index_2>
<view class="custom_style">
<view class="custom_style_icon"></view>
</view>
</template>
</m-tabbar> -->
<view class="" style="padding-top: 1px;" v-if='jurisdiction==false&&isShow==false'>
<emptyPage title="暂无信息"></emptyPage>
</view>
</view>
</template>
<script>
import mTabbar from '@/components/m-tabbar/m-tabbar.vue'
import emptyPage from '@/components/emptyPage.vue';
import zbpSwiper from '@/components/zbpSwiper'
import {
mapState,
mapGetters
} from 'vuex'
import {
getWorkArticleCount,
getSlideAPI
} from '@/api/article.js'
import {
getStoreList,
getUserInfo
} from '@/api/user.js'
import {
getGeocoder,
microSeachBarCode,
microEadtProduct
} from '@/api/store.js'
import {
Toast
} from '@/libs/uniApi';
import {
getDiy
} from '@/api/api.js'
export default {
components: {
mTabbar,
zbpSwiper,
emptyPage
},
data() {
return {
locationArr: ({}),
emptyText: '暂无可用应用',
jurisdiction: false, //
mer_id: '',
userInfoData: {
mer_info: {
type_id: 0
}
},
prefix: 'https://lihai001.oss-cn-chengdu.aliyuncs.com/public/kk/luzhou/static4/11/',
isShow: false,
bgColor: '',
isFshow: false,
street: ''
};
},
computed: {
...mapGetters(['userInfo', 'location', 'isLogin'])
},
created() {},
onLoad() {},
onShow() {
if (this.isLogin) {
this.emptyText = '暂无可用应用'
this.jurisdiction = false
} else {
this.emptyText = '请登录'
this.jurisdiction = true
}
this.getUserInfo()
this.appLocation()
},
onPullDownRefresh() {
this.getUserInfo()
uni.stopPullDownRefresh()
},
mounted() {
this.appLocation()
},
methods: {
appLocation() {
uni.getLocation({
type: 'wgs84',
timeout: '10',
success: (res) => {
// console.log(res)
let latitude, longitude;
latitude = res.latitude.toString();
longitude = res.longitude.toString();
getGeocoder({
lat: latitude,
long: longitude
}).then(res => {
this.street = res.data.address_component.street
Cache.set('ADRESS_LOCATION', this.street)
}).catch(err => {
uni.showToast({
title: err,
icon: 'none'
})
})
},
fail: (err) => {
uni.showToast({
title: "获取定位超时",
icon: 'none',
duration: 2000
});
}
});
},
scrolling() {
//
let scrollTop =
window.pageYOffset ||
document.documentElement.scrollTop ||
document.body.scrollTop;
//
let scrollStep = scrollTop - this.oldScrollTop;
console.log("header 滚动距离 ", scrollTop);
//
this.oldScrollTop = scrollTop;
//windowHeight
let windowHeight =
document.documentElement.clientHeight || document.body.clientHeight;
//scrollHeight
let scrollHeight =
document.documentElement.scrollHeight || document.body.scrollHeight;
//
if (scrollTop + windowHeight == scrollHeight) {
//
console.log("header 你已经到底部了");
}
if (scrollStep < 0) {
this.isFshow = false
console.log("header 滚动条向上滚动了!");
} else {
this.isFshow = true
console.log("header 滚动条向下滚动了!");
}
//
if (scrollTop <= 0) {
this.isFshow = false
console.log("header 到了最顶部")
}
},
kkchange(e) {
this.bgColor = e
},
navigator(url, t) {
// if (this.userInfoData.is_wsxx === 0 && t != '') return Toast("");
uni.navigateTo({
url: url
})
},
getUserInfo: function() {
let that = this;
getUserInfo().then(res => {
that.userInfoData = res.data;
// console.log(res.data.service);
if (res.data.service == null) {
// console.log('123');
this.isShow = false
} else {
this.isShow = true
this.mer_id = res.data.service.mer_id
}
if (!res.data.mer_info) {
that.$set(this, 'jurisdiction', false);
}
// console.log(that.userInfoData);
});
}
}
};
</script>
<style lang="scss" scoped>
.gather {
padding-bottom: 164.91rpx;
background: linear-gradient(180deg, #FFFFFF 0%, #F6F6F6 100%);
}
.bg-img {
position: absolute;
width: 100%;
height: 100%;
top: 0;
/* #ifdef MP || APP-PLUS */
z-index: -100;
/* #endif */
/* #ifdef H5 */
z-index: -100;
/* #endif */
z-index: -100;
filter: blur(0);
overflow: hidden;
img {
width: 100%;
height: 100%;
filter: blur(30rpx);
transform: scale(1.5);
}
}
.site-box {
width: 100%;
height: 120rpx;
margin-bottom: 26.32rpx;
position: absolute;
top: 0rpx;
position: fixed;
z-index: 999;
padding-top: 30rpx;
padding-right: 20rpx;
//
.place_wrapper {
color: #fff;
margin-right: 24.56rpx;
font-size: 30rpx;
.town_name {
margin-left: 21rpx;
}
}
.iconfont {
font-size: 35.09rpx;
}
}
.top_box {
// padding-top: 180rpx;
background: linear-gradient(#36A2FF, #fff);
}
.com {
margin-left: 50%;
transform: translate(-50%);
}
.business {
width: 694.74rpx;
// margin-bottom: 175rpx;
}
.special_work {
// padding: 17.54rpx;
width: 694.74rpx;
// margin-top: 52.63rpx;
padding-top: 32rpx;
border-radius: 17.54rpx;
// box-shadow: 0px 0px 6px 1px rgba(0, 0, 0, 0.16);
.title {
font-size: 31.58rpx;
font-weight: 700;
margin-bottom: 38.6rpx;
}
.content {
display: flex;
align-content: center;
flex-wrap: wrap;
// justify-content: space-between;
.examine {
margin-bottom: 35rpx;
width: 173.68rpx;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
// margin: 0 0 33.33rpx 33.33rpx !important;
.icon_img {
width: 63.16rpx;
height: 63.16rpx;
}
.text {
font-size: 26.32rpx;
margin-top: 21.05rpx;
color: #000;
}
}
.text {
font-size: 29.82rpx;
color: #a4a4a4;
}
}
.cont_jus {
margin-top: 56.14rpx;
justify-content: flex-start;
&:first-child {
// margin-right: 33rpx;
}
.examine {
margin-right: 48rpx;
&:first-child {
margin-right: 48rpx;
}
}
}
}
</style>

View File

@ -26,14 +26,13 @@
class="span">查看商品</text></navigator>
</view>
<!-- #ifdef H5 -->
<button class="bnt bg-color" hover-class='none' @click="listenerActionSheet"
>和好友一起分享</button>
<button class="bnt bg-color" hover-class='none' @click="listenerActionSheet">和好友一起分享</button>
<!-- #endif -->
<!-- #ifdef MP -->
<button class="bnt bg-color" open-type="share" hover-class='none'>和好友一起分享</button>
<!-- #endif -->
<!-- #ifdef APP-PLUS -->
<button class="bnt bg-color" open-type="share" hover-class='none' @click="listenerActionSheet" >和好友一起分享</button>
<button class="bnt bg-color" open-type="share" hover-class='none' @click="uniShare">分享</button>
<!-- #endif -->
</view>
<shareInfo @setShareInfoStatus="setShareInfoStatus" :shareInfoStatus="shareInfoStatus"></shareInfo>
@ -57,12 +56,24 @@
} from '@/api/api.js';
import shareInfo from '@/components/shareInfo';
import home from '@/components/home';
import UniShare from 'uni_modules/uni-share/js_sdk/uni-share.js';
const uniShare = new UniShare();
export default {
components: {
shareInfo,
home,
"jyf-parser": parser,
},
onBackPress({
from
}) {
if (from == 'backbutton') {
this.$nextTick(function() {
uniShare.hide()
})
return uniShare.isShow;
}
},
data() {
return {
id: 0,
@ -96,6 +107,78 @@
this.getArticleOne();
},
methods: {
//
uniShare() {
uniShare.show({
content: { // typeherftitlesummaryimageUrl
type: 0,
href: 'https://uniapp.dcloud.io/',
title: '标题',
summary: '描述',
imageUrl: 'https://img-cdn-aliyun.dcloud.net.cn/stream/icon/__UNI__HelloUniApp.png'
},
menus: [{
"img": "/static/images/weixin.png",
"text": "微信好友",
"share": { //type=5
"provider": "weixin",
"scene": "WXSceneSession"
}
},
{
"img": "/static/images/weixin.png",
"text": "微信朋友圈",
"share": {
"provider": "weixin",
"scene": "WXSceneTimeline"
}
},
{
"img": "/static/images/weixin.png",
"text": "微信小程序",
"share": {
provider: "weixin",
scene: "WXSceneSession",
type: 5,
miniProgram: {
id: '123',
path: '/pages/list/detail',
webUrl: '/#/pages/list/detail',
type: 0
},
}
},
// {
// "img": "/static/app-plus/sharemenu/weibo.png",
// "text": "",
// "share": {
// "provider": "sinaweibo"
// }
// },
// {
// "img": "/static/app-plus/sharemenu/qq.png",
// "text": "QQ",
// "share": {
// "provider": "qq"
// }
// },
// {
// "img": "/static/app-plus/sharemenu/copyurl.png",
// "text": "",
// "share": "copyurl"
// },
// {
// "img": "/static/app-plus/sharemenu/more.png",
// "text": "",
// "share": "shareSystem"
// }
],
cancelText: "取消分享",
}, e => { //callback
console.log(uniShare.isShow);
console.log(e);
})
},
getArticleOne: function() {
let that = this;
getArticleDetails(that.id).then(res => {

View File

@ -61,6 +61,7 @@
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import {
getArticleCategoryLists,
getArticleCategoryList,
getArticleList,
getArticleHotList,
@ -85,7 +86,8 @@
page: 1,
limit: 8,
status: false,
scrollLeft: 0
scrollLeft: 0,
type: 0
};
},
/**
@ -95,7 +97,9 @@
/**
* 生命周期函数--监听页面显示
*/
onLoad: function() {
onLoad: function(e) {
this.type = e.type
this.getArticleCate();
this.status = false;
this.page = 1;
@ -142,11 +146,20 @@
},
getArticleCate: function() {
let that = this;
if (this.type == 1) {
getArticleCategoryLists().then(res => {
this.active = res.data[0].article_category_id
that.$set(that, 'navList', res.data);
this.getCidArticle();
});
} else {
getArticleCategoryList().then(res => {
this.active = res.data[0].article_category_id
that.$set(that, 'navList', res.data);
this.getCidArticle();
});
}
},
tabSelect(active) {
this.active = active;

View File

@ -1,3 +1,4 @@
<template>
<view class="cloud_entrepot" :style="{'min-height': winHeight + 'px'}">
<view class="head-wrapper"></view>

1308
pages/nongKe/food/index.vue Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,326 @@
<template>
<view class="box">
<view class="head">
<view style="height: var(--status-bar-height);"></view>
<!-- <u--image style="position: absolute;" :showLoading="true" src="/static/images/MYTC/BG.png" width="750rpx"
height="748.25rpx" @click="click"></u--image> -->
<view class="head_tit">
<view class="head_tit_l">
<view class="iconfont icon-xiangzuo"></view>
<view style="font-size: 40rpx;font-weight: 700;margin-left: 30rpx; transform: skewX(-10deg);">
当地美食
</view>
</view>
<view class="head_tit_r" style="font-size: 29.79rpx;">
江阳区 <text style="margin-left: 10rpx;" class="iconfont icon-xiangxia"></text>
<view class="" style="font-size: 22.78rpx;">
晴天30
</view>
</view>
</view>
<view class="head_serch">
<view style="position: relative;">
<u-search borderColor="#FF6D20" bgColor="white" :showAction="false" placeholder="搜索店铺名称"
v-model="keyword" class="serch_cls"></u-search>
<u--image @tap="searchSubmit" class="img_cls" :showLoading="true" src="/static/images/GXSC/SS.png"
width="115.65rpx" height="56.82rpx"></u--image>
</view>
</view>
<view class="foodType">
<view class="foodLi" v-for="(item,index) in lists" :key="index">
<u--image :showLoading="true" src="https://cdn.uviewui.com/uview/album/1.jpg" width="70rpx"
height="70rpx"></u--image>
<view class="" style="text-align: center;">
早餐
</view>
</view>
</view>
</view>
<view class="store" style="background-color: white;">
<view class="goods_list">
<view class="goods_cards" @click="goStore(item.mer_id)" v-for="(item,index) in storeList" :key="index">
<view class="left">
<u--image :showLoading="true" :src="item.mer_avatar" width="157.71rpx"
height="157.71rpx"></u--image>
</view>
<view class="right">
<view class="li heads" style="display: flex;">
<text class="flag">特产</text>
<text class="com_name">{{item.mer_name}}</text>
<text
style="font-weight: normal; font-size: 10rpx;color: #737373;padding:0 10rpx; border-radius: 10rpx; border: 1px solid #737373;">{{item.type_name}}</text>
</view>
<view class="li">
<u--image v-for="item,index in [1,1,,1,1,1]" :key="index" :showLoading="true"
src="/static/images/GXSC/PF.png" width="20.85rpx" height="19.85rpx"></u--image>
<text style="margin-left: 10rpx;color: #FF6D20; ">5.0</text>
<text>月销2000+</text>
<text>20分钟</text>
<text>1.1km</text>
</view>
<view class="li" style="align-items: center;">
<u--image :showLoading="true" src="/static/images/GXSC/DH.png" width="33.85rpx"
height="33.85rpx"></u--image>
<text> {{item.service_phone}}</text>
</view>
<view class="li" style="align-items: center;">
<u--image :showLoading="true" src="/static/images/GXSC/SJ.png" width="33.85rpx"
height="33.85rpx"></u--image>
<text>{{item.mer_take_time[0]}}-{{item.mer_take_time[1]}}</text>
</view>
<view class="li" style="align-items: center;">
<u--image :showLoading="true" src="/static/images/GXSC/DW.png" width="33.85rpx"
height="33.85rpx"></u--image>
<text class="address">{{item.mer_address}}</text>
</view>
<view class="">
<u-scroll-list>
<view v-for="(item, index) in list" :key="index" style="margin-right: 20rpx;">
<u--image :showLoading="true" src="https://cdn.uviewui.com/uview/album/1.jpg"
width="164.72rpx" height="164.72rpx"></u--image>
<view class="goods_tit_a">
笑口常开地方就是的开发建设的开发建设的,v空间和客户可怜见立刻就
</view>
<view style="color: red;">
$10.00
</view>
<!-- <image :src="item.thumb"></image> -->
</view>
<!-- <view v-for="(item, index) in list" :key="index">
<image :src="item.thumb"></image>
</view> -->
</u-scroll-list>
</view>
<!-- <view class="">
<u-scroll-list>
<view v-for="(item, index) in list" :key="index" class="goods_card_a">
<u--image :showLoading="true" src="https://cdn.uviewui.com/uview/album/1.jpg"
width="164.72rpx" height="164.72rpx" @click="click"></u--image>
<view class="goods_tit_a">
笑口常开地方就是的开发建设的开发建设的,v空间和客户可怜见立刻就
</view>
<view class="goods_price">
$10.00
</view>
</view>
</u-scroll-list>
</view>
-->
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import {
storeMerchantList,
} from '@/api/store.js';
export default {
data() {
return {
keyword: "",
list: [1, 1, 1, 11, 1, 11, 11],
lists: [1, 1, 1, 1, 1],
storeList: [1, 1, 1, 1, 1, 1, 1, 1, 1]
}
},
onLaunch() {
console.log(46545)
// storeMerchantList().then(res => {
// // this.count = res.data.count
// // this.storeList = this.storeList.concat(res.data.list)
// // this.loading = false
// // this.loadingIcon = false
// console.log(res)
// })
},
onShow() {
// console.log(46545)
storeMerchantList().then(res => {
// this.count = res.data.count
this.storeList = res.data.list
// this.loading = false
// this.loadingIcon = false
// console.log(res)
})
},
methods: {},
onPullDownRefresh() {
uni.stopPullDownRefresh()
}
}
</script>
<style lang="scss" scoped>
.head {
// background-color: #F94621;
// background: url('/static/images/MYTC/BG.png') no-repeat;
padding: 20rpx;
border-radius: 0rpx 0rpx 31.54rpx 31.54rpx;
.head_tit {
display: flex;
justify-content: space-between;
// color: white;
// margin-bottom: 20rpx;
.head_tit_l {
display: flex;
align-items: center;
}
.head_tit_r {
// display: flex;
// align-items: center;
}
}
.head_serch {
margin: 20rpx 0;
}
.foodType {
display: flex;
.foodLi {}
}
.head_content {
.head_content_card {
background: linear-gradient(to bottom, #FCB9AD, #FFFBF9, #FFFFFF);
border-radius: 21.03rpx 21.03rpx 21.03rpx 21.03rpx;
overflow: hidden;
padding: 20rpx 10rpx;
.goods_card {
margin-right: 20rpx;
}
.goods_tit {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.goods_price {
color: #F84221;
font-size: 29.79rpx;
}
}
}
}
.store {
.goods_list {
margin-top: 20rpx;
.goods_cards {
margin-top: 20rpx;
height: auto;
background-color: white;
padding: 20rpx;
border-radius: 20rpx;
display: flex;
// align-items: center;
.left {
margin-right: 20rpx;
width: 158rpx;
height: 158rpx;
// background-color: red;
border-radius: 20rpx;
overflow: hidden;
}
.right {
// box-sizing: border-box;
width: 75vw;
overflow: hidden;
// background-color: red;
.heads {
font-weight: bold;
.flag {
background: linear-gradient(to bottom, #F84221, #FF6D20);
width: 66.59rpx;
height: 36.8rpx;
text-align: center;
font-size: 22.78rpx;
color: white;
border-radius: 10.51rpx 10.51rpx 10.51rpx 10.51rpx;
}
}
.goods_card_a {
margin-right: 20rpx;
}
.goods_price_a {
color: #F84221;
}
.goods_tit_a {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
}
.li {
display: flex;
font-size: 26.29rpx;
margin-bottom: 10rpx;
align-items: center;
color: #737373;
text {
margin: 0 10rpx 0;
}
}
}
}
}
.address {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: 200px;
}
}
.img_cls {
position: absolute;
top: 50%;
right: 7rpx;
transform: translateY(-50%);
}
</style>

View File

@ -2,7 +2,8 @@
<view class="select_warehouse">
<view class="wrapper flex_a_c_j_sb">
<block v-for="item in goodsData" :key="item.name">
<view class="select_item" @click="navigato(item.type)" :style="{'background-image': `url(${item.src})`}">
<view class="select_item" @click="navigato(item.type)"
:style="{'background-image': `url(${item.src})`}">
<view class="title">{{ item.name }}</view>
<view class="iconfont icon-jiantou"></view>
</view>

View File

@ -11,8 +11,8 @@
<input placeholder='搜索商品名称' placeholder-class='placeholder' confirm-type='search' name="search"
:value='where.keyword' @confirm="searchSubmit"></input>
</view>
<view style="text-align: right;" class='iconfont' :class='is_switch==true?"icon-pailie":"icon-tupianpailie"'
@click='Changswitch'></view>
<view style="text-align: right;" class='iconfont'
:class='is_switch==true?"icon-pailie":"icon-tupianpailie"' @click='Changswitch'></view>
</view>
<view class="nav-wrapper">
<view class='nav acea-row row-middle'>
@ -94,8 +94,8 @@
<view class="down-wrapper" v-if="downStatus">
<view class="bg"></view>
<view class="down-box">
<view class="down-item" v-for="(item,index) in downMenu" :key="item.key" :class="{'on':index == downKey}"
@click="bindDown(item,index)">
<view class="down-item" v-for="(item,index) in downMenu" :key="item.key"
:class="{'on':index == downKey}" @click="bindDown(item,index)">
{{item.title}}
<text v-if="index == downKey" class="iconfont icon-gou"></text>
</view>
@ -118,10 +118,18 @@
import recommend from '@/components/recommend';
import rightSlider from '@/components/rightSlider.vue'
import WaterfallsFlow from '@/components/WaterfallsFlow/WaterfallsFlow.vue'
import { initiateAssistApi } from '@/api/activity.js';
import { cloudWarehouse } from '@/api/api.js'
import { configMap } from "@/utils";
import { mapGetters } from "vuex";
import {
initiateAssistApi
} from '@/api/activity.js';
import {
cloudWarehouse
} from '@/api/api.js'
import {
configMap
} from "@/utils";
import {
mapGetters
} from "vuex";
// #ifndef H5
import passwordPopup from '@/components/passwordPopup';
// #endif
@ -129,10 +137,15 @@
import {
goShopDetail
} from '@/libs/order.js'
import { HTTP_REQUEST_URL } from '@/config/app';
import {
HTTP_REQUEST_URL
} from '@/config/app';
const app = getApp();
export default {
computed: configMap({ hide_mer_status: 1, recommend_switch: 0 }, mapGetters(['uid', 'isLogin', 'scrollTop',
computed: configMap({
hide_mer_status: 1,
recommend_switch: 0
}, mapGetters(['uid', 'isLogin', 'scrollTop',
'viewColor', 'keyColor'
])),
components: {

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,324 @@
<template>
<view class="box">
<view class="head">
<view style="height: var(--status-bar-height);"></view>
<!-- <u--image style="position: absolute;" :showLoading="true" src="/static/images/MYTC/BG.png" width="750rpx"
height="748.25rpx" @click="click"></u--image> -->
<view class="head_tit">
<view class="head_tit_l">
<view class="iconfont icon-xiangzuo"></view>
<view
style="font-size: 40rpx;font-weight: 700;margin-left: 30rpx; transform: skewX(-10deg);color:white;">
名优特产
</view>
</view>
<view class="head_tit_r" style="font-size: 29.79rpx;">
江阳区 <text style="margin-left: 10rpx;" class="iconfont icon-xiangxia"></text>
<view class="" style="font-size: 22.78rpx;">
晴天30
</view>
</view>
</view>
<view class="head_serch">
<view style="position: relative;">
<!-- <u-search borderColor="#FF6D20" bgColor="white" :showAction="false" placeholder="搜索店铺名称"
v-model="keyword" class="serch_cls"></u-search> -->
<!-- <u--image class="img_cls" style="position: absolute; top: 3px;right: 3px;" :showLoading="true"
src="/static/images/MYTC/SS.png" width="115.65rpx" height="56.82rpx"></u--image> -->
</view>
</view>
<view class="head_content">
<view style="font-size: 40rpx;font-weight: 700;color:white; margin-bottom: 10rpx;">
精选特产
</view>
<view class="head_content_card">
<u-scroll-list>
<view v-for="(item, index) in list" :key="index" class="goods_card">
<u--image :showLoading="true" src="https://cdn.uviewui.com/uview/album/1.jpg"
width="210.28rpx" height="210.28rpx"></u--image>
<view class="goods_tit">
笑口常开地方就是的开发建设的开发建设的,v空间和客户可怜见立刻就
</view>
<view class="goods_price">
10.00
</view>
<!-- <image :src="item.thumb"></image> -->
</view>
</u-scroll-list>
</view>
</view>
</view>
<view class="store" style="background-color: white;">
<view class="goods_list">
<view class="goods_cards" @click="goStore(item.mer_id)" v-for="(item,index) in storeList" :key="index">
<view class="left">
<u--image :showLoading="true" :src="item.mer_avatar" width="157.71rpx"
height="157.71rpx"></u--image>
</view>
<view class="right">
<view class="li heads" style="display: flex;">
<text class="flag">特产</text>
<text class="com_name">{{item.mer_name}}</text>
<text
style="font-weight: normal; font-size: 10rpx;color: #737373;padding:0 10rpx; border-radius: 10rpx; border: 1px solid #737373;">{{item.type_name}}</text>
</view>
<view class="li">
<u--image v-for="item,index in [1,1,,1,1,1]" :key="index" :showLoading="true"
src="/static/images/GXSC/PF.png" width="20.85rpx" height="19.85rpx"></u--image>
<text style="margin-left: 10rpx;color: #FF6D20; ">5.0</text>
<text>月销2000+</text>
<text>20分钟</text>
<text>1.1km</text>
</view>
<view class="li" style="align-items: center;">
<u--image :showLoading="true" src="/static/images/GXSC/DH.png" width="33.85rpx"
height="33.85rpx"></u--image>
<text> {{item.service_phone}}</text>
</view>
<view class="li" style="align-items: center;">
<u--image :showLoading="true" src="/static/images/GXSC/SJ.png" width="33.85rpx"
height="33.85rpx"></u--image>
<text>{{item.mer_take_time[0]}}-{{item.mer_take_time[1]}}</text>
</view>
<view class="li" style="align-items: center;">
<u--image :showLoading="true" src="/static/images/GXSC/DW.png" width="33.85rpx"
height="33.85rpx"></u--image>
<text class="address">{{item.mer_address}}</text>
</view>
<view class="">
<u-scroll-list>
<view v-for="(item, index) in list" :key="index" style="margin-right: 20rpx;">
<u--image :showLoading="true" src="https://cdn.uviewui.com/uview/album/1.jpg"
width="164.72rpx" height="164.72rpx"></u--image>
<view class="goods_tit_a">
笑口常开地方就是的开发建设的开发建设的,v空间和客户可怜见立刻就
</view>
<view style="color: red;">
$10.00
</view>
<!-- <image :src="item.thumb"></image> -->
</view>
<!-- <view v-for="(item, index) in list" :key="index">
<image :src="item.thumb"></image>
</view> -->
</u-scroll-list>
</view>
<!-- <view class="">
<u-scroll-list>
<view v-for="(item, index) in list" :key="index" class="goods_card_a">
<u--image :showLoading="true" src="https://cdn.uviewui.com/uview/album/1.jpg"
width="164.72rpx" height="164.72rpx" @click="click"></u--image>
<view class="goods_tit_a">
笑口常开地方就是的开发建设的开发建设的,v空间和客户可怜见立刻就
</view>
<view class="goods_price">
$10.00
</view>
</view>
</u-scroll-list>
</view>
-->
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import {
storeMerchantList,
} from '@/api/store.js';
export default {
data() {
return {
keyword: "",
list: [1, 1, 1, 11, 1, 11, 11],
storeList: [1, 1, 1, 1, 1, 1, 1, 1, 1]
}
},
onLaunch() {
console.log(46545)
// storeMerchantList().then(res => {
// // this.count = res.data.count
// // this.storeList = this.storeList.concat(res.data.list)
// // this.loading = false
// // this.loadingIcon = false
// console.log(res)
// })
},
onShow() {
// console.log(46545)
storeMerchantList().then(res => {
// this.count = res.data.count
this.storeList = res.data.list
// this.loading = false
// this.loadingIcon = false
// console.log(res)
})
},
methods: {},
onPullDownRefresh() {
uni.stopPullDownRefresh()
}
}
</script>
<style lang="scss" scoped>
.head {
// background-color: #F94621;
background: url('/static/images/MYTC/BG.png') no-repeat;
padding: 20rpx;
border-radius: 0rpx 0rpx 31.54rpx 31.54rpx;
.head_tit {
display: flex;
justify-content: space-between;
color: white;
// margin-bottom: 20rpx;
.head_tit_l {
display: flex;
align-items: center;
}
.head_tit_r {
// display: flex;
// align-items: center;
}
}
.head_serch {
margin: 20rpx 0;
}
.head_content {
.head_content_card {
background: linear-gradient(to bottom, #FCB9AD, #FFFBF9, #FFFFFF);
border-radius: 21.03rpx 21.03rpx 21.03rpx 21.03rpx;
overflow: hidden;
padding: 20rpx 10rpx;
.goods_card {
margin-right: 20rpx;
}
.goods_tit {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.goods_price {
color: #F84221;
font-size: 29.79rpx;
}
}
}
}
.store {
.goods_list {
margin-top: 20rpx;
.goods_cards {
margin-top: 20rpx;
height: auto;
background-color: white;
padding: 20rpx;
border-radius: 20rpx;
display: flex;
// align-items: center;
.left {
margin-right: 20rpx;
width: 158rpx;
height: 158rpx;
// background-color: red;
border-radius: 20rpx;
overflow: hidden;
}
.right {
// box-sizing: border-box;
width: 75vw;
overflow: hidden;
// background-color: red;
.heads {
font-weight: bold;
.flag {
background: linear-gradient(to bottom, #F84221, #FF6D20);
width: 66.59rpx;
height: 36.8rpx;
text-align: center;
font-size: 22.78rpx;
color: white;
border-radius: 10.51rpx 10.51rpx 10.51rpx 10.51rpx;
}
}
.goods_card_a {
margin-right: 20rpx;
}
.goods_price_a {
color: #F84221;
}
.goods_tit_a {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
}
.li {
display: flex;
font-size: 26.29rpx;
margin-bottom: 10rpx;
align-items: center;
color: #737373;
text {
margin: 0 10rpx 0;
}
}
}
}
}
.address {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: 200px;
}
}
</style>

View File

@ -11,7 +11,7 @@
<view class="store_site flex_a_c" v-if="store_item.street_name">{{ store_item.street_name }}</view>
<view class="name">{{ store_item.mer_name }}</view>
</view>
<image class="high_img" :src="youZhiImg" mode="aspectFill"></image>
<image class="high_img" :src="youZhiImg" mode="aspectFit"></image>
</view>
<view class="mct_msg_detail flex_a_c">
<view class="product_score">{{ store_item.product_score }}</view>
@ -32,7 +32,7 @@
<scroll-view scroll-x="true" class="goods_info">
<view v-for="(itemn,indexn) in store_item.recommend" :key="indexn" class="goods_info_item"
@click.stop="navTogoodsDetail(itemn.product_id)">
<image class="goods_info_img" :src="itemn.image" mode="aspectFill"></image>
<image class="goods_info_img" :src="itemn.image" mode="aspectFit"></image>
<view class="goods_info_name">{{itemn.store_name}}</view>
<view class="goods_info_price">{{itemn.price}}</view>
</view>

View File

@ -11,15 +11,15 @@
</view>
<block v-for="(item,i) in goodsList" :key="i">
<view class="list_item flex_a_c">
<image class="goods_img" :src="item.image" mode="aspectFill"></image>
<image class="goods_img" :src="item.image" mode="aspectFit"></image>
<view class="r_box flex_a_c_j_sb">
<view class="message">
<view class="title">{{item.store_name}}</view>
<view class="goodstitle">{{item.store_name}}</view>
<view class="flex_a_c">
<view class="">分类{{item.storeCategory.cate_name}}</view>
<view class="unit">单位{{item.unit_name}}</view>
</view>
<view class="bar_code">条形码{{ item.bar_code || "0" }}</view>
<view class="bar_code">条形码{{ item.bar_code || "" }}</view>
</view>
<view class="redact_box">
<view class="order_price">订货价{{item.price}}</view>
@ -38,13 +38,13 @@
<view class="">订货价{{redactGoods.price}}</view>
</view>
<view class="bar_code flex_a_c_j_sb">
<view>条形码{{ redactGoods.bar_code || "0" }}</view>
<view>条形码{{ redactGoods.bar_code || "" }}</view>
<view>库存{{ redactGoods.stock }}</view>
</view>
<view class="sub_title">订货价</view>
<input class="input" type="text" placeholder="请输入价格" v-model="goodsPrive">
<view class="sub_title">库存量</view>
<input class="input" type="number" placeholder="请输入库存数量" v-model="goodsNum">
<!-- <view class="sub_title">库存量</view>
<input class="input" type="number" placeholder="请输入库存数量" v-model="goodsNum"> -->
<view class="btns_box">
<view class="cancel" @click="popupClose">取消</view>
<view class="save" @click="submitCreatedGoods">保存</view>
@ -53,7 +53,6 @@
</u-popup>
</view>
</template>
<script>
import {
getStorage,
@ -63,8 +62,15 @@
hideLoading,
Modal
} from '@/libs/uniApi.js';
import { productLstApi, productCreate, productUpdate, productDetail } from '@/api/product.js'
import { checkLogin } from '../../../libs/login';
import {
productLstApi,
productCreate,
productUpdate,
productDetail
} from '@/api/product.js'
import {
checkLogin
} from '../../../libs/login';
export default {
data() {
return {
@ -110,11 +116,15 @@
onShow() {},
methods: {
async searchClick() {
const { data } = await productLstApi(this.mer_id, this.params)
const {
data
} = await productLstApi(this.mer_id, this.params)
this.goodsList = data.list
},
async getGoodsList() {
const { data } = await productLstApi(this.mer_id, this.params)
const {
data
} = await productLstApi(this.mer_id, this.params)
this.goodsList.push(...data.list)
if (data.length < 9) this.status = 'nomore';
},
@ -140,6 +150,7 @@
const res = await productUpdate(this.merId, this.product_id, this.particulars)
// Toast(message)
this.getGoodsList()
this.goodsList = []
this.popupShow = false
this.goodsPrive = ''
this.goodsNum = ''
@ -168,7 +179,8 @@
if (getStorage('addGoodsSecoundData')) {
Object.keys(this.addGoodsSecoundData).forEach(item => {
if (getStorage('addGoodsSecoundData')[item] || getStorage('addGoodsSecoundData')[item] == 0) {
if (getStorage('addGoodsSecoundData')[item] || getStorage('addGoodsSecoundData')[item] ==
0) {
this.addGoodsSecoundData[item] = getStorage('addGoodsSecoundData')[item];
}
});
@ -221,6 +233,7 @@
line-height: 59.65rpx;
background: $uni-theme-bg-color;
border-radius: 100px;
font-size: 25rpx;
}
}
}
@ -236,7 +249,7 @@
margin-top: 21.05rpx;
.title {
font-size: 31.58rpx;
font-weight: bold;
color: #333;
}
@ -262,6 +275,7 @@
line-height: 50.88rpx;
background: $uni-theme-bg-color;
border-radius: 7px;
font-size: 25rpx
}
.r_box {
@ -281,6 +295,17 @@
}
}
.goodstitle {
width: 42vw;
font-weight: bold;
white-space: nowrap;
/* 不换行 */
overflow: hidden;
/* 溢出隐藏 */
text-overflow: ellipsis;
}
.popup_cont {
width: 680.7rpx;
padding: 31.58rpx;
@ -288,13 +313,12 @@
.message {
margin: 28.07rpx 0 21.05rpx 0;
}
.title {
text-align: center;
font-size: 31.58rpx;
font-weight: bold;
}
.sub_title {
font-size: 28.07rpx;

View File

@ -0,0 +1,67 @@
<template>
<view class="">
<map id="map" :enable-zoom="true" :markers="markers" :scale="19" :latitude="28.908447" :enable-scroll="true"
:longitude="105.439304" style="width: 100vw;height: 100vh;">
<!-- <cover-image class="map_btn" @tap="test" src="../../static/img/logistics/DH.png">
</cover-image> -->
</map>
</view>
</template>
<script>
import {
vicinityStoreApi,
supAgoodsApi
} from '@/api/store.js';
export default {
data() {
return {
markers: [{
id: 1,
latitude: 28.908447,
longitude: 105.439304,
title: "测试商家名称",
iconPath: "/static/images/GXSC/SJicon.png"
}, {
id: 2,
latitude: 28.909447,
longitude: 105.439304,
title: "测试商家名称",
iconPath: "/static/images/GXSC/SJicon.png"
}, {
id: 3,
latitude: 28.908447,
longitude: 105.459304,
title: "测试商家名称",
iconPath: "/static/images/GXSC/SJicon.png"
}, ]
}
}
,
onLoad(options) {
let that = this
// supAgoodsApi()
vicinityStoreApi(options.street_id).then(res => {
// console.log(res.data.list)
res.data.list.forEach(item => {
if (!item.lat) return
this.markers = []
// console.log(item)
that.markers.push({
id: item.mer_id,
latitude: item.lat,
longitude: item.long,
title: item.mer_name,
iconPath: "/static/images/GXSC/SJicon.png"
})
})
})
}
}
</script>
<style>
</style>

View File

@ -20,7 +20,7 @@
<block v-for="(item,index) in list" :key="index">
<view class="item_list flex">
<view>
<image class="goods_image" :src="item.image" mode="aspectFill"></image>
<image class="goods_image" :src="item.image" mode="aspectFit"></image>
</view>
<view class="left_goods_msg">
<view class="name">{{ item.store_name }}</view>
@ -41,6 +41,35 @@
<navigator class="bottom_purchase" url="./shopping_trolley" open-type="navigate">采购清单</navigator>
<goodsPopup :goodsStatu="isPopupShow" @colses="isPopupShow=false" :goods_info="goodsInfo"></goodsPopup>
<u-popup :show="show" @close="close">
<view>
<h3 style=" margin: 15px 5px 5px 24px;">颜色规格</h3>
<scroll-view :scroll-top="scrollTop" scroll-y="true" class="scroll-Y">
<view class="scroll-view-item" v-for="(item,index) in attrValue" :key="index">
<view class="scroll_item_top">
<image :src="Image" mode=""></image>
<view class="text">
<view>{{item.sku}}</view>
<view>库存: <text>{{item.stock}}</text> </view>
</view>
</view>
<view class="scroll_item_bon">
<view class="reduce" @click.stop='subCart(item,index)'>-</view>
<input type="text" disabled="true" v-model="goods[index].cart_num" />
<view class="plus" :class="goods.numAdd ? 'on' : ''" @click.stop='addCart(item,index)'>+</view>
<!-- <u-number-box
button-size="36"
color="#ffffff"
bgColor="#2979ff"
iconStyle="color: #fff"
v-model="number.cart_num"
></u-number-box> -->
</view>
</view>
</scroll-view>
<button class="btn" @click="addshopcart">确定</button>
</view>
</u-popup>
</view>
</template>
@ -52,6 +81,9 @@
} from '@/api/store.js'
import { Toast } from '@/libs/uniApi'
import goodsPopup from '../cpns/goodsPopup.vue'
import {
changeCartNum
} from '@/api/order.js';
export default {
components: {
goodsPopup
@ -88,7 +120,16 @@
},
id: '',
order: true,
num: ''
num: '',
show: false,
scrollTop: 0,
attrValue: [],
Image: '',
goods: [{
cart_num: 0
}],
goodsLite: {},
goodsindexL: ''
}
},
onLoad(e) {
@ -176,23 +217,27 @@
* 获取产品详情
*/
getGoodsDetails(item) {
// console.log('e,item',e,item);
// let that = this;
// const count = e.value
// getProductDetail(item.product_id).then(res => {
// const unique = Object.values(res.data.sku)[0].unique
// console.log(res.data.product_id, count, unique,'123123');
// that.goCat(res.data.product_id, count, unique)
// })
console.log(item);
if (item.product.attrValue.length == 1) {
let that = this;
const count = '1'
// console.log(111);
getProductDetail(item.product_id, { product_type: 98 }).then(res => {
const unique = Object.values(res.data.sku)[0].unique
that.goCat(res.data.product_id, count, unique)
}).catch(err => {
Toast(err)
})
} else {
this.show = true
this.attrValue = item.product.attrValue
this.Image = item.image
for (let i = 1; i < item.product.attrValue.length; i++) {
this.goods.push({
cart_num: 0
})
}
}
},
/*
* 加入购物车
@ -220,8 +265,97 @@
});
});
},
close() {
this.show = false
},
//
addCart(item, index) {
let that = this
that.goods[index].cart_num = that.goods[index].cart_num + 1
that.goods.numAdd = true
that.goodsLite = item
that.goodsindexL = index
let q = {
is_new: 0,
product_id: that.goodsLite.product_id,
cart_num: that.goods[that.goodsindexL].cart_num,
product_attr_unique: that.goodsLite.unique,
// source: this.source,
product_type: 98,
spread_id: ''
};
postCartAdd(q).then(res => {
that.$util.Tips({
title: "添加购物车成功",
});
})
.catch(res => {
this.show = false
return that.$util.Tips({
title: res
});
});
},
subCart(item, index) {
let that = this
if (that.goods[index].cart_num == 0) {
return
} else {
that.goods[index].cart_num = that.goods[index].cart_num - 1
that.goods.numAdd = true
that.goodsLite = item
that.goodsindexL = index
let q = {
is_new: 0,
product_id: that.goodsLite.product_id,
cart_num: that.goods[that.goodsindexL].cart_num,
product_attr_unique: that.goodsLite.unique,
// source: this.source,
product_type: 98,
spread_id: ''
};
postCartAdd(q).then(res => {
that.$util.Tips({
title: "添加购物车成功",
});
})
.catch(res => {
this.show = false
return that.$util.Tips({
title: res
});
});
}
},
addshopcart() {
console.log(this.goodsLite);
console.log(this.goodsindexL);
this.show = false
// let that = this
// let q = {
// is_new: 0,
// product_id: that.goodsLite.product_id,
// cart_num: that.goods[that.goodsindexL].cart_num,
// product_attr_unique: that.goodsLite.unique,
// // source: this.source,
// product_type: 98,
// spread_id: ''
// };
// postCartAdd(q).then(res => {
// this.show = false
// that.$util.Tips({
// title: "",
// });
// })
// .catch(res => {
// this.show = false
// return that.$util.Tips({
// title: res
// });
// });
}
},
onReachBottom() {
//nomore
if (this.status != 'nomore') {
@ -395,4 +529,91 @@
background-color: $uni-theme-color;
color: #fff;
}
.scroll-Y {
height: 50vh;
width: 90%;
margin: auto;
}
.scroll-view-item {
font-size: 36rpx;
border-bottom: 1px solid #ccc;
.scroll_item_top {
height: 60px;
display: flex;
justify-content: flex-start;
align-items: center;
image {
width: 50px;
height: 50px;
margin: 5px;
}
.text {
width: 200px;
height: 60px;
float: left;
view {
height: 30px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
text {
color: #F84221;
}
}
}
}
.scroll_item_bon {
width: 100%;
height: 40px;
display: flex;
justify-content: flex-end;
align-items: center;
.reduce {
width: 30px;
height: 30px;
text-align: center;
color: #BDC4CE;
background: #EEEEEE;
}
input {
width: 50px;
height: 30px;
text-align: center;
}
.plus {
width: 30px;
text-align: center;
height: 30px;
color: #FFFFFF;
background: linear-gradient(180deg, #F98649 0%, #F34E45 100%);
}
.on {
background-color: #e3e3e3;
color: #dedede;
}
}
}
.btn {
width: 100%;
height: 50px;
background: linear-gradient(84deg, #F98649 0%, #F34E45 100%);
border-radius: 24px 24px 24px 24px;
line-height: 50px;
color: white;
}
</style>

View File

@ -242,6 +242,7 @@
currSku: '',
newData: {},
activeRouter: '',
type_id:''
};
},
computed: configMap({ hide_mer_status: 1, recommend_switch: 0, navigation: {} }, mapGetters(['isLogin',
@ -348,7 +349,7 @@
this.cartList.valid.forEach(el => {
el.list.forEach(goods => {
if (goods.check) {
type_id.push(goods.spu.spu_id)
type_id.push(goods.product_id)
}
})
})
@ -357,6 +358,8 @@
title: '请选择产品'
});
} else {
collectAll({
type_id: type_id,
type: 1
@ -568,7 +571,7 @@
})
if (selectValue.length > 0) {
uni.navigateTo({
url: '/pages/users/order_confirm/index?product_type=98&cartId=' + selectValue.join(',')
url: `/pages/users/order_confirm/index?product_type=98&cartId=${selectValue.join(',')}&type_id=12`
});
} else {
return this.$util.Tips({
@ -578,12 +581,13 @@
},
//
addCart: function(goods, index) {
console.log(goods.cart_id);
let that = this;
changeCartNum(goods.cart_id, {
cart_num: goods.cart_num + 1
}).then(res => {
goods.cart_num = Number(goods.cart_num) + 1
that.cartTotalCount = Number(that.cartTotalCount) + 1;
// that.cartTotalCount = Number(that.cartTotalCount) + 1;
if (goods.hasOwnProperty('productAttr') && goods.cart_num > goods.productAttr.stock) {
goods.cart_num = goods.productAttr.stock;
goods.numAdd = true;
@ -649,7 +653,7 @@
goods.numSub = true;
}
goods.cart_num = Number(goods.cart_num) - 1
this.cartTotalCount = Number(this.cartTotalCount) - 1;
// this.cartTotalCount = Number(this.cartTotalCount) - 1;
this.cartAllCheck('goodsCheck')
}).catch(error => {
this.$util.Tips({
@ -671,6 +675,7 @@
let that = this;
getCartList({ product_type: 98 }).then(res => {
// console.log("", res)
this.type_id=res.data.list[0].type_id
res.data.list.forEach((item, index) => {
item.allCheck = true
item.list.forEach((goods, j) => {

View File

@ -33,7 +33,7 @@
<view class="right_storee">
<scroll-view scroll-y="true" style="height: 100%; overflow: hidden;" scroll-with-animation='true'
@scrolltolower="scrolltolower" class="my-scroll-view">
<image class="banner" :src="src" mode="aspectFill"></image>
<image class="banner" :src="src" mode="aspectFit"></image>
<view style="background-color: #fff;width: 100%;">
<view class="tabs_box flex_a_c_j_sb">
<view v-for="(item,index) in tabsList" :key="index" class="flex_a_c" :class="active==index?'active':''">

View File

@ -1,26 +1,115 @@
<template>
<view>
<view style="background-color: #F0F2F5;">
<!-- <view style="height: var(--status-bar-height);background-color: red;height: 10vh;">dsfdsfsdfds</view> -->
<view class='productList' :style="viewColor">
<view class='search acea-row row-between-wrapper' :class="'styleType'+store_street_theme">
<!--#ifdef H5-->
<view class="back" @click='backjJump()'>
<view class="iconfont icon-xiangzuo"></view>
<!-- 顶部 -->
<view class="top">
<view style="height: 10px;">
</view>
<!--#endif-->
<view class='input acea-row row-between-wrapper'><text class='iconfont icon-sousuo'></text>
<view class="head_tit">
<view class="" style="display: flex;align-items: center;">
<view class="back" @click='backjJump()' style="margin-right: 17rpx;">
<view class="iconfont icon-xiangzuo" style="color: #333333;"></view>
</view>
<view class="" style="font-size: 40rpx;font-weight: 700;transform: skewX(-10deg);">
供销综合云市场
</view>
</view>
<view style="position: relative;width: 289.14rpx;">
<!-- <text class='iconfont icon-sousuo'></text>
<input placeholder='搜索店铺名称' placeholder-class='placeholder' confirm-type='search' name="search"
:value='sotreParam.keyword' @confirm="searchSubmit"></input>
:value='sotreParam.keyword' @confirm="searchSubmit"></input> -->
<u-search borderColor="#FF6D20" bgColor="white" @change="test" :showAction="false"
placeholder="请输入..." v-model="sotreParam.keyword" class="serch_cls"></u-search>
<u--image @tap="searchSubmit" class="img_cls" :showLoading="true"
src="/static/images/GXSC/SS.png" width="115.65rpx" height="56.82rpx"></u--image>
</view>
<view v-if="mer_location == 1" :class="'styleType'+store_street_theme" style="text-align: right;"
class='iconfont search-right' @click='showMaoLocation(latitude,longitude)'>
<view class="iconfont icon-dingwei"></view>
<view class="right-text" v-if="recommend_address">
{{recommend_address}}
</view>
<view class="iconfont icon-xiangyou" v-if="recommend_address"></view>
<view class='iconfont search-right'
@click="goMap(`/pages/nongKe/supply_chain/maps?street_id=${street_id}`)">
<u--image :showLoading="true" src="/static/images/GXSC/DW.png" width="50.82rpx"
height="50.82rpx"></u--image>
</view>
</view>
<view class="nav-wrapper" :class="'styleType'+store_street_theme">
</view>
<view class="content">
<view style="background-color: red;height: 10px">
asdasd
</view>
<view class="hot_serch">
<text>热搜:</text> <text @click="hotSerchFn('小张副食')">小张副食</text> <text
@click="hotSerchFn('正新酒店')">正新酒店</text>
<text @click="hotSerchFn('麻辣鸡')">麻辣鸡</text>
<text @click="hotSerchFn('手撕椒麻鸡')">手撕椒麻鸡</text>
</view>
<view class="menu_cls">
<u-scroll-list indicatorActiveColor='#FF6D20'>
<view class="menu_li" @click="navGo(item.merchant_category_id)" v-for="item,index in menuList"
:key="index">
<!-- {{item.merchant_category_id}} -->
<u--image :showLoading="true" :src="imgList[index]" width="94.63rpx" height="99.63rpx"
style="margin-bottom: 20rpx;"></u--image>
<text
style="display: block;font-size: 26.29rpx; width: 15vw;">{{item.category_name}}</text>
</view>
</u-scroll-list>
</view>
<view class="goods_list">
<view class="goods_card" @click="goStore(item.mer_id)" v-for="(item,index) in storeList"
:key="index">
<view class="left">
<u--image :showLoading="true" :src="item.mer_avatar" width="157.71rpx"
height="157.71rpx"></u--image>
</view>
<view class="right">
<view class="li head">
<text class="com_name">{{item.mer_name}}</text>
<text
style="font-weight: normal;font-size: 19.28rpx;color: red;padding:0 10rpx; border-radius: 10rpx; border: 1px solid red;">{{item.type_name}}</text>
</view>
<view class="li">
<u--image v-for="item,index in [1,1,,1,1,1]" :key="index" :showLoading="true"
src="/static/images/GXSC/PF.png" width="20.85rpx" height="19.85rpx"></u--image>
<text style="margin-left: 20rpx;color: #FF6D20; ">5.0</text>
<text>月销{{item.sales}}</text>
</view>
<view class="li" style="align-items: center;">
<u--image :showLoading="true" src="/static/images/GXSC/DH.png" width="33.85rpx"
height="33.85rpx"></u--image>
<text> {{item.service_phone}}</text>
</view>
<view class="li" style="align-items: center;">
<u--image :showLoading="true" src="/static/images/GXSC/SJ.png" width="33.85rpx"
height="33.85rpx"></u--image>
<text>{{item.mer_take_time[0]}}-{{item.mer_take_time[1]}}</text>
</view>
<view class="li" style="align-items: center;">
<u--image :showLoading="true" src="/static/images/GXSC/DW.png" width="33.85rpx"
height="33.85rpx"></u--image>
<text class="address">{{item.mer_address}}</text>
</view>
</view>
</view>
</view>
</view>
<!-- 热搜 -->
<!-- <view class="nav-wrapper" :class="'styleType'+store_street_theme">
<view class='nav acea-row row-middle' :class="'styleType'+store_street_theme">
<view v-for="item in downMenus" :key="item.key" class='item'
:class="{'font-colors':firstKey == item.key}" @click='set_where(item.key)'>
@ -30,16 +119,14 @@
<view class="line" :class="{'font-line':firstKey == item.key}">
</view>
</view>
<view class="item" @click="bindRight">
<view>筛选
<!-- <text class="iconfont icon-shaixuan"></text> -->
</view>
<view class="line">
</view>
</view>
</view>
</view>
-->
<!-- 店铺 -->
<!--
<block>
<view class="store-wrapper">
<view class="store-item" v-for="(item,index) in storeList" :key="index">
@ -175,9 +262,12 @@
<view class='loadingicon acea-row row-center-wrapper' v-if="loading">
<text class='loading iconfont icon-jiazai' :hidden='loading==false'></text>{{loadTitle}}
</view>
-->
</view>
<view class='no-shop' v-if="!storeList.length && !loading && !loadingIcon" v-cloak>
<view class='pictrue' style="margin: 0 auto;">
<view class='pictrue' style="margin: 0 auto;background-color: #F5F5F5;">
<image src='../../../static/images/noCart.png'></image>
<text>暂无店铺快去搜索其他店铺吧</text>
</view>
@ -195,7 +285,8 @@
<script>
import {
storeMerchantList,
getGeocoder
getGeocoder,
supMenuApi
} from '@/api/store.js';
import recommend from './component/recommend';
import rightSlider from './component/rightSlider';
@ -222,6 +313,25 @@
},
data() {
return {
imgList: [
"/static/images/GXSC/BBY.png",
"/static/images/GXSC/NYSC.png",
"/static/images/GXSC/SHFW.png",
"/static/images/GXSC/SCFW.png",
"/static/images/GXSC/NFCP.png",
"/static/images/GXSC/WLSY.png",
"/static/images/GXSC/WYLY.png",
"/static/images/GXSC/MSGY.png",
"/static/images/GXSC/YLBJ.png",
"/static/images/GXSC/JYPX.png",
"/static/images/GXSC/JJRB.png",
"/static/images/GXSC/ZXJZ.png",
"/static/images/GXSC/NMJD.png",
"/static/images/GXSC/GXZH.png",
"/static/images/GXSC/DFTC.png",
"/static/images/GXSC/JDMS.png",
],
street_id: "",
price: 0,
stock: 0,
nows: false,
@ -238,6 +348,7 @@
brandList: [],
downKey: 0,
downStatus: false,
menuList: [],
//
downMenu: [{
title: '默认',
@ -289,15 +400,18 @@
merList: [], //
product_type: 0,
show: false,
image: '' //
image: '', //,
credit_buy: '', //
};
},
onLoad(options) {
console.log(options);
// console.log(options);
this.street_id = options.street_id
this.product_type = options.product_type ?? 0
if (options.street_id != undefined) {
this.sotreParam.street_id = options.street_id
}
this.credit_buy = options.credit_buy
this.sotreParam.type_id = options.type_id
this.sotreParam.type_id = options.type_id && options.type_id.split(',').toString() || ''
this.sotreParam.category_id = options.cate_id && options.cate_id.split(',').toString() || ''
@ -308,6 +422,10 @@
this.storeMerchantList();
this.getClassfication();
this.getStoreType();
supMenuApi().then(res => {
this.menuList = res.data
})
},
computed: {
downMenus: function() {
@ -328,6 +446,28 @@
}, mapGetters(['viewColor'])),
},
methods: {
test() {
if (this.sotreParam.keyword.length > 3) {
this.sotreParam.keyword.slice(0, 3)
this.sotreParam.keyword = this.sotreParam.keyword.slice(0, 3) + "..."
console.log(this.sotreParam.keyword)
}
// console.log(this.sotreParam.keyword.length)
},
hotSerchFn(keywords) {
this.sotreParam.keyword = keywords
this.searchSubmit()
},
goMap(url) {
uni.navigateTo({
url
})
},
navGo(id) {
uni.navigateTo({
url: `/pages/nongKe/supply_chain/supplierA?type_id=10&merchant_category_id=${id}&street_id=${this.street_id}`
})
},
go_details: function(product_type, product_id) {
if (product_type == 98) {
uni.navigateTo({
@ -496,7 +636,8 @@
order: this.sotreParam.order,
category_id: this.sotreParam.category_id,
type_id: this.sotreParam.type_id,
street_id: this.sotreParam.street_id
street_id: this.sotreParam.street_id,
credit_buy: this.credit_buy
}
if (this.latitude) {
rqData.location = this.latitude + ',' + this.longitude
@ -523,9 +664,9 @@
}
}
},
searchSubmit: function(e) {
searchSubmit: function() {
let that = this;
that.$set(that.sotreParam, 'keyword', e.detail.value);
that.$set(that.sotreParam, 'keyword', this.sotreParam.keyword);
this.set_where(this.firstKey)
},
//
@ -618,48 +759,121 @@
</script>
<style lang="scss" scoped>
.productList .search {
width: 100%;
height: 86rpx;
padding: 0 20rpx;
box-sizing: border-box;
position: fixed;
left: 0;
top: 0;
z-index: 9;
display: flex;
flex-wrap: nowrap;
background-color: #fff;
&.styleType1 {
background-color: var(--view-theme);
* {
margin: 0;
padding: 0;
}
.search-right {
.com_name {
font-size: 33.29rpx;
// background-color: red;
// max-width: 45vw;
max-width: 40vw;
white-space: nowrap;
/* 防止文字换行 */
overflow: hidden;
/* 超出部分隐藏 */
text-overflow: ellipsis;
/* 使用省略号表示溢出的内容 */
// width: 200px;
/* 可根据实际情况调整容器宽度 */
}
.head_tit {
display: flex;
align-items: center;
justify-content: space-between;
max-width: max-content;
flex: 1;
padding-left: 20rpx;
align-items: center;
box-sizing: border-box;
padding: 0 20rpx;
}
.right-text {
.productList {
// padding-top: 50rpx;
// padding: 0 20rpx 0;
.top {
padding-top: var(--status-bar-height);
/* #ifdef H5 */
padding-top: 30rpx;
/* #endif */
// padding-top: 80rpx;
background-color: #F0F2F5;
position: fixed;
z-index: 999;
width: 100%;
// margin-top: 10px;
}
.content {
padding: 20rpx;
}
.menu_cls {
background-color: white;
// height: 199.77rpx;
border-radius: 21.03rpx 21.03rpx 21.03rpx 21.03rpx;
padding: 20rpx 20rpx 0 20rpx;
.menu_li {
margin-right: 50rpx;
// background-color: red;
width: 50vw;
// width: 120rpx;
// display: inline-block;
}
}
.goods_list {
margin-top: 20rpx;
.goods_card {
margin-top: 20rpx;
height: auto;
background-color: white;
padding: 20rpx;
border-radius: 20rpx;
display: flex;
// align-items: center;
.left {
margin-right: 20rpx;
width: 158rpx;
height: 158rpx;
border-radius: 20rpx;
overflow: hidden;
}
.right {
.head {
font-weight: bold;
// color: red;
}
.li {
display: flex;
font-size: 26.29rpx;
margin-bottom: 10rpx;
align-items: center;
text {
margin: 0 20rpx 0 5rpx;
}
}
}
}
}
.address {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-size: 28rpx;
width: max-content;
color: #fff;
padding: 0 10rpx;
width: 200px;
}
}
.icon-xiangyou,
.icon-dingwei {
font-size: 30rpx;
color: #fff;
}
}
.search-right.styleType2 .right-text,
.search-right.styleType3 .right-text {
@ -688,6 +902,27 @@
}
}
.hot_serch {
color: #B3B3B3;
display: flex;
justify-content: space-around;
margin-top: 40rpx;
flex-wrap: wrap;
// margin-top: 50rpx;
// padding-top: 100rpx;
padding-top: var(--status-bar-height);
// margin-top: 10px;
/* #ifdef H5 */
padding-top: 50rpx;
/* #endif */
// margin-top: 200rpx;
text {
margin: 10rpx;
}
}
.productList .search .input {
flex: 1;
height: 60rpx;
@ -731,7 +966,7 @@
z-index: 9;
position: fixed;
left: 0;
top: 0;
top: 25px;
width: 100%;
margin-top: 86rpx;
background-color: #fff;
@ -853,7 +1088,7 @@
}
.store-wrapper {
margin-top: 165rpx;
margin-top: 235rpx;
border-top: 1px solid #F6F6F6;
.store-item {
@ -1110,7 +1345,7 @@
.no-shop {
background-color: #fff;
padding-bottom: calc(100% - 176rpx);
// padding-bottom: calc(100% - 176rpx);
.pictrue {
display: flex;
@ -1124,12 +1359,21 @@
}
}
}
.guanbi {
width: 20px;
height: 20px;
margin: 30px auto;
}
.img_cls {
position: absolute;
top: 50%;
right: 7rpx;
transform: translateY(-50%);
}
.pop {
z-index: 1;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -284,7 +284,7 @@
methods: {
//
authColse: function(e) {
// console.log(e,'authColse')
console.log(e,'authColse')
this.isShowAuth = e;
},
onLoadFun(){
@ -413,7 +413,7 @@
let productAttr = this.attr.productAttr;
let value = [];
let arr = []
// console.log(arr, 'arr')
console.log(arr, 'arr')
if(this.currSku){
value = this.currSku
}else{
@ -824,7 +824,7 @@
ChangCouponsUseState(index) {
let that = this;
that.coupon.list[index].issue = true;
// console.log(that.coupon.list[index])
console.log(that.coupon.list[index])
},
},
onReachBottom() {

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -14,26 +14,30 @@
</view>
<view class='item acea-row row-between-wrapper'>
<view>支付方式</view>
<view v-if="order_pay_info.pay_type==1 || order_pay_info.pay_type==2 || order_pay_info.pay_type==3" class='itemCom'>微信</view>
<view v-else-if="order_pay_info.pay_type==4 || order_pay_info.pay_type==5" class='itemCom'>支付宝</view>
<view v-if="order_pay_info.pay_type==1 || order_pay_info.pay_type==2 || order_pay_info.pay_type==3"
class='itemCom'>微信</view>
<view v-else-if="order_pay_info.pay_type==4 || order_pay_info.pay_type==5" class='itemCom'>支付宝
</view>
<view v-else class='itemCom'>余额</view>
</view>
<view class='item acea-row row-between-wrapper'>
<view>支付金额</view>
<view class='itemCom'>{{order_pay_info.pay_price}}</view>
</view>
<view v-if="order_pay_info.give_integral > 0 && order_pay_info.paid" class='item acea-row row-between-wrapper'>
<view v-if="order_pay_info.give_integral > 0 && order_pay_info.paid"
class='item acea-row row-between-wrapper'>
<view>赠送积分</view>
<view class='itemCom t-color'>{{order_pay_info.give_integral}}</view>
</view>
<!--失败时加上这个 -->
<view class='item acea-row row-between-wrapper' v-if="order_pay_info.paid==0 && order_pay_info.pay_type != 'offline' && msg != 'success'">
<view class='item acea-row row-between-wrapper'
v-if="order_pay_info.paid==0 && order_pay_info.pay_type != 'offline' && msg != 'success'">
<view>失败原因</view>
<view class='itemCom'>{{order_pay_info.pay_type==0 ? '余额不足':msg}}</view>
</view>
</view>
<!--失败时 重新购买 -->
<view @tap="goOrderDetails">
<view @tap="goOrderDetails(order_pay_info.paid)">
<button formType="submit" class='returnBnt gColor' hover-class='none'>查看订单</button>
</view>
<!-- <view @tap="goOrderDetails" v-if="order_pay_info.paid==0 && status==1">
@ -42,8 +46,10 @@
<!-- <view @tap="goOrderDetails" v-if="order_pay_info.paid==0 && status==2">
<button class='returnBnt bg-color' hover-class='none'>重新支付</button>
</view> -->
<button @click="goPink(order_pay_info.activity_id)" class='returnBnt s-Color' formType="submit" hover-class='none' v-if="order_pay_info.activity_type == 4 && order_pay_info.paid">邀请好友参团</button>
<button v-if="!order_pay_info.paid || order_pay_info.activity_type != 4" @click="goIndex" class='returnBnt s-Color' formType="submit" hover-class='none'>返回首页</button>
<button @click="goPink(order_pay_info.activity_id)" class='returnBnt s-Color' formType="submit"
hover-class='none' v-if="order_pay_info.activity_type == 4 && order_pay_info.paid">邀请好友参团</button>
<button v-if="!order_pay_info.paid || order_pay_info.activity_type != 4" @click="goIndex"
class='returnBnt s-Color' formType="submit" hover-class='none'>返回首页</button>
<view class="coupon-wrapper" v-if="couponList.length>0 && order_pay_info.paid">
<view class="hd">
<view class="line"></view>
@ -53,12 +59,16 @@
<view class="coupon-box" :class="{on:isOpen}">
<block v-for="(item,index) in couponList" :key="index">
<view class="coupon-item flex">
<view class="left-bg" :style="{ 'background-image': `url(${domain}/static/diy/couponBg${keyColor}.png)` }"><text></text>{{item.coupon_price}}</view>
<view class="left-bg"
:style="{ 'background-image': `url(${domain}/static/diy/couponBg${keyColor}.png)` }">
<text></text>{{item.coupon_price}}
</view>
<view class="info">
<view class="title">{{item.title}}</view>
<view class="des">{{item.use_min_price}}元可用</view>
<block v-if="item.coupon_type == 1">
<view class="des">有效期:{{ item.use_start_time |timeYMD }}-{{ item.use_end_time |timeYMD}}</view>
<view class="des">
有效期:{{ item.use_start_time |timeYMD }}-{{ item.use_end_time |timeYMD}}</view>
</block>
<block v-if="item.coupon_type == 0">
<view class="des">领取后{{ item.coupon_time}}天内可用</view>
@ -88,11 +98,19 @@
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import {getPayOrder} from '@/api/order.js';
import {openOrderSubscribe} from '@/utils/SubscribeMessage.js';
import {mapGetters} from "vuex";
import {
getPayOrder
} from '@/api/order.js';
import {
openOrderSubscribe
} from '@/utils/SubscribeMessage.js';
import {
mapGetters
} from "vuex";
import authorize from '@/components/Authorize';
import { HTTP_REQUEST_URL } from '@/config/app';
import {
HTTP_REQUEST_URL
} from '@/config/app';
export default {
components: {
authorize,
@ -119,7 +137,9 @@
isOpen: false, //
moneyBg: '/static/images/couponBg',
text: '展开更多',
timer: null
timer: null,
product_type: '',
};
},
computed: mapGetters(['isLogin', 'viewColor', 'keyColor']),
@ -134,6 +154,7 @@
this.order_type = options.order_type;
this.status = options.status || 0;
this.msg = options.msg || '';
this.product_type = options.product_type
if (this.isLogin) {
this.refreshData();
} else {
@ -143,9 +164,8 @@
},
methods: {
refreshData() {
this.timer = setInterval(()=>{
this.getOrderPayInfo();
},1000)
},
//
bindMore() {
@ -199,18 +219,32 @@
*
* 去订单详情页面
*/
goOrderDetails: function(e) {
goOrderDetails: function(val) {
let that = this;
if (this.order_pay_info.paid == 0) {
uni.redirectTo({
url: '/pages/users/order_list/index'
if (this.product_type == 98) {
if(val==1){
uni.navigateTo({
url: `/pages/users/order_list/indexCopy?status=1&product_type=${this.product_type}`
})
}else{
uni.redirectTo({
url: '/pages/users/order_list/index?status=1'
uni.navigateTo({
url: `/pages/users/order_list/indexCopy?status=0&product_type=${this.product_type}`
})
}
} else {
if(val==1){
uni.navigateTo({
url: '/pages/users/order_list/index?status=1&product_type=0'
})
}else{
uni.navigateTo({
url: '/pages/users/order_list/index?status=0&product_type=0'
})
}
}
}
},
destroyed() {
@ -231,6 +265,7 @@
border-radius: 10rpx;
padding: 1rpx 0 28rpx 0;
}
.payment-status .icon {
font-size: 70rpx;
width: 140rpx;
@ -242,19 +277,23 @@
border: 6rpx solid #f5f5f5;
margin: -76rpx auto 0 auto;
background-color: #999;
&.icon-duihao2 {
background-color: var(--view-theme);
}
}
.payment-status .icon.fail {
text-shadow: 0px 4px 0px #7a7a7a;
}
.payment-status .status {
font-size: 32rpx;
font-weight: bold;
text-align: center;
margin: 25rpx 0 37rpx 0;
}
.payment-status .wrapper {
border: 1px solid #eee;
margin: 0 30rpx 47rpx 30rpx;
@ -262,16 +301,20 @@
border-left: 0;
border-right: 0;
}
.payment-status .wrapper .item {
font-size: 28rpx;
color: #282828;
}
.payment-status .wrapper .item~.item {
margin-top: 20rpx;
}
.payment-status .wrapper .item .itemCom {
color: #666;
}
.payment-status .returnBnt {
width: 630rpx;
height: 86rpx;
@ -281,17 +324,21 @@
text-align: center;
line-height: 86rpx;
margin: 0 auto 20rpx auto;
&.gColor {
background-color: var(--view-theme);
}
&.s-Color {
color: var(--view-theme);
border: 1px solid var(--view-theme);
}
}
.t-color {
color: var(--view-theme) !important;
}
.coupon-wrapper {
.hd {
display: flex;
@ -300,26 +347,32 @@
margin: 30rpx 0;
color: #999999;
font-size: 24rpx;
.line {
width: 70rpx;
height: 1px;
background: #DCDCDC;
}
.txt {
margin: 0 20rpx;
}
}
.coupon-box {
height: 356rpx;
padding: 0 20rpx;
overflow: hidden;
&.on {
height: auto;
}
.coupon-item {
width: 100%;
margin-bottom: 20rpx;
box-shadow: 0px 2px 10px 0px rgba(0, 0, 0, 0.06);
.left-bg {
display: flex;
align-items: center;
@ -328,21 +381,25 @@
height: 160rpx;
color: #fff;
font-size: 64rpx;
text {
margin-top: 26rpx;
font-size: 36rpx;
}
}
.info {
display: flex;
flex-direction: column;
justify-content: space-between;
margin-left: 20rpx;
padding: 20rpx 0;
.title {
color: #282828;
font-size: 30rpx;
}
.des {
font-size: 24rpx;
color: #999999;
@ -350,6 +407,7 @@
}
}
}
.more {
display: flex;
align-items: center;
@ -357,6 +415,7 @@
padding-top: 24rpx;
font-size: 24rpx;
color: #999999;
.iconfont {
margin-top: 6rpx;
margin-left: 10rpx;

View File

@ -2,8 +2,9 @@
<view :style="viewColor">
<form @submit="formSubmit" report-submit='true'>
<view class="release_content">
<view v-if="community_app_switch.length == 1" class="release_tab acea-row">
<view class="tab_item" v-for="(item, index) in tabList" :key="item.value" :class="{on:tabActive == item.value}" @click="changeTab(item)">
<!-- v-if="community_app_switch.length == 1" -->
<view class="release_tab acea-row">
<view class="tab_item" v-for="(item, index) in tabList" :key="item.value" :class="{on:tabActive == index}" @click="changeTab(index)">
<text class="iconfont" :class="item.icon"></text>{{item.name}}
</view>
</view>
@ -11,7 +12,7 @@
<view class="release_item">
<view class="photo_count">
<view class="input_photo acea-row row-middle">
<block v-if="tabActive == 2">
<block v-if="tabActive == 1">
<view class="pictrue" v-if="formData.video_link">
<image class="video-bg" mode="widthFix" src="../static/images/video_bg.png"></image>
<view class="videoHover" @click="videoshow">
@ -26,7 +27,7 @@
<view><text class='iconfont icon-tianjiashipin'></text></view>
<view class="text">添加视频</view>
</view>
<view v-if="formData.image.length < 1" class="pictrue acea-row row-center-wrapper row-column add" @click.stop="clk">
<view class="pictrue acea-row row-center-wrapper row-column add" @click.stop="clk">
<view><text class='iconfont icon-fengmian'></text></view>
<view class="text">添加封面</view>
</view>
@ -36,7 +37,7 @@
<text class="cover_text" v-if="tabActive == 2">封面</text>
<view class="close_btn" @click="DelPic(index)"><text class="iconfont icon-guanbi4"></text></view>
</view>
<block v-if="tabActive == 1">
<block v-if="tabActive == 0">
<view v-if="formData.image.length < 6" class="pictrue acea-row row-center-wrapper row-column add" @click.stop="clk">
<view><text class='iconfont icon-icon25201'></text></view>
<view class="text">添加图片</view>
@ -186,7 +187,7 @@
// #endif
},
onLoad(options) {
console.log(this.community_app_switch);
console.log(options.type);
this.id = options.id;
this.order_id = options.order_id;
this.tabActive = options.type || 1;
@ -246,9 +247,10 @@
})
},
/*切换tab*/
changeTab(item) {
if(this.tabActive == item.value) return
this.tabActive = item.value
changeTab(index) {
this.tabActive =index
this.formData.image = []
},
/*删除话题*/
@ -467,6 +469,7 @@
});
}
}else{
if (value.image.length == 0) return that.$util.Tips({
title: '请添加话题图片'
});

View File

@ -17,7 +17,7 @@
<text>{{userInfo.focus}}</text>关注
</navigator>
<navigator :url="userInfo.is_self ? '/pages/plantGrass/plant_user_fans/index' : ''" class="item" hover-class="none">
<text>{{userInfo.fans}}</text>粉丝
<text>{{userInfo.fans==null?0:userInfo.fans}}</text>粉丝
</navigator>
<view class="item">
<text>{{userInfo.start}}</text>获赞
@ -37,6 +37,7 @@
</view>
</view>
<view class="main">
<view v-if="userInfo.is_self" class="tab_count">
<text @click.stop="changeTab(0)" :class="tab==0 ? 'on' : ''">作品</text>
<text @click.stop="changeTab(1)" :class="tab==1 ? 'on' : ''">赞过</text>

View File

@ -20,7 +20,8 @@
<block v-if="tabActive == 2">
<view class="pictrue" v-if="formData.video_link">
<view v-if="videoplay">
<video controls id="myvideo" :src="video_link" @fullscreenchange="screenChange"></video>
<video controls id="myvideo" :src="video_link"
@fullscreenchange="screenChange"></video>
</view>
<!--#ifndef APP-PLUS-->
<video class="pictrue" :src="formData.video_link"></video>
@ -35,14 +36,16 @@
</view>
<text class="video-text">点击可预览视频</text>
<view class="close_btn" @click="formData.video_link = ''"><text
<view class="close_btn" @click="delVideo"><text
class="iconfont icon-guanbi4"></text></view>
</view>
<view v-else class="pictrue acea-row row-center-wrapper row-column add" @click="uploadVideo">
<view v-else class="pictrue acea-row row-center-wrapper row-column add"
@click="uploadVideo">
<view><text class='iconfont icon-tianjiashipin'></text></view>
<view class="text">添加视频</view>
</view>
<view v-if="formData.image.length < 1" class="pictrue acea-row row-center-wrapper row-column add"
<view v-if="formData.image.length < 1"
class="pictrue acea-row row-center-wrapper row-column add"
@click.stop="clk">
<view><text class='iconfont icon-fengmian'></text></view>
<view class="text">添加封面</view>
@ -51,17 +54,20 @@
<view class="pictrue" v-for="(item, index) in formData.image" :key="index">
<easy-loadimage mode="widthFix" :image-src="item"></easy-loadimage>
<text class="cover_text" v-if="tabActive == 2">封面</text>
<view class="close_btn" @click="DelPic(index)"><text class="iconfont icon-guanbi4"></text></view>
<view class="close_btn" @click="DelPic(index)"><text
class="iconfont icon-guanbi4"></text></view>
</view>
<block v-if="tabActive == 1">
<view v-if="formData.image.length < 6" class="pictrue acea-row row-center-wrapper row-column add"
<view v-if="formData.image.length < 6"
class="pictrue acea-row row-center-wrapper row-column add"
@click.stop="clk">
<view><text class='iconfont icon-icon25201'></text></view>
<view class="text">添加图片</view>
</view>
</block>
<view v-if="showCd" :ratio="16/9" class="container">
<bt-cropper ref="cropper" :imageSrc="imageSrc" @cropEnd="loadImage" :dWidth="800" :compress="true">
<bt-cropper ref="cropper" :imageSrc="imageSrc" @cropEnd="loadImage"
:dWidth="800" :compress="true">
<!-- 你想插入的内容 -->
<button class="crop_btn" @click="crop">裁切</button>
</bt-cropper>
@ -69,13 +75,15 @@
</view>
</view>
<view class="textarea">
<textarea placeholder='分享使用体验和心得,获得更多点赞和关注哦~(600字以内)' name="comment" placeholder-class='placeholder'
v-model="formData.content" maxlength="600"></textarea>
<textarea placeholder='分享使用体验和心得,获得更多点赞和关注哦~(600字以内)' name="comment"
placeholder-class='placeholder' v-model="formData.content"
maxlength="600"></textarea>
</view>
</view>
<view class="release_item">
<view class='item acea-row row-between-wrapper'>
<view class='name'><text class="iconfont icon-baobeilianjie"></text>添加产品({{productList.length}})</view>
<view class='name'><text
class="iconfont icon-baobeilianjie"></text>添加产品({{productList.length}})</view>
<view class="select">
<view class="select_count" @click.stop="addProduct">
<text v-if="productList.length == 0" class="text">选择产品</text>
@ -118,7 +126,8 @@
<!--#endif-->
</view>
<view class='mask' catchtouchmove="true" :hidden='showVideo==false' @tap="showVideo=false"></view>
<avatar @upload="doUpload" @getName="getImgName" quality="1" ref="avatar" selWidth="250upx" selHeight="250upx">
<avatar @upload="doUpload" @getName="getImgName" quality="1" ref="avatar" selWidth="250upx"
selHeight="250upx">
</avatar>
<!-- 提到的宝贝弹窗 -->
<uni-popup ref="associated" type="bottom">
@ -128,12 +137,16 @@
<uni-popup ref="participateTopic" type="bottom">
<participate-topic @close="close" @getTopic="getTopic"></participate-topic>
</uni-popup>
<authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse"></authorize>
<authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse">
</authorize>
<!-- <m-tabbar native>
<template v-slot:tabbar_index_2>
<view class="custom_style">
<view class="custom_style_icon"></view>
<view class="custom_style_icon" style="margin-top: -50rpx;"></view>
<view class="" style="color: red;">
发布
</view>
</view>
</template>
</m-tabbar> -->
@ -142,16 +155,31 @@
<script>
import mTabbar from '@/components/m-tabbar/m-tabbar.vue'
import { mapGetters } from "vuex";
import {
mapGetters
} from "vuex";
import authorize from '@/components/Authorize';
import avatar from "@/components/yq-avatar/yq-avatar.vue";
import associated from '@/components/associated.vue';
import participateTopic from '@/components/participateTopic.vue';
import { TOKENNAME, HTTP_REQUEST_URL } from '@/config/app.js';
import { createPlantApi, updatePlantApi, plantDetailApi, orderAssociatePlantApi } from "@/api/community";
import { setStorage, getStorage } from '@/libs/uniApi.js';
import {
TOKENNAME,
HTTP_REQUEST_URL
} from '@/config/app.js';
import {
createPlantApi,
updatePlantApi,
plantDetailApi,
orderAssociatePlantApi
} from "@/api/community";
import {
setStorage,
getStorage
} from '@/libs/uniApi.js';
import easyLoadimage from '@/components/easy-loadimage/easy-loadimage.vue';
import { configMap } from '@/utils';
import {
configMap
} from '@/utils';
import store from '@/store';
export default {
components: {
@ -183,9 +211,16 @@
imgName: "",
upload_max: 50,
uploadUrl: `${HTTP_REQUEST_URL}/api/upload/video`,
tabList: [
{ name: '图文', value: 1, icon: 'icon-tuwen' },
{ name: '视频', value: 2, icon: 'icon-shipin' },
tabList: [{
name: '图文',
value: 1,
icon: 'icon-tuwen'
},
{
name: '视频',
value: 2,
icon: 'icon-shipin'
},
],
tabActive: 1,
isPlay: false,
@ -198,7 +233,9 @@
},
computed: {
...mapGetters(['isLogin', 'viewColor', 'uid']),
...configMap({ community_app_switch: [] })
...configMap({
community_app_switch: []
})
},
watch: {
// formData:{
@ -218,6 +255,7 @@
// #endif
},
onLoad(options) {
// uni.hideTabBar()
this.id = options.id;
this.order_id = options.order_id;
@ -253,6 +291,7 @@
this.productList = []
this.topicName = {}
},
methods: {
onLoadFun() {
this.isShowAuth = false;
@ -291,6 +330,18 @@
if (this.tabActive == item.value) return
this.tabActive = item.value
this.formData.image = []
this.productList = []
/**
* 将对象所有值为空
* */
this.formData = {
image: [],
content: "",
topic_id: "",
spu_id: [],
video_link: "",
}
this.topicName = {}
},
/*删除话题*/
deleteTopic() {
@ -442,6 +493,10 @@
let that = this
that.formData.image.splice(index, 1);
},
/*删除视频*/
delVideo() {
this.formData.video_link = '';
},
/*添加宝贝*/
addProduct() {
this.$refs.associated.open();
@ -508,7 +563,9 @@
});
}
if (!value.category_id || !value.topic_id) {
return that.$util.Tips({ title: '请选择话题' })
return that.$util.Tips({
title: '请选择话题'
})
}
if (that.id) {
if (value.relevance.length) {
@ -530,19 +587,22 @@
setTimeout(function() {
if (that.tabActive == 2) {
uni.redirectTo({
uni.navigateTo({
//#ifdef APP
url: '/pages/short_video/appSwiper/index?id=' + res.data.community_id + '&user=1&uid=' +
url: '/pages/short_video/appSwiper/index?id=' + res.data
.community_id + '&user=1&uid=' +
that.uid
//#endif
//#ifndef APP
url: '/pages/short_video/nvueSwiper/index?id=' + res.data.community_id + '&user=1&uid=' +
url: '/pages/short_video/nvueSwiper/index?id=' + res.data
.community_id + '&user=1&uid=' +
that.uid
//#endif
});
} else {
uni.redirectTo({
url: '/pages/plantGrass/plant_detail/index?id=' + res.data.community_id + '&type=' + that
uni.navigateTo({
url: '/pages/plantGrass/plant_detail/index?id=' + res.data
.community_id + '&type=' + that
.tabActive
})
}
@ -574,19 +634,22 @@
setStorage('addPlant', '');
setTimeout(function() {
if (that.tabActive == 2) {
uni.redirectTo({
uni.navigateTo({
//#ifdef APP
url: '/pages/short_video/appSwiper/index?id=' + res.data.community_id + '&user=1&uid=' +
url: '/pages/short_video/appSwiper/index?id=' + res.data
.community_id + '&user=1&uid=' +
that.uid
//#endif
//#ifndef APP
url: '/pages/short_video/nvueSwiper/index?id=' + res.data.community_id + '&user=1&uid=' +
url: '/pages/short_video/nvueSwiper/index?id=' + res.data
.community_id + '&user=1&uid=' +
that.uid
//#endif
});
} else {
uni.redirectTo({
url: '/pages/plantGrass/plant_detail/index?id=' + res.data.community_id + '&type=' + that
uni.navigateTo({
url: '/pages/plantGrass/plant_detail/index?id=' + res.data
.community_id + '&type=' + that
.tabActive
})
}
@ -720,7 +783,6 @@
display: flex;
align-items: center;
justify-content: center;
z-index: 999;
.iconfont {
color: #ffffff;

View File

@ -39,11 +39,6 @@
</view>
<view v-if="item.more_thanFlag">
<view class="multiSpecifica_container_item">
<view class="multiSpecifica_container_item_label flex-start">库存</view>
<view class="multiSpecifica_container_item_value"><input v-model="item.stock" type="number" placeholder="请填写商品库存" /></view>
</view>
<view class="multiSpecifica_container_item">
<view class="multiSpecifica_container_item_label flex-start">商品编号</view>
<view class="multiSpecifica_container_item_value"><input v-model="item.bar_code" type="text" placeholder="请填写商品编号" /></view>
@ -112,12 +107,6 @@
<view class="changePopup_container_content_item_label">原价</view>
<view class="changePopup_container_content_item_value"><input v-model="batchData.ot_price" type="number" placeholder="0.00" /></view>
</view>
<view class="changePopup_container_content_item">
<view class="changePopup_container_content_item_label">库存</view>
<view class="changePopup_container_content_item_value"><input v-model="batchData.stock" type="number" placeholder="0.00" /></view>
</view>
<view class="popup_moreThan" @click="popupOpenModel = !popupOpenModel" v-if="!popupOpenModel">
<text>展开</text>
<text class="iconfont">&#xe8ca;</text>
@ -182,7 +171,6 @@ export default {
price: '', //
cost: '', //
ot_price: '', //
stock: '', //
bar_code: '', //
weight: '', //
volume: '', //
@ -363,7 +351,6 @@ export default {
price: 0,
cost: 0,
ot_price: 0,
stock: 0,
bar_code: '',
weight: 0,
volume: 0,
@ -397,7 +384,6 @@ export default {
price: 0,
cost: 0,
ot_price: 0,
stock: 0,
bar_code: '',
weight: 0,
volume: 0,

View File

@ -50,10 +50,39 @@
<view class="video_list">
<view class="video_list_item photo" v-if="addGoodsSecoundData.video_link">
<view class="jiao" @click="deleteImage()">
<!-- video标签在app端层级过高 -->
<!--#ifndef APP-PLUS-->
<video :src="addGoodsSecoundData.video_link"></video>
<!--#endif-->
<!--#ifdef APP-PLUS-->
<img src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/kk/luzhou/static4/3/video_bg.png" style=" width:150rpx" ></img>
<!--#endif-->
<image src="../static/images/close.png" mode="widthFix"></image>
</view>
<!--#ifndef APP-PLUS-->
<view style="position: absolute;">
<view class="videoHover" @click="videoshow">
</view>
<text class="video-text">点击可预览视频</text>
</view>
<!--#endif-->
<!--#ifdef APP-PLUS-->
<view class='preview_video'>
<view class="videoHover" @click="videoshow">
</view>
<text class="video-text">点击可预览视频</text>
</view>
<!--#endif-->
</view>
<view class="photo" @click="uploadVideo" v-else>
<view>
<image src="../static/images/creamer.png" mode="widthFix"></image>
@ -63,7 +92,17 @@
</view>
</view>
</view>
<view v-if="showVideo" class="video-count">
<!--#ifndef APP-PLUS-->
<video id="myVideo" class="videoLink" autoplay loop muted :src="addGoodsSecoundData.video_link"></video>
<!--#endif-->
<!--#ifdef APP-PLUS-->
<video id="myVideo" class="videoLink" autoplay loop
:src='addGoodsSecoundData.video_link && (addGoodsSecoundData.video_link.substring(0,4) == "http" || addGoodsSecoundData.video_link.substring(0,5) == "https") ?addGoodsSecoundData.video_link : "http:" + addGoodsSecoundData.video_link'></video>
<!--#endif-->
</view>
<view class='mask' catchtouchmove="true" :hidden='showVideo==false' @tap="showVideo=false"></view>
<view class="handle dobuButton">
<view class="handle_button margin_right" @click="lastStep">上一步</view>
<view class="handle_button" @click="submitCreatedGoods">提交</view>
@ -109,6 +148,7 @@
},
data() {
return {
showVideo:false,
disModel: false,
upload_max: 10,
uploadUrl: `${HTTP_REQUEST_URL}/api/upload/video`,
@ -144,6 +184,16 @@
}
},
methods: {
videoshow() {
this.showVideo = true
this.videoContext = uni.createVideoContext('myVideo', this);
this.$nextTick(() => {
this.videoContext.play();
})
// this.video_link = this.formData.video_link;
// this.videoContext.requestFullScreen({ direction: 90 });
// this.videoContext.play(); this.videoplay = true;
},
initData() {
let editGoodsDetils = {};
if (getStorage('goodsDis')) {
@ -272,6 +322,8 @@
uni.chooseVideo({
sourceType: ['camera', 'album'],
success: res => {
console.log(res)
if (Math.ceil(res.size / 1024) < this.upload_max * 1024) {
uni.uploadFile({
url: this.uploadUrl, //
@ -303,9 +355,11 @@
}
},
fail: err => {
uni.showModal({
content: JSON.stringify(err)
});
//
// uni.showModal({
// content: JSON.stringify(err)
// });
console.log(err)
}
});
},
@ -359,7 +413,32 @@
}
}
}
.videoHover {
width: 180rpx;
height: 180rpx;
display: flex;
align-items: center;
justify-content: center;
position: absolute;
top: 0;
left: 0;
z-index: 10;
view {
width: 50rpx;
height: 50rpx;
background: #000000;
border-radius: 50rpx;
display: flex;
align-items: center;
justify-content: center;
.iconfont {
color: #ffffff;
font-size: 21rpx;
}
}
}
.photo {
border: 1px solid #dddddd;
opacity: 1;
@ -402,7 +481,10 @@
height: 150rpx;
}
}
.preview_video{
position: absolute;
}
.container_input {
background: #fff;
padding: 0 20rpx;
@ -521,7 +603,24 @@
.marginTop_none {
margin-top: 0;
}
.video-count {
position: fixed;
width: 600rpx;
height: 500rpx;
top: 50%;
left: 50%;
margin-left: -300rpx;
margin-top: -250rpx;
z-index: 100;
display: flex;
align-items: center;
justify-content: center;
.videoLink {
width: 600rpx;
height: 500rpx;
}
}
// .writeBg {
// background: #fff;
// }

View File

@ -26,7 +26,6 @@
price: '', //
cost: '', //
ot_price: '', //
stock: '', //
bar_code: '', //
weight: '', //
volume: '', //
@ -56,13 +55,6 @@
type: 'digit',
holder: '请填写原价',
model: 'ot_price'
},
{
id: 4,
label: '库存',
type: 'number',
holder: '请填写库存',
model: 'stock'
}
],
moreThanList: [

View File

@ -8,7 +8,7 @@
<view class="text flex_a_c"><i class="iconfont icon-xinghao"></i>上传店铺背景图</view>
<block v-if="images[0].img">
<u--image :showLoading="true" :src="images[0].img" width="388px" height="210.53rpx" radius="4px"
@click="delImg(0)" mode="aspectFill"></u--image>
@click="delImg(0)" mode="aspectFit"></u--image>
</block>
<view v-else class="upload" @click="seleckImage(0)">
<view class="iconfont icon-tupian1"></view>
@ -19,8 +19,8 @@
<view class="avatar_box">
<view class="text flex_a_c"><i class="iconfont icon-xinghao"></i>上传店铺头像</view>
<block v-if="images[1].img">
<u--image :showLoading="true" :src="images[1].img" width="210.53rpx" height="210.53rpx" radius="4px"
@click="delImg(1)" mode="aspectFill"></u--image>
<u--image :showLoading="true" :src="images[1].img" width="210.53rpx" height="210.53rpx"
radius="4px" @click="delImg(1)" mode="aspectFit"></u--image>
</block>
<view v-else class="avatar_img" @click="seleckImage(1)">
<view class="iconfont icon-tupian1"></view>
@ -30,8 +30,8 @@
<view class="zizhi_box">
<view class="text">店铺资质</view>
<block v-if="images[3].img">
<u--image :showLoading="true" :src="images[3].img" width="382.46rpx" height="210.53rpx" radius="4px"
@click="delImg(3)"></u--image>
<u--image :showLoading="true" :src="images[3].img" width="382.46rpx" height="210.53rpx"
radius="4px" @click="delImg(3)"></u--image>
</block>
<view v-else class="zizhi_img" @click="seleckImage(3)">
<view class="iconfont icon-tupian1"></view>
@ -54,7 +54,7 @@
<view class="street_bg">
<view class="text flex_a_c"> <i class="iconfont icon-xinghao"></i> 店铺街背景图</view>
<block v-if="images[2].img">
<u--image :showLoading="true" :src="images[2].img" width="388px" height="210.53rpx" radius="4px"
<u--image :showLoading="true" :src="images[2].img" width="360px" height="210.53rpx" radius="4px"
@click="delImg(2)"></u--image>
</block>
<view v-else class="street_img flex_a_c" @click="seleckImage(2)">
@ -107,9 +107,11 @@
<view class="sub_title flex_a_c"><i class="iconfont icon-xinghao"></i>店铺营业时间:</view>
<view class="bus_time flex_a_c">
<view class="select" @click="beginTimeShow = true">{{ mer_take_time[0] ? mer_take_time[0] : '选择开始时间' }}</view>
<view class="select" @click="beginTimeShow = true">
{{ mer_take_time[0] ? mer_take_time[0] : '选择开始时间' }}</view>
<view class="select" @click="overTimeShow = true">{{ mer_take_time[1] ? mer_take_time[1] : '选择结束时间' }}</view>
<view class="select" @click="overTimeShow = true">
{{ mer_take_time[1] ? mer_take_time[1] : '选择结束时间' }}</view>
</view>
</block>
</view>
@ -118,6 +120,10 @@
<view class="headline">
<view class="text flex_a_c">商户信息配置</view>
</view>
<view class="item_cell flex_a_c">
<view class="sub_title flex_a_c"><i class="iconfont icon-xinghao"></i>商户名称</view>
<input class="com_input" type="text" v-model="mer_name" disabled placeholder="输入商户名称">
</view>
<view class="item_cell flex_a_c">
<view class="sub_title flex_a_c"><i class="iconfont icon-xinghao"></i>商户简介</view>
<input class="com_input" type="text" v-model="intro" placeholder="输入商户简介">
@ -126,6 +132,21 @@
<view class="sub_title flex_a_c"><i class="iconfont icon-xinghao"></i>客服电话</view>
<input class="com_input" type="number" v-model="servicePhone" placeholder="输入客服电话">
</view>
<view class="item_cell flex_a_c" v-if="type_code!='TypeFamousSpecialties'||type_code!='TypeLocalCuisine'||type_code!='TypeFeaturedCultural'" >
<view class="sub_title flex_a_c"><i class="iconfont icon-xinghao" v-if="credit_buy"></i>开启先货后款</view>
<u-switch v-model="credit_buy" @change="change"></u-switch>
</view>
<view class="item_cell flex_a_c" v-if="credit_buy">
<view class="sub_title flex_a_c"><i class="iconfont icon-xinghao"></i>先货后款结算周期</view>
<input type="number" v-model="settle_cycle" placeholder="请输入 /周期单位为:天">
</view>
<view class="remarks" v-if="credit_buy">*周期结算时间范围为:15~90 周期单位为:</view>
<view class="item_cell flex_a_c" v-if="credit_buy">
<view class="sub_title flex_a_c"><i class="iconfont icon-xinghao"></i>先货后款结算利率</view>
<input type="number" maxlength="5" v-model="interest_rate" placeholder="请输入 /利率单位为: %">
</view>
<view class="remarks">*利率结算范围为:0.01 ~ 0.1 利率单位为:%</view>
<!-- <view class="item_cell">
<view class="if_btn flex_a_c_j_sb">
<text class="sub_title">是否开启商户</text>
@ -134,22 +155,32 @@
<text style="color: #CCCCCC;">开启后店铺即可展示在移动端</text>
</view> -->
</view>
<button class="submit_btn l_center" @click="postMerchantUpdata">提交审核</button>
<u-datetime-picker :show="beginTimeShow" v-model="mer_take_time[0]" mode="time" @close="beginTimeShow = false"
:closeOnClickOverlay="true" @cancel="beginTimeShow = false" @confirm="beginTimeShow = false"></u-datetime-picker>
:closeOnClickOverlay="true" @cancel="beginTimeShow = false"
@confirm="beginTimeShow = false"></u-datetime-picker>
<u-datetime-picker :show="overTimeShow" v-model="mer_take_time[1]" mode="time" @close="overTimeShow = false"
:closeOnClickOverlay="true" @cancel="overTimeShow = false" @confirm="overTimeShow = false"></u-datetime-picker>
:closeOnClickOverlay="true" @cancel="overTimeShow = false"
@confirm="overTimeShow = false"></u-datetime-picker>
</view>
</template>
<script>
import { Toast } from '@/libs/uniApi.js'
import { merchantUpdateAPI, merchantInfoAPI } from "@/api/product"
import { uploads } from '@/api/upload.js'
import {
Toast
} from '@/libs/uniApi.js'
import {
merchantUpdateAPI,
merchantInfoAPI
} from "@/api/product"
import {
uploads
} from '@/api/upload.js'
export default {
data() {
return {
@ -170,7 +201,15 @@
text: '闪光强烈'
}
],
images: [{ img: '' }, { img: '' }, { img: '' }, { img: '' }],
images: [{
img: ''
}, {
img: ''
}, {
img: ''
}, {
img: ''
}],
storeBg: '',
check: {
ziti: '1',
@ -224,7 +263,12 @@
overTimeShow: false,
mer_address: '',
id: '',
mer_certificate: ''
mer_certificate: '',
credit_buy: false, //
interest_rate: '', //
settle_cycle: '', //
mer_name:'',
type_code:''
}
},
onLoad(e) {
@ -234,7 +278,9 @@
onShow() {},
methods: {
getMerchantInfo(id) {
merchantInfoAPI({ id }).then(res => {
merchantInfoAPI({
id
}).then(res => {
console.log(res);
this.images[0].img = res.data.mer_banner
this.images[1].img = res.data.mer_avatar
@ -252,12 +298,26 @@
res.data.mer_take_day.forEach((item, i) => {
this.dateWeek[Number(item) - 1].isCheck = true
})
this.type_code= res.data.type_code
this.mer_take_time = res.data.mer_take_time
this.intro = res.data.mer_info
this.cruxText = res.data.mer_keyword
this.mer_name= res.data.mer_name
this.servicePhone = res.data.service_phone
this.mer_address = res.data.mer_address
this.merState = res.data.mer_state === 1 ? true : false
this.credit_buy = res.data.credit_buy === 1 ? true : false
if (res.data.settle_cycle == 0) {
this.settle_cycle = ''
} else {
this.settle_cycle = res.data.settle_cycle
}
if (res.data.interest_rate == 0) {
this.interest_rate = ''
} else {
this.interest_rate = res.data.interest_rate
}
// console.log('res', res.data);
}).catch(err => {
// console.log('err', err);
@ -266,6 +326,11 @@
checkboxChange(val) {
this.delivery_way = val.detail.value
},
//
change(e) {
this.credit_buy = e
console.log(e);
},
//
sel(item, i) {
if (item.isCheck == false) {
@ -287,6 +352,16 @@
})
},
submitData() {
if (this.settle_cycle < 15) {
this.settle_cycle = 15
} else if (this.settle_cycle > 90) {
this.settle_cycle = 90
}
if (this.interest_rate < 0.01) {
this.interest_rate = 0.01
} else if (this.interest_rate > 0.1) {
this.interest_rate = 0.1
}
let data = {
mer_banner: this.images[0].img,
mer_avatar: this.images[1].img,
@ -308,7 +383,10 @@
mer_state: this.merState ? '1' : '0',
type: '2',
uploadedqualifications: '',
id: this.id
id: this.id,
credit_buy: this.credit_buy,
settle_cycle: this.settle_cycle,
interest_rate: this.interest_rate
}
merchantUpdateAPI(data).then(res => {
Toast(res.message)
@ -325,12 +403,14 @@
})
},
selfLocation() {
uni.getLocation({
type: 'gcj02',
type: 'wgs84',
success: (res) => {
// console.log(res);
this.latitude = res.latitude.toString();
this.longitude = res.longitude.toString();
this.longLati = `${res.longitude},${res.longitude}`
this.longLati = `${res.latitude},${res.longitude}`
},
fail: (err) => {
Toast(err)
@ -345,7 +425,9 @@
sourceType: ['album', 'camera'],
success: function(res) {
console.log(res);
uni.showLoading({ title: '上传中...' })
uni.showLoading({
title: '上传中...'
})
uploads(res.tempFilePaths[0], 'img').then(res => {
that.images[i].img = res
uni.hideLoading()
@ -555,6 +637,12 @@
color: #CCCCCC;
}
.remarks {
margin-left: 20px;
font-size: 24.56rpx;
color: #CCCCCC;
}
.long_lat {
margin: 31.58rpx 0;
width: 100%;

View File

@ -9,27 +9,32 @@
<swiper-item :class="{ active: 0 == swiperCur }">
<view class="slide-navigator">
<view class="item" hover-class='none' @click="jumpAddGoods">
<image mode='widthFix' class="image" src="../static/images/product_add.png"></image>
<image mode='widthFix' class="image" src="../static/images/product_add.png">
</image>
<text class="text">添加商品</text>
</view>
<navigator class="item" :url="`/pages/product/goodsOnSale/index?mer_id=${mer_id}&type=1`"
hover-class='none'>
<image mode='widthFix' class="image" src="../static/images/product_sales.png"></image>
<image mode='widthFix' class="image" src="../static/images/product_sales.png">
</image>
<text class="text">在售商品</text>
</navigator>
<navigator class="item" :url="`/pages/product/goodsOnSale/index?mer_id=${mer_id}&type=3`"
hover-class='none'>
<image mode='widthFix' class="image" src="../static/images/product_out.png"></image>
<image mode='widthFix' class="image" src="../static/images/product_out.png">
</image>
<text class="text">售罄商品</text>
</navigator>
<navigator class="item" :url="`/pages/product/goodsOnSale/index?mer_id=${mer_id}&type=5`"
hover-class='none'>
<image mode='widthFix' class="image" src="../static/images/product_recycle.png"></image>
<image mode='widthFix' class="image" src="../static/images/product_recycle.png">
</image>
<text class="text">回收站</text>
</navigator>
<navigator class="item" :url="`/pages/product/storeClassification/index?mer_id=${mer_id}`"
hover-class='none'>
<image mode='widthFix' class="image" src="../static/images/product_cate.png"></image>
<image mode='widthFix' class="image" src="../static/images/product_cate.png">
</image>
<text class="text">店铺分类</text>
</navigator>
</view>
@ -38,7 +43,8 @@
<view class="slide-navigator">
<navigator class="item" :url="`/pages/product/addGoods/freightTemplate?mer_id=${mer_id}`"
hover-class='none'>
<image mode='widthFix' class="image" src="../static/images/product_freight.png"></image>
<image mode='widthFix' class="image" src="../static/images/product_freight.png">
</image>
<text class="text">运费模板</text>
</navigator>
<navigator class="item" :url="`/pages/product/addGoods/mulSpecification?mer_id=${mer_id}`"
@ -46,6 +52,12 @@
<image mode='widthFix' class="image" src="../static/images/product_specification.png"></image>
<text class="text">规格模板</text>
</navigator>
<navigator class="item"
:url="`/pages/users/online_warehousing/index?mer_id=${mer_id}&product_id=${data.product_id}&unique=${data.unique}`"
hover-class='none'>
<image mode='widthFix' class="image" src="@/static/images/daoru.png"></image>
<text class="text">商品导入</text>
</navigator>
</view>
</swiper-item>
</block>
@ -75,28 +87,60 @@
<text class='ot_price'>{{item.ot_price}}</text>
</view>
</view>
<view style="position: absolute; top: 10px; right: 10px;">
<!-- 插件无需手动引入直接使用即可 -->
<!-- 里面···可以改为任意东西图片也可以 -->
<!-- 参数$event不可修改否则取不到点击事件详情 -->
<rudon-rowMenuDotDotDot :localdata="options" @change="menuAction($event, item.attrValue)">
. . .
</rudon-rowMenuDotDotDot>
</view>
</view>
<view class="operation acea-row row-between-wrapper">
<view></view>
<view class="acea-row row-middle">
<view v-if="item.is_show == 1 && item.status == 1" class="bnt" @tap.stop="handleShelves(item,0)">下架
</view>
<view v-if="item.is_show == 0 && item.status == 1" class="bnt" @tap.stop="handleShelves(item),1">上架
</view>
<view @click="editGoods(item)" class="bnt">编辑</view>
<navigator :url="'/pages/admin/goods_details/index?product_id='+item.product_id+'&product_type=0'"
class="bnt" hover-class='none'>预览</navigator>
<view class="bnt" v-if="item.is_show == 0" @tap.stop="handleRecycle(item,index)">删除</view>
<view class="bnt" v-if="item.is_show == 0" @tap.stop="handleRecycle(item,index)">删除
</view>
<view class="bnt bnt_recommend" v-if="item.is_show == 1" @tap.stop="handleRecommend(item)">
{{item.is_good ? '取消推荐' : '店铺推荐'}}
</view>
</view>
</view>
</block>
</view>
</view>
<Loading :loaded="loaded" :loading="loading"></Loading>
</view>
<u-popup :show="show" @close="close" mode="center" bgColor='transparent'>
<image src="@/static/images/xianxia.png" mode="widthFix"></image>
<view class="popen">
<h4 v-if="this.on_line==1">线下入库</h4>
<h4 v-else>线上入库</h4>
<view class="guige">
<scroll-view scroll-y="true" class="scroll_y">
<view>
<u-radio-group v-model="checkboxValue1" placement="column" @change="checkboxChange">
<u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in checkboxList1"
@change="radioChange(item)" :key="index" :label="item.sku" :name="item.unique" v-if="item.sku">
</u-radio>
</u-radio-group>
</view>
</scroll-view>
</view>
<view class="shuru" v-if="this.on_line == 1">
数量: <input type="number" v-model="data.number" placeholder="请输入">
</view>
<view class="btn">
<button class="btn_l" @click="close()">取消</button>
<button class="btn_r" @click="creat()">提交</button>
</view>
</view>
</u-popup>
</view>
</template>
@ -114,7 +158,8 @@
productLstApi,
productDeleteApi,
productOffApi,
productRecommendApi
productRecommendApi,
postImport
} from "@/api/product";
import Loading from '@/components/Loading/index.vue';
import {
@ -145,6 +190,32 @@
productList: [],
swiperCur: 0,
circular: true,
attrValue: [],
options: [{
value: '0',
text: '线上入库'
},
{
value: '1',
text: '线下入库'
},
{
value: '2',
text: '预览'
}
],
//线
show: false,
//
checkboxValue1: [],
//
checkboxList1: [],
data: {
product_id: '',
unique: "",
number: 1
},
on_line: ''
}
},
onLoad(options) {
@ -158,7 +229,95 @@
this.getList(this.mer_id);
uni.stopPullDownRefresh()
},
onHide() {
this.show = false
},
methods: {
menuAction(action, rowId) {
//
if (action === '') {
return
}
this.on_line = action
this.checkboxList1 = rowId
console.log(this.on_line);
if (this.checkboxList1.length == 1 && action == 0) {
// this.show = true
navigateTo(1, '/pages/users/online_warehousing/index', {
mer_id: this.mer_id,
product_id: this.data.product_id,
unique: this.data.unique,
});
} else if (this.checkboxList1.length == 1 && action == 1) {
this.show = true
this.data.product_id = this.checkboxList1[0].product_id
this.data.unique = this.checkboxList1[0].unique
console.log(this.data);
} else {
this.show = true
}
if (action == 2) {
uni.navigateTo({
url: `/pages/admin/goods_details/index?product_id=${this.checkboxList1[0].product_id}&product_type=0`
})
}
},
close() {
this.show = false
},
//
creat() {
if (this.on_line == 1) {
if (this.data.number < 1) {
this.show = false
this.$util.Tips({
title: '入库数量不得小于一件'
})
} else {
postImport(this.mer_id, this.data).then(res => {
console.log(res);
this.show = false
this.$util.Tips({
title: res.message
})
this.getList(this.mer_id);
}).catch(err => {
this.show = false
this.$util.Tips({
title: '请选择规格后再次进行入库'
})
})
}
}
if (this.on_line == 0) {
console.log('12');
if (!this.data.product_id) {
this.show = false
this.$util.Tips({
title: '请选择规格'
})
} else {
navigateTo(1, '/pages/users/online_warehousing/index', {
mer_id: this.mer_id,
product_id: this.data.product_id,
unique: this.data.unique,
});
}
}
},
//
checkboxChange(n) {
this.data.unique = n
console.log(n);
},
radioChange(n) {
this.data.product_id = n.product_id
console.log(this.data);
},
//
jumpAddGoods() {
const data = getStorage('addGoodsFormData');
@ -172,11 +331,16 @@
}
})
}
navigateTo(1, '/pages/product/addGoods/index', { mer_id: this.mer_id });
navigateTo(1, '/pages/product/addGoods/index', {
mer_id: this.mer_id
});
},
// swiper
swiperChange(e) {
let { current, source } = e.detail;
let {
current,
source
} = e.detail;
if (source === 'touch') {
// source swiperchangeautoplaytouchcurrentbug
this.swiperCur = e.detail.current;
@ -192,6 +356,7 @@
that.loaded = res.data.list.length < that.where.limit;
that.productList.push.apply(that.productList, res.data.list);
that.where.page = that.where.page + 1;
},
error => {
that.$util.Tips({
@ -217,7 +382,10 @@
removeStorage(item);
}
});
navigateTo(1, '/pages/product/addGoods/index', { mer_id: item.mer_id, product_id: item.product_id });
navigateTo(1, '/pages/product/addGoods/index', {
mer_id: item.mer_id,
product_id: item.product_id
});
},
handleRecycle(item, index) {
let that = this;
@ -261,7 +429,9 @@
//
onAndOff(item, status) {
let that = this;
productOffApi(that.mer_id, item.product_id, { status: status }).then((res) => {
productOffApi(that.mer_id, item.product_id, {
status: status
}).then((res) => {
that.$util.Tips({
title: res.message,
icon: 'success'
@ -278,7 +448,9 @@
handleRecommend(item) {
let that = this
let is_good = item.is_good ? 0 : 1
productRecommendApi(that.mer_id, item.product_id, { is_good: is_good }).then((res) => {
productRecommendApi(that.mer_id, item.product_id, {
is_good: is_good
}).then((res) => {
that.$util.Tips({
title: res.message,
icon: 'success'
@ -528,7 +700,7 @@
}
.operation {
padding: 20upx 30upx;
padding: 20upx 10px;
background: #ffffff;
width: 100%;
border-radius: 0 0 10rpx 10rpx;
@ -555,5 +727,91 @@
}
}
}
.acea-row.row-between-wrapper {
justify-content: flex-end;
}
}
.genduo {
display: flex;
justify-content: center;
align-items: center;
border: 1px solid #999999;
border-radius: 10px;
width: 30px;
height: 10px;
.gen_sel {
font-size: 12px
}
}
.popen {
position: absolute;
top: 110px;
width: 100%;
margin: auto;
padding: 10px;
z-index: 0;
h4 {
font-weight: 400;
font-size: 20px;
padding: 5px;
text-align: center;
}
.guige {
margin: 10px 0 10px 20px;
.scroll_y {
max-height: 150px;
}
}
.guiges {
height: 100px;
margin: 10px 0 10px 20px;
}
.shuru {
display: flex;
justify-content: flex-start;
align-items: center;
padding: 5px;
margin-left: 20px;
input {
background: #F5F5F5;
border-radius: 8px 8px 8px 8px;
border: 1px solid #999999;
padding-left: 3px;
margin-left: 3px;
}
}
.btn {
display: flex;
justify-content: flex-start;
align-items: center;
margin: 10px;
.btn_l {
padding: 5px;
width: 100px;
border-radius: 4px;
}
.btn_r {
width: 100px;
padding: 5px;
border-radius: 4px;
background: linear-gradient(180deg, #F98649 0%, #F34E45 100%);
border-radius: 27px 27px 27px 27px;
color: white;
}
}
}
</style>

View File

@ -0,0 +1,456 @@
<template>
<view class="content">
<view class="content_top">
<view class="content_top-one">
<view class="content_symbol">
<image :src="listobj.mer_avatar" mode="aspectFit"></image>
</view>
<view class="content_title" >
<view class="title_one">
{{listobj.mer_name}}
</view>
<view class="title_two">
{{listobj.care_count>0?listobj.care_count:0}}人关注 {{listobj.sales>0?listobj.sales:0}}销量
</view>
</view>
<view class="content_titimg">
<image src="@/static/images/sym.png" mode="aspectFit"></image>
</view>
</view>
<view view class="content_top-two">
<view class="price">
{{listobj.total_price}}
<!-- <input type="text" :value="listobj.total_price" v-model="listobj.total_price" /> -->
</view>
<view class="top-two_content">
<textarea :value="listobj.content" placeholder="" style="height: auto;" />
</view>
<view class="top-two_img">
<view class="" v-for="(item,index) in listobj.image">
<image :src="item" mode=""></image>
</view>
</view>
</view>
</view>
<view class="content_middle">
<view class="middle-one" v-for="(item,b) in listobj.resale" :key='b'>
<view class="midding-img">
<image :src="item.image" mode=""></image>
</view>
<view class="middle-one_text">
<view class="one_text_a">
{{item.store_name}}
</view>
<view class="one_text_b">
{{item.price}}
</view>
<view class="one_text_c">
<!-- <view class="">
采购价:{{item.price}}
</view> -->
<view class="">
数量: {{item.number}}
</view>
</view>
</view>
</view>
</view>
<view class="content_enter">
<view class="content_enter-one">
类型
</view>
<view class="content_enter-two" v-if="listobj.resale_type==1">
调货
</view>
<view class="content_enter-two" v-else>
打折
</view>
</view>
<view class="content_bootm" v-if='listobj.resale'>
<view class="content_bootm_txt" v-if='listobj.resale.length>0'>
查看TA提到的宝贝({{listobj.resale.length}})
</view>
<view class="content_bootm_one" v-for="(items,i) in listobj.resale" :key='i' @click="Merchbaby(items)">
<view class="bootm_oneimg">
<image :src="items.image" mode=""></image>
</view>
<view class="" >
{{items.store_name}}
</view>
</view>
</view>
</view>
</template>
<script>
import {
getResaleid
} from '@/api/release.js'
export default {
data() {
return {
detail: {},
listobj: {},
}
},
onLoad(e) {
if (e) {
this.detail = e.key;
this.shopdetil(this.detail)
}
},
methods: {
//
shopdetil(id) {
getResaleid(id).then(res => {
if (res.data.status = 200) {
this.listobj = res.data
}
})
},
//
Merchbaby(item) {
uni.navigateTo({
url: `/pages/goods_details/index?id=${item.product_id}`
})
},
prouctOrder() {
getCommunityaddCart(this.listobj).then(res => {
if (res.status == 200) {
uni.navigateTo({
url: '/pages/users/order_confirm/index?cartId=' + res.data.cart_id.toString()
})
}
}).catch((err) => {
console.log(err)
})
}
}
}
</script>
<style lang="scss" scoped>
.content {}
.content_top {
padding: 21rpx 28rpx;
background: #FFFFFF;
.content_top-one {
display: flex;
border-bottom: 1rpx solid #CCCCCC;
.content_symbol {
width: 81rpx;
height: 81rpx;
image {
width: 81rpx;
height: 81rpx;
}
margin-bottom: 21rpx;
}
.content_title {
margin-left: 21rpx;
.title_one {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
}
.title_two {
font-size: 25rpx;
font-family: PingFang SC;
font-weight: 400;
color: #999999;
}
}
.content_titimg {
width: 116rpx;
height: 64rpx;
margin-top: -10rpx;
margin-left: 10rpx;
image {
width: 136rpx;
height: 64rpx;
}
}
}
.content_top-two {
.price {
display: flex;
margin-top: 21rpx;
font-size: 46rpx;
font-family: PingFang SC;
font-weight: 500;
color: #F84221;
input {
font-size: 46rpx;
font-family: PingFang SC;
font-weight: 500;
color: #F84221
}
}
.top-two_content {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 400;
color: #333333;
margin-top: 21rpx;
margin-bottom: 21rpx;
}
.top-two_img {
display: flex;
view {
width: 217rpx;
height: 217rpx;
border-radius: 14rpx 14rpx 14rpx 14rpx;
margin-right: 15rpx;
}
image {
width: 217rpx;
height: 217rpx;
border-radius: 14rpx 14rpx 14rpx 14rpx;
}
}
}
}
.content_middle {
.middle-one {
background-color: #FFFFFF;
display: flex;
margin-top: 28rpx;
padding: 21rpx 0;
.midding-img {
width: 176rpx;
height: 176rpx;
margin-left: 24rpx;
margin-right: 21rpx;
image {
width: 176rpx;
height: 176rpx;
}
}
.middle-one_text {
.one_text_a {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
}
.one_text_b {
font-size: 35rpx;
font-family: PingFang SC;
font-weight: 500;
color: #F84221;
margin-top: 11rpx;
}
.one_text_c {
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #999999;
margin-top: 12rpx;
display: flex;
justify-content: space-between;
margin-right: 50rpx;
}
}
}
}
.content_enter {
height: 89rpx;
line-height: 89rpx;
background: #FFFFFF;
opacity: 1;
margin-top: 28rpx;
display: flex;
justify-content: space-between;
padding: 0 20rpx;
.content_enter-one {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 400;
color: #333333;
}
.content_enter-two {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 400;
color: #F84221;
}
}
.content_bootm {
margin-bottom: 150rpx;
.content_bootm_txt {
margin-top: 42rpx;
padding-left: 28rpx;
}
.content_bootm_one {
height: 112rpx;
line-height: 112rpx;
padding-right: 28rpx;
background: #FFFFFF;
display: flex;
margin-top: 21rpx;
.bootm_oneimg {
width: 80rpx;
height: 80rpx;
margin: auto 0;
margin-left: 28rpx;
margin-right: 21rpx;
image {
width: 80rpx;
height: 80rpx;
}
}
}
}
.pay {
width: 100%;
height: 121rpx;
line-height: 121rpx;
background: #FFFFFF;
position: absolute;
bottom: 0;
position: fixed;
display: flex;
justify-content: space-between;
padding: 0 28rpx;
.pay_tilte-a {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
span {
font-size: 42rpx;
font-family: PingFang SC;
font-weight: 500;
color: #F84221;
}
}
.pay_tilte-b {
width: 238rpx;
height: 74rpx;
line-height: 74rpx;
text-align: center;
background: linear-gradient(90deg, #F98649 0%, #F34E45 100%);
border-radius: 37rpx 37rpx 37rpx 37rpx;
opacity: 1;
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 500;
color: #FFFFFF;
margin: auto 0;
}
}
.domain {
width: 100%;
height: 121rpx;
line-height: 121rpx;
background: #FFFFFF;
position: absolute;
bottom: 0;
position: fixed;
display: flex;
justify-content: space-between;
padding: 0 28rpx;
.domain_tilte-a {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
span {
font-size: 42rpx;
font-family: PingFang SC;
font-weight: 500;
color: #F84221;
}
}
.domain_tilte-b {
font-size: 32rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #666666;
}
.domain_tilte-c {
width: 238rpx;
height: 74rpx;
line-height: 74rpx;
text-align: center;
background: linear-gradient(90deg, #F98649 0%, #F34E45 100%);
border-radius: 37rpx 37rpx 37rpx 37rpx;
opacity: 1;
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 500;
color: #FFFFFF;
margin: auto 0;
}
}
</style>

View File

@ -0,0 +1,588 @@
<template>
<view class="content">
<view class="content_top">
<!--选项卡滑动切换-->
<cxNavTitle :tabs="tabs" :activeItem="activeItem" :show="false" @tabClick="tabClick"></cxNavTitle>
</view>
<!-- 审核通过 打折有拒绝同意功能 调货不需要功能 -->
<view class="content-content">
<view class="" v-for="(item,i) in orderList" :key='i'
style=" border-radius: 14rpx 14rpx 14rpx 14rpx;margin-bottom: 23rpx;background-color: #FFFFFF; padding: 28rpx 46rpx;">
<view @click="detail(item)"
:class="tabTitle=='tabTwo'?'content-onea':'content-one'&&(tabTitle=='tabFive'&&item.resale_type==1)?'content-onea':'content-one'">
<view class="content-one-img">
<image :src="item.image.indexOf(',')>-1?item.image.split(',')[0]:item.image" mode="aspectFit">
</image>
</view>
<view class="content-one-txt" v-if="tabTitle=='tabFive'">
<view class="one-txt-a">
{{item.title}}
</view>
<view class="one-txt-b" style="margin-top: 5px;">
<view class="txt-b-a">
{{item.total_price}}
</view>
<view class="txt-b-b"
style="font-size: 28rpx;font-family: SF Pro Display-Regular, SF Pro Display;font-weight: 400;color: #999999;">
结算价:{{item.discount_price}}
</view>
</view>
<view class="txt-b-b" style="margin-top: 5px;" v-if="item.resale_type==1">
类型:调货
</view>
<view class="txt-b-b" style="margin-top: 5px;" v-else>
类型:打折
</view>
</view>
<view class="content-one-txt" v-else>
<view class="one-txt-a">
{{item.title}}
</view>
<view class="one-txt-b">
<view class="txt-b-a">
{{item.discount_price}}
</view>
<view class="txt-b-b" v-if="item.resale_type==1">
类型:调货
</view>
<view class="txt-b-b" v-else>
类型:打折
</view>
</view>
</view>
</view>
<view class="content-two_one" v-if='tabTitle=="tabOne"'>
<view class="content-two-edit" @click="soldEdit(item) ">
编辑
</view>
</view>
<view class="content-two-two" v-if='tabTitle=="tabTwo"'>
<!-- <view class="content-two-delete">
删除
</view>
<view class="content-two-edit">
编辑
</view>
-->
</view>
<view class="content-two-three" v-if='tabTitle=="tabThree"'>
<view class="content-two-delete" @click="pendingDeletion(item)">
删除
</view>
<view class="content-two-edit" @click="editReviewe(item)">
编辑
</view>
</view>
<view class="content-two-four" v-if='tabTitle=="tabFour"'>
<view class="content-two-delete" @click="auditDelete(item)">
删除
</view>
<view class="content-two-edit" @click="auditEdit(item)">
编辑
</view>
</view>
<view class="content-two-five" v-if='tabTitle=="tabFive"&&item.resale_type==2'>
<view class="" v-if="item.mer_status==0">
<view class="content-two-delete" @click="passDelete(item)">
拒绝
</view>
<view class="content-two-agree" @click="passagree(item)">
同意
</view>
</view>
<view class="" v-else>
<view :class="item.mer_status==1?'content-two-deletea':'content-two-delete'"
@click="passDelete(item)" v-if="item.mer_status==1">
拒绝
</view>
<view class="content-two-agree" @click="passagree(item)" v-else>
同意
</view>
</view>
</view>
</view>
</view>
<view v-if="orderList.length == 0 ">
<emptyPage title="暂无订单~"></emptyPage>
</view>
</view>
</template>
<script>
import cxNavTitle from '@/components/cx-navTitle.vue'
import emptyPage from '@/components/emptyPage.vue';
import {
getResaleid,
getResalecheck,
getResaledelete,
getResale
} from '@/api/release.js'
export default {
components: {
cxNavTitle,
emptyPage
},
data() {
return {
activeItem: "tabOne",
tabTitle: "",
orderList: [],
where: {
page: 1,
limit: 10,
status: 1
},
tabs: [{
name: "tabOne",
label: '在售',
value: 1,
},
{
name: "tabTwo",
label: '已售出',
value: 2,
},
{
name: "tabThree",
label: '待审核',
value: 3,
},
{
name: "tabFour",
label: '审核未通过',
value: 4,
},
{
name: "tabFive",
label: '审核通过',
value: 5,
},
],
}
},
onLoad(num) {
this.tabTitle = this.tabs[0].name
if (num.key == '2') {
this.activeItem = 'tabThree',
this.where.status = 3
}
this.orderList = []
this.list()
},
methods: {
tabClick(e) { //
this.activeItem = e.name; //class
this.tabTitle = e.name; //
this.where.status = e.value
this.orderList = []
this.list()
},
list() {
getResale(this.where).then(res => {
if (res.status = 200) {
this.orderList.push(...res.data.list)
}
})
},
//
soldEdit(item) {
if (item.resale_type == 1) {
uni.navigateTo({
url: '/pages/trading_hall/transfer_goods/index?id=' + item.community_id +
'&gtype=' + 'edit'
})
} else {
uni.navigateTo({
url: '/pages/trading_hall/adddiscounts/index?id=' + item.community_id +
'&gtype=' + 'edit'
})
}
},
//
pendingDeletion(item) {
getResaledelete(item.community_id).then(res => {
this.$util.Tips({
title: res.message,
icon: 'success'
})
this.orderList = []
this.list()
this.tabTitle = 'tabThree'
})
},
//
editReviewe(item) {
if (item.resale_type == 1) {
uni.navigateTo({
url: '/pages/trading_hall/transfer_goods/index?id=' + item.community_id +
'&gtype=' + 'edit'
})
} else {
uni.navigateTo({
url: '/pages/trading_hall/adddiscounts/index?id=' + item.community_id +
'&gtype=' + 'edit'
})
}
},
//
auditDelete(item) {
getResaledelete(item.community_id).then(res => {
this.$util.Tips({
title: res.message,
icon: 'success'
})
this.orderList = []
this.list()
this.tabTitle = 'tabFour'
})
},
//
auditEdit(item) {
if (item.resale_type == 1) {
uni.navigateTo({
url: '/pages/trading_hall/transfer_goods/index?id=' + item.community_id +
'&gtype=' + 'edit'
})
} else {
uni.navigateTo({
url: '/pages/trading_hall/adddiscounts/index?id=' + item.community_id +
'&gtype=' + 'edit'
})
}
},
//
passDelete(item) {
getResalecheck(item.community_id, {
"status": 2
}).then(res => {
this.$util.Tips({
title: res.message,
icon: 'success'
})
this.orderList = []
this.list()
this.tabTitle = 'tabFive'
})
},
//
detail(item) {
uni.navigateTo({
url: '/pages/releaseManagement/details/index?key=' + item.community_id
})
},
//
passagree(item) {
getResalecheck(item.community_id, {
"status": 1
}).then(res => {
this.$util.Tips({
title: res.message,
icon: 'success'
})
this.orderList = []
this.list()
this.tabTitle = 'tabFive'
})
}
}
}
</script>
<style lang="scss" scoped>
.content_top {
background-color: #FFFFFF;
}
.content_top {
width: 100%;
}
.content-content {
margin-top: 21rpx;
margin-left: 28rpx;
margin-right: 28rpx;
padding-top: 28rpx;
opacity: 1;
position: relative;
.content-onea {
display: flex;
padding-bottom: 23rpx;
background-color: #FFFFFF;
.content-one-img {
width: 148rpx;
height: 148rpx;
margin-right: 28rpx;
image {
width: 100%;
height: 100%;
}
}
.content-one-txt {
margin-bottom: 23rpx;
.txt-b-a {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
}
.one-txt-b {
display: flex;
margin-top: 30rpx;
.txt-b-a {
font-size: 32rpx;
font-family: SF Pro Display-Medium, SF Pro Display;
font-weight: 500;
color: #F84221;
margin-right: 74rpx;
}
.txt-b-b {
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #333333
}
}
}
}
.content-one {
display: flex;
border-bottom: 1px solid #CCCCCC;
padding-bottom: 23rpx;
.content-one-img {
width: 148rpx;
height: 148rpx;
margin-right: 28rpx;
image {
width: 100%;
height: 100%;
}
}
.content-one-txt {
.txt-b-a {
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
}
.one-txt-b {
display: flex;
margin-top: 30rpx;
.txt-b-a {
font-size: 32rpx;
font-family: SF Pro Display-Medium, SF Pro Display;
font-weight: 500;
color: #F84221;
margin-right: 74rpx;
}
.txt-b-b {
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #333333
}
}
}
}
.content-two_one {
height: 110rpx;
position: relative;
.content-two-edit {
width: 168rpx;
height: 60rpx;
line-height: 60rpx;
text-align: center;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #FFFFFF;
background: linear-gradient(90deg, #F98649 0%, #F34E45 100%);
border-radius: 32rpx 32rpx 32rpx 32rpx;
position: absolute;
right: 28rpx;
bottom: 20rpx;
}
}
.content-two-three {
height: 110rpx;
position: relative;
.content-two-edit {
width: 168rpx;
height: 60rpx;
line-height: 60rpx;
text-align: center;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #FFFFFF;
background: linear-gradient(90deg, #F98649 0%, #F34E45 100%);
border-radius: 32rpx 32rpx 32rpx 32rpx;
position: absolute;
right: 28rpx;
bottom: 23rpx;
}
.content-two-delete {
width: 168rpx;
height: 60rpx;
line-height: 60rpx;
text-align: center;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #999999;
border: 2rpx solid #999999;
position: absolute;
right: 228rpx;
bottom: 23rpx;
border-radius: 32rpx 32rpx 32rpx 32rpx;
}
}
.content-two-four {
height: 110rpx;
position: relative;
.content-two-edit {
width: 168rpx;
height: 60rpx;
line-height: 60rpx;
text-align: center;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #FFFFFF;
background: linear-gradient(90deg, #F98649 0%, #F34E45 100%);
border-radius: 32rpx 32rpx 32rpx 32rpx;
position: absolute;
right: 28rpx;
bottom: 23rpx;
}
.content-two-delete {
width: 168rpx;
height: 60rpx;
line-height: 60rpx;
text-align: center;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #999999;
border: 2rpx solid #999999;
position: absolute;
right: 228rpx;
bottom: 23rpx;
border-radius: 32rpx 32rpx 32rpx 32rpx;
}
}
.content-two-five {
height: 110rpx;
position: relative;
.content-two-agree {
width: 168rpx;
height: 60rpx;
line-height: 60rpx;
text-align: center;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #FFFFFF;
background: linear-gradient(90deg, #F98649 0%, #F34E45 100%);
border-radius: 32rpx 32rpx 32rpx 32rpx;
position: absolute;
right: 28rpx;
bottom: 23rpx;
}
.content-two-deletea {
width: 168rpx;
height: 60rpx;
line-height: 60rpx;
text-align: center;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #999999;
border: 2rpx solid #999999;
position: absolute;
right: 28rpx;
bottom: 23rpx;
border-radius: 32rpx 32rpx 32rpx 32rpx;
}
.content-two-delete {
width: 168rpx;
height: 60rpx;
line-height: 60rpx;
text-align: center;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #999999;
border: 2rpx solid #999999;
position: absolute;
right: 228rpx;
bottom: 23rpx;
border-radius: 32rpx 32rpx 32rpx 32rpx;
}
}
}
</style>

View File

@ -1,5 +1,6 @@
<template>
<view class="container">
<!--
注意:这是 App 所用页面,请勿引入微信小程序或浏览器运行,最好运行在真机
@ -20,7 +21,7 @@
-->
<!-- 头部导航 -->
<view v-if="!isUser" class="header">
<!-- <view v-if="!isUser" class="header" :style="{backgroundColor:currentNav==1?'':'#000'}" >
<view class="items" @click.stop="navTap(2)">
<text class="tName" :class="currentNav==2?'on':''">关注</text>
</view>
@ -30,13 +31,13 @@
<view class="items" @click.stop="navTap(3)">
<text class="tName" :class="currentNav==3?'on':''">列表</text>
</view>
</view>
<view class="noVideo acea-row row-center-wrapper" v-if="!dataList.length && !loadVideo">
</view> -->
<!-- <view class="noVideo acea-row row-center-wrapper" v-if="!dataList.length && !loadVideo">
<view>
<image :src="imgHost+'/static/no-video.png'" class="pictrue"></image>
<text class="tips">暂无短视频内容哦~</text>
</view>
</view>
</view> -->
<view v-if="currentNav !== 3" :style="'width: '+ windowWidth +'px; height: '+ boxStyle.height +'px;'">
<!--
1.这里的 swiper 不是用来控制视频滑动的,而是用来控制左右滑动的,如果不需要的可以改成 view
@ -47,9 +48,9 @@
1Mac按住 option 键,然后点击方法名,即可跳转到方法
2windows按住 Alt 键,然后鼠标左击,即可跳转到方法
-->
<list @loadmore="getData" @scroll="scrolls" :loadmoreoffset="wHeight*1" :show-scrollbar="false" ref="listBox"
:pagingEnabled="true" :scrollable="true">
<!-- 刷新模块 -->
<list @loadmore="getData" @scroll="scrolls" :loadmoreoffset="wHeight*1" :show-scrollbar="false"
ref="listBox" :pagingEnabled="true" :scrollable="true">
<refresh class="refresh" @refresh="onrefresh" @pullingdown="onpullingdown"
:display="refreshing ? 'show' : 'hide'">
<loading style="background-color: #FFFFFF;">
@ -63,7 +64,7 @@
<!-- 用div把视频模组套起来 -->
<div :style="'width: '+ windowWidth +'px; height: '+ boxStyle.height +'px;'">
<!-- <view v-if="Math.abs(k-i)<=1"> -->
<view v-if="max > i">
<view v-if="Math.abs(k-i)<=1">
<view class="root">
<!--
具体视频参数可以参考官方文档
@ -94,15 +95,17 @@
6在 timeupdate 方法里加入if(index == this.k){把里面的加一个总的判断}
3.其他的下面有详解
-->
<video :ref="'item'+i" :id="item.community_id" :loop="true" :autoplay="i == k" :src="item.video_link"
:muted="item.isplay" :enable-progress-gesture="false" :page-gesture="false" :controls="false"
:show-loading="true" :show-fullscreen-btn="false" :show-center-play-btn="false" :style="boxStyle"
<video :ref="'item'+i" :id="item.community_id" :loop="true" :autoplay="i == k"
:src="item.video_link" :muted="item.isplay" :enable-progress-gesture="false"
:page-gesture="false" :controls="false" :show-loading="true"
:show-fullscreen-btn="false" :show-center-play-btn="false" :style="boxStyle"
:object-fit="object_fit" @timeupdate="timeupdate($event,i)"></video>
</view>
<!-- 直接用 view 就行了,一样是可以覆盖原生组件的 -->
<!-- 这个是暂停时出现的图标 -->
<view class="videoHover" @click="tapVideoHover(item.state,$event)" :style="boxStyle">
<image v-if="item.state=='pause'" class="playState" src="../static/img/index/play.png"></image>
<image v-if="item.state=='pause'" class="playState" src="../static/img/index/play.png">
</image>
</view>
<!--审核状态-->
<view v-if="item.status==-1 || item.status==0 || item.status==-2" class="video-status">
@ -137,19 +140,23 @@
</view>
</view>
<view v-if="item.relevance.length > 0 && k==i" class="product">
<scroll-view class="scroll-view" scroll-x="true" style="white-space: nowrap; display: flex;"
scroll-with-animation show-scrollbar="true">
<scroll-view class="scroll-view" scroll-x="true"
style="white-space: nowrap; display: flex;" scroll-with-animation
show-scrollbar="true">
<view class="product-item" v-for="(goods,idx) in item.relevance" :key="idx">
<view v-if="goods.spu" class="item-count acea-row" @click="goDetail(goods.spu)">
<view v-if="goods.spu" class="item-count acea-row"
@click="goDetail(goods.spu)">
<view class="picture">
<image class="image" :src="goods.spu.image"></image>
</view>
<view class="product-text">
<text class="name line1"
v-if="goods.spu && goods.spu.store_name.length>=12">{{goods.spu.store_name.slice(0,12)}}...</text>
<text class="name line1" v-else>{{goods.spu && goods.spu.store_name}}</text>
<text class="name line1"
v-else>{{goods.spu && goods.spu.store_name}}</text>
<view class="product-price">
<view class="price"><text class="sm">¥</text><text class="money">{{goods.spu.price}}</text>
<view class="price"><text class="sm">¥</text><text
class="money">{{goods.spu.price}}</text>
</view>
<text class="buy-btn">购买</text>
</view>
@ -170,30 +177,36 @@
<!-- 1.头像 -->
<navigator v-if="userInfo.uid != item.author.uid" hover-class="none"
:url="'/pages/plantGrass/plant_user/index?id='+item.uid" class="pictrue">
<image class="userAvatar" :src="item.author.avatar || '/static/images/f.png'" mode="aspectFill">
<image class="userAvatar" :src="item.author.avatar || '/static/images/f.png'"
mode="aspectFit">
</image>
<view v-if="!item.is_fans || userInfo.uid == 0" class="guanzhu" @click.stop="followAuthor(item)"><text
<view v-if="!item.is_fans || userInfo.uid == 0" class="guanzhu"
@click.stop="followAuthor(item)"><text
class="iconfont icon-shangpinshuliang-jia">+</text></view>
<view v-else class="yiguanzhu"><text class="iconfont"></text></view>
</navigator>
<!-- 2.点赞 -->
<view @click="cLike(item);" style="margin-top: 5px;" :class="{'likeNumActive':item.relevance_id}">
<image v-if="item.relevance_id" src="../static/img/index/xin.png" style="width: 32px; height: 32px;">
<view @click="cLike(item);" style="margin-top: 5px;"
:class="{'likeNumActive':item.relevance_id}">
<image v-if="item.relevance_id" src="../static/img/index/xin.png"
style="width: 32px; height: 32px;">
</image>
<image v-if="!item.relevance_id" src="../static/img/index/xin-2.png"
style="width: 32px; height: 32px;"></image>
<text class="info-text">{{item.count_start > 0 ? item.count_start : '点赞'}}</text>
</view>
<!-- 3.评论 -->
<view v-if="community_reply_status == 1 && item.status == 1" class="comment" @click="toComment(item,i)"
style="margin-top: 18px;">
<image src="../static/img/index/evaluate.png" style="width: 54rpx; height: 50rpx;"></image>
<view v-if="community_reply_status == 1 && item.status == 1" class="comment"
@click="toComment(item,i)" style="margin-top: 18px;">
<image src="../static/img/index/evaluate.png" style="width: 54rpx; height: 50rpx;">
</image>
<text class="info-text">{{item.count_reply>0 ? item.count_reply : '评论'}}</text>
</view>
<!-- 4.分享 -->
<view v-if="item.status == 1" @click="appShare('WXSceneSession',item.community_id)"
style="margin-top: 17px;">
<image src="../static/img/index/share-fill.png" style="width: 40px; height: 40px;"></image>
<image src="../static/img/index/share-fill.png" style="width: 40px; height: 40px;">
</image>
<text class="info-text">分享</text>
</view>
<!-- 5.自己的视频 -->
@ -216,12 +229,15 @@
<view v-if="showManage" class="manage">
<view class="manage-gou"></view>
<navigator hover-class="none"
:url="'/pages/plantGrass/plant_release/index?id='+item.community_id+'&type=2'" class="items">
<image src="../static/img/index/video-edit.png" style="width: 16px; height: 16px;"></image>
:url="'/pages/plantGrass/plant_release/index?id='+item.community_id+'&type=2'"
class="items">
<image src="../static/img/index/video-edit.png" style="width: 16px; height: 16px;">
</image>
<text class="text">编辑</text>
</navigator>
<view class="items" @click.stop="deleteTopic(item)">
<image src="../static/img/index/video-delete.png" style="width: 16px; height: 16px;"></image>
<image src="../static/img/index/video-delete.png"
style="width: 16px; height: 16px;"></image>
<text class="text">删除</text>
</view>
</view>
@ -232,7 +248,8 @@
-->
<!-- 3.阿里云视频截帧地址https://help.aliyun.com/document_detail/64555.html -->
<image v-if="item.isShowimage == true"
:src="item.src+'?x-oss-process=video/snapshot,t_'+ currenttimes +'000,f_jpg'" mode="aspectFill"
:src="item.src+'?x-oss-process=video/snapshot,t_'+ currenttimes +'000,f_jpg'"
mode="aspectFit"
:style="'width: 120upx; height: 160upx; border-radius: 10upx; position: absolute; bottom: '+ (ProgressBarBottom + 160) +'upx; left: '+ (currentPositions - 15) +'px;'">
</image>
</view>
@ -241,22 +258,25 @@
</list>
</view>
<waterfall class="video-list" v-if="currentNav === 3" column-gap="6" column-count="2" :show-scrollbar="false" @loadmore="getGoods()"
column-width="195px" :style="'width: '+ windowWidth +'px; height: '+ boxStyle.height +'px;'" >
<waterfall class="video-list" v-if="currentNav === 3" column-gap="6" column-count="2" :show-scrollbar="false"
@loadmore="getGoods()" column-width="195px"
:style="'width: '+ windowWidth +'px; height: '+ boxStyle.height +'px;'">
<cell class="goods_item" style="margin-bottom: 10px;" v-for="(item,index) in cateGoods" :key="item.uid"
@click="gogogo(item)">
<image class="goods_img" :src="item.image[0]" mode="aspectFill"></image>
<image class="goods_img" :src="item.image[0]" mode="aspectFit"></image>
<view class="botm">
<text class="title">{{item.title}}</text>
<view class="goods_info">
<view class="l_info">
<image :src="(item.author && item.author.avatar) || '/static/images/f.png'" mode="aspectFill"
<image :src="(item.author && item.author.avatar) || '/static/images/f.png'" mode="aspectFit"
class="g_img"></image>
<text class="g_name">{{item.author && item.author.nickname}}</text>
</view>
<view class="nice_box flex_a_c" @click.stop="giveStart(item)">
<text class="iconfont" :class="item.relevance_id ? 'icon-shoucang1' : 'icon-dianzan'"></text>
<text class="iconfont"
:class="item.relevance_id ? 'icon-shoucang1' : 'icon-dianzan'"></text>
<text class="collect">{{item.count_start}}</text>
</view>
</view>
</view>
@ -307,9 +327,15 @@
<script>
const app = getApp();
let sysHeight = uni.getSystemInfoSync().statusBarHeight
import { toLogin } from '@/libs/login.js';
import { mapGetters } from 'vuex';
import { configMap } from '@/utils';
import {
toLogin
} from '@/libs/login.js';
import {
mapGetters
} from 'vuex';
import {
configMap
} from '@/utils';
/*
引入评论组件
*/
@ -317,6 +343,7 @@
import mentioned from '../components/mentioned/mentioned.vue'
import authorize from '@/components/Authorize';
import {
deoList,
videoList,
myVideoList,
graphicStartApi,
@ -325,10 +352,17 @@
focusArticleLst,
graphicLstApi
} from '@/api/community.js';
import { HTTP_REQUEST_URL } from '@/config/app.js';
import { getUserInfo } from '@/api/user.js';
import {
HTTP_REQUEST_URL
} from '@/config/app.js';
import {
getUserInfo
} from '@/api/user.js';
export default {
computed: configMap({ statusBarHeight: 0, community_reply_status: 0 }, mapGetters(['isLogin', 'uid'])),
computed: configMap({
statusBarHeight: 0,
community_reply_status: 0
}, mapGetters(['isLogin', 'uid'])),
data() {
return {
imgHost: HTTP_REQUEST_URL,
@ -367,7 +401,7 @@
newTime: 0, //跟手滑动后的最新时间💗
timeNumber: 0, //🌟💗
ProgressBarBottom: 20, //进度条离底部的距离💗
object_fit: 'contain', //视频样式默认包含🌟💗
object_fit: 'cover', //视频样式默认包含🌟💗
mode: 'aspectFit', //图片封面样式🌟💗
timeout: "", //🌟用来阻止 setTimeout()方法
voice: "", //🌟用来阻止 setTimeout()方法
@ -387,7 +421,9 @@
currentNav: 1,
limit: 6,
page: 1,
userInfo: { uid: 0 },
userInfo: {
uid: 0
},
moreList: [],
isShowAuth: false, //是否隐藏授权
isAuto: false, //没有授权的不会自动授权
@ -452,12 +488,12 @@
// console.log('到后台');
},
onLoad(options) {
console.log(options);
this.videoID = options.id || 0;
this.isUser = options.user == 1 ? true : false;
this.userUid = options.uid ? options.uid : 0;
this.isSatrt = options.tab == 1 ? 1 : 0;
if (options.pid) app.globalData.spid = options.pid;
// if (options.pid) app.globalData.spid = options.pid;
// console.log('到后台');
this.platform = uni.getSystemInfoSync().platform
this.windowWidth = uni.getSystemInfoSync().screenWidth //获取屏幕宽度
@ -465,7 +501,7 @@
this.wHeight = uni.getSystemInfoSync().screenHeight; //获取屏幕高度
this.boxStyle.height = this.wHeight; //改变视频高度
this.get() //这一步,加载视频数据
if (this.isLogin) this.getUserInfo()
// if (this.isLogin) this.getUserInfo()
},
onReady() {},
methods: {
@ -558,6 +594,7 @@
}
});
},
// #endif
/**
* 获取个人用户信息
@ -575,7 +612,9 @@
this.isShowAuth = true
} else {
let status = 1
followAuthorApi(item.uid, { status: status }).then(res => {
followAuthorApi(item.uid, {
status: status
}).then(res => {
if (res.status === 200) {
item.is_fans = true
}
@ -605,7 +644,8 @@
});
setTimeout(function() {
uni.redirectTo({
url: '/pages/plantGrass/plant_user/index?id=' + item.uid
url: '/pages/plantGrass/plant_user/index?id=' +
item.uid
})
}, 1000);
}
@ -649,37 +689,44 @@
getData() {
// 这里就是数据加载完以后再向后端发送数据的地方,
let that = this;
if (!that.loadVideo) return
that.loadVideo = true
that.isUser ?
myVideoList(that.userUid, {
// if (!that.loadVideo) return
// that.loadVideo = true
// '
// deoList(that.videoID).then(res => {
// that.loadVideo = false
// that.getVideoData([res.data]);
// }).catch(err => {
// return uni.showToast({
// title: err,
// icon: 'none',
// duration: 2000
// });
// })'
// that.isUser ?
videoList({
page: that.page,
limit: that.limit,
is_star: that.isSatrt,
community_id: that.videoID
}).then(res => {
that.loadVideo = false
that.getVideoData(res.data.list);
}).catch(err => {
return uni.showToast({
title: err,
icon: 'none',
duration: 2000
});
}) :
graphicLstApi({
page: that.page,
limit: that.limit,
category_id: -1
id: this.videoID
}).then(res => {
that.getVideoData(res.data.list);
}).catch(err => {
return uni.showToast({
title: err,
icon: 'none',
duration: 2000
});
})
//:
// graphicLstApi({
// page: that.page,
// limit: that.limit,
// category_id: -1
// }).then(res => {
// that.getVideoData(res.data.list);
// }).catch(err => {
// return uni.showToast({
// title: err,
// icon: 'none',
// duration: 2000
// });
// })
},
getFocusList() {
let that = this;
@ -698,16 +745,18 @@
})
},
getVideoData(list) {
if (list.length == 0) return
let that = this;
that.loadVideo = list.length == that.limit
that.page = that.page + 1;
that.page = that.page + 1
var msg = list
for (let i = 0; i < msg.length; i++) {
msg[i]['isMore'] = false
msg[i]['community_id'] = msg[i]['community_id'].toString()
that.dataList.push(msg[i])
}
if (that.dataList.length !== 0) {
that.dataList[that.k].state = 'play';
setTimeout(function() {
@ -830,17 +879,12 @@
get() {
// if(!this.loadVideo) return
this.loadVideo = true
// 这个方法主要就是用来第一次进入视频播放时用来处理的
this.isUser ?
myVideoList(this.userUid, {
page: this.page,
limit: this.limit,
is_star: this.isSatrt,
community_id: this.videoID
}).then(async (res) => {
// 这个方法主要就是用来第一次进入视频播放时用来处理
deoList(this.videoID).then(async (res) => {
this.loadVideo = false
this.userUid = res.data.uid
this.page = this.page + 1;
var msg = res.data.list;
var msg = [res.data];
for (let i = 0; i < msg.length; i++) {
msg[i]['isMore'] = false
msg[i]['playIng'] = false
@ -850,6 +894,7 @@
msg[i]['community_id'] = msg[i]['community_id'].toString()
}
this.dataList = msg;
if (this.dataList.length !== 0) {
this.dataList[this.k].state = 'play';
uni.createVideoContext(this.dataList[this.k].community_id, this).play()
@ -860,29 +905,62 @@
icon: 'none',
duration: 2000
});
}) :
graphicLstApi({
page: this.page,
limit: this.limit,
category_id: -1
}).then(async (res) => {
this.page = this.page + 1;
var msg = res.data.list;
for (let i = 0; i < msg.length; i++) {
msg[i]['isMore'] = false
msg[i]['playIng'] = false
msg[i]['state'] = false
msg[i]['isplay'] = false
msg[i]['community_id'] = msg[i]['community_id'].toString()
}
this.dataList = msg;
}).catch(err => {
return uni.showToast({
title: err,
icon: 'none',
duration: 2000
});
})
// this.isUser ?
// myVideoList(this.userUid, {
// page: this.page,
// limit: this.limit,
// is_star: this.isSatrt,
// community_id: this.videoID
// }).then(async (res) => {
// this.loadVideo = false
// this.page = this.page + 1;
// var msg = res.data.list;
// for (let i = 0; i < msg.length; i++) {
// msg[i]['isMore'] = false
// msg[i]['playIng'] = false
// msg[i]['state'] = false
// msg[i]['isplay'] = false
// msg[i]['loading'] = false
// msg[i]['community_id'] = msg[i]['community_id'].toString()
// }
// this.dataList = msg;
// if (this.dataList.length !== 0) {
// this.dataList[this.k].state = 'play';
// uni.createVideoContext(this.dataList[this.k].community_id, this).play()
// }
// }).catch(err => {
// return uni.showToast({
// title: err,
// icon: 'none',
// duration: 2000
// });
// }) :
// graphicLstApi({
// page: this.page,
// limit: this.limit,
// category_id: -1
// }).then(async (res) => {
// this.page = this.page + 1;
// var msg = res.data.list;
// for (let i = 0; i < msg.length; i++) {
// msg[i]['isMore'] = false
// msg[i]['playIng'] = false
// msg[i]['state'] = false
// msg[i]['isplay'] = false
// msg[i]['community_id'] = msg[i]['community_id'].toString()
// }
// this.dataList = msg;
// }).catch(err => {
// return uni.showToast({
// title: err,
// icon: 'none',
// duration: 2000
// });
// })
},
onpullingdown() {
this.refreshing = true
@ -939,7 +1017,9 @@
this.isShowAuth = true
} else {
let status = item.relevance_id ? 0 : 1
graphicStartApi(item.community_id, { status: status }).then(res => {
graphicStartApi(item.community_id, {
status: status
}).then(res => {
if (item.relevance_id) {
item.count_start--;
item.count_start = item.count_start == 0 ? 0 : item.count_start
@ -1036,14 +1116,15 @@
/* #ifdef MP */
padding-top: 200rpx;
/* #endif */
background-color: #000000;
// background-color: #000000;
background-color: #F5F5F5;
.goods_item {
width: 342.11rpx;
height: 491.23rpx;
border-radius: 8px;
overflow: hidden;
background-color: #000;
// background-color: #000;
display: flex;
flex-direction: column;
padding-bottom: 10px;
@ -1158,6 +1239,7 @@
top: 70rpx;
height: 86rpx;
.icon-xiangzuo {
margin-left: 10px;
width: 20px;
@ -1170,17 +1252,17 @@
position: fixed;
z-index: 9;
width: 750rpx;
height: 86rpx;
height: 186rpx;
flex-direction: row;
justify-content: center;
align-items: center;
top: 70rpx;
padding-top: 70rpx;
.items {
margin: 0 30rpx;
.tName {
color: #ffffff;
color: #000;
font-size: 32rpx;
&.on {
@ -1191,7 +1273,7 @@
}
.container {
background-color: #000000;
background-color: #F5F5F5;
}
.item {
@ -1248,7 +1330,7 @@
.userInfo {
position: absolute;
bottom: 30px;
bottom: 400rpx;
right: 10px;
display: flex;
align-items: center;
@ -1631,6 +1713,6 @@
.root {
background-color: #000000;
}
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

View File

@ -13,8 +13,16 @@
-->
<!-- 头部导航 -->
<!-- 头部导航 -->
<view v-if="!isUser" class="header">
<view class="header">
<view class="tool-bar">
<view class='xiangzuo' @tap='goBack'>
<!-- <image src="@/static/images/icon-back.png" mode="aspectFit"></image> -->
</view>
</view>
<!-- <view class="tool-bar">
<view class='iconfont icon-xiangzuo' @tap='goBack'></view>
</view>
<view class="items" @click.stop="navTap(2)">
@ -24,14 +32,30 @@
<text class="tName" :class="currentNav==1?'on':''">推荐</text>
</view>
<view class="items" @click.stop="navTap(3)">
<text class="tName" :class="currentNav==3?'on':''">列表</text>
<text class="tName" :class="currentNav==3?'on':''">热点资讯</text>
</view>
<view class="items" @click.stop="navTap(4)">
<text class="tName" :class="currentNav==4?'on':''">社区</text>
</view> -->
</view>
<swiper v-show="currentNav !== 3" :style="'width: '+ windowWidth +'px; height: '+ windowHeight +'px;'"
:vertical="true" @animationfinish="animationfinish" @change="change" :current="k" :indicator-dots="false">
<swiper v-show="currentNav !== 3&&currentNav != 4"
:style="'width: '+ windowWidth +'px; height: '+ windowHeight +'px;'" :vertical="true"
@animationfinish="animationfinish" @change="change" :current="k" :indicator-dots="false">
<swiper-item v-for="(list,index) in dataList">
<view v-if="max > index">
<!-- <view style="width: 100px;height: 100px;background-color: red;">
5666
</view> -->
<view>
<!-- 这种视频背景模糊的效果怎么做呢 -->
<!--
1.v-if用于控制视频在节点的渲染数
2.muted的默认值是 false代表默认是禁音视频的
@ -46,13 +70,18 @@
:show-center-play-btn="false" :enable-progress-gesture="false" :src="list.video_link"
@ended="ended" @play="play(index)" @click="tapVideoHover(list.state,$event)"
@waiting="waiting(index)"
:style="'width: '+ windowWidth +'px; height: '+ windowHeight +'px;z-index: -1;'"></video>
style="width: 100vw; height: 100vh;z-index: -1;transform: scale(4)">
</video>
</view>
<!-- 播放状态pause 的时候就会暂停 -->
<view class="videoHover" @click="tapVideoHover(list.state,$event)"
<!-- <view class="videoHover" @click="tapVideoHover(list.state,$event)"
:style="'width: '+ windowWidth +'px; height: '+ windowHeight +'px;'">
<image v-if="list.state=='pause'" class="playState" src="../static/img/index/play.png"></image>
</view>
</view> -->
<!--审核状态-->
<view v-if="list.status==-1 || list.status==0 || list.status==-2" class="video-status">
<view v-if="list.status == -1 || list.status == -2" class="status-title">
@ -226,6 +255,7 @@
</view>
</block>
</scroll-view>
<!-- <view class="video-list" v-if="currentNav === 3"
:style="'width: '+ windowWidth +'px; height: '+ windowHeight +'px;'">
@ -275,6 +305,8 @@
</view>
<canvas class="canvas" canvas-id='myCanvas' v-if="canvasStatus"></canvas>
<authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse"></authorize>
</view>
</template>
@ -291,10 +323,12 @@
} from '@/utils';
import comment from '@/components/comment.vue';
import mentioned from '@/components/mentioned.vue';
import {
HTTP_REQUEST_URL
} from '@/config/app';
import {
deoList,
videoList,
myVideoList,
graphicStartApi,
@ -314,11 +348,13 @@
components: {
comment,
mentioned,
authorize
authorize,
},
computed: configMap({
community_reply_status: 0
}, mapGetters(['isLogin', 'uid'])),
data() {
return {
isTriggered: false,
@ -394,6 +430,7 @@
communityId: '',
Listcount: '',
loadMore: true,
videoshow: true
}
},
watch: {
@ -711,16 +748,13 @@
}
},
get() {
let that = this
// 1.这里引入后端请求数据
that.isUser ?
myVideoList(that.userUid, {
page: that.page,
limit: that.limit,
is_star: that.isSatrt,
community_id: that.videoID
}).then(res => {
that.videoData(res.data.list)
if (that.videoshow) {
deoList(this.videoID).then(res => {
that.videoData([res.data])
if (res.data.list.length < that.limit) {
this.loadMore = false;
}
@ -730,11 +764,18 @@
icon: 'none',
duration: 2000
});
}) :
graphicLstApi({
})
this.videoshow = false
} else {
// videoList().then(res=>{
// that.videoData(res.data.list);
// })
// console.log(that.userUid,that.videoID)
videoList({
page: that.page,
limit: that.limit,
category_id: -1
id: this.videoID
}).then(res => {
that.videoData(res.data.list)
if (res.data.list.length < that.limit) {
@ -747,6 +788,43 @@
duration: 2000
});
})
}
// that.isUser ?
// myVideoList(that.userUid, {
// page: that.page,
// limit: that.limit,
// is_star: that.isSatrt,
// community_id: that.videoID
// }).then(res => {
// that.videoData(res.data.list)
// if (res.data.list.length < that.limit) {
// this.loadMore = false;
// }
// }).catch(err => {
// return uni.showToast({
// title: err,
// icon: 'none',
// duration: 2000
// });
// })
//:
// graphicLstApi({
// page: that.page,
// limit: that.limit,
// category_id: -1
// }).then(res => {
// that.videoData(res.data.list)
// if (res.data.list.length < that.limit) {
// this.loadMore = false;
// }
// }).catch(err => {
// return uni.showToast({
// title: err,
// icon: 'none',
// duration: 2000
// });
// })
that.loadVideo = true
},
getFocusList() {
@ -1135,10 +1213,11 @@
<style lang="scss" scoped>
.video-list {
padding: 200rpx 28.07rpx 28.07rpx 28.07rpx;
padding: 150rpx 28.07rpx 28.07rpx 28.07rpx;
/* #ifdef MP */
padding-top: 200rpx;
padding-top: 150rpx;
/* #endif */
background-color: #F5F5F5;
.goods_item {
width: 342.11rpx;
@ -1237,13 +1316,13 @@
position: fixed;
z-index: 9;
width: 750rpx;
height: 86rpx;
height: 120rpx;
flex-direction: row;
justify-content: center;
align-items: center;
top: 20rpx;
padding-top: 20rpx;
/* #ifdef MP */
top: 75rpx;
padding-top: 75rpx;
/* #endif */
.tool-bar {
@ -1255,23 +1334,40 @@
display: flex;
justify-content: center;
.icon-xiangzuo {
.xiangzuo {
width: 23rpx;
height: 42rpx;
margin-right: 40rpx;
margin-left: 20rpx;
font-size: 26rpx;
color: #fff;
image {
width: 100%;
height: 100%;
}
}
}
.items {
margin: 0 30rpx;
image {
width: 58rpx;
height: 58rpx;
}
.tName {
color: #ffffff;
font-size: 32rpx;
font-size: 33rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #737373;
line-height: 50px;
&.on {
font-size: 38rpx;
font-size: 33rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
}
}
@ -1290,6 +1386,7 @@
.shortVideo,
.container {
background: linear-gradient(180deg, rgba(0, 0, 0, .8) 0%, #000000 100%);
}
.item {
@ -1336,6 +1433,7 @@
flex: 1;
justify-content: center;
align-items: center;
// background-color: red;
}
.playState {
@ -1346,7 +1444,7 @@
.userInfo {
position: absolute;
bottom: 60rpx;
bottom: 420rpx;
right: 20rpx;
flex-direction: column;
text-align: center;
@ -1861,4 +1959,8 @@
color: #999;
}
}
.videoa {
background-color: red;
}
</style>

View File

@ -83,7 +83,7 @@
},
//
jump(item) {
// console.log(item)
console.log(item)
if ([0, 2].includes(item.status)) {
uni.navigateTo({
url: `/pages/store/settled/index?mer_i_id=${item.mer_intention_id}`

View File

@ -1198,7 +1198,7 @@
this.isTriggered = true;
const newList = this.goods.reverse();
this.goods = newList;
this.getProductSpu()
// this.getProductSpu()
setTimeout(() => {
this.isTriggered = false;
}, 500)
@ -1210,7 +1210,7 @@
//
if (this.tabActive == 0) {
setTimeout(() => {
this.goods.push(...this.goods);
// this.goods.push(...this.goods);
}, 500)
}
},
@ -1220,7 +1220,8 @@
setTimeout(() => {
const newList = this.goods.reverse();
this.goods = newList;
this.getProductSpu()
// this.getGoods()
// this.getProductSpu()
// uni.startPullDownRefresh();
// uni.stopPullDownRefresh();
}, 500)

View File

@ -2,9 +2,11 @@
<view :style="viewColor">
<view class='productList'>
<view class='search acea-row row-between-wrapper'>
<!-- #ifdef H5 -->
<view class="back" @click='set_where(1)'>
<view class="iconfont icon-xiangzuo"></view>
</view>
<!-- #endif -->
<view class='input acea-row row-between-wrapper'><text class='iconfont icon-sousuo'></text>
<input placeholder='搜索商品名称' placeholder-class='placeholder' confirm-type='search' name="search" :value='where.keyword'
@confirm="searchSubmit"></input>

View File

@ -0,0 +1,285 @@
<template>
<view class="merchant-details">
<view class="tit">
<u--image style="margin: 0 auto;" :showLoading="true" src="../../../static/images/SJRZ/SB.png"
width="348.83rpx" height="271.77rpx" @click="goBack"></u--image>
抱歉,你的入驻申请审核未通过!
</view>
<view class="content">
<view class="steps">
<u-steps current="3" direction="column">
<u-steps-item title="待审核" desc="10:35">
<text class="slot-icon" slot="icon"><u--image style="margin: 0 auto;" :showLoading="true"
src="../../../static/images/SJRZ/SBBZ.png" width="31.54rpx"
height="31.54rpx"></u--image></text>
</u-steps-item>
<u-steps-item title="待审核" desc="10:35">
<text class="slot-icon" slot="icon"><u--image style="margin: 0 auto;" :showLoading="true"
src="../../../static/images/SJRZ/SBBZ.png" width="31.54rpx"
height="31.54rpx"></u--image></text>
</u-steps-item>
<u-steps-item title="待审核" desc="10:35">
<text class="slot-icon" slot="icon"><u--image style="margin: 0 auto;" :showLoading="true"
src="../../../static/images/SJRZ/SBBZ.png" width="31.54rpx"
height="31.54rpx"></u--image></text>
</u-steps-item>
</u-steps>
</view>
<view class="msg">
<view style="margin-bottom: 20rpx;">
<text style="font-weight: bold;">驳回原因</text>
<text class="">{{resData.fail_msg}}</text>
</view>
<!-- <view class=" phone">
<view class="">
<text class="head">商户账号</text>
<text class="content">{{resData.phone}}</text>
</view>
<text class="cope" @click="copyTBL()">复制</text>
</view> -->
</view>
</view>
<view class="btn_bottom" @click="navgo( `/pages/store/settled/index?mer_i_id=${mer_i_id}`)">
<u-button type="primary" style="background-color: #3274F9;border-radius: 30rpx;border: none;"
text="重新提交"></u-button>
</view>
<!-- <view class="top">
<image class="img" src="../static/images/successTop.png" mode=""></image>
<view class="title">
恭喜您的申请已通过
</view>
</view>
<view class="msg" v-if="mer_id > 0 && resData.login_url">
<view class="url">
<text class="head">登录地址</text>
<text class="content">{{resData.login_url}}</text>
</view>
<view class="phone">
<view class="">
<text class="head">商户账号</text>
<text class="content">{{resData.phone}}</text>
</view>
<text class="cope" @click="copyTBL()">复制</text>
</view>
</view> -->
</view>
</template>
<script>
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEBCRMEB
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import {
getGoodsDetails
} from '@/api/store.js'
export default {
data() {
return {
mer_id: 0,
resData: {},
mer_i_id: "",
// res: ","
}
},
onLoad(e) {
this.mer_id = e.mer_id
this.mer_i_id = e.mer_i_id
this.getGoodsDetails(e.mer_i_id)
},
methods: {
navgo(url) {
uni.navigateTo({
url
})
},
getGoodsDetails(id) {
getGoodsDetails(id).then(res => {
this.resData = res.data
})
},
copyTBL(url) {
let copeData = `登录地址:${this.resData.login_url} 商户账号:${this.resData.phone}`
// #ifdef MP || APP-PLUS
uni.setClipboardData({
data: copeData,
success: function() {
uni.showToast({
title: '复制成功',
duration: 1000
});
}
});
// #endif
// #ifdef H5
this.copyText(copeData)
// #endif
},
//H5
webCopy(e) {
let transfer = document.createElement('input');
document.body.appendChild(transfer);
transfer.value = e; //
transfer.focus();
transfer.select();
if (document.execCommand('copy')) {
document.execCommand('copy');
}
transfer.blur();
this.$util.Tips({
title: '复制成功'
});
transfer.style.display = 'none'
document.body.removeChild(transfer);
},
//
copyText(text) {
//
const textString = text.toString();
let input = document.querySelector('#copy-input');
if (!input) {
input = document.createElement('input');
input.id = "copy-input";
input.readOnly = "readOnly"; // ios
input.style.position = "absolute";
input.style.left = "-1000px";
input.style.zIndex = "-1000";
document.body.appendChild(input)
}
input.value = textString;
// ios input.select();
selectText(input, 0, textString.length);
if (document.execCommand('copy')) {
document.execCommand('copy');
this.$util.Tips({
title: '复制成功'
});
}
input.blur();
// inputselect()
// createTextRange(setSelectionRange)input
function selectText(textbox, startIndex, stopIndex) {
if (textbox.createTextRange) { //ie
const range = textbox.createTextRange();
range.collapse(true);
range.moveStart('character', startIndex); //
range.moveEnd('character', stopIndex - startIndex); //
range.select(); //
} else { //firefox/chrome
textbox.setSelectionRange(startIndex, stopIndex);
textbox.focus();
}
}
}
},
}
</script>
<style lang="scss" scoped>
.merchant-details {
padding: 0 4vw;
// padding: ;
height: 100vh;
position: relative;
// background-color: #C5D9FD;
background-image: url("../../../static/images/SJRZ/bg.png");
position: relative;
.tit {
color: white;
font-size: 33.29rpx;
text-align: center;
// padding: 50vh 0;
transform: translateY(5vh);
display: flex;
// justify-content: space-around;
flex-direction: column;
align-items: center;
}
.content {
background-color: white;
border-radius: 21.03rpx 21.03rpx 21.03rpx 21.03rpx;
// transform: translateY(20vh);
margin-top: 100rpx;
box-sizing: border-box;
padding: 2vw;
// .steps {}
.msg {
width: 85%;
padding: 30rpx;
// height: 150rpx;
margin: 30rpx auto;
background-color: #F4F7FE;
border-radius: 8rpx;
.li {
// margin-: ;
// display: flex;
// justify-content: left;
// display: flex;
// flex-shrink: 1;
}
}
}
.top {
display: flex;
flex-direction: column;
align-items: center;
.img {
width: 340rpx;
height: 280rpx;
margin: 140rpx 0 30rpx 0;
}
.title {
font-size: 32rpx;
font-weight: bold;
color: #333;
}
}
.btn {
// width: 70%;
// position: absolute;
// text-align: center;
// color: #999999;
// font-size: 24rpx;
// bottom: 80rpx
// background-color: red;
// height: 100vw;
margin-top: 5vw;
}
.btn_bottom {
position: fixed;
width: 92vw;
bottom: 20rpx;
}
}
</style>

View File

@ -1,6 +1,65 @@
<template>
<view class="merchant-details">
<view class="top">
<view style="height: var(--status-bar-height);"></view>
<view class="tit">
<u--image style="margin: 0 auto;" :showLoading="true" src="../../../static/images/SJRZ/succes.png"
width="348.83rpx" height="271.77rpx" @click="goBack"></u--image>
恭喜您的申请已通过
</view>
<view class="content">
<view class="steps">
<u-steps current="3" direction="column" mode="number">
<u-steps-item title="运输中" desc="11:40">
<!-- <u--image style="margin: 0 auto;" :showLoading="true" src="../../../static/images/SJRZ/CGBZ.png"
width="31.54rpx" height="31.54rpx"></u--image> -->
<!-- <u--image style="margin: 0 auto;" :showLoading="true"
src="../../../static/images/SJRZ/succes.png" width="348.83rpx" height="271.77rpx"
@click="goBack"></u--image> -->
<text class="slot-icon" slot="icon"><u--image style="margin: 0 auto;" :showLoading="true"
src="../../../static/images/SJRZ/CGBZ.png" width="31.54rpx"
height="31.54rpx"></u--image></text>
</u-steps-item>
<u-steps-item title="待审核" desc="10:35">
<text class="slot-icon" slot="icon"><u--image style="margin: 0 auto;" :showLoading="true"
src="../../../static/images/SJRZ/CGBZ.png" width="31.54rpx"
height="31.54rpx"></u--image></text>
</u-steps-item>
<u-steps-item title="审核通过" desc="11:40">
<text class="slot-icon" slot="icon"><u--image style="margin: 0 auto;" :showLoading="true"
src="../../../static/images/SJRZ/CGBZ.png" width="31.54rpx"
height="31.54rpx"></u--image></text>
</u-steps-item>
</u-steps>
</view>
<view class="msg" v-if="mer_id > 0 && resData.login_url" @click="copyTBL()">
<view style="margin-bottom: 20rpx;">
<text style="font-weight: bold;">登录地址</text>
<text class="">{{resData.login_url}}</text>
</view>
<view>
<text style="font-weight: bold;">商户账号</text>
<text class="">{{resData.phone}}</text>
</view>
<!-- <view class=" phone">
<view class="">
<text class="head">商户账号</text>
<text class="content">{{resData.phone}}</text>
</view>
<text class="cope" @click="copyTBL()">复制</text>
</view> -->
</view>
</view>
<view class="btn" v-if="mer_id > 0">
<view class="">
温馨提示初始密码默认为手机号后六位请初次登录后及时修改
</view>
</view>
<view class="btn_bottom" @click="navgo(`/pages/product/basicSet?mer_id=${mer_id}`)">
<u-button type="primary" style="background-color: #3274F9;border-radius: 30rpx;border: none;"
text="完善商户信息"></u-button>
</view>
<!-- <view class="top">
<image class="img" src="../static/images/successTop.png" mode=""></image>
<view class="title">
恭喜您的申请已通过
@ -18,12 +77,8 @@
</view>
<text class="cope" @click="copyTBL()">复制</text>
</view>
</view>
<view class="btn" v-if="mer_id > 0">
<view class="">
温馨提示初始密码默认为手机号后六位请初次登录后及时修改
</view>
</view>
</view> -->
</view>
</template>
@ -54,6 +109,11 @@
}
},
methods: {
navgo(url) {
uni.navigateTo({
url
})
},
getGoodsDetails(id) {
getGoodsDetails(id).then(res => {
this.resData = res.data
@ -138,69 +198,100 @@
<style lang="scss" scoped>
.merchant-details {
display: flex;
flex-direction: column;
align-items: center;
background-color: #fff;
padding: 0 4vw;
// padding: ;
height: 100vh;
position: relative;
// background-color: #C5D9FD;
background-image: url("../../../static/images/SJRZ/bg.png");
background-repeat: no-repeat;
position: relative;
.tit {
color: white;
font-size: 33.29rpx;
text-align: center;
// padding: 50vh 0;
transform: translateY(5vh);
display: flex;
// justify-content: space-around;
flex-direction: column;
align-items: center;
}
.content {
background-color: white;
border-radius: 21.03rpx 21.03rpx 21.03rpx 21.03rpx;
// transform: translateY(20vh);
margin-top: 100rpx;
box-sizing: border-box;
padding: 2vw;
// .steps {}
.msg {
width: 85%;
padding: 30rpx;
// height: 150rpx;
margin: 30rpx auto;
background-color: #F4F7FE;
border-radius: 8rpx;
.li {
// margin-: ;
// display: flex;
// justify-content: left;
// display: flex;
// flex-shrink: 1;
}
}
}
.top {
display: flex;
flex-direction: column;
align-items: center;
.img {
width: 340rpx;
height: 280rpx;
margin: 140rpx 0 30rpx 0;
}
.title {
font-size: 32rpx;
font-weight: bold;
color: #333;
}
}
.msg {
width: 85%;
padding: 30rpx;
height: 150rpx;
margin: 70rpx 70rpx;
background-color: #F6F6F6;
border-radius: 8rpx;
.url {
display: flex;
flex-wrap: nowrap;
margin-bottom: 20rpx;
}
.phone {
display: flex;
justify-content: space-between;
}
.head {
color: #333333;
font-size: 28rpx;
font-weight: 500;
white-space: nowrap;
}
.content {
color: #999999;
font-size: 26rpx;
}
.cope {
padding: 5rpx 16rpx;
color: #FFFFFF;
border-radius: 30rpx;
background-color: #999999;
margin-left: 40rpx;
font-size: 20rpx;
}
}
.btn {
width: 70%;
position: absolute;
text-align: center;
color: #999999;
font-size: 24rpx;
bottom: 80rpx
// width: 70%;
// position: absolute;
// text-align: center;
// color: #999999;
// font-size: 24rpx;
// bottom: 80rpx
// background-color: red;
// height: 100vw;
margin-top: 5vw;
}
.btn_bottom {
position: fixed;
width: 92vw;
bottom: 20rpx;
}
}
</style>

View File

@ -367,7 +367,7 @@
//
getGoodsDetails(id) {
getGoodsDetails(id).then(res => {
// console.log(res);
console.log(res);
let arr = Object.keys(this.merchantData)
let resData = res.data
arr.map(item => {
@ -411,7 +411,7 @@
this.validateBtn()
},
bindPickerChange1: function(e) {
// console.log(e);
console.log(e);
this.index1 = e.target.value
let idx = e.target.value
this.merchantData.mer_type = this.storeTypeArr[idx]['mer_type_id']
@ -443,7 +443,7 @@
getStoreType: function() {
getStoreTypeApi()
.then(res => {
// console.log(res);
console.log(res);
this.storeTypeArr = res.data
})
.catch(res => {

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More