Compare commits

...

39 Commits
master ... bill

Author SHA1 Message Date
jia
89f6beb337 交易大厅以及订单修改 2023-08-23 11:51:55 +08:00
jia
c42cf88d26 提交订单地址界面修改,供应图片显示问题处理,采购订单订单以及用用户订单接口修改等 2023-08-19 18:57:17 +08:00
jia
29153eeb59 发布管理界面 完成列表 、删除、编辑、拒绝、同意、等功能 ,交易大厅界面优化及调整 2023-08-18 18:05:33 +08:00
jia
10e260bbcc 语音功能优化,委托销售界面优化 ,支付成功界面显示问题处理,交易大厅bug处理 2023-08-17 17:58:28 +08:00
jia
5885261a60 交易大厅接口对接及界面优化 2023-08-16 17:59:23 +08:00
jia
4ad08f699d 1.对接调货大厅等接口 2.优化调货、委托界面 2023-08-14 18:03:57 +08:00
jia
6e2aafcb4f 界面优化 2023-08-12 18:20:03 +08:00
jia
c14a514b5e 1.解决工作台-商户设置 坐标显示问题bug ; 2.优化调货等界面内容 3.完成委托销售 首页 、发起委托 、委托申请、详情、新增,以及部分弹窗等所有界面;4.解决打包时未添加oauth模块bug 2023-08-12 18:15:11 +08:00
jia
0d8a2d87fc 1.我的-我的订单:个人订单待评价状态下缺少发布种草、申请退款、去评价、批量退款按钮bug修改
2.首页搜索商品结果展示切换为列表行展示后第一个商品显示不全bug修改
3.修改用户订单-待收货 确认收货改成取件码
2023-08-11 16:40:29 +08:00
jia
29c0fa7add 优化收货码及界面 2023-08-10 16:16:19 +08:00
jia
483684f729 修改取货二维码问题 2023-08-10 16:13:24 +08:00
jia
9b9911660e 收件二维码及取件码,以及待收货时取消退款操作 ,以及对接调货等界面部分接口 2023-08-10 14:21:34 +08:00
jia
018dc3e3f8 新增订单管理界面 2023-08-09 11:38:46 +08:00
jia
5810ccd5a8 修改路径 2023-08-08 18:20:37 +08:00
jia
c9cbc6a43c 新增调货、发布界面,地址选择优化 2023-08-08 17:31:25 +08:00
THK3121
74377c7dd8 页面修改 2023-08-04 18:16:03 +08:00
THK3121
da13b53bbd 页面修改 2023-08-04 08:57:20 +08:00
THK3121
7837a9cd83 商城bug修复 2023-07-27 18:01:37 +08:00
THK3121
8e59fddcc5 修改bug 2023-07-22 10:20:18 +08:00
THK3121
00f73db305 部分bug修复 2023-07-19 10:06:51 +08:00
THK3121
5ce6dd0e9e 先货后款,样式修改 2023-07-15 17:27:06 +08:00
THK3121
cc5ff53177 交易大厅的一点样式 2023-07-14 13:34:12 +08:00
THK3121
fbbaf79080 先货后款,流程,样式,交互,修改 2023-07-14 11:37:34 +08:00
THK3121
b4c6386686 订单跳转,订单详情,商品导入,线上导入,样式修改 2023-07-12 15:23:13 +08:00
THK3121
b8178bdf2b 订单列表,订单详情修改 2023-07-11 18:01:46 +08:00
THK3121
893ca1ed81 订单监控,付款跳转,商户设置 2023-07-11 16:08:44 +08:00
THK3121
1231351d29 商户开通信用购 2023-07-10 13:38:39 +08:00
THK3121
24415dc4ad 先货后款,入库,下单.收货,同意 2023-07-10 10:11:29 +08:00
THK3121
42b860b90e 完整先货后款付款流程 2023-07-08 16:58:21 +08:00
THK3121
05ef84a30b Merge branch 'bill' of http://git.excellentkk.cn/C.C/nk-shop2.0 into bill
# Conflicts:
#	pages/users/order_list/index.vue
2023-07-08 10:55:14 +08:00
THK3121
133493ecb8 入库样式修改 2023-07-08 10:46:55 +08:00
67063a6190 修改订单列表 2023-07-08 10:42:02 +08:00
222d240bd7 回滚订单列表 2023-07-07 17:59:40 +08:00
THK3121
acb22b28da 先货后款完成后订单付款 2023-07-07 17:31:44 +08:00
THK3121
1054b127c4 Merge branch 'bill' of http://git.excellentkk.cn/C.C/nk-shop2.0 into bill 2023-07-07 11:03:37 +08:00
THK3121
4261b729f1 先货后款部分页面布局+功能 2023-07-07 11:03:32 +08:00
ea83d7c29c 添加订单监控页面 2023-07-07 10:56:09 +08:00
THK3121
273fa133ed 先货后款,支付流程 2023-07-05 16:39:46 +08:00
THK3121
0379a03adc 订单详情弹窗 2023-07-04 15:26:00 +08:00
134 changed files with 25143 additions and 6986 deletions

1
.gitignore vendored
View File

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

755
App.vue
View File

@ -1,371 +1,424 @@
<script>
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEBCRMEB
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
// #ifdef APP-PLUS
var jpushModule = uni.requireNativePlugin("JG-JPush");
// #endif import {
checkLogin
} from "./libs/login";
import {
HTTP_REQUEST_URL
} from './config/app';
import {
getconfig,
history
} from '@/api/public.js'
import Routine from './libs/routine.js';
export default {
globalData: {
spid: 0,
code: 0,
isLogin: false,
userInfo: {},
MyMenus: [],
balance_func_status: 0, //
recharge_switch: 0, //
store_user_min_recharge: 0, //
yue_pay_status: 0, //
alipay_open: 0, //
routine_logo: '', //logo
share_pic: '',
site_logo: '',
site_name: '', //
fid: '', //id
uid: '',
hide_mer_status: 0,
member_status: 0,
copy_command_status: 0, //
arrival_notice: 0, //
is_phone_login: 0,
auto_arrival: 0,
mer_location: 0,
statusBarHeight: 0,
mer_location: 0,
store_street_theme: 1,
sys_intention_agree: '',
copyright_status: '',
copyright_context: '',
copyright_image: '',
open_update_info: 0,
recommend_switch: 0,
svip_switch_status: 0,
community_reply_status: 0,
community_reply_auth: 0,
margin_ico_switch: 0,
margin_ico: '',
community_app_switch: [],
navigation: {},
imgColor: '',
...uni.getStorageSync('GLOBAL_DATA') || {}
},
onLaunch: function(option) {
this.globalData.statusBarHeight = uni.getSystemInfoSync().statusBarHeight + 'px';
this.globalData.uid = this.$store.state.app.uid
let that = this;
// #ifdef MP
if (HTTP_REQUEST_URL == '') {
console.error(
"请配置根目录下的config.js文件中的 'HTTP_REQUEST_URL'\n\n请修改开发者工具中【详情】->【AppID】改为自己的Appid\n\n请前往后台【小程序】->【小程序配置】填写自己的 appId and AppSecret"
);
return false;
}
if (option.query.hasOwnProperty('scene')) {
switch (option.scene) {
//
case 1047:
// console.log(option, 'val')
let val = that.$util.getUrlParams(decodeURIComponent(option.query.scene));
that.globalData.code = val;
that.globalData.uid = val
break;
//
case 1048:
that.globalData.code = option.query.scene;
break;
//
case 1049:
that.globalData.code = option.query.scene;
break;
//
case 1001:
that.globalData.spid = option.query.scene;
break;
}
}
// #endif
//
uni.getSystemInfo({
success: function(res) {
that.globalData.navHeight = res.statusBarHeight * (750 / res.windowWidth) + 91;
}
});
// #ifdef MP
let menuButtonInfo = uni.getMenuButtonBoundingClientRect();
that.globalData.navH = menuButtonInfo.top * 2 + menuButtonInfo.height / 2;
const version = uni.getSystemInfoSync().SDKVersion
if (Routine.compareVersion(version, '2.21.2') >= 0) {
that.$Cache.set('MP_VERSION_ISNEW', true)
} else {
that.$Cache.set('MP_VERSION_ISNEW', false)
}
// #endif
that.getConfigData()
//#ifdef APP-PLUS
jpushModule.setLoggerEnable(true);
jpushModule.initJPushService()
jpushModule.addConnectEventListener(result=>{
let connectEnable = result.connectEnable
// console.log("jpush", connectEnable)
})
//
// jpushModule.setAlias({
// 'alias': uni.getStorageSync('userId'),
// 'sequence': 1
// })
//
// jpushModule.addTagAliasListener(result => {
// let code = result.code
// let sequence = result.sequence
// let tags = result.tags
// let tag = result.tag
// let tagEnable = result.tagEnable
// let alias = result.alias
// console.log(alias, '')
// })
//
jpushModule.addNotificationListener(result => {
let notificationEventType = result.notificationEventType
let messageID = result.messageID
let title = result.title
let content = result.content
let extras = result.extras
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEBCRMEB
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
// #ifdef APP-PLUS
let jpushModule = uni.requireNativePlugin("JG-JPush");
// #endif
import {
checkLogin
} from "./libs/login";
import {
HTTP_REQUEST_URL
} from './config/app';
import {
getconfig,
history
} from '@/api/public.js'
import Routine from './libs/routine.js';
console.log("通知", result)
//
if (notificationEventType == 'notificationOpened') {
uni.navigateTo({
url: result.extras.route
})
}
})
// jpushModule.addCustomMessageListener(result => {
// let messageID = result.messageID
// let content = result.content
// let extras = result.extras
// console.log("", result)
// })
//#endif
export default {
data() {
return {
audioTeam: []
}
},
globalData: {
spid: 0,
code: 0,
isLogin: false,
userInfo: {},
MyMenus: [],
balance_func_status: 0, //
recharge_switch: 0, //
store_user_min_recharge: 0, //
yue_pay_status: 0, //
alipay_open: 0, //
routine_logo: '', //logo
share_pic: '',
site_logo: '',
site_name: '', //
fid: '', //id
uid: '',
hide_mer_status: 0,
member_status: 0,
copy_command_status: 0, //
arrival_notice: 0, //
is_phone_login: 0,
auto_arrival: 0,
mer_location: 0,
statusBarHeight: 0,
mer_location: 0,
store_street_theme: 1,
sys_intention_agree: '',
copyright_status: '',
copyright_context: '',
copyright_image: '',
open_update_info: 0,
recommend_switch: 0,
svip_switch_status: 0,
community_reply_status: 0,
community_reply_auth: 0,
margin_ico_switch: 0,
margin_ico: '',
community_app_switch: [],
navigation: {},
imgColor: '',
...uni.getStorageSync('GLOBAL_DATA') || {}
},
onLaunch: function(option) {
this.globalData.statusBarHeight = uni.getSystemInfoSync().statusBarHeight + 'px';
this.globalData.uid = this.$store.state.app.uid
let that = this;
// #ifdef MP
if (HTTP_REQUEST_URL == '') {
console.error(
"请配置根目录下的config.js文件中的 'HTTP_REQUEST_URL'\n\n请修改开发者工具中【详情】->【AppID】改为自己的Appid\n\n请前往后台【小程序】->【小程序配置】填写自己的 appId and AppSecret"
);
return false;
}
if (option.query.hasOwnProperty('scene')) {
switch (option.scene) {
//
case 1047:
// console.log(option, 'val')
let val = that.$util.getUrlParams(decodeURIComponent(option.query.scene));
that.globalData.code = val;
that.globalData.uid = val
break;
//
case 1048:
that.globalData.code = option.query.scene;
break;
//
case 1049:
that.globalData.code = option.query.scene;
break;
//
case 1001:
that.globalData.spid = option.query.scene;
break;
}
}
// #endif
//
uni.getSystemInfo({
success: function(res) {
that.globalData.navHeight = res.statusBarHeight * (750 / res.windowWidth) + 91;
}
});
// #ifdef MP
let menuButtonInfo = uni.getMenuButtonBoundingClientRect();
that.globalData.navH = menuButtonInfo.top * 2 + menuButtonInfo.height / 2;
const version = uni.getSystemInfoSync().SDKVersion
if (Routine.compareVersion(version, '2.21.2') >= 0) {
that.$Cache.set('MP_VERSION_ISNEW', true)
} else {
that.$Cache.set('MP_VERSION_ISNEW', false)
}
// #endif
that.getConfigData()
},
onShow() {
let that = this
// H5
if (this.$store.state.app.token) {
//
// #ifdef H5
history({
page: location.pathname + location.search,
}).then(() => {});
//#endif
};
// #ifndef H5
setTimeout(() => {
if (that.globalData.copy_command_status == 1) {
uni.getClipboardData({
success: function(res) {
if (/^(\/@[1-9]{1}).*\*\//.test(res.data)) {
that.$store.commit("PARSE_PWD", res.data)
}
},
fail: function(res) {
//
}
})
}
}, 1500)
// #endif
},
methods: {
//
setOpenShare: function(data) {
let that = this;
let href = location.href;
href = href.indexOf("?") === -1 ? href + "?spid=" + this.globalData.uid : href + "&spid=" + this.globalData
.uid;
if (that.$wechat.isWeixin()) {
let configAppMessage = {
desc: data.share_info,
title: data.share_title,
link: href,
imgUrl: data.share_pic
};
that.$wechat.wechatEvevt(["updateAppMessageShareData", "updateTimelineShareData"], configAppMessage);
}
},
//
getConfigData() {
getconfig().then(res => {
uni.$emit('update', res.data)
this.$store.commit('GLOBAL_DATA', res.data);
this.globalData.balance_func_status = res.data.balance_func_status
this.globalData.recharge_switch = res.data.recharge_switch
this.globalData.routine_logo = res.data.routine_logo
this.globalData.share_pic = res.data.share_pic
this.globalData.community_reply_status = res.data.community_reply_status
this.globalData.site_logo = res.data.site_logo
this.globalData.login_logo = res.data.login_logo
this.globalData.site_name = res.data.site_name
this.globalData.store_user_min_recharge = res.data.store_user_min_recharge
this.globalData.yue_pay_status = res.data.yue_pay_status
this.globalData.sys_intention_agree = res.data.sys_intention_agree
this.globalData.mer_intention_open = res.data.mer_intention_open
this.globalData.alipay_open = res.data.alipay_open
this.globalData.hide_mer_status = res.data.hide_mer_status
this.globalData.mer_location = res.data.mer_location
this.globalData.arrival_notice = res.data.procudt_increase_status
this.globalData.auto_arrival = res.data.sys_extension_type
this.globalData.member_status = res.data.member_status
this.globalData.copy_command_status = res.data.copy_command_status
this.globalData.is_phone_login = res.data.is_phone_login
this.globalData.mer_location = res.data.mer_location
this.globalData.store_street_theme = res.data.store_street_theme
this.globalData.copyright_status = res.data.copyright_status
this.globalData.copyright_image = res.data.copyright_image
this.globalData.copyright_context = res.data.copyright_context
this.globalData.open_update_info = res.data.open_update_info
this.globalData.recommend_switch = res.data.recommend_switch
this.globalData.svip_switch_status = res.data.svip_switch_status
this.globalData.navigation = res.data.navigation
this.globalData.community_app_switch = res.data.community_app_switch
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
this.$store.commit("VIEW_COLOR", res.data.global_theme.theme)
this.$store.commit("KEY_COLOR", '_' + res.data.global_theme.type)
try {
uni.setStorageSync('SUBSCRIBE_MESSAGE', res.data.tempid);
} catch (e) {
// error
}
// #ifdef H5
this.setOpenShare(res.data);
// #endif
}).catch(err => {});
}
},
onHide: function() {
//console.log('App Hide')
},
watch: {
// H5
$route(n) {
if (this.$store.state.app.token) {
//
history({
page: location.pathname + location.search,
}).then(() => {});
}
},
}
}
//#ifdef APP-PLUS
jpushModule.setLoggerEnable(true);
jpushModule.initJPushService()
jpushModule.addConnectEventListener(result => {
let connectEnable = result.connectEnable
// console.log("jpush", connectEnable)
})
//
// jpushModule.setAlias({
// 'alias': uni.getStorageSync('userId'),
// 'sequence': 1
// })
//
// jpushModule.addTagAliasListener(result => {
// let code = result.code
// let sequence = result.sequence
// let tags = result.tags
// let tag = result.tag
// let tagEnable = result.tagEnable
// let alias = result.alias
// console.log(alias, '')
// })
//
jpushModule.addNotificationListener(result => {
let notificationEventType = result.notificationEventType
let messageID = result.messageID
let title = result.title
let content = result.content
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({
url: result.extras.route
})
}
})
// jpushModule.addCustomMessageListener(result => {
// let messageID = result.messageID
// let content = result.content
// let extras = result.extras
// console.log("", result)
// })
//#endif
},
onShow() {
let that = this
// H5
if (this.$store.state.app.token) {
//
// #ifdef H5
history({
page: location.pathname + location.search,
}).then(() => {});
//#endif
};
// #ifndef H5
setTimeout(() => {
if (that.globalData.copy_command_status == 1) {
uni.getClipboardData({
success: function(res) {
if (/^(\/@[1-9]{1}).*\*\//.test(res.data)) {
that.$store.commit("PARSE_PWD", res.data)
}
},
fail: function(res) {
//
}
})
}
}, 1500)
// #endif
},
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
.uid;
if (that.$wechat.isWeixin()) {
let configAppMessage = {
desc: data.share_info,
title: data.share_title,
link: href,
imgUrl: data.share_pic
};
that.$wechat.wechatEvevt(["updateAppMessageShareData", "updateTimelineShareData"],
configAppMessage);
}
},
//
getConfigData() {
getconfig().then(res => {
uni.$emit('update', res.data)
this.$store.commit('GLOBAL_DATA', res.data);
this.globalData.balance_func_status = res.data.balance_func_status
this.globalData.recharge_switch = res.data.recharge_switch
this.globalData.routine_logo = res.data.routine_logo
this.globalData.share_pic = res.data.share_pic
this.globalData.community_reply_status = res.data.community_reply_status
this.globalData.site_logo = res.data.site_logo
this.globalData.login_logo = res.data.login_logo
this.globalData.site_name = res.data.site_name
this.globalData.store_user_min_recharge = res.data.store_user_min_recharge
this.globalData.yue_pay_status = res.data.yue_pay_status
this.globalData.sys_intention_agree = res.data.sys_intention_agree
this.globalData.mer_intention_open = res.data.mer_intention_open
this.globalData.alipay_open = res.data.alipay_open
this.globalData.hide_mer_status = res.data.hide_mer_status
this.globalData.mer_location = res.data.mer_location
this.globalData.arrival_notice = res.data.procudt_increase_status
this.globalData.auto_arrival = res.data.sys_extension_type
this.globalData.member_status = res.data.member_status
this.globalData.copy_command_status = res.data.copy_command_status
this.globalData.is_phone_login = res.data.is_phone_login
this.globalData.mer_location = res.data.mer_location
this.globalData.store_street_theme = res.data.store_street_theme
this.globalData.copyright_status = res.data.copyright_status
this.globalData.copyright_image = res.data.copyright_image
this.globalData.copyright_context = res.data.copyright_context
this.globalData.open_update_info = res.data.open_update_info
this.globalData.recommend_switch = res.data.recommend_switch
this.globalData.svip_switch_status = res.data.svip_switch_status
this.globalData.navigation = res.data.navigation
this.globalData.community_app_switch = res.data.community_app_switch
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
this.$store.commit("VIEW_COLOR", res.data.global_theme.theme)
this.$store.commit("KEY_COLOR", '_' + res.data.global_theme.type)
try {
uni.setStorageSync('SUBSCRIBE_MESSAGE', res.data.tempid);
} catch (e) {
// error
}
// #ifdef H5
this.setOpenShare(res.data);
// #endif
}).catch(err => {});
}
},
onHide: function() {
//console.log('App Hide')
},
watch: {
// H5
$route(n) {
if (this.$store.state.app.token) {
//
history({
page: location.pathname + location.search,
}).then(() => {});
}
},
}
}
</script>
<style lang="scss">
/* #ifndef APP-PLUS-NVUE || APP-NVUE */
@import "@/plugin/animate/animate.min.css";
@import 'static/css/base.css';
@import 'static/iconfont/iconfont.css';
@import 'static/iconfont/iconlihai.css';
@import 'static/css/style.scss';
/* #ifndef APP-PLUS-NVUE || APP-NVUE */
@import "@/plugin/animate/animate.min.css";
@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 {
box-sizing: border-box;
}
.custom_style {
color: #fff;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: 24rpx;
.custom_style {
color: #fff;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: 24rpx;
&_icon {
background-image: url('static/tabbar_icon/d.png');
background-repeat: no-repeat;
background-size: cover;
font-size: 80rpx;
width: 100rpx;
height: 100rpx;
border-radius: 100%;
display: flex;
justify-content: center;
align-items: center;
margin-top: -40rpx;
// box-shadow: 0px 5px 10px 1px rgba(32, 161, 98, 0.3);
}
}
&_icon {
background-image: url('static/tabbar_icon/d.png');
background-repeat: no-repeat;
background-size: cover;
font-size: 80rpx;
width: 100rpx;
height: 100rpx;
border-radius: 100%;
display: flex;
justify-content: center;
align-items: center;
margin-top: -40rpx;
// box-shadow: 0px 5px 10px 1px rgba(32, 161, 98, 0.3);
}
}
.bg-color-red {
background-color: #e93323 !important;
}
.bg-color-red {
background-color: #e93323 !important;
}
.syspadding {
padding-top: var(--status-bar-height);
}
.syspadding {
padding-top: var(--status-bar-height);
}
.flex {
display: flex;
}
.flex {
display: flex;
}
.uni-scroll-view::-webkit-scrollbar {
/* 隐藏滚动条,但依旧具备可以滚动的功能 */
display: none
}
.uni-scroll-view::-webkit-scrollbar {
/* 隐藏滚动条,但依旧具备可以滚动的功能 */
display: none
}
::-webkit-scrollbar {
width: 0;
height: 0;
color: transparent;
}
::-webkit-scrollbar {
width: 0;
height: 0;
color: transparent;
}
::-moz-scrollbar {
width: 0;
height: 0;
color: transparent;
}
::-moz-scrollbar {
width: 0;
height: 0;
color: transparent;
}
.empty-txt {
line-height: 100rpx;
font-size: 22rpx;
color: #999;
text-align: center;
}
.empty-txt {
line-height: 100rpx;
font-size: 22rpx;
color: #999;
text-align: center;
}
.product-con .conter img {
display: block;
}
.product-con .conter img {
display: block;
}
.open-location {
height: 100vh;
}
.open-location {
height: 100vh;
}
uni-tabbar {
bottom: 0;
}
uni-tabbar {
bottom: 0;
}
/*#endif*/
/*#endif*/
</style>

View File

@ -15,6 +15,7 @@ import request from "@/utils/request.js";
export function getStatisticsInfo() {
return request.get("admin/order/statistics", {}, { login: true });
}
/**
* 订单月统计
*/
@ -33,6 +34,18 @@ export function getAdminOrderList(where) {
export function setAdminOrderPrice(merId, id, data) {
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 });
}
/**
* 订单备注
*/
@ -210,4 +223,19 @@ 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

@ -268,4 +268,22 @@ export function ajcaptchaCheck(data) {
return request.post("ajcheck", 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

@ -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);
}
// 支付状态订单

View File

@ -13,7 +13,12 @@ import request from "@/utils/request.js";
* 获取商品详情
*/
export const getProductDetailsAPI = (data) => request.get('micro/product_details', 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";

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
);
}

View File

@ -707,4 +707,8 @@ 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

@ -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=>{
this.is_loading = false;
CACHE_ADDRESS[pid] = res.data;
this.addressList = res.data;
})
// 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{
this.selectedArr.push(item);
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() {

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

@ -0,0 +1,128 @@
<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;
//
const to = title.offsetLeft - (nav.offsetWidth - title.offsetWidth) / 2;
nav.scrollLeft = to;
},
},
};
</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>

View File

@ -10,74 +10,114 @@
<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='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">发货时间
<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>
</view>
<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>
</view>
</view>
<view v-if="orderData.status >= 10" class="event_progress">
<view class="progress_list">
<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>
<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>
</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='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='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>
<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='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='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>
</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" @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 != 1&&evaluate !=4&& evaluate!=3 || evaluate==2 ||activityType==98"
@click.stop="refund(item)">申请退款</view>
<view class='btn-item'
v-if='item.is_reply==0 && evaluate!=2&& evaluate!=3 && 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>
</view>
</view>
</view>
</view>
@ -93,10 +133,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: {
@ -131,14 +179,14 @@
computed: mapGetters(['viewColor']),
data() {
return {
totalNmu:'',
totalNmu: '',
isTimePay: false, //
};
},
watch:{
cartInfo:function(nVal,oVal){
watch: {
cartInfo: function(nVal, oVal) {
let num = 0
nVal.forEach((item,index)=>{
nVal.forEach((item, index) => {
num += item.cart_num
})
this.totalNmu = num
@ -149,52 +197,59 @@
},
mounted() {},
methods: {
evaluateTap:function(unique,orderId){
evaluateTap: function(unique, orderId) {
uni.navigateTo({
url:`/pages/users/goods_comment_con/index?uni=${unique}&order_id=${orderId}`
url: `/pages/users/goods_comment_con/index?uni=${unique}&order_id=${orderId}`
})
},
//
isPayBalance(){
isPayBalance() {
let that = this;
if(that.orderData.status === 10){
if(new Date() < new Date(that.orderData.presellOrder.final_start_time)){
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
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
goShopDetail(item).then(res => {
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'
})
uni.hideLoading();
uni.navigateTo({
url: '/pages/activity/assist_detail/index?id=' + id
});
}).catch((err) => {
uni.showToast({
title: err,
icon: 'none'
})
});
})
})
},
// 退
refund(item){
refund(item) {
// #ifdef MP
openOrderRefundSubscribe().then(() => {
uni.hideLoading();
if(this.evaluate == 0 || this.evaluate == 9 || this.orderData.is_virtual == 1){
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{
} 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(() => {
@ -202,13 +257,15 @@
})
// #endif
// #ifdef H5 || APP-PLUS
if(this.evaluate == 0 || this.evaluate == 9 || this.orderData.is_virtual == 1){
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{
} 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,83 +278,101 @@
.orderGoods {
background-color: #fff;
}
.p-color {
color: var(--view-priceColor);
}
.t-color{
.t-color {
color: var(--view-theme);
}
.svip-img{
.svip-img {
width: 65rpx;
height: 28rpx;
margin: 4rpx 0 0 4rpx;
}
.title{
.title {
height: 86rpx;
position: relative;
padding: 0 30rpx;
&::after{
&::after {
content: "";
width: 750rpx;
border-bottom: 2rpx dotted #D8D8D8;
border-bottom: 2rpx dotted #D8D8D8;
position: absolute;
bottom: 0;
left: 0;
}
.item-status{
.item-status {
color: #999999;
font-size: 30rpx;
&.status0{
&.status0 {
color: #2291F8;
}
}
.item-date{
.item-date {
color: #666666;
font-size: 28rpx;
}
}
.right-btn-box{
}
.right-btn-box {
display: flex;
align-items: center;
justify-content: flex-end;
&.event_box{
&.event_box {
position: static;
}
.btn-item{
.btn-item {
display: flex;
align-items: center;
justify-content: center;
width:140rpx;
height:46rpx;
width: 140rpx;
height: 46rpx;
margin-left: 10rpx;
border:1px solid rgba(187,187,187,1);
border-radius:23rpx;
border: 1px solid rgba(187, 187, 187, 1);
border-radius: 23rpx;
font-size: 24rpx;
color: #282828;
&.on{
background:rgba(220,220,220,1);
border-color: rgba(220,220,220,1);
&.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);
&.err {
background: rgba(247, 247, 247, 1);
border-color: rgba(247, 247, 247, 1);
color: #AAAAAA;
}
}
}
.event_bg{
.event_bg {
background: #FF7F00;
}
.event_color{
.event_color {
color: #FF7F00;
}
.presell_item{
.presell_item {
height: auto;
padding-bottom: 15rpx;
}
.event_progress{
.event_progress {
margin-top: 20rpx;
background: #fff;
.progress_name {
padding-left: 30rpx;
height: 60rpx;
@ -306,7 +381,8 @@
font-weight: bold;
position: relative;
color: var(--view-theme);
&::before{
&::before {
content: "";
display: inline-block;
width: 5rpx;
@ -317,43 +393,49 @@
left: 0;
}
}
.align_right{
.align_right {
float: right;
font-weight: bold;
}
.progress_price{
.progress_price {
padding: 20rpx 30rpx;
color: #999999;
font-size: 22rpx;
}
.progress_pay{
.progress_pay {
padding: 25rpx 30rpx;
background: var(--view-minorColor);
font-size: 26rpx;
color: #282828;
}
}
.event_name{
.event_name {
display: inline-block;
margin-right: 9rpx;
color: #fff;
font-size: 20rpx;
padding: 0 8rpx;
line-height: 30rpx;
line-height: 30rpx;
text-align: center;
border-radius: 6rpx;
border-radius: 6rpx;
}
.event_ship{
.event_ship {
font-size: 20rpx;
margin-top: 10rpx;
margin-top: 10rpx;
}
.goodWrapper.item1{
&::after{
.goodWrapper.item1 {
&::after {
content: "";
display: block;
width: 750rpx;
height: 14rpx;
background: #F0F0F0;
}
}
}
</style>
</style>

View File

@ -78,6 +78,7 @@
});
},
goPay: function(number, paytype) {
console.log(this.payMode);
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: '请选择要支付的订单'
@ -375,7 +380,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

@ -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,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,209 @@
<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;
this.$emit('increment',this.inputValue)
},
_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

@ -9,9 +9,11 @@
<view class="iconfont icon-weizhi"></view>
<view class="town_name">{{street}}</view>
</view>
<navigator url="/pages/chat/customer_list/index?type=0" hover-class="none">
<view class="iconfont icon-xiaoxi" style="color:#fff;"></view>
</navigator>
</view>
<!-- 搜索栏 -->
<navigator url="/pages/columnGoods/goods_search/index" hover-class="none" class="search_content flex_a_c_j_sb">

View File

@ -9,23 +9,25 @@ 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 = "http://192.168.0.222"
// #ifdef MP-WEIXIN
httpApiTwo = "https://nk.lihaink.cn"
httpApiThree = 'http://ceshi-oa.lihaink.cn'
// #endif
// #ifdef H5
// httpApiTwo = "baseUrl" // h5跨域配置
httpApiTwo = "https://nk.lihaink.cn" // h5跨域配置
// httpApiThree = 'baseUrlTest' // h5跨域配置
// #endif
// 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'
// #endif
// #ifdef H5
// httpApiTwo = "baseUrl" // h5跨域配置
httpApiTwo = "https://nk.lihaink.cn" // h5跨域配置
// httpApiThree = 'baseUrlTest' // h5跨域配置
// #endif
} else if (process.env.NODE_ENV === 'production') {
// httpApi = 'https://shop.lihaink.cn' // 生产
httpApi = "https://crmeb-test.shop.lihaink.cn"
httpApiTwo = 'https://nk.lihaink.cn' // 生产
httpApiThree = 'http://ceshi-oa.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' //生产
}
// httpApi = 'https://shop.lihaink.cn' // 生产
// httpApiTwo = 'https://nk.lihaink.cn' // 生产
@ -35,37 +37,37 @@ if (process.env.NODE_ENV === "development") {
let wsApi = 'wss://shop.lihaink.cn'
module.exports = {
// 请求域名 格式: https://您的域名
// #ifdef MP || APP-PLUS
// HTTP_REQUEST_URL: httpApi,
HTTP_REQUEST_URL: httpApi,
HTTP_REQUEST_URL_TWO: httpApiTwo,
HTTP_REQUEST_URL_THREE: httpApiThree,
VUE_APP_WS_URL: `${wsApi}?type=user`,
// #endif
// 请求域名 格式: https://您的域名
// #ifdef MP || APP-PLUS
// HTTP_REQUEST_URL: httpApi,
HTTP_REQUEST_URL: httpApi,
HTTP_REQUEST_URL_TWO: httpApiTwo,
HTTP_REQUEST_URL_THREE: httpApiThree,
VUE_APP_WS_URL: `${wsApi}?type=user`,
// #endif
// #ifdef H5
//H5接口是浏览器地址
HTTP_REQUEST_URL: httpApi || window.location.protocol + "//" + window.location.host,
HTTP_REQUEST_URL_TWO: httpApiTwo || window.location.protocol + "//" + window.location.host,
// 聊天长连接地址
VUE_APP_WS_URL: wsApi ? `${wsApi}?type=user` : VUE_APP_WS_URL,
// #endif
openPlantGrass: openPlantGrass,
HEADER: {
'content-type': 'application/json',
//#ifdef H5
'Form-type': navigator.userAgent.toLowerCase().indexOf("micromessenger") !== -1 ? 'wechat' : 'h5',
//#endif
//#ifdef MP
'Form-type': 'routine',
//#endif
//#ifdef APP-PLUS
'Form-type': 'app',
//#endif
},
// 回话密钥名称 请勿修改此配置
TOKENNAME: 'X-Token',
// 缓存时间 0 永久
EXPIRE: 0,
// #ifdef H5
//H5接口是浏览器地址
HTTP_REQUEST_URL: httpApi || window.location.protocol + "//" + window.location.host,
HTTP_REQUEST_URL_TWO: httpApiTwo || window.location.protocol + "//" + window.location.host,
// 聊天长连接地址
VUE_APP_WS_URL: wsApi ? `${wsApi}?type=user` : VUE_APP_WS_URL,
// #endif
openPlantGrass: openPlantGrass,
HEADER: {
'content-type': 'application/json',
//#ifdef H5
'Form-type': navigator.userAgent.toLowerCase().indexOf("micromessenger") !== -1 ? 'wechat' : 'h5',
//#endif
//#ifdef MP
'Form-type': 'routine',
//#endif
//#ifdef APP-PLUS
'Form-type': 'app',
//#endif
},
// 回话密钥名称 请勿修改此配置
TOKENNAME: 'X-Token',
// 缓存时间 0 永久
EXPIRE: 0,
};

View File

@ -1,9 +1,9 @@
{
"name" : "CRMEB",
"name" : "惠农生活",
"appid" : "__UNI__3A527D1",
"description" : "",
"versionName" : "1.0.15",
"versionCode" : 138,
"versionName" : "1.0.18",
"versionCode" : 142,
"transformPx" : false,
/* 5+App */
"app-plus" : {
@ -26,7 +26,8 @@
"Camera" : {},
"Geolocation" : {},
"Payment" : {},
"Share" : {}
"Share" : {},
"OAuth" : {}
},
"safearea" : {
"bottom" : {
@ -111,9 +112,7 @@
"__platform__" : [ "ios", "android" ]
}
},
"oauth" : {
"apple" : {}
},
"oauth" : {},
"ad" : {}
},
"icons" : {

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": [
"前端组件",
"通用组件"
]
}
}

2820
pages.json

File diff suppressed because it is too large Load Diff

View File

@ -1,348 +1,578 @@
<template>
<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">
<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">
<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">
<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">
<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">
<view class="num">{{ census.refund }}</view>
<view>退款</view>
</navigator>
</view>
<view class="wrapper">
<view class="title">
<span class="iconfont icon-shujutongji"></span>数据统计
</view>
<view class="list acea-row" v-if="orderData">
<navigator class="item" :url="`/pages/admin/statistics/index?type=price&time=today&merId=${mer_id}`"
hover-class="none">
<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}`"
hover-class="none">
<view class="num">{{ orderData.yesterday.payPrice }}</view>
<view>昨日成交额</view>
</navigator>
<navigator class="item" :url="`/pages/admin/statistics/index?type=price&time=month&merId=${mer_id}`"
hover-class="none">
<view class="num">{{ orderData.month.payPrice }}</view>
<view>本月成交额</view>
</navigator>
<navigator class="item" :url="`/pages/admin/statistics/index?type=order&time=today&merId=${mer_id}`"
hover-class="none">
<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}`"
hover-class="none">
<view class="num">{{ orderData.yesterday.orderNum }}</view>
<view>昨日订单数</view>
</navigator>
<navigator class="item" :url="`/pages/admin/statistics/index?type=order&time=month&merId=${mer_id}`"
hover-class="none">
<view class="num">{{ orderData.month.orderNum}}</view>
<view>本月订单数</view>
</navigator>
</view>
</view>
<view class="public-wrapper">
<view class="title">
<span class="iconfont icon-xiangxishuju"></span>详细数据
</view>
<view class="nav acea-row row-between-wrapper">
<view class="data">日期</view>
<view class="browse">订单数</view>
<view class="turnover">成交额</view>
</view>
<view class="conter">
<view class="item acea-row row-between-wrapper" v-for="(item, index) in list" :key="index">
<view class="data">{{ item.day }}</view>
<view class="browse">{{ item.total }}</view>
<view class="turnover">{{ item.pay_price }}</view>
</view>
</view>
</view>
<Loading :loaded="loaded" :loading="loading"></Loading>
</view>
</view>
<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">
<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">
<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">
<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">
<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">
<view class="num">{{ census.refund }}</view>
<view>退款</view>
</navigator>
</view>
<view class="wrapper">
<view class="title">
<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}`"
hover-class="none">
<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}`"
hover-class="none">
<view class="num">{{ orderData.yesterday.payPrice }}</view>
<view>昨日成交额</view>
</navigator>
<navigator class="item" :url="`/pages/admin/statistics/index?type=price&time=month&merId=${mer_id}`"
hover-class="none">
<view class="num">{{ orderData.month.payPrice }}</view>
<view>本月成交额</view>
</navigator>
<navigator class="item" :url="`/pages/admin/statistics/index?type=order&time=today&merId=${mer_id}`"
hover-class="none">
<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}`"
hover-class="none">
<view class="num">{{ orderData.yesterday.orderNum }}</view>
<view>昨日订单数</view>
</navigator>
<navigator class="item" :url="`/pages/admin/statistics/index?type=order&time=month&merId=${mer_id}`"
hover-class="none">
<view class="num">{{ orderData.month.orderNum}}</view>
<view>本月订单数</view>
</navigator>
</view>
</view>
<view class="public-wrapper">
<view class="title">
<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>
<view class="browse">订单数</view>
<view class="turnover">成交额</view>
</view>
<view class="conter">
<view class="item acea-row row-between-wrapper" v-for="(item, index) in list" :key="index">
<view class="data">{{ item.day }}</view>
<view class="browse">{{ item.total }}</view>
<view class="turnover">{{ item.pay_price }}</view>
</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 Loading from '@/components/Loading/index.vue'
export default {
name: 'adminOrder',
components: {
Loading
},
data() {
return {
census: {},
orderData: {
today: {},
yesterday: {},
month: {}
},
list: [],
where: {
page: 1,
limit: 15,
product_type: ''
},
loaded: false,
loading: false,
mer_id: '',
}
},
onLoad(options) {
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)
},
methods: {
getIndex: function() {
var that = this;
getStatisticsInfo().then(
res => {
that.census = res.data;
},
err => {
that.$util.Tips({
title: err.msg
})
}
);
},
getList: function(mer_id) {
var that = this;
if (that.loading || that.loaded) return;
that.loading = true;
orderPrice(that.where, mer_id).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;
},
error => {
that.$util.Tips({
title: error.msg
})
},
300
);
},
getOrderStatistics: function(mer_id) {
let that = this;
const data = { product_type: this.where.product_type }
console.log('data', data);
orderStatistics(mer_id, data).then(
res => {
that.census = res.data.order;
that.orderData = res.data.data;
},
err => {
that.$util.Tips({
title: err.msg
})
}
);
}
},
onReachBottom() {
this.getList(this.mer_id)
}
}
import {
getStatisticsInfo,
getStatisticsMonth,
orderStatistics,
orderPrice,
purchaseOrder
} from "@/api/admin";
import Loading from '@/components/Loading/index.vue'
export default {
name: 'adminOrder',
components: {
Loading
},
data() {
return {
census: {},
orderData: {
today: {},
yesterday: {},
month: {}
},
list: [],
OrderList: [], //
where: {
page: 1,
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() {
var that = this;
getStatisticsInfo().then(
res => {
that.census = res.data;
},
err => {
that.$util.Tips({
title: err.msg
})
}
);
},
getList: function(mer_id) {
var that = this;
if (that.loading || that.loaded) return;
that.loading = true;
orderPrice(that.where, mer_id).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;
},
error => {
that.$util.Tips({
title: error.msg
})
},
300
);
},
getOrderStatistics: function(mer_id) {
let that = this;
const data = {
product_type: this.where.product_type
}
console.log('data', data);
orderStatistics(mer_id, data).then(
res => {
that.census = res.data.order;
that.orderData = res.data.data;
},
err => {
that.$util.Tips({
title: err.msg
})
}
);
},
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() {
this.getList(this.mer_id)
}
}
</script>
<style lang="scss">
.popupn {
position: fixed;
width: 100%;
text-align: center;
top: 0;
left: 0;
background: transparent;
height: 90rpx;
line-height: 90rpx;
z-index: 100;
<style lang="scss" scoped>
.popupn {
position: fixed;
width: 100%;
text-align: center;
top: 0;
left: 0;
background: transparent;
height: 90rpx;
line-height: 90rpx;
z-index: 100;
.spin {
display: block;
transform: rotate(180deg);
font-size: 36rpx;
}
.spin {
display: block;
transform: rotate(180deg);
font-size: 36rpx;
}
.title {
max-width: 560rpx;
margin: 0 auto;
position: relative;
display: inline;
padding: 10rpx 30rpx 10rpx 50rpx;
background-color: rgba(0, 0, 0, 0.15);
border-radius: 30rpx;
color: #fff;
}
.title {
max-width: 560rpx;
margin: 0 auto;
position: relative;
display: inline;
padding: 10rpx 30rpx 10rpx 50rpx;
background-color: rgba(0, 0, 0, 0.15);
border-radius: 30rpx;
color: #fff;
}
.iconfont {
display: inline-block;
position: relative;
top: 4rpx;
right: 0;
}
.supervisory_img {
display: inline-block;
width: 500rpx;
height: 500rpx;
background-color: red;
overflow: hidden;
}
.mer_logo {
width: 34rpx;
height: 34rpx;
position: relative;
top: 6rpx;
right: 10px;
}
.iconfont {
display: inline-block;
position: relative;
top: 4rpx;
right: 0;
}
.mer_name {
display: inline-block;
max-width: 650rpx;
}
.mer_logo {
width: 34rpx;
height: 34rpx;
position: relative;
top: 6rpx;
right: 10px;
}
.invoice-content {
background-color: #ffffff;
}
}
.mer_name {
display: inline-block;
max-width: 650rpx;
}
/*订单首页*/
.order-index .header {
background-image: url("https://lihai001.oss-cn-chengdu.aliyuncs.com/public/kk/beijing2.png");
background-size: 100% 100%;
width: 100%;
height: 280upx;
padding: 40upx 3upx 0 3upx;
box-sizing: border-box;
}
.invoice-content {
background-color: #ffffff;
}
}
.order-index .header .item {
flex: 1;
-webkit-flex: 1;
-o-flex: 1;
-ms-flex: 1;
text-align: center;
font-size: 24upx;
color: #fff;
}
/*订单首页*/
.order-index .header {
background: url("@/static/images/beijin.png") no-repeat;
background-size: 100% 100%;
width: 100%;
height: 280upx;
padding: 40upx 3upx 0 3upx;
box-sizing: border-box;
}
.order-index .header .item .num {
font-size: 40upx;
margin-bottom: 7upx;
height: 60rpx;
}
.order-index .header .item {
flex: 1;
-webkit-flex: 1;
-o-flex: 1;
-ms-flex: 1;
text-align: center;
font-size: 24upx;
color: #fff;
}
.order-index .wrapper {
width: 690upx;
background-color: #fff;
border-radius: 10upx;
margin: -115upx auto 0 auto;
padding-top: 25upx;
}
.order-index .header .item .num {
font-size: 40upx;
margin-bottom: 7upx;
height: 60rpx;
}
.order-index .wrapper .title {
font-size: 30upx;
color: #282828;
padding: 0 30upx;
margin-bottom: 40upx;
}
.order-index .wrapper {
width: 690upx;
background-color: #fff;
border-radius: 10upx;
margin: -115upx auto 0 auto;
padding-top: 25upx;
}
.order-index .wrapper .title .iconfont {
color: #2291f8;
font-size: 40upx;
margin-right: 13upx;
vertical-align: middle;
}
.order-index .wrapper .title {
font-size: 30upx;
color: #282828;
padding: 0 30upx;
margin-bottom: 40upx;
}
.order-index .wrapper .list .item {
width: 33.33%;
text-align: center;
font-size: 24upx;
color: #999;
margin-bottom: 45upx;
}
.order-index .wrapper .title .iconfont {
color: #2291f8;
font-size: 40upx;
margin-right: 13upx;
vertical-align: middle;
}
.order-index .wrapper .list .item .num {
font-size: 40upx;
color: #333;
}
.order-index .wrapper .list .item {
width: 33.33%;
text-align: center;
font-size: 24upx;
color: #999;
margin-bottom: 45upx;
}
.public-wrapper .title {
font-size: 30upx;
color: #282828;
padding: 0 30upx;
margin-bottom: 20upx;
}
.order-index .wrapper .list .item .num {
font-size: 40upx;
color: #333;
}
.public-wrapper .title .iconfont {
color: #2291f8;
font-size: 40upx;
margin-right: 13upx;
vertical-align: middle;
}
.public-wrapper .title {
font-size: 30upx;
color: #282828;
padding: 0 30upx;
margin-bottom: 20upx;
}
.public-wrapper {
margin: 18upx auto 0 auto;
width: 690upx;
background-color: #fff;
border-radius: 10upx;
padding-top: 25upx;
}
.public-wrapper .title .iconfont {
color: #2291f8;
font-size: 40upx;
margin-right: 13upx;
vertical-align: middle;
}
.public-wrapper .nav {
padding: 0 30upx;
height: 70upx;
line-height: 70upx;
font-size: 24upx;
color: #999;
}
.public-wrapper {
margin: 18upx auto 0 auto;
width: 690upx;
background-color: #fff;
border-radius: 10upx;
padding-top: 25upx;
.public-wrapper .data {
width: 210upx;
text-align: left;
}
.item {
.num {
display: flex;
justify-content: flex-start;
align-items: center;
}
}
}
.public-wrapper .browse {
width: 192upx;
text-align: right;
}
.public-wrapper .nav {
padding: 0 30upx;
height: 70upx;
line-height: 70upx;
font-size: 24upx;
color: #999;
}
.public-wrapper .turnover {
width: 227upx;
text-align: right;
}
.public-wrapper .data {
width: 210upx;
text-align: left;
}
.public-wrapper .conter {
padding: 0 30upx;
}
.public-wrapper .browse {
width: 192upx;
text-align: right;
}
.public-wrapper .conter .item {
border-bottom: 1px solid #f7f7f7;
height: 70upx;
font-size: 24upx;
}
.public-wrapper .turnover {
width: 227upx;
text-align: right;
}
.public-wrapper .conter .item .turnover {
color: #d84242;
}
.public-wrapper .conter {
padding: 0 30upx;
}
.public-wrapper .conter .item {
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">
收件码
</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;
},

File diff suppressed because it is too large Load Diff

View File

@ -158,9 +158,9 @@
} else {
this.$set(this, 'searchValue', event);
}
this.$nextTick(() => {
this.focus = true
})
// this.$nextTick(() => {
// this.focus = true
// })
this.searchBut()
},
setValue: function(event) {

View File

@ -2,11 +2,9 @@
<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>
@ -22,7 +20,7 @@
<view class="tab-item" :class="{on:tabIndex==2}" @click="tabIndex = 2">店铺</view>
</view>
<block v-if="tabIndex==1">
<view class='nav acea-row row-middle'>
<view class='nav acea-row row-middle' >
<view class='item' @click="downStatus = !downStatus"
:class="{'t-color':downKey>0 && firstKey == 0}">
{{downMenu[downKey].title}}
@ -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() {
@ -897,13 +895,14 @@
.productList .search {
width: 100%;
height: 86rpx;
padding: 0 20rpx;
box-sizing: border-box;
position: fixed;
left: 0;
top: 0;
z-index: 9;
height: 170rpx;
padding: 0 20rpx;
// box-sizing: border-box;
position: fixed;
left: 0;
top: 0rpx;
padding-top: 60rpx;
z-index: 9;
background-color: var(--view-theme);
.icon-dingwei {
@ -966,7 +965,7 @@
z-index: 9;
position: fixed;
left: 0;
top: 0;
top: 70rpx;
width: 100%;
margin-top: 86rpx;
background-color: var(--view-theme);
@ -1040,6 +1039,7 @@
.productList .list {
padding: 0 20rpx;
}
.productList .list.on {
@ -1075,6 +1075,7 @@
position: relative;
width: 100%;
height: 345rpx;
}
.productList .list .item .pictrue.on {
@ -1417,7 +1418,8 @@
}
.store-wrapper {
margin-top: 240rpx;
margin-top: 310rpx;
border-top: 1px solid #F6F6F6;
.star-box {

View File

@ -0,0 +1,422 @@
<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)
},
//
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,337 @@
<template>
<view class="content">
<view class="content_top">
<view class="content_top-one">
<image src="@/static/images/dong.gif" mode="aspectFill"></image>
</view>
<view class="content_top-two">
<view class="top-two-one">
待评价
</view>
<view class="top-two-two">
2020-07-07 14:14:14
</view>
</view>
</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 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>
import {} from '@/api/sale.js'
</script>
<style lang="scss">
.content {
position: relative;
}
.content_top {
height: 151rpx;
background: linear-gradient(84deg, #2352FA 0%, #6497FF 100%);
display: flex;
padding-top: 21rpx;
.content_top-one {
width: 107rpx;
height: 107rpx;
margin-left: 28rpx;
image {
width: 100%;
height: 100%;
}
}
.content_top-two {
margin-left: 25rpx;
.top-two-one {
font-size: 35rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #FFFFFF;
margin-top: 10rpx;
}
.top-two-two {
font-size: 28rpx;
font-family: SF Pro Display-Light, SF Pro Display;
font-weight: 300;
color: #FFFFFF;
margin-top: 10rpx;
}
}
}
.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 {
width: 360rpx;
text-align: right;
border: 1px solid;
word-wrap: break-word;
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,888 @@
<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" @click="detail">
详情
</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 class="adddelegation" @click="addDelegation">
<view class="adddelegation-one">
<image src="@/static/images/delegation.png" mode=""></image>
</view>
<view class="adddelegation-two">
新增委托
</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; //
},
//
addDelegation(){
uni.navigateTo({
url:'/pages/commissionedSales/addDelegation/index'
})
},
//
close() {
this.$refs.bindmobile.close()
this.$refs.bindmobile1.close()
this.$refs.bindmobile2.close()
this.$refs.bindmobile3.close()
},
//
detail() {
uni.navigateTo({
url: '/pages/commissionedSales/delegation_details/index'
})
},
//
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 {
height: 100vh;
position: relative;
}
.content_top {
background-color: #FFFFFF;
}
.adddelegation {
width: 694rpx;
height: 95rpx;
background: linear-gradient(276deg, #F98649 0%, #F34E45 100%);
box-shadow: 0 5rpx 11rpx 2rpx rgba(136, 20, 7, 0.3);
border-radius: 47rpx 47rpx 47rpx 47rpx;
opacity: 1;
display: flex;
position: fixed;
position: absolute;
bottom: 84rpx;
left: 50%;
margin-left: -347rpx;
.adddelegation-one {
width: 50rpx;
margin-right: 30rpx;
height: 50rpx;
margin-left: 242rpx;
margin-top: 21rpx;
image {
width: 50rpx;
height: 50rpx;
}
}
.adddelegation-two {
font-size: 32rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #FFFFFF;
margin-top: 25rpx;
}
}
.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: 1px;
height: 30rpx;
opacity: 1;
margin-top: 8rpx;
background-color: #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,813 @@
<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

@ -5,198 +5,226 @@
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="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">
</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}`)">
<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/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}`)">
<!-- <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>
<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="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}`)">
<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}`)">
<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_id!=null&&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}&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>
</block>
<!-- <m-tabbar native>
<template v-slot:tabbar_index_2>
@ -205,11 +233,16 @@
</view>
</template>
</m-tabbar> -->
<view class="" 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,
@ -236,7 +269,8 @@
export default {
components: {
mTabbar,
zbpSwiper
zbpSwiper,
emptyPage
},
data() {
return {
@ -290,10 +324,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);
});
}
}

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

@ -1,394 +1,510 @@
<template>
<view class="Circle_friends">
<view class="circle_friends_wrapper">
<view class="Circle_friends">
<view class="circle_friends_wrapper">
<zbpSwiper></zbpSwiper>
<zbpSwiper></zbpSwiper>
<view class="tabs_wrapper">
<u-tabs :list="tabsData.list" @click="tabsChange" lineColor="#F84221" keyName="cate_name"></u-tabs>
</view>
<view class="tabs_wrapper">
<u-tabs :list="tabsData.list" @click="tabsChange" lineColor="#F84221" keyName="cate_name"></u-tabs>
</view>
<view class="">
<view class="goods">
<block v-for="(item,index) in cateGoods" :key="index">
<view class="goods_item" @click="gogogo(item)">
<view style="height: 294.74rpx;">
<u--image :src="item.image[0]" width="342.11rpx" height="294.74rpx" :showLoading="true" lazyLoad fade
duration="450">
<template v-slot:loading>
<u-loading-icon color="#f5f5f5"></u-loading-icon>
</template>
</u--image>
</view>
<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>
<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="collect">{{item.count_start}}</text>
</view>
</view>
</view>
</view>
</block>
</view>
<view class="empty_wrapper" v-if="emptyShow">
<u-empty :show="emptyShow" mode="list" icon="http://cdn.uviewui.com/uview/empty/list.png"></u-empty>
</view>
</view>
</view>
<view class="goods">
<block v-for="(item,index) in cateGoods" :key="index">
<view class="goods_item" @click="gogogo(item)">
<view style="height: 294.74rpx;">
<u--image :src="item.image[0]" width="342.11rpx" height="294.74rpx" :showLoading="true"
lazyLoad fade duration="450">
<template v-slot:loading>
<u-loading-icon color="#f5f5f5"></u-loading-icon>
</template>
</u--image>
</view>
<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>
<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="collect">{{item.count_start}}</text>
</view>
</view>
</view>
</view>
</block>
</view>
<view class="empty_wrapper" v-if="emptyShow">
<u-empty :show="emptyShow" mode="list" icon="http://cdn.uviewui.com/uview/empty/list.png"></u-empty>
</view>
</view>
<u-picker :defaultIndex="[0,0]" :show="showPicker" ref="uPicker" :columns="columnData" @confirm="confirm"
@cancel="showPicker = false" @change="changeHandler" keyName="name"></u-picker>
<u-loadmore :status="status" />
<!-- <view class="bg_color"></view> -->
<u-picker :defaultIndex="[0,0]" :show="showPicker" ref="uPicker" :columns="columnData" @confirm="confirm"
@cancel="showPicker = false" @change="changeHandler" keyName="name"></u-picker>
<u-loadmore :status="status" v-if="cateGoods.length>0" />
<!-- <view class="bg_color"></view> -->
<!-- <m-tabbar native>
<!-- <m-tabbar native>
<template v-slot:tabbar_index_2>
<view class="custom_style">
<view class="custom_style_icon"></view>
</view>
</template>
</m-tabbar> -->
</view>
</view>
</template>
<script>
import mTabbar from '@/components/m-tabbar/m-tabbar.vue'
import zbpSwiper from '@/components/zbpSwiper'
import easyLoadimage from '@/components/easy-loadimage/easy-loadimage.vue';
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,
zbpSwiper,
easyLoadimage
},
data() {
return {
status: 'loadmore',
bgColor: '',
showPicker: false,
columnData: [],
show: false,
tabsData: {
list: [],
tabsActive: 0
},
where: {
category_id: 0,
page: 1,
limit: 15
},
currentItemId: 69, // 0 || 69
keyword: '',
location: '',
emptyShow: false,
street: '',
cateGoods: []
}
},
onPullDownRefresh() {
this.getCateList()
this.getGoods()
this.selfLocation()
this.Area()
uni.stopPullDownRefresh()
},
onLoad() {
this.getCateList()
this.getGoods()
this.selfLocation()
this.Area()
uni.$on('connectstatusChange',(connectstatus) =>{
var connectstr = ''
if (connectstatus == true) {
connectstr ='已连接'
this.getRegistrationID()
}else{
connectstr ='未连接'
}
this.connectstatus = connectStr
})
},
onShow() {},
onReachBottom() {
if (this.status == 'nomore') return;
this.status = 'loading';
this.where.page = ++this.where.page;
this.getGoods()
},
methods: {
confirm(e) {
this.where.street_id = e.value[1].code
this.showPicker = false
},
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);
});
},
gogogo(item) {
if (this.tabsData.tabsActive == 1) {
uni.navigateTo({
//#ifdef APP
url: '/pages/short_video/appSwiper/index?id=' + item.community_id,
//#endif
//#ifndef MP || H5
url: '/pages/short_video/nvueSwiper/index?id=' + item.community_id
//#endif
})
} else {
uni.navigateTo({
url: '/pages/plantGrass/plant_detail/index?id=' + item.community_id
})
}
},
giveStart(item) {
let status = item.relevance_id ? 0 : 1
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
item.relevance_id = false
} else {
item.count_start++;
item.relevance_id = true
}
})
},
getGoods: function(item) {
// console.log(item);
graphicLstApi(this.where).then(res => {
this.cateGoods.push(...res.data.list)
if (res.data.list.length < this.where.limit) this.status = 'nomore'
if (this.where.page == 1 && res.data.list.length <= 0) this.emptyShow = true
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
})
}
})
},
/*获取分类列表*/
async getCateList() {
const { data } = await getTopicList()
this.tabsData.list = [{
cate_name: "推荐",
category_id: 0
}, {
cate_name: "视频",
category_id: -1,
children: []
}, ...data]
},
tabsChange(item) {
this.cateGoods = []
this.where.category_id = item.category_id
this.where.page = 1
this.getGoods(item)
this.street_id = item.id
this.tabsData.tabsActive = item.index
import mTabbar from '@/components/m-tabbar/m-tabbar.vue'
import zbpSwiper from '@/components/zbpSwiper'
import easyLoadimage from '@/components/easy-loadimage/easy-loadimage.vue';
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,
zbpSwiper,
easyLoadimage
},
data() {
return {
status: 'loadmore',
bgColor: '',
showPicker: false,
columnData: [],
show: false,
tabsData: {
list: [],
tabsActive: 0
},
where: {
category_id: 0,
page: 1,
limit: 15
},
currentItemId: 69, // 0 || 69
keyword: '',
location: '',
emptyShow: false,
street: '',
cateGoods: []
}
},
onPullDownRefresh() {
this.getCateList()
this.getGoods()
this.selfLocation()
this.Area()
uni.stopPullDownRefresh()
},
onLoad() {
this.getCateList()
this.getGoods()
this.selfLocation()
this.Area()
this.setPermissions()
// this.openTongZhi()
uni.$on('connectstatusChange', (connectstatus) => {
var connectstr = ''
if (connectstatus == true) {
connectstr = '已连接'
this.getRegistrationID()
} else {
connectstr = '未连接'
}
this.connectstatus = connectStr
})
},
selfLocation() {
const that = this
uni.getLocation({
type: 'gcj02',
timeout: '10',
success: (res) => {
let latitude, longitude;
latitude = res.latitude.toString();
longitude = res.longitude.toString();
getGeocoder({ lat: latitude, long: longitude }).then(res => {
that.$store.commit('setLocation', res.data)
that.street = res.data.address_component.street
}).catch(err => {
uni.showToast({
title: err,
icon: 'none'
})
})
},
fail: (err) => {
uni.showToast({
title: "获取定位超时",
icon: 'none',
duration: 2000
});
}
});
},
}
}
},
onShow() {},
onReachBottom() {
if (this.status == 'nomore') return;
this.status = 'loading';
this.where.page = ++this.where.page;
this.getGoods()
},
methods: {
confirm(e) {
this.where.street_id = e.value[1].code
this.showPicker = false
},
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);
});
},
gogogo(item) {
if (this.tabsData.tabsActive == 1) {
uni.navigateTo({
//#ifdef APP
url: '/pages/short_video/appSwiper/index?id=' + item.community_id,
//#endif
//#ifndef MP || H5
url: '/pages/short_video/nvueSwiper/index?id=' + item.community_id
//#endif
})
} else {
uni.navigateTo({
url: '/pages/plantGrass/plant_detail/index?id=' + item.community_id
})
}
},
giveStart(item) {
let status = item.relevance_id ? 0 : 1
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
item.relevance_id = false
} else {
item.count_start++;
item.relevance_id = true
}
})
},
getGoods: function(item) {
graphicLstApi(this.where).then(res => {
this.cateGoods.push(...res.data.list)
if (res.data.list.length < this.where.limit) this.status = 'nomore'
if (this.where.page == 1 && res.data.list.length <= 0) this.emptyShow = true
if(item){
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
})
}
}
})
},
/*获取分类列表*/
async getCateList() {
const {
data
} = await getTopicList()
this.tabsData.list = [{
cate_name: "推荐",
category_id: 0
}, {
cate_name: "视频",
category_id: -1,
children: []
}, ...data]
},
tabsChange(item) {
this.cateGoods = []
this.where.category_id = item.category_id
this.where.page = 1
this.getGoods(item)
this.street_id = item.id
this.tabsData.tabsActive = item.index
},
selfLocation() {
const that = this
uni.getLocation({
type: 'wgs84',
timeout: '10',
success: (res) => {
let latitude, longitude;
latitude = res.latitude.toString();
longitude = res.longitude.toString();
getGeocoder({
lat: latitude,
long: longitude
}).then(res => {
that.$store.commit('setLocation', res.data)
that.street = res.data.address_component.street
}).catch(err => {
uni.showToast({
title: err,
icon: 'none'
})
})
},
fail: (err) => {
uni.showToast({
title: "获取定位超时",
icon: 'none',
duration: 2000
});
}
});
},
/**
* 设置手机通知权限
*/
setPermissions() {
// #ifdef APP-PLUS
if (plus.os.name == 'Android') { // Android
var main = plus.android.runtimeMainActivity();
var pkName = main.getPackageName();
var uid = main.getApplicationInfo().plusGetAttribute("uid");
var NotificationManagerCompat = plus.android.importClass(
"android.support.v4.app.NotificationManagerCompat");
//android.support.v4androidx
if (NotificationManagerCompat == null) {
NotificationManagerCompat = plus.android.importClass(
"androidx.core.app.NotificationManagerCompat");
}
var areNotificationsEnabled = NotificationManagerCompat.from(main).areNotificationsEnabled();
//
if (!areNotificationsEnabled) {
uni.showModal({
title: '通知权限开启提醒',
content: '您还没有开启通知权限,无法接受到消息通知,请前往设置!',
showCancel: false,
confirmText: '去设置',
success: function(res) {
if (res.confirm) {
var Intent = plus.android.importClass('android.content.Intent');
var Build = plus.android.importClass("android.os.Build");
//android 8.0
if (Build.VERSION.SDK_INT >= 26) {
var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');
intent.putExtra('android.provider.extra.APP_PACKAGE', pkName);
} else if (Build.VERSION.SDK_INT >= 21) { //android 5.0-7.0
var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');
intent.putExtra("app_package", pkName);
intent.putExtra("app_uid", uid);
} else { //(<21)--
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
var uri = Uri.fromParts("package", mainActivity.getPackageName(),
null);
intent.setData(uri);
}
//
main.startActivity(intent);
}
}
});
}
} else if (plus.os.name == 'iOS') { // ISO
var isOn = undefined;
var types = 0;
var app = plus.ios.invoke('UIApplication', 'sharedApplication');
var settings = plus.ios.invoke(app, 'currentUserNotificationSettings');
if (settings) {
types = settings.plusGetAttribute('types');
plus.ios.deleteObject(settings);
} else {
types = plus.ios.invoke(app, 'enabledRemoteNotificationTypes');
}
plus.ios.deleteObject(app);
isOn = (0 != types);
if (isOn == false) {
uni.showModal({
title: '通知权限开启提醒',
content: '您还没有开启通知权限,无法接受到消息通知,请前往设置!',
showCancel: false,
confirmText: '去设置',
success: function(res) {
if (res.confirm) {
var app = plus.ios.invoke('UIApplication', 'sharedApplication');
var setting = plus.ios.invoke('NSURL', 'URLWithString:', 'app-settings:');
plus.ios.invoke(app, 'openURL:', setting);
plus.ios.deleteObject(setting);
plus.ios.deleteObject(app);
}
}
});
}
}
// #endif
}
}
}
</script>
<style lang="scss">
page {
// background: linear-gradient(180deg, #FFFFFF 0%, #F6F6F6 100%);
}
page {
// background: linear-gradient(180deg, #FFFFFF 0%, #F6F6F6 100%);
}
.Circle_friends {
position: relative;
padding: 0 0 87.72rpx 0;
background: linear-gradient(180deg, #FFFFFF 0%, #F6F6F6 100%);
}
.Circle_friends {
position: relative;
padding: 0 0 87.72rpx 0;
background: linear-gradient(180deg, #FFFFFF 0%, #F6F6F6 100%);
}
.circle_friends_wrapper {
position: relative;
z-index: 2;
}
.circle_friends_wrapper {
position: relative;
z-index: 2;
}
.search_wrapper {
width: 694.74rpx;
margin: 0 auto;
}
.search_wrapper {
width: 694.74rpx;
margin: 0 auto;
}
.tabs_wrapper {
width: 694.74rpx;
margin: 0 auto;
margin-bottom: 21.05rpx;
}
.tabs_wrapper {
width: 694.74rpx;
margin: 0 auto;
margin-bottom: 21.05rpx;
}
.empty_wrapper {
display: flex;
align-items: center;
justify-content: center;
}
.empty_wrapper {
display: flex;
align-items: center;
justify-content: center;
}
.goods {
margin: 0 auto;
width: 694.74rpx;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.goods {
margin: 0 auto;
width: 694.74rpx;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.goods_item {
width: 342.11rpx;
height: 491.23rpx;
border-radius: 8px;
overflow: hidden;
background-color: #fff;
display: flex;
flex-direction: column;
margin-bottom: 10.53rpx;
.goods_item {
width: 342.11rpx;
height: 491.23rpx;
border-radius: 8px;
overflow: hidden;
background-color: #fff;
display: flex;
flex-direction: column;
margin-bottom: 10.53rpx;
.goods_img {
width: 100%;
height: 294.74rpx;
.goods_img {
width: 100%;
height: 294.74rpx;
/deep/.easy-loadimage {
width: 100%;
height: 294.74rpx;
// border-radius: 8rpx;
position: relative;
}
}
/deep/.easy-loadimage {
width: 100%;
height: 294.74rpx;
// border-radius: 8rpx;
position: relative;
}
}
.botm {
flex: 1;
padding: 0 14.04rpx;
padding-bottom: 21.05rpx;
display: flex;
flex-direction: column;
justify-content: space-between;
.botm {
flex: 1;
padding: 0 14.04rpx;
padding-bottom: 21.05rpx;
display: flex;
flex-direction: column;
justify-content: space-between;
.title {
margin: 12px 0;
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.title {
margin: 12px 0;
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.goods_info {
justify-content: space-between;
.goods_info {
justify-content: space-between;
.g_img {
width: 60rpx;
height: 60rpx;
border-radius: 50%;
}
.g_img {
width: 60rpx;
height: 60rpx;
border-radius: 50%;
}
.g_name {
margin-left: 8.77rpx;
width: 100.63rpx;
text-overflow: ellipsis;
/* 溢出显示省略号 */
overflow: hidden;
/* 溢出隐藏 */
white-space: nowrap;
/* 强制不换行 */
}
.g_name {
margin-left: 8.77rpx;
width: 100.63rpx;
text-overflow: ellipsis;
/* 溢出显示省略号 */
overflow: hidden;
/* 溢出隐藏 */
white-space: nowrap;
/* 强制不换行 */
}
.nice_box {
display: flex;
align-items: center;
.nice_box {
display: flex;
align-items: center;
.isshow {
color: #FE3530 !important;
}
.isshow {
color: #FE3530 !important;
}
.iconfont {
font-size: 30rpx;
}
.iconfont {
font-size: 30rpx;
}
.icon-shoucang1 {
color: #F84221;
}
.icon-shoucang1 {
color: #F84221;
}
.collect {
font-size: 24rpx;
margin-left: 5rpx;
}
}
}
}
}
}
.collect {
font-size: 24rpx;
margin-left: 5rpx;
}
}
}
}
}
}
</style>

View File

@ -33,7 +33,7 @@
<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 +57,22 @@
} 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 +106,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/app-plus/sharemenu/wechatfriend.png",
"text": "微信好友",
"share": { //type=5
"provider": "weixin",
"scene": "WXSceneSession"
}
},
{
"img": "/static/app-plus/sharemenu/wechatmoments.png",
"text": "微信朋友圈",
"share": {
"provider": "weixin",
"scene": "WXSceneTimeline"
}
},
{
"img": "/static/app-plus/sharemenu/mp_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

@ -1,334 +1,358 @@
<template>
<view class="goods_list">
<view class="head_search flex_a_c">
<view class="search_content flex_a_c_j_sb">
<view class="flex_a_c">
<view class="iconfont icon-sousuo"></view>
<input type="text" v-model="params.keyword" placeholder="请搜索">
</view>
<button class="search_btn" @click="searchClick">搜索</button>
</view>
</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>
<view class="r_box flex_a_c_j_sb">
<view class="message">
<view class="title">{{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>
<view class="redact_box">
<view class="order_price">订货价{{item.price}}</view>
<button class="redact" @click="redactShow(item)">编辑</button>
</view>
</view>
</view>
</block>
<view class="goods_list">
<view class="head_search flex_a_c">
<view class="search_content flex_a_c_j_sb">
<view class="flex_a_c">
<view class="iconfont icon-sousuo"></view>
<input type="text" v-model="params.keyword" placeholder="请搜索">
</view>
<button class="search_btn" @click="searchClick">搜索</button>
</view>
</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>
<view class="r_box flex_a_c_j_sb">
<view class="message">
<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 || "" }}</view>
</view>
<view class="redact_box">
<view class="order_price">订货价{{item.price}}</view>
<button class="redact" @click="redactShow(item)">编辑</button>
</view>
</view>
</view>
</block>
<u-popup :show="popupShow" @close="popupShow = false" mode="center" :round="10" closeOnClickOverlay>
<view class="popup_cont" v-if="redactGoods.store_name">
<view class="title">{{redactGoods.store_name}}</view>
<view class="message flex_a_c_j_sb">
<view class="">分类{{redactGoods.storeCategory.cate_name}}</view>
<view class="">单位{{redactGoods.unit_name}}</view>
<view class="">订货价{{redactGoods.price}}</view>
</view>
<view class="bar_code flex_a_c_j_sb">
<view>条形码{{ redactGoods.bar_code || "0" }}</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="btns_box">
<view class="cancel" @click="popupClose">取消</view>
<view class="save" @click="submitCreatedGoods">保存</view>
</view>
</view>
</u-popup>
</view>
<u-popup :show="popupShow" @close="popupShow = false" mode="center" :round="10" closeOnClickOverlay>
<view class="popup_cont" v-if="redactGoods.store_name">
<view class="title">{{redactGoods.store_name}}</view>
<view class="message flex_a_c_j_sb">
<view class="">分类{{redactGoods.storeCategory.cate_name}}</view>
<view class="">单位{{redactGoods.unit_name}}</view>
<view class="">订货价{{redactGoods.price}}</view>
</view>
<view class="bar_code flex_a_c_j_sb">
<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="btns_box">
<view class="cancel" @click="popupClose">取消</view>
<view class="save" @click="submitCreatedGoods">保存</view>
</view>
</view>
</u-popup>
</view>
</template>
<script>
import {
getStorage,
removeStorage,
Toast,
Loading,
hideLoading,
Modal
} from '@/libs/uniApi.js';
import { productLstApi, productCreate, productUpdate, productDetail } from '@/api/product.js'
import { checkLogin } from '../../../libs/login';
export default {
data() {
return {
goodsPrive: '',
goodsNum: '',
goodsList: [],
redactGoods: {},
search: '',
popupShow: false,
merId: '',
product_id: '',
addGoodsSecoundData: {
is_good: 0, //
is_gift_bag: 0,
sort: '',
once_count: '', //
video_link: ''
},
disModel: false,
particulars: {},
mer_id: '',
status: 'loadmore',
loadingText: '努力加载中',
loadmoreText: '轻轻上拉',
nomoreText: '实在没有了',
params: {
page: 1,
limit: 10,
keyword: ''
},
// page: 1,
}
},
onLoad(e) {
this.mer_id = e.merid
this.getGoodsList()
this.initData();
import {
getStorage,
removeStorage,
Toast,
Loading,
hideLoading,
Modal
} from '@/libs/uniApi.js';
import {
productLstApi,
productCreate,
productUpdate,
productDetail
} from '@/api/product.js'
import {
checkLogin
} from '../../../libs/login';
export default {
data() {
return {
goodsPrive: '',
goodsNum: '',
goodsList: [],
redactGoods: {},
search: '',
popupShow: false,
merId: '',
product_id: '',
addGoodsSecoundData: {
is_good: 0, //
is_gift_bag: 0,
sort: '',
once_count: '', //
video_link: ''
},
disModel: false,
particulars: {},
mer_id: '',
status: 'loadmore',
loadingText: '努力加载中',
loadmoreText: '轻轻上拉',
nomoreText: '实在没有了',
params: {
page: 1,
limit: 10,
keyword: ''
},
// page: 1,
}
},
onLoad(e) {
this.mer_id = e.merid
this.getGoodsList()
this.initData();
// uni.setNavigationBarTitle({
// title: e.title
// })
},
onShow() {},
methods: {
async searchClick() {
const { data } = await productLstApi(this.mer_id, this.params)
this.goodsList = data.list
},
async getGoodsList() {
const { data } = await productLstApi(this.mer_id, this.params)
this.goodsList.push(...data.list)
if (data.length < 9) this.status = 'nomore';
},
redactShow(item) {
this.product_id = item.product_id
this.merId = item.mer_id
this.redactGoods = item
this.popupShow = true
productDetail(item.mer_id, item.product_id).then(res => {
this.particulars = res.data
})
// console.log('', item);
},
popupClose() {
this.goodsPrive = ''
this.goodsNum = ''
this.popupShow = false
},
//
async submitCreatedGoods() {
this.particulars.attrValue[0].stock = Number(this.goodsNum)
this.particulars.attrValue[0].price = this.goodsPrive
const res = await productUpdate(this.merId, this.product_id, this.particulars)
// Toast(message)
this.getGoodsList()
this.popupShow = false
this.goodsPrive = ''
this.goodsNum = ''
},
initData() {
let editGoodsDetils = {};
if (getStorage('goodsDis')) {
this.disModel = true;
}
if (this.product_id) {
editGoodsDetils = getStorage('editGoodsDetils');
Object.keys(this.addGoodsSecoundData).forEach(item => {
this.addGoodsSecoundData[item] = editGoodsDetils[item];
});
// uni.setNavigationBarTitle({
// title: e.title
// })
},
onShow() {},
methods: {
async searchClick() {
const {
data
} = await productLstApi(this.mer_id, this.params)
this.goodsList = data.list
},
async getGoodsList() {
const {
data
} = await productLstApi(this.mer_id, this.params)
this.goodsList.push(...data.list)
if (data.length < 9) this.status = 'nomore';
},
redactShow(item) {
this.product_id = item.product_id
this.merId = item.mer_id
this.redactGoods = item
this.popupShow = true
productDetail(item.mer_id, item.product_id).then(res => {
this.particulars = res.data
})
// console.log('', item);
},
popupClose() {
this.goodsPrive = ''
this.goodsNum = ''
this.popupShow = false
},
//
async submitCreatedGoods() {
this.particulars.attrValue[0].stock = Number(this.goodsNum)
this.particulars.attrValue[0].price = this.goodsPrive
const res = await productUpdate(this.merId, this.product_id, this.particulars)
// Toast(message)
this.getGoodsList()
this.popupShow = false
this.goodsPrive = ''
this.goodsNum = ''
},
initData() {
let editGoodsDetils = {};
if (getStorage('goodsDis')) {
this.disModel = true;
}
if (this.product_id) {
editGoodsDetils = getStorage('editGoodsDetils');
Object.keys(this.addGoodsSecoundData).forEach(item => {
this.addGoodsSecoundData[item] = editGoodsDetils[item];
});
if (editGoodsDetils.content) {
setStorage('goodsDis', {
store_name: editGoodsDetils.content.title,
imageList: editGoodsDetils.content.image
});
this.disModel = true;
}
setStorage('canChangeSecound', true);
return;
}
if (editGoodsDetils.content) {
setStorage('goodsDis', {
store_name: editGoodsDetils.content.title,
imageList: editGoodsDetils.content.image
});
this.disModel = true;
}
setStorage('canChangeSecound', true);
return;
}
if (getStorage('addGoodsSecoundData')) {
Object.keys(this.addGoodsSecoundData).forEach(item => {
if (getStorage('addGoodsSecoundData')[item] || getStorage('addGoodsSecoundData')[item] == 0) {
this.addGoodsSecoundData[item] = getStorage('addGoodsSecoundData')[item];
}
});
}
},
},
//
onReachBottom() {
if (this.status == 'nomore') return;
this.status = 'loading';
this.params.page = ++this.params.page;
this.getGoodsList()
},
onPullDownRefresh() {
this.params.page = 1
this.goodsList = []
this.getGoodsList()
uni.stopPullDownRefresh()
}
}
if (getStorage('addGoodsSecoundData')) {
Object.keys(this.addGoodsSecoundData).forEach(item => {
if (getStorage('addGoodsSecoundData')[item] || getStorage('addGoodsSecoundData')[item] ==
0) {
this.addGoodsSecoundData[item] = getStorage('addGoodsSecoundData')[item];
}
});
}
},
},
//
onReachBottom() {
if (this.status == 'nomore') return;
this.status = 'loading';
this.params.page = ++this.params.page;
this.getGoodsList()
},
onPullDownRefresh() {
this.params.page = 1
this.goodsList = []
this.getGoodsList()
uni.stopPullDownRefresh()
}
}
</script>
<style lang="scss" scoped>
.goods_list {}
.goods_list {}
.head_search {
width: 100%;
background-color: #fff;
height: 108.77rpx;
.head_search {
width: 100%;
background-color: #fff;
height: 108.77rpx;
.search_content {
margin: 0 auto;
width: 694.74rpx;
height: 66.67rpx;
padding: 2px 2px 2px 21.05rpx;
border: 1px solid $uni-theme-color;
border-radius: 100px;
.search_content {
margin: 0 auto;
width: 694.74rpx;
height: 66.67rpx;
padding: 2px 2px 2px 21.05rpx;
border: 1px solid $uni-theme-color;
border-radius: 100px;
.icon-sousuo {
font-weight: bold;
color: $uni-theme-color;
margin-right: 17.54rpx;
}
.icon-sousuo {
font-weight: bold;
color: $uni-theme-color;
margin-right: 17.54rpx;
}
.search_btn {
color: #fff;
width: 135.09rpx;
height: 59.65rpx;
line-height: 59.65rpx;
background: $uni-theme-bg-color;
border-radius: 100px;
}
}
}
.search_btn {
color: #fff;
width: 135.09rpx;
height: 59.65rpx;
line-height: 59.65rpx;
background: $uni-theme-bg-color;
border-radius: 100px;
font-size: 25rpx;
}
}
}
.list_item,
.popup_cont {
margin: 0 auto;
width: 694.74rpx;
// height: 236.84rpx;
background: #FFFFFF;
border-radius: 8px;
padding: 21.05rpx;
margin-top: 21.05rpx;
.list_item,
.popup_cont {
margin: 0 auto;
width: 694.74rpx;
// height: 236.84rpx;
background: #FFFFFF;
border-radius: 8px;
padding: 21.05rpx;
margin-top: 21.05rpx;
.title {
font-size: 31.58rpx;
font-weight: bold;
color: #333;
}
}
.title {
.list_item {
font-size: 24.56rpx;
font-weight: bold;
color: #333;
}
}
.redact_box {
height: 100%;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: flex-end;
.list_item {
font-size: 24.56rpx;
}
.redact_box {
height: 100%;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: flex-end;
.redact {
margin-top: 7.02rpx;
color: #fff;
width: 129.82rpx;
height: 50.88rpx;
line-height: 50.88rpx;
background: $uni-theme-bg-color;
border-radius: 7px;
}
}
.r_box {
flex: 1;
}
.redact {
margin-top: 7.02rpx;
color: #fff;
width: 129.82rpx;
height: 50.88rpx;
line-height: 50.88rpx;
background: $uni-theme-bg-color;
border-radius: 7px;
font-size: 25rpx
}
.unit {
margin-left: 35.09rpx;
margin: 7.02rpx 0 7.02rpx 35.09rpx;
}
.r_box {
flex: 1;
}
.goods_img {
width: 119.3rpx;
height: 119.3rpx;
border-radius: 8px;
margin-right: 26.32rpx;
}
}
.unit {
margin-left: 35.09rpx;
margin: 7.02rpx 0 7.02rpx 35.09rpx;
}
.popup_cont {
width: 680.7rpx;
padding: 31.58rpx;
font-size: 28.07rpx;
.goods_img {
width: 119.3rpx;
height: 119.3rpx;
border-radius: 8px;
margin-right: 26.32rpx;
}
}
.message {
margin: 28.07rpx 0 21.05rpx 0;
}
.goodstitle {
width: 42vw;
font-weight: bold;
white-space: nowrap;
/* 不换行 */
overflow: hidden;
/* 溢出隐藏 */
text-overflow: ellipsis;
.title {
text-align: center;
font-size: 31.58rpx;
font-weight: bold;
}
}
.sub_title {
font-size: 28.07rpx;
margin: 35.09rpx 0 14.04rpx 0;
}
.popup_cont {
width: 680.7rpx;
padding: 31.58rpx;
font-size: 28.07rpx;
.input {
width: 100%;
height: 84.21rpx;
background-color: #F5F5F5;
border-radius: 4px;
padding-left: 4px;
}
.message {
margin: 28.07rpx 0 21.05rpx 0;
.btns_box {
margin-top: 49.12rpx;
display: flex;
justify-content: end;
align-items: center;
.cancel {
font-size: 31.58rpx;
}
}
.save {
color: #FFFFFF;
text-align: center;
line-height: 77.19rpx;
margin-left: 57.89rpx;
width: 250.88rpx;
height: 77.19rpx;
background: #009E56;
border-radius: 100px;
}
}
}
.sub_title {
font-size: 28.07rpx;
margin: 35.09rpx 0 14.04rpx 0;
}
.input {
width: 100%;
height: 84.21rpx;
background-color: #F5F5F5;
border-radius: 4px;
padding-left: 4px;
}
.btns_box {
margin-top: 49.12rpx;
display: flex;
justify-content: end;
align-items: center;
.cancel {
font-size: 31.58rpx;
}
.save {
color: #FFFFFF;
text-align: center;
line-height: 77.19rpx;
margin-left: 57.89rpx;
width: 250.88rpx;
height: 77.19rpx;
background: #009E56;
border-radius: 100px;
}
}
}
</style>

View File

@ -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)
// })
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)
})
console.log(item);
if (item.product.attrValue.length == 1) {
let that = this;
const count = '1'
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,7 +265,96 @@
});
});
},
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
@ -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

@ -253,8 +253,8 @@
<view class="bnt cancelBnt" v-if="item.order_type===1" @click="location(item.order_id)">
<text class="iconfont icon-weizhi"></text>查看位置
</view>
<view v-if="!item.receipt && item.status != -1" class='bnt cancelBnt'
@click.stop='applyInvoice(item.order_id)'>申请开票</view>
<!-- <view v-if="!item.receipt && item.status != -1" class='bnt cancelBnt'
@click.stop='applyInvoice(item.order_id)'>申请开票</view> -->
<block v-if="item.status == 0 || item.status == 9 || item.status == -1">
<view class='bnt b-color' @click='goOrderDetails(item.order_id)'>查看详情</view>
</block>

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

@ -2,11 +2,9 @@
<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>
<!--#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='sotreParam.keyword' @confirm="searchSubmit"></input>
@ -30,17 +28,20 @@
<view class="line" :class="{'font-line':firstKey == item.key}">
</view>
</view>
<view class="item" @click="bindRight">
<!-- <view class="item" @click="bindRight">
<view>筛选
<!-- <text class="iconfont icon-shaixuan"></text> -->
<text class="iconfont icon-shaixuan"></text>
</view>
<view class="line">
</view>
</view>
</view> -->
</view>
</view>
<!-- 店铺 -->
<block>
<view class="">
66666
</view>
<view class="store-wrapper">
<view class="store-item" v-for="(item,index) in storeList" :key="index">
<view class="head">
@ -48,7 +49,7 @@
</view>
<view class="zhezhao">
</view>
<view class="zhezhao1" @click="goStore(item.mer_id)">
<view class="zhezhao1" @click="goStore(item.mer_id)">
<view class="title">
<view>{{item.mer_name}}
</view>
@ -188,7 +189,7 @@
<image src="@/static/images/guanbi.png" class="guanbi" @click="close"></image>
</u-popup>
</view>
</view>
</template>
@ -288,16 +289,19 @@
storeTypeArr: [], //
merList: [], //
product_type: 0,
show:false,
image: '' //
show: false,
image: '', //,
credit_buy: '', //
};
},
onLoad(options) {
console.log(options);
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() || ''
@ -496,7 +500,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
@ -613,20 +618,21 @@
this.storeMerchantList()
}
}
}
</script>
<style lang="scss" scoped>
.productList .search {
width: 100%;
height: 86rpx;
height: 140rpx;
padding: 0 20rpx;
box-sizing: border-box;
padding-top: 70rpx;
// box-sizing: border-box;
position: fixed;
left: 0;
top: 0;
z-index: 9;
z-index: 99;
display: flex;
flex-wrap: nowrap;
background-color: #fff;
@ -731,7 +737,7 @@
z-index: 9;
position: fixed;
left: 0;
top: 0;
top: 40rpx;
width: 100%;
margin-top: 86rpx;
background-color: #fff;
@ -1124,12 +1130,13 @@
}
}
}
.guanbi {
width: 20px;
height: 20px;
margin: 30px auto;
}
.pop {
z-index: 1;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,7 @@
<view :style="viewColor">
<view class='payment-status'>
<!--失败时 用icon-iconfontguanbi fail替换icon-duihao2 bg-color-->
<view class='iconfont icon-duihao2 icon' v-if ="order_pay_info.paid !=0"></view>
<view class='iconfont icon-duihao2 icon' v-if="order_pay_info.paid !=0"></view>
<view class='iconfont icon-iconfontguanbi icon' v-else></view>
<!-- 失败时订单支付失败 -->
<view class='status'>{{order_pay_info.paid == 1 ?'支付成功':'订单未支付'}}</view>
@ -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,22 +98,30 @@
// +----------------------------------------------------------------------
// | 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,
},
filters: {
timeYMD: function (value) {
if(value){
var newDate=/\d{4}-\d{1,2}-\d{1,2}/g.exec(value)
timeYMD: function(value) {
if (value) {
var newDate = /\d{4}-\d{1,2}-\d{1,2}/g.exec(value)
return newDate[0]
}
}
}
},
data() {
return {
@ -115,14 +133,16 @@
isShowAuth: false, //
status: 0,
msg: '',
couponList:[], //
isOpen:false ,//
couponList: [], //
isOpen: false, //
moneyBg: '/static/images/couponBg',
text: '展开更多',
timer: null
timer: null,
product_type: '',
};
},
computed: mapGetters(['isLogin','viewColor','keyColor']),
computed: mapGetters(['isLogin', 'viewColor', 'keyColor']),
onLoad: function(options) {
if (!options.order_id) return this.$util.Tips({
title: '缺少参数无法查看订单支付状态'
@ -134,21 +154,21 @@
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 {
this.isAuto = true;
this.isShowAuth = true
}
}
},
methods: {
refreshData(){
this.timer = setInterval(()=>{
this.getOrderPayInfo();
},1000)
refreshData() {
this.getOrderPayInfo();
},
//
bindMore(){
bindMore() {
this.isOpen = !this.isOpen
this.text = this.text == '展开更多' ? '收起' : '展开更多';
},
@ -158,7 +178,7 @@
},
//
authColse: function(e) {
this.isShowAuth = e;
this.isShowAuth = e;
},
/**
*
@ -173,7 +193,7 @@
uni.setNavigationBarTitle({
title: res.data.paid == 1 ? '支付成功' : '支付失败'
});
if(res.data.paid == 1){
if (res.data.paid == 1) {
clearInterval(this.timer);
this.timer = null;
}
@ -199,16 +219,30 @@
*
* 去订单详情页面
*/
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=2&product_type=${this.product_type}`
})
}else{
uni.navigateTo({
url: `/pages/users/order_list/indexCopy?status=0&product_type=${this.product_type}`
})
}
} else {
uni.redirectTo({
url: '/pages/users/order_list/index?status=1'
})
if(val==1){
uni.navigateTo({
url: '/pages/users/order_list/index?status=2&product_type=0'
})
}else{
uni.navigateTo({
url: '/pages/users/order_list/index?status=0&product_type=0'
})
}
}
}
@ -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{
&.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,46 +324,56 @@
text-align: center;
line-height: 86rpx;
margin: 0 auto 20rpx auto;
&.gColor{
&.gColor {
background-color: var(--view-theme);
}
&.s-Color{
&.s-Color {
color: var(--view-theme);
border: 1px solid var(--view-theme);
border: 1px solid var(--view-theme);
}
}
.t-color {
color: var(--view-theme)!important;
color: var(--view-theme) !important;
}
.coupon-wrapper{
.hd{
.coupon-wrapper {
.hd {
display: flex;
align-items: center;
justify-content: center;
margin: 30rpx 0;
color: #999999;
font-size: 24rpx;
.line{
.line {
width: 70rpx;
height: 1px;
background: #DCDCDC;
}
.txt{
.txt {
margin: 0 20rpx;
}
}
.coupon-box{
.coupon-box {
height: 356rpx;
padding: 0 20rpx;
overflow: hidden;
&.on{
&.on {
height: auto;
}
.coupon-item{
.coupon-item {
width: 100%;
margin-bottom: 20rpx;
box-shadow:0px 2px 10px 0px rgba(0, 0, 0, 0.06);
.left-bg{
box-shadow: 0px 2px 10px 0px rgba(0, 0, 0, 0.06);
.left-bg {
display: flex;
align-items: center;
justify-content: center;
@ -328,40 +381,46 @@
height: 160rpx;
color: #fff;
font-size: 64rpx;
text{
text {
margin-top: 26rpx;
font-size: 36rpx;
}
}
.info{
.info {
display: flex;
flex-direction: column;
justify-content: space-between;
margin-left: 20rpx;
padding: 20rpx 0;
.title{
.title {
color: #282828;
font-size: 30rpx;
}
.des{
.des {
font-size: 24rpx;
color: #999999;
}
}
}
}
.more{
.more {
display: flex;
align-items: center;
justify-content: center;
padding-top: 24rpx;
font-size: 24rpx;
color: #999999;
.iconfont{
.iconfont {
margin-top: 6rpx;
margin-left: 10rpx;
font-size: 20rpx;
}
}
}
</style>
</style>

View File

@ -2,7 +2,8 @@
<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">
<!-- 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 == item.value}" @click="changeTab(item)">
<text class="iconfont" :class="item.icon"></text>{{item.name}}
</view>
@ -467,6 +468,7 @@
});
}
}else{
if (value.image.length == 0) return that.$util.Tips({
title: '请添加话题图片'
});

View File

@ -35,7 +35,7 @@
</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">
@ -253,6 +253,7 @@
this.productList=[]
this.topicName={}
},
methods: {
onLoadFun() {
this.isShowAuth = false;
@ -442,6 +443,10 @@
let that = this
that.formData.image.splice(index, 1);
},
/*删除视频*/
delVideo(){
this.formData.video_link='';
},
/*添加宝贝*/
addProduct() {
this.$refs.associated.open();
@ -530,7 +535,7 @@
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=' +
that.uid
@ -541,7 +546,7 @@
//#endif
});
} else {
uni.redirectTo({
uni.navigateTo({
url: '/pages/plantGrass/plant_detail/index?id=' + res.data.community_id + '&type=' + that
.tabActive
})
@ -574,7 +579,7 @@
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=' +
that.uid
@ -585,7 +590,7 @@
//#endif
});
} else {
uni.redirectTo({
uni.navigateTo({
url: '/pages/plantGrass/plant_detail/index?id=' + res.data.community_id + '&type=' + that
.tabActive
})
@ -720,8 +725,7 @@
display: flex;
align-items: center;
justify-content: center;
z-index: 0;
.iconfont {
color: #ffffff;
font-size: 12rpx ;

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

@ -48,12 +48,41 @@
<view class="content_list_video">
<view class="content_list_video_title">商品视频</view>
<view class="video_list">
<view class="video_list_item photo" v-if="addGoodsSecoundData.video_link">
<view class="video_list_item photo" v-if="addGoodsSecoundData.video_link">
<view class="jiao" @click="deleteImage()">
<video :src="addGoodsSecoundData.video_link"></video>
<!-- 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')) {
@ -270,6 +320,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, //
@ -301,9 +353,11 @@
}
},
fail: err => {
uni.showModal({
content: JSON.stringify(err)
});
//
// uni.showModal({
// content: JSON.stringify(err)
// });
console.log(err)
}
});
},
@ -357,7 +411,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;
@ -400,7 +479,10 @@
height: 150rpx;
}
}
.preview_video{
position: absolute;
}
.container_input {
background: #fff;
padding: 0 20rpx;
@ -519,7 +601,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: [

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

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.discount_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

@ -20,7 +20,7 @@
-->
<!-- 头部导航 -->
<view v-if="!isUser" class="header">
<view v-if="!isUser" class="header" :style="{backgroundColor:currentNav==3?'#FC4E09':''}" >
<view class="items" @click.stop="navTap(2)">
<text class="tName" :class="currentNav==2?'on':''">关注</text>
</view>
@ -257,6 +257,7 @@
<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="collect">{{item.count_start}}</text>
</view>
</view>
</view>
@ -1036,14 +1037,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;
@ -1170,11 +1172,11 @@
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;
@ -1191,7 +1193,7 @@
}
.container {
background-color: #000000;
background-color: #F5F5F5;
}
.item {

View File

@ -13,7 +13,10 @@
-->
<!-- 头部导航 -->
<!-- 头部导航 -->
<view v-if="!isUser" class="header">
<view v-if="!isUser" class="header" :style="{backgroundColor:currentNav==3?'#FC4E09':''}">
<view class="tool-bar">
<view class='iconfont icon-xiangzuo' @tap='goBack'></view>
</view>
@ -31,7 +34,18 @@
: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 +60,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">
@ -1135,10 +1154,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 +1257,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 {
@ -1258,8 +1278,9 @@
.icon-xiangzuo {
margin-right: 40rpx;
margin-left: 20rpx;
font-size: 26rpx;
font-size: 30rpx;
color: #fff;
margin-top: 60rpx;
}
}
@ -1290,6 +1311,7 @@
.shortVideo,
.container {
background: linear-gradient(180deg, rgba(0, 0, 0, .8) 0%, #000000 100%);
}
.item {
@ -1336,6 +1358,7 @@
flex: 1;
justify-content: center;
align-items: center;
// background-color: red;
}
.playState {
@ -1861,4 +1884,8 @@
color: #999;
}
}
.videoa {
background-color: red;
}
</style>

View File

@ -113,6 +113,7 @@
},
onLoad() {
getHotBanner('good').then(res => {
// console.log(res);
this.bgData = res.data
})
this.getArticle()

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,475 @@
<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" v-if="listobj.author">
<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="" style="margin-top: 15rpx;">
{{items.store_name}}
</view>
</view>
</view>
<view class="pay" v-if="this.detail.type==1||this.detail.type==2">
<view class="pay_tilte-a">
合计: <span>{{listobj.total_price}}</span>
</view>
<view class="pay_tilte-b" @click="prouctOrder">提交订单</view>
</view>
<view class="domain" v-else>
<view class="domain_tilte-a">
合计: <span>200.00</span>
</view>
<view class="domain_tilte-b">
删除
</view>
<view class="domain_tilte-c">编辑</view>
</view>
</view>
</template>
<script>
import {
getCommunityshow,
getCommunityaddCart
} from '@/api/trading-floor.js'
export default {
data() {
return {
detail: {},
listobj: {},
}
},
onLoad(e) {
if (e) {
this.detail = JSON.parse(decodeURIComponent(e.key));
this.shopdetil(this.detail.id)
}
},
methods: {
//
shopdetil(id) {
getCommunityshow(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: 100%;
height: 100%;
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>

File diff suppressed because it is too large Load Diff

View File

@ -105,7 +105,7 @@
<view class="order-wrapper">
<view class="order-hd flex skeleton-rect">
<view class="left">我的订单</view>
<view class="right flex" @click="authTo('/pages/users/order_list/index?status=-1')" hover-class="none"
<view class="right flex" @click="authTo('/pages/users/order_list/index?status=-1&product_type=0')" hover-class="none"
open-type="navigate">
全部订单
<text class="iconfont icon-xiangyou"></text>
@ -287,19 +287,19 @@
{
icon: 'icon-daifahuo1',
title: '待发货',
url: '/pages/users/order_list/index?status=1',
url: '/pages/users/order_list/index?status=2',
num: 0
},
{
icon: 'icon-daishouhuo1',
title: '待收货',
url: '/pages/users/order_list/index?status=2',
url: '/pages/users/order_list/index?status=3',
num: 0
},
{
icon: 'icon-daipingjia1',
title: '待评价',
url: '/pages/users/order_list/index?status=3',
url: '/pages/users/order_list/index?status=4',
num: 0
},
{
@ -420,7 +420,10 @@
//
filterMenus: function(item) {
let that = this;
if (item.url == '/pages/users/user_money/index') item.isShow = that.balance_func_status == 1
if (item.url == '/pages/users/user_money/index') {
// item.isShow = that.balance_func_status == 1
item.isShow = true
}
else if (item.url == '/pages/users/user_spread_user/index') {
if (that.extension_status == 0) {
item.isShow = false
@ -436,6 +439,8 @@
else if (item.url == '/pages/users/user_grade/index') item.isShow = that.member_status == 1
else if (item.url == '/pages/users/user_integral/index') item.isShow = that.integral_status == 1
else item.isShow = true
},
showMenu(menu) {
return !menu || ['integral', 'service', 'admin_order', 'verify_order', 'intention', 'promoter', 'balance']
@ -556,6 +561,7 @@
that.filterMenus(item)
that.personalMenu.push(item)
})
that.imgUrls = res.data.banner
});
},

View File

@ -51,7 +51,7 @@
</view>
<view class='tip mt25'>
当前可提现金额: <text
class="price">{{userInfo.brokerage_price}},</text>冻结佣金{{userInfo.lock_brokerage}}
class="price">{{extract_money}},</text>冻结佣金{{userInfo.lock_brokerage}}
</view>
<view class='tip'>
说明: 每笔佣金的冻结期为{{userInfo.broken_day}}到期后可提现
@ -92,7 +92,7 @@
<view class='tip mt25'>
当前可提现金额: <text
class="price">{{userInfo.brokerage_price}},</text>冻结佣金{{userInfo.lock_brokerage}}
class="price">{{extract_money}},</text>冻结佣金{{userInfo.lock_brokerage}}
</view>
<view class='tip'>
说明: 每笔佣金的冻结期为{{userInfo.broken_day}}到期后可提现
@ -100,7 +100,7 @@
<button formType="submit" class='bnt b-color'>提现</button>
</view>
<view v-else class="auto_arrival">
<view class='tip'>当前可提现金额: <text class="price">{{userInfo.brokerage_price}}</text>
<view class='tip'>当前可提现金额: <text class="price">{{extract_money}}</text>
</view>
<view class='input'><input placeholder-class='placeholder1' name="extract_price"
type='digit' :placeholder="placeholderValue" @focus="placeholderValue = ''"
@ -141,7 +141,7 @@
</view>
<view class='tip mb25'>
当前可提现金额: <text
class="price">{{userInfo.brokerage_price}},</text>冻结佣金{{userInfo.lock_brokerage}}
class="price">{{extract_money}},</text>冻结佣金{{userInfo.lock_brokerage}}
</view>
<view class='tip' v-if="userInfo.broken_day>0">
说明: 每笔佣金的冻结期为{{userInfo.broken_day}}到期后可提现
@ -166,7 +166,8 @@
getAdminApplyAPI,
getLisApplyAPI,
getAccountApplyAPI,
postAccountApplyAPI
postAccountApplyAPI,
} from '@/api/user.js'
import {
extractCash,
@ -192,6 +193,7 @@
},
data() {
return {
extract_money:"",
mode: {
bank_address: "",
bank_code: "",
@ -276,6 +278,8 @@
this.mode.bank_code = res.data.financial_bank_code
this.mode.bank_name = res.data.financial_bank_bank
this.mode.bank_address = res.data.financial_bank_branch
this.extract_money=res.data.extract_money
console.log(this.extract_money)
} catch (err) {
//TODO handle the exception
Toast(err)

View File

@ -1,5 +1,5 @@
<template>
<view class="list">
<view class="list">
<view class="head">
<view class="head_conent">
<view class="tatil">
@ -8,8 +8,9 @@
<h3>提现次数</h3>
</view>
<view class="sum">
<u-count-to :startVal="0" :endVal="sum"></u-count-to>
<u-count-to :startVal="0" :endVal="sumTofixed" :decimals="2"></u-count-to>
<h3>提现总额</h3>
</view>
</view>
</view>
@ -66,7 +67,11 @@
UserApplylist:[]
}
},
computed: {},
computed: {
sumTofixed(){
return this.returnFloat(this.sum)
}
},
watch: {
},
@ -79,6 +84,21 @@
// })
},
methods: {
/**数字强制转为两位小数*/
returnFloat(value){
var value=Math.round(parseFloat(value)*100)/100;
var xsd=value.toString().split(".");
if(xsd.length==1){
value=value.toString()+".00";
return value;
}
if(xsd.length>1){
if(xsd[1].length<2){
value=value.toString()+"0";
}
return value;
}
},
tixian() {
uni.navigateBack({
delta: 1

View File

@ -80,39 +80,7 @@
class="font_pro">隐私政策</text></text>
</checkbox-group>
</div>
<!-- #ifdef MP -->
<!-- <view class="appLogin">
<view class="hds">
<span class="line"></span>
<p>其他方式登录</p>
<span class="line"></span>
</view>
<view class="btn-wrapper">
<button form-type="submit" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">
<view class="btn wx">
<span class="iconfont icon-s-weixindenglu1"></span>
</view>
</button>
</view>
</view> -->
<!-- #endif -->
<!-- #ifdef APP-PLUS -->
<!-- <view class="appLogin" v-if="!appLoginStatus && !appleLoginStatus">
<view class="hds">
<span class="line"></span>
<p>其他方式登录</p>
<span class="line"></span>
</view>
<view class="btn-wrapper">
<view class="btn wx" @click="wxLogin">
<span class="iconfont icon-s-weixindenglu1"></span>
</view>
<view class="btn wx btn-apple" @click="appleLogin" v-if="appleShow">
<span class="iconfont icon-s-pingguo"></span>
</view>
</view>
</view> -->
<!-- #endif -->
</div>
<div class="whiteBg" v-else>
<div class="title">注册账号</div>
@ -168,24 +136,6 @@
class="font_pro">隐私政策</text></text>
</checkbox-group>
</div>
<!-- #ifdef APP-PLUS -->
<view class="appLogin" v-if="!appLoginStatus && !appleLoginStatus">
<view class="hds">
<span class="line"></span>
<p>其他方式登录</p>
<span class="line"></span>
</view>
<view class="btn-wrapper">
<view class="btn wx" @click="wxLogin">
<span class="iconfont icon-s-weixindenglu1"></span>
</view>
<view class="btn wx btn-apple" @click="appleLogin" v-if="appleShow">
<span class="iconfont icon-s-pingguo"></span>
</view>
</view>
</view>
<!-- #endif -->
</div>
</div>
<div class="bottom"></div>

View File

@ -0,0 +1,461 @@
<template>
<view class="center">
<view class="top">
<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.store_name" confirm-type="search" placeholder="请输收货人手机号或订单号搜索"
class="input" @confirm="handleSearch" />
</view>
</view>
</view>
</view>
<view class="bgc_img" v-if="this.shopList == ![]">
<image src="@/static/images/empty-box.png" mode="widthFix"></image>
<view class="txt">
暂无商品订单~
</view>
</view>
<view class='list' v-else>
<block>
<view class='item' v-for="(item,index) in shopList" :key="index">
<view>
<view class='title acea-row row-between-wrapper'>
<view class="acea-row row-middle left-wrapper">
{{item.merchant.mer_name}}
</view>
</view>
<view>
<view>
<block>
<view class="_order">
订单号: {{item.order_sn}}
</view>
<view class='item-info acea-row row-between row-top'
v-for="(items,indexs) in item.orderProduct" :key="indexs">
<view class='pictrue'>
<image :src="items.cart_info.product.image">
</image>
</view>
<view class='text'>
<view class='_left'>
{{items.cart_info.product.store_name}}
<view class="">
{{items.cart_info.productAttr.sku}}
</view>
</view>
<view class="_right">
<view class='name'>{{items.cart_info.productAttr.price}}</view>
<view class='name'>x {{items.product_num}}</view>
</view>
<!-- <view class="totalfooter">
<view class='bnt b-color' v-if="items.is_imported == 0 && item.orderProduct.length > 1"
@click="importshop(items.order_id,items.product_id,items.product_sku)">
立即导入</view>
</view> -->
</view>
<view class="totalfooter">
<view class='bnt b-color' v-if="!item.orderProduct[indexs]"
@click="importshop(item.order_id,item.orderProduct[indexs].product_id,item.orderProduct[indexs].product_sku)">
立即导入</view>
</view>
</view>
</block>
</view>
</view>
<view class='totalPrice'>
{{item.orderProduct.length}}件商品总金额
<text class='money'>{{item.pay_price}}</text>
</view>
<!-- <view class="totalfooter">
<view class='bnt b-color' v-if="item.orderProduct[index]"
@click="importshop(item.order_id,item.orderProduct[index].product_id,item.orderProduct[index].cart_info.productAttr.product_sku)">
立即导入</view>
</view> -->
</view>
</view>
</block>
</view>
<u-popup :show="show" @close="close" mode="center" bgColor='transparent'>
<image src="@/static/images/xianshang.png" mode="widthFix"></image>
<view class="popen">
<h4>{{title}}</h4>
<view class="shuru">
点击确定返回商品管理
</view>
<view class="btn">
<button class="btn_l" @click="closeasd()">取消</button>
<button class="btn_r" @click="getback()">确定</button>
</view>
</view>
</u-popup>
<!-- <Loading :loaded="loaded" :loading="loading"></Loading> -->
</view>
</template>
<script>
import {
getPreviewProDetail,
} from '@/api/store.js'
import {
postImport
} from '@/api/product.js'
import {
getOrderList
} from '@/api/order.js'
import Loading from '@/components/Loading/index'
export default {
data() {
return {
shopList: [],
shopinfo: {},
mer_id: '',
keyword: '',
where: {
page: 1,
limit: 10,
status: 20,
product_type: 98,
store_name: '',
},
data: {
product_id: '',
unique: "",
order_id: '',
order_product_id: '',
order_unique: ''
},
show: false,
title: '',
loaded: false,
}
},
onLoad(option) {
// console.log(option);
this.mer_id = option.mer_id
this.getList();
this.data.product_id = option.product_id
this.data.unique = option.unique
},
methods: {
handleSearch() {
let that = this
that.loaded = false;
that.where.page = 1;
that.shopList = [];
getOrderList(that.where, that.mer_id).then(res => {
console.log(res);
that.shopList = res.data.list
console.log(that.shopList);
})
},
getList: function() {
if (this.loading || this.loaded) return;
this.loading = true;
getOrderList(this.where, this.mer_id).then(res => {
console.log(res);
this.shopList = res.data.list
console.log(this.shopList);
})
},
importshop(order_id, product_id, unique) {
this.data.order_id = order_id
this.data.order_product_id = product_id
this.data.order_unique = unique
console.log(this.data)
this.show = true
postImport(this.mer_id, this.data).then(res => {
console.log(res);
this.title = res.message
this.$util.Tips({
title: res.message
})
})
},
close() {
this.show = false
},
closeasd: function() {
this.show = false
getOrderList(this.where, this.mer_id).then(res => {
console.log(res);
this.shopList = res.data.list
console.log(this.shopList);
})
},
getback() {
uni.navigateBack({
delta: 1
});
}
}
}
</script>
<style lang="scss" scoped>
.top {
background-color: red;
.top-header {
position: fixed;
top: 0;
left: 0;
z-index: 9999;
width: 100%;
background-color: #fff;
.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;
}
}
}
}
.bgc_img {
position: absolute;
top: 30vh;
left: 10vw;
image {
width: 300px;
}
.txt {
text-align: center;
}
}
.list {
width: 690rpx;
margin: 50px auto 0 auto;
.title {
height: 84rpx;
padding: 0 30rpx;
border-bottom: 1px solid #CCCCCC;
font-size: 32rpx;
font-weight: 700;
color: #282828;
.left-wrapper {
.iconfont {
margin-top: 5rpx;
}
.store-name {
margin: 0 10rpx;
}
.icon-xiangyou {
font-size: 20rpx;
}
}
.sign {
font-size: 24rpx;
padding: 0 7rpx;
height: 36rpx;
margin-right: 15rpx;
}
}
.item {
background-color: #fff;
margin: 5px 0 5px 0;
.item-info {
padding: 0 30rpx;
margin-top: 22rpx;
.pictrue {
width: 120rpx;
height: 120rpx;
margin-bottom: 20rpx;
image {
width: 100%;
height: 100%;
border-radius: 6rpx;
}
}
.text {
width: 486rpx;
font-size: 28rpx;
color: #999;
margin-top: 6rpx;
display: flex;
justify-content: space-between;
._left {
width: 300rpx;
color: #282828;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.name {
width: 100rpx;
color: #282828;
}
.money {
text-align: right;
float: right;
}
}
}
.event_name {
display: inline-block;
margin-right: 9rpx;
color: #fff;
font-size: 20rpx;
padding: 0 8rpx;
line-height: 30rpx;
text-align: center;
border-radius: 6rpx;
}
.event_ship {
font-size: 20rpx;
margin-top: 10rpx;
}
._order {
font-size: 28rpx;
margin: 5px 0 0 15px;
}
.totalPrice {
font-size: 26rpx;
color: #282828;
text-align: right;
margin: 27rpx 0 0 30rpx;
padding: 0 30rpx 30rpx 0;
.money {
font-size: 34rpx;
font-weight: bold;
color: rgb(233, 51, 35);
}
}
.totalfooter {
width: 100%;
height: 50px;
position: relative;
border-top: 1px solid #CCCCCC;
.bnt {
position: absolute;
right: 10px;
width: 176rpx;
height: 60rpx;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50rpx;
font-size: 27rpx;
background: linear-gradient(180deg, #F98649 0%, #F34E45 100%);
color: white;
margin-left: 70%;
margin-top: 5px;
}
}
.bottom {
height: 107rpx;
padding: 0 30rpx;
border-top: 1px solid #f0f0f0;
}
}
.event_price {
margin: 0 0 50rpx 120rpx;
}
}
.popen {
position: absolute;
top: 110px;
width: 100%;
margin: auto;
padding: 10px;
h4 {
font-weight: 400;
font-size: 20px;
padding: 5px;
text-align: center;
}
.guige {
margin: 10px 0 10px 20px;
}
.shuru {
display: flex;
justify-content: center;
align-items: center;
font-size: 18px;
padding: 5px;
}
.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

@ -8,8 +8,10 @@
<text class='phone'>{{addressInfo.phone}}</text>
</view>
<view>
<text class='default t-color'
v-if="addressInfo.is_default">[默认]</text>{{addressInfo.province}}{{addressInfo.city}}{{addressInfo.district}}{{addressInfo.street || ''}}{{addressInfo.detail}}
v-if="addressInfo.is_default">[默认]</text>{{addressInfo.province}}{{addressInfo.city}}{{addressInfo.district}}{{addressInfo.street || ''}}{{typeof(addressInfo.brigade)=='string'?addressInfo.brigade:addressInfo.brigade.name }}{{addressInfo.detail}}
</view>
</view>
<navigator v-else :url="'/pages/users/user_address/index?cartId='+cartId" hover-class="none"
@ -119,6 +121,7 @@
<view class="boxs">
<view class='item acea-row row-between-wrapper'>
<view>配送方式</view>
<view
v-if="item.delivery_way.length == 2 && (item.order.allow_delivery && item.order.allow_take)"
class='discount' @tap="openShowBox(item,index)">
@ -188,6 +191,10 @@
<view class="price" v-if="item.isTake == 0"><text></text>{{ item.order.pay_price }}</view>
<view class="price" v-if="item.isTake == 1"><text></text>{{ item.order.org_price}}</view>
</view>
<view class="total" v-if="item.credit_buy == 1 && active == 4">
实付价
<view class="price"><text></text>0.00</view>
</view>
</view>
</view>
</view>
@ -379,7 +386,11 @@
<view class="footer_count">
<view>
合计:
<text class='pColor'>{{totalPrice || 0}}</text>
<text class='pColor' v-if="cartArr[4].payStatus == 1 && active == 4">0.00</text>
<text class='pColor' v-else>{{totalPrice }}</text>
</view>
<view style="font-size: 14px;color: #F84221;" v-if="cartArr[4].payStatus == 1 && active == 4">
可结算周期到期后再付款{{totalPrice}}
</view>
<view class="coupon_price" v-if="couponData.total_coupon > 0">
优惠:¥ {{couponData.total_coupon}}
@ -524,6 +535,12 @@
value: 'offline',
title: '线下支付',
payStatus: 2,
}, {
"name": "先货后款",
"icon": "tan-a-lujing17324",
value: 'creditBuy',
title: `结算周期:${this.settle_cycle}天 日利率:${this.interest_rate}%`,
payStatus: '',
},
],
tagStyle: {
@ -638,6 +655,10 @@
order_key: '',
is_take: '',
domain: HTTP_REQUEST_URL,
product_type: '',
interest_rate: '', //
settle_cycle: '', //
type_id: '', //
};
},
computed: {
@ -655,6 +676,8 @@
onReady() {},
mounted: function() {},
onLoad: function(options) {
this.type_id = options.type_id
this.product_type = options.product_type
this.seckillId = options.seckillId
// #ifdef H5
this.from = this.$wechat.isWeixin() ? 'weixin' : 'h5'
@ -794,6 +817,7 @@
getUserInfo() {
getUserInfo().then(res => {
this.userInfo = res.data
})
},
/*获取发票说明*/
@ -989,6 +1013,9 @@
*/
getConfirm: function(address_id) {
// console.log(address_id, 'address_id')
// console.log(this.take,)
// console.log(this.subCoupon,)
// console.log(this.use_integral, )
let that = this;
// console.log(that.cartId.split(","))
uni.showLoading({
@ -1003,6 +1030,7 @@
use_integral: that.use_integral
}).then(res => {
//
that.product_type=res.data.order_type
that.is_take = false
res.data.order.forEach(el => {
if (el.order.isTake == 1) that.is_take = true
@ -1053,6 +1081,16 @@
that.allow_address = res.data.allow_address
that.deliveryName = res.data.order_model == 0 ? '快递配送' : '虚拟发货'
that.order_key = res.data.key
that.cartArr[4].title =
`结算周期:${res.data.order[0].settle_cycle}天 日利率:${res.data.order[0].interest_rate}%`
console.log(res.data.order[0]);
if (res.data.order[0].credit_buy == 1 && this.type_id == 12) {
this.cartArr[4].payStatus = 1
} else {
this.cartArr[4].payStatus = 0
}
uni.getStorage({
key: "invoice_Data",
success: function(res) {
@ -1080,6 +1118,7 @@
if (that.addressId) {
getAddressDetail(that.addressId).then(res => {
res.data.is_default = parseInt(res.data.is_default);
that.addressInfo = res.data || {};
that.addressId = res.data.address_id || 0;
that.address.addressId = res.data.address_id || 0;
@ -1087,8 +1126,12 @@
real_name: res.data.real_name,
phone: res.data.phone
}
this.getConfirm(that.addressId);
console.log(that.addressId);
this.$nextTick(() => {
this.getConfirm(that.addressId);
})
})
} else {
getAddressList().then(res => {
that.addressInfo = res.data.list.length > 0 ? res.data.list[0] : {};
@ -1106,10 +1149,10 @@
}
},
payItem: function(e) {
console.log(e);
let that = this;
let active = e;
that.active = active;
// console.log(this.active);
that.animated = true;
that.payType = that.cartArr[active].value;
if (that.payType == 'weixin') {
@ -1174,7 +1217,12 @@
orderId = res.data.result.order_id,
callback_key = res.data.result.pay_key,
jsConfig = res.data.result.config,
goPages = '/pages/order_pay_status/index?order_id=' + orderId + '&msg=' + res.message;
//
goPages = '/pages/order_pay_status/index?order_id=' + orderId + '&msg=' + res.message +
'&product_type=' + that.product_type,
goPagesOrder = '/pages/order_details/stay?order_id=' + orderId +
'&credit_buy=1&product_type=' + that.product_type;
that.orderPay = true;
uni.hideLoading();
switch (status) {
@ -1186,7 +1234,7 @@
title: res.message
}, {
tab: 5,
url: goPages
url: goPagesOrder
});
break;
case 'success':
@ -1200,10 +1248,10 @@
break;
case 'alipay':
case "alipayQr":
uni.navigateTo({
url: '/pages/order_pay_back/index?keyCode=' + callback_key + '&url=' +
jsConfig
})
// uni.navigateTo({
// url: '/pages/order_pay_back/index?keyCode=' + callback_key + '&url=' +
// jsConfig
// })
return;
break;
// #ifndef MP
@ -1240,8 +1288,10 @@
provider: 'wxpay',
orderInfo: jsConfig,
success: (e) => {
//
let url = '/pages/order_pay_status/index?order_id=' + orderId +
'&msg=支付成功';
'&msg=支付成功' + '&product_type=' + that.product_type;
return that.$util.Tips({
title: '支付成功',
icon: 'success'
@ -1251,8 +1301,9 @@
});
},
fail: (e) => {
//
let url = '/pages/order_pay_status/index?order_id=' + orderId +
'&msg=取消支付';
'&msg=取消支付' + '&product_type=' + that.product_type;
return that.$util.Tips({
title: '取消支付',
}, {
@ -1261,8 +1312,9 @@
});
},
complete: () => {
//
let url = '/pages/order_pay_status/index?order_id=' + orderId +
'&msg=取消支付';
'&msg=取消支付' + '&product_type=' + that.product_type;
return that.$util.Tips({
title: '取消支付',
}, {
@ -1297,8 +1349,10 @@
});
},
fail: function(e) {
//
let pages = '/pages/order_pay_status/index?order_id=' +
orderId + '&msg=取消支付'
orderId + '&msg=取消支付' + '&product_type=' + that
.product_type
return that.$util.Tips({
title: '取消支付'
}, {
@ -1322,10 +1376,11 @@
case 'h5':
let host = window.location.protocol + "//" + window.location.host;
let url =
`${host}/pages/order_pay_status/index?order_id=${orderId}&msg=${res.message}`
`${host}/pages/order_pay_status/index?order_id=${orderId}&msg=${res.message}&product_type=${that.product_type}`
let eUrl = encodeURIComponent(url)
let jsurl = jsConfig.mweb_url || jsConfig.h5_url
let locations = `${jsurl}&redirect_url=${eUrl}`
//
setTimeout(() => {
location.href = locations;
}, 100);
@ -1346,8 +1401,10 @@
});
},
fail: (e) => {
//
let pages = '/pages/order_pay_status/index?order_id=' +
orderId + '&msg=支付失败'
orderId + '&msg=支付失败' + '&product_type=' + that
.product_type
return that.$util.Tips({
title: '支付失败'
}, {
@ -1357,8 +1414,11 @@
},
complete: () => {
uni.hideLoading();
//
let pages = '/pages/order_pay_status/index?order_id=' +
orderId + '&msg=取消支付'
orderId + '&msg=取消支付' + '&product_type=' + that
.product_type
return that.$util.Tips({
title: '取消支付'
}, {
@ -1370,8 +1430,10 @@
break;
// #endif
default:
//
let pages = '/pages/order_pay_status/index?order_id=' +
orderId + '&msg=取消支付'
orderId + '&msg=取消支付' + '&product_type=' + that.product_type
return that.$util.Tips({
title: '取消支付'
}, {
@ -1429,8 +1491,7 @@
this.virtualIndex = index;
},
SubOrder: function(e) {
console.log(this.active);
let that = this,
data = {};
if (!that.payType) return that.$util.Tips({
@ -1555,6 +1616,15 @@
.Tips({
title: '余额不足!'
});
//
// if (this.payType == 'creditBuy') {
// uni.navigateTo({
// ur
// })
// return
// }
uni.showLoading({
title: '订单支付中',
mask: true
@ -1567,92 +1637,90 @@
// #ifndef MP
that.payment(data);
// #endif
},
//
openShowBox(item, index) {
if (item.delivery_way.length == 2) {
this.activeObj = item
this.activeIndex = index
this.isShowBox = true
this.getDeliveryType(item.order)
}
},
//
getDeliveryType(item) {
if (item.allow_delivery && item.allow_take) {
this.radioList = [{
},
//
openShowBox(item, index) {
if (item.delivery_way.length == 2) {
this.activeObj = item
this.activeIndex = index
this.isShowBox = true
this.getDeliveryType(item.order)
}
},
//
getDeliveryType(item) {
if (item.allow_delivery && item.allow_take) {
this.radioList = [{
title: this.deliveryName,
check: true
},
{
title: '到店核销',
check: false
}
]
} else if (item.allow_delivery && !item.allow_take) {
this.radioList = [{
title: this.deliveryName,
check: true
},
{
}]
} else if (!item.allow_delivery && item.allow_take) {
this.radioList = [{
title: '到店核销',
check: false
}
]
} else if (item.allow_delivery && !item.allow_take) {
this.radioList = [{
title: this.deliveryName,
check: true
}]
} else if (!item.allow_delivery && item.allow_take) {
this.radioList = [{
title: '到店核销',
check: false
}]
}
},
boxClose() {
this.isShowBox = false
},
getData(data) {
this.cartInfo[this.activeIndex] = data
if (data.order.isTake) {
this.take.push(data.mer_id)
} else {
this.take.forEach((item, i) => {
if (data.mer_id == item) {
this.take.splice(i, 1)
}
})
}
this.isShowBox = false
this.getConfirm(this.addressId);
},
//
goMap(item) {
let that = this;
let lat = Number(item.take.mer_take_location[0]),
long = Number(item.take.mer_take_location[1])
//#ifdef H5
if (that.$wechat.isWeixin() === true) {
that.$wechat.seeLocation({
latitude: lat,
longitude: long,
name: item.mer_name,
address: item.take ? item.take.mer_take_address : '',
}).then(res => {
// console.log('success');
})
} else {
}]
}
},
boxClose() {
this.isShowBox = false
},
getData(data) {
this.cartInfo[this.activeIndex] = data
if (data.order.isTake) {
this.take.push(data.mer_id)
} else {
this.take.forEach((item, i) => {
if (data.mer_id == item) {
this.take.splice(i, 1)
}
})
}
this.isShowBox = false
this.getConfirm(this.addressId);
},
//
goMap(item) {
let that = this;
let lat = Number(item.take.mer_take_location[0]),
long = Number(item.take.mer_take_location[1])
//#ifdef H5
if (that.$wechat.isWeixin() === true) {
that.$wechat.seeLocation({
latitude: lat,
longitude: long,
name: item.mer_name,
address: item.take ? item.take.mer_take_address : '',
}).then(res => {
// console.log('success');
})
} else {
//#endif
uni.openLocation({
latitude: parseFloat(lat),
longitude: parseFloat(long),
scale: 8,
name: item.mer_name,
address: item.take ? item.take.mer_take_address : '',
success: function(res) {
that.go_map = true
},
});
// #ifdef H5
}
//#endif
uni.openLocation({
latitude: parseFloat(lat),
longitude: parseFloat(long),
scale: 8,
name: item.mer_name,
address: item.take ? item.take.mer_take_address : '',
success: function(res) {
that.go_map = true
},
});
// #ifdef H5
}
//#endif
}
}
}
</script>
<style lang="scss" scoped>

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

@ -110,11 +110,13 @@
<view class="store-name">{{item.merchant.mer_name}}</view>
<text class="iconfont icon-xiangyou"></text>
</view>
<view v-if="item.status == 0" class='t-color'>待发货</view>
<view v-if="item.status == 0 && item.pay_type !=3" class='t-color'>待发货</view>
<view v-if="item.status == 0 && item.pay_type==3" class='t-color'>待付款</view>
<view v-if="item.status == 1" class='t-color'>待收货</view>
<view v-if="item.status == 2" class='t-color'>待评价</view>
<view v-if="item.status == 2 &&item.pay_type !==8" class='t-color'>待评价</view>
<view v-if="item.status == 3" class='t-color'>已完成</view>
<view v-if="item.status == -1" class='t-color'>已退款</view>
<view v-if="item.status == 2 &&item.pay_type ==8" class='t-color'>待结算</view>
</view>
<view v-if="item.activity_type === 2">
<view class='item-info acea-row row-between row-top' v-for="(goods,index) in item.orderProduct" :key="index">

View File

@ -0,0 +1,491 @@
<template>
<view class="center">
<view class='wrapper'>
<view class='item'>
<view>支付方式</view>
<view class='list'>
<!-- #ifdef H5 -->
<view class='payItem acea-row row-middle' :class='active==index ?"on":""' @tap='payItem(index)'
v-for="(item,index) in cartArr" :key='index' v-if="item.payStatus==1">
<view class='name acea-row row-center-wrapper'>
<view class='iconfont animated'
:class='(item.icon) + " " + (animated==true&&active==index ?"bounceIn":"")'></view>
{{item.name}}
</view>
<view class='tip'>
{{item.title}}
<block v-if="item.value == 'balance'">
{{userInfo.now_money}}
</block>
</view>
</view>
<!-- #endif -->
<!-- #ifdef MP || APP-PLUS -->
<view class='payItem acea-row row-middle' :class='active==index ?"on":""' @tap='payItem(index)'
v-for="(item,index) in cartArr" :key='index' v-if="item.payStatus==1">
<view class='name acea-row row-center-wrapper'>
<view class='iconfont animated'
:class='(item.icon) + " " + (animated==true&&active==index ?"bounceIn":"")'></view>
{{item.name}}
</view>
<view class='tip'>
{{item.title}}
<block v-if="item.value == 'balance'">
{{userInfo.now_money}}
</block>
</view>
</view>
<!-- #endif -->
</view>
</view>
</view>
<view class="settel">
<view class='settel-t'>
<view>商品总价</view>
<view class='conter'> {{couponData.total_price}}</view>
</view>
</view>
<view class="settel" v-if="(this.be_overdue == 0 || this.be_overdue < 0) &&couponData.total_postage>0">
<view class='settel-t'>
<view>利息合计:</view>
<view class="conter">
<view class='con_text'> {{couponData.total_postage}}</view>
<view class='con_text' style="color: #F84221;" v-if="couponData.pay_type == 8">
已逾期{{this.be_overday}}</view>
</view>
</view>
</view>
<view class='footer acea-row row-between-wrapper'>
<view class="footer_count">
<view>
合计:
<text class='conter' v-if="cartArr[4].payStatus == 1">0.00</text>
<text class='conter' v-else>{{couponData.pay_price}}</text>
</view>
<!-- <view style="font-size: 14px;color: #F84221;" v-if="this.be_overdue == 0 || this.be_overdue < 0 ">
可结算周期到期后再付款{{totalPrice}}
</view> -->
</view>
<view class='settlement' @tap="SubOrder">
提交订单
</view>
</view>
</view>
</template>
<script>
import {
getUserInfo,
} from '@/api/user.js';
import {
groupOrderDetail,
orderPay
} from '@/api/order.js'
import {
postsettle,
} from '@/api/admin.js'
export default {
data() {
return {
animated: false,
totalPrice: 0,
couponData: {},
active: 0, // ,
userInfo: {}, //
cartArr: [{
"name": "微信支付",
"icon": "icon-weixin2",
value: 'weixin',
title: '微信快捷支付',
payStatus: 1,
},
{
name: "支付宝支付",
icon: "icon-icon34",
// #ifdef H5 || APP-PLUS
value: 'alipay',
// #endif
// #ifdef MP
value: 'alipayQr',
// #endif
title: '支付宝支付',
payStatus: this.$store.getters.globalData.alipay_open
},
{
"name": "余额支付",
"icon": "icon-icon-test",
value: 'balance',
title: '可用余额:',
payStatus: this.$store.getters.globalData.yue_pay_status,
},
{
"name": "线下支付",
"icon": "icon-yinhangqia",
value: 'offline',
title: '线下支付',
payStatus: 2,
}, {
"name": "先货后款",
"icon": "tan-a-lujing17324",
value: 'creditBuy',
title: `结算周期30天 `,
label: '日利率0.05%',
order_id: '',
},
],
order_id: '',
product_type: 0,
mer_id: '',
be_overdue: '', //
be_overday: '', //
};
},
onLoad(options) {
this.payType = 'weixin'
this.order_id = options.order_id
if (options.product_type) {
this.product_type = options.product_type
}
this.$nextTick(() => {
this.getOrderInfo()
this.getUserInfo()
})
},
methods: {
payItem: function(e) {
let that = this;
let active = e;
that.active = active;
that.animated = true;
that.payType = that.cartArr[active].value;
},
getUserInfo() {
getUserInfo().then(res => {
this.userInfo = res.data
this.mer_id = res.data.service.mer_id
})
},
getOrderInfo() {
groupOrderDetail(this.order_id, this.product_type).then(res => {
console.log(res)
this.couponData = res.data
this.$nextTick(() => {
if (this.couponData.interest !== null) {
this.moerTime(this.couponData.interest.start_time)
}
})
})
},
SubOrder() {
if (this.couponData.pay_type == 8) {
postsettle(
this.mer_id, {
id: this.order_id,
pay_type: this.payType
}
).then(res => {
if (res.data.paid === false) {
//
}
if (res.message == 'success') {
uni.showToast({
title: '付款成功'
})
setTimeout(() => {
uni.navigateBack({
delta: 1
})
}, 1000)
}
}).catch(err => {
uni.showToast({
title: err.message
})
})
} else {
orderPay(this.order_id, {
type: this.payType
}).then(res => {
let jsConfig = res.data.result.config
if (res.data.status === 'weixinApp') {
//
// #ifdef APP-PLUS
let mp_pay_name = ''
if (uni.requestOrderPayment) {
mp_pay_name = 'requestOrderPayment'
} else {
mp_pay_name = 'requestPayment'
}
uni[mp_pay_name]({
provider: 'wxpay',
orderInfo: jsConfig,
success: (e) => {
uni.navigateBack({
delta: 1
})
},
fail: (e) => {
//
let url = '/pages/order_pay_status/index?order_id=' + orderId +
'&msg=取消支付' + '&product_type=' + that.product_type;
return that.$util.Tips({
title: '取消支付',
}, {
tab: 4,
url: url
});
},
complete: () => {
//
let url = '/pages/order_pay_status/index?order_id=' + orderId +
'&msg=取消支付' + '&product_type=' + that.product_type;
return that.$util.Tips({
title: '取消支付',
}, {
tab: 4,
url: url
});
},
});
// #endif
}
// setTimeout(() => {
// uni.navigateBack({
// delta: 1
// })
// }, 1000)
uni.showToast({
title: res.message
})
})
}
},
//
moerTime(autoTime) {
var date1 = (Date.parse(new Date())) / 1000;
var date2 = (Date.parse(new Date(autoTime))) / 1000;
var date3 = (date2 - date1) * 1000;
this.be_overdue = Math.floor(date3 / (24 * 3600 * 1000));
if (this.be_overdue == 0 || this.be_overdue < 0) {
var date1 = (Date.parse(new Date())) / 1000;
var date2 = (Date.parse(new Date(autoTime))) / 1000;
var date3 = (date1 - date2) * 1000;
this.be_overday = Math.floor(date3 / (24 * 3600 * 1000));
}
}
}
}
</script>
<style lang="scss" scoped>
.center {
.conter {
color: red;
font-weight: bold;
}
.wrapper .item .discount .placeholder {
color: #ccc;
text-align: right;
}
.wrapper {
margin-bottom: 12rpx;
background-color: #fff;
padding-top: 20px;
}
.wrapper .item {
padding: 27rpx 30rpx;
font-size: 30rpx;
color: #282828;
}
.wrapper .item .discount .iconfont {
color: #515151;
font-size: 30rpx;
margin-left: 15rpx;
}
.wrapper .item .discount .num {
font-size: 32rpx;
margin-right: 20rpx;
}
.wrapper .item .shipping {
font-size: 30rpx;
color: #999;
position: relative;
padding-right: 58rpx;
}
.wrapper .item .shipping .iconfont {
font-size: 35rpx;
color: #707070;
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
margin-left: 30rpx;
}
.wrapper .item input {
flex: 1;
height: 100%;
margin-left: 20rpx;
text-align: right;
}
.wrapper .item .placeholder {
color: #ccc;
}
.wrapper .item .list {
margin-top: 35rpx;
}
.wrapper .item .list .payItem {
border: 1px solid #eee;
border-radius: 6rpx;
height: 86rpx;
width: 100%;
box-sizing: border-box;
margin-top: 20rpx;
font-size: 28rpx;
color: #282828;
}
.wrapper .item .list .payItem.on {
border-color: var(--view-theme);
color: var(--view-theme);
}
.wrapper .item .list .payItem .name {
width: 50%;
text-align: center;
border-right: 1px solid #eee;
justify-content: left;
padding-left: 80rpx;
}
.wrapper .item .list .payItem .name .iconfont {
width: 44rpx;
height: 44rpx;
border-radius: 50%;
text-align: center;
line-height: 44rpx;
background-color: #fe960f;
color: #fff;
font-size: 30rpx;
margin-right: 15rpx;
}
.wrapper .item .list .payItem .name .iconfont.icon-weixin2 {
background-color: #41b035;
}
.wrapper .item .list .payItem .name .iconfont.icon-icon34 {
background-color: #4295D5;
}
.wrapper .item .list .payItem .tip {
width: 49%;
text-align: center;
font-size: 26rpx;
color: #aaa;
}
.footer {
width: 100%;
height: 100rpx;
height: calc(100rpx+ constant(safe-area-inset-bottom)); /// IOS<11.2/
height: calc(100rpx + env(safe-area-inset-bottom)); /// IOS>11.2/
background-color: #fff;
padding: 0 30rpx;
font-size: 28rpx;
color: #333;
box-sizing: border-box;
position: fixed;
bottom: 0;
left: 0;
z-index: 30;
.footer_count {
font-size: 28rpx;
}
.coupon_price {
color: #999999;
font-size: 20rpx;
margin-top: 10rpx;
text {
color: #282828;
padding: 2rpx 10rpx;
background: #F5F5F5;
border-radius: 26rpx;
margin-left: 20rpx;
line-height: 30rpx;
height: 30rpx;
display: inline-block;
}
}
.settlement {
font-size: 30rpx;
color: #fff;
width: 240rpx;
height: 70rpx;
background: linear-gradient(90deg, #F98649 0%, #F34E45 100%);
border-radius: 50rpx;
text-align: center;
line-height: 70rpx;
&.disabled {
background-color: #cccccc;
}
}
.transparent {
opacity: 0
}
}
.settel {
width: 100%;
background-color: #fff;
height: 70px;
padding: 0 15px 0 15px;
line-height: 70px;
.settel-t {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
}
.con_text {
display: flex;
justify-content: flex-end;
height: 20px;
margin: auto;
line-height: 30px;
}
}
}
</style>

View File

@ -0,0 +1,75 @@
<template>
<view class="conent">
<view class="con_kuo" @click="navigator(`/pages/nongKe/supply_chain/supplier?type_id=12&isDetail=1&product_type=98&cate_id=${id}`)">
<image class="con_img" src="@/static/images/bg1.png" mode=""></image>
<image class="con_ico" src="@/static/images/bgic1.png" mode=""></image>
<view class="con_text">
<h3>先款后货</h3>
<span>先付款后发货</span>
</view>
</view>
<view class="con_kuo" @click="navigator(`/pages/nongKe/supply_chain/supplier?type_id=12&isDetail=1&product_type=98&cate_id=${id}&credit_buy=1`)">
<image class="con_img" src="@/static/images/bg2.png" mode=""></image>
<image class="con_ico" src="@/static/images/bgic2.png" mode=""></image>
<view class="con_text">
<h3>先货后款</h3>
<span>先发货后付款</span>
</view>
</view>
</view>
</template>
<script>
export default {
data(){
return{
id:''
}
},
onLoad(option) {
console.log(option);
this.id=option.cate_id
},
methods:{
navigator(url, t) {
uni.navigateTo({
url: url
})
},
}
}
</script>
<style lang="scss" scoped>
*{
padding: 0;
margin: 0;
}
.conent{
width: 100%;
display: flex;
justify-content: space-around;
margin-top: 20px;
.con_kuo{
position: relative;
.con_img{
width: 192px;
height: 92px;
}
.con_ico{
position: absolute;
left: 25px;
top: 32px;
width: 31px;
height: 32px;
}
.con_text{
position: absolute;
left: 66px;
top: 20px;
color: white;
}
}
}
</style>

View File

@ -0,0 +1,480 @@
<template>
<view>
<view class="content-header">
<view class="header">
<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" />
<view class="search_btn">
<image src="@/static/images/serchbtn.png" mode="aspectFill" @click="handleSearch">
</image>
</view>
</view>
</view>
</view>
<view class="recom">
<view class="recom_bnt">
<rudon-rowMenuDotDotDot :localdata="options" @change="menuAction($event)"
style="color: #000000;">
<view class="" style="color: #F84221;">
{{this.recomname}}
</view>
<view class="recom_sym">
<image src='@/static/images/arrow-bottom.png' mode="aspectFit"></image>
</view>
</rudon-rowMenuDotDotDot>
</view>
</view>
</view>
<view class="type_switch">
<view class="recom_mend" v-for="(item,i) in options" :key="i" :class="i==num?'tradcolor':''"
@click="btntap(i)">
{{item.text}}
<view :class="i==num?'tradline':''"></view>
</view>
</view>
</view>
<view class="list">
<view class="item" v-for='(item,index) in datatlist' :key='index' @click="shopping(item)">
<image class="shopimg" :src="item.image[0]" mode="aspectFit"></image>
<view class="item_text">
<span v-if='item.resale_type==1'>调货</span>
<span v-else>打折</span>
{{item.title}}
</view>
<view class="item_prices">
<span></span>{{item.total_price}}
</view>
<view class="item_name">
<image class="avater" :src="item.mer_avatar" mode="aspectFit"></image>
<view class="item_name_text">
{{item.mer_name}}
</view>
</view>
</view>
</view>
<view class="tardimg_add" @click="open">
<!-- <img src="@/static/images/trad-add.png" mode="widthFix" alt=""> -->
<image src="@/static/images/trad-add.png" mode="aspectFit"></image>
</view>
<release :isShow='visible' :bottom='true' @close="closeMadle" @cancel="cancel" @confirm="confirm"
style="z-index: 999999!important;"></release>
<view class="empty_wrapper" v-if="emptyShow">
<u-empty mode="list" icon="http://cdn.uviewui.com/uview/empty/list.png"></u-empty>
</view>
<u-loadmore :status="status" v-if="datatlist.length>=where.limit" />
</view>
</template>
<script>
import {
getCommunityList,
getCommunitygetOrderList
} from '@/api/trading-floor.js'
import {
data,
methods
} from '../../../uni_modules/uview-ui/libs/mixin/mixin'
import release from '@/components/release/release.vue';
import emptyPage from '@/components/emptyPage.vue';
export default {
components: {
release,
emptyPage
},
data() {
return {
status: 'loadmore',
where: {
page: 1,
limit: 10,
is_type: 3,
keyword: '',
},
visible: false,
num: 0,
options: [{
value: '0',
text: '推荐'
},
{
value: '1',
text: '调货'
},
{
value: '2',
text: '打折专区'
}
],
datatlist: [],
recomname: '',
emptyShow: false,
}
},
onLoad() {
this.getlist()
},
onReachBottom() {
if (this.status == 'nomore') return;
this.status = 'loading';
this.emptyShow = false
this.where.page = ++this.where.page;
this.getlist(this.num)
},
methods: {
//
btntap(index) {
this.datatlist = []
this.num = index
this.getlist()
},
//
shopping(item) {
let data = {
type: item.resale_type,
id: item.community_id
}
uni.navigateTo({
url: '/pages/trading_hall/product_details/index?key=' + encodeURIComponent(JSON.stringify(
data))
})
},
//
open() {
this.visible = true
},
//
handleSearch() {
if (this.num == 0) {
this.where.resale_type = ''
this.emptyShow = false
this.datatlist = []
} else if (this.num == 1) {
this.where.resale_type = 1
this.emptyShow = false
this.datatlist = []
} else {
this.where.resale_type = 2
this.emptyShow = false
this.datatlist = []
}
getCommunityList(this.where).then(res => {
if (res.status == 200) {
if (res.data.list.length < this.where.limit) this.status = 'nomore'
if (this.where.page == 1 && res.data.list.length == 0) this.emptyShow = true
this.datatlist.push(...res.data.list)
}
})
},
//
getlist(index) {
if (this.num == 0) {
this.where.resale_type = ''
this.emptyShow = false
} else if (this.num == 1) {
this.where.resale_type = 1
this.emptyShow = false
} else {
this.where.resale_type = 2
this.emptyShow = false
}
getCommunityList(this.where).then(res => {
if (res.status == 200) {
if (res.data.list.length < this.where.limit) {
this.status = 'nomore'
}
if (this.where.page == 1 && res.data.list.length <= 0) {
this.emptyShow = true
}
this.datatlist.push(...res.data.list)
}
})
},
closeMadle() {
this.visible = false
},
confirm() {
//
console.log('点击了确认按钮')
this.visible = false
},
cancel() {
//
console.log('点击了取消按钮')
this.visible = false
},
menuAction(action, rowId) {
//
if (action) {
this.num = action
this.getlist(action)
}
if (action === '') {
this.recomname = this.options[0].text
} else {
this.recomname = this.options[action].text
}
},
}
}
</script>
<style lang="scss" scoped>
.content-header {
position: absolute;
position: fixed;
top: 0;
z-index: 8888;
}
.header {
width: 100%;
display: flex;
justify-content: flex-start;
align-items: center;
background-color: #fff;
.top-header {
width: 80%;
.search {
padding: 17rpx 30rpx;
.search-content {
width: 100%;
height: 60rpx;
padding-left: 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;
}
.search_btn {
width: 98rpx;
height: 60rpx;
margin-left: 20rpx;
image {
width: 100%;
height: 100%;
}
}
}
}
.recom {
width: 200rpx;
margin-right: 39rpx;
height: 60rpx;
text-align: center;
border-radius: 30px;
border: 1px solid #F84221;
display: flex;
justify-content: center;
align-items: center;
.recom_bnt {
font-size: 32rpx;
font-family: 'PingFang SC';
font-weight: 400;
.recom_sym {
width: 28rpx;
height: 28rpx;
margin-left: 0rpx;
image {
width: 28rpx;
height: 28rpx;
margin-left: 10rpx;
}
}
}
}
}
.type_switch {
display: flex;
justify-content: space-around;
padding-top: 17rpx;
font-size: 32rpx;
background-color: #fff;
font-weight: 500;
color: #999999;
padding-bottom: 10rpx;
.tradcolor {
color: #F84221;
}
.tradline {
width: 26rpx;
height: 4rpx;
opacity: 1;
background-color: #F84221;
margin: 0 auto;
}
}
.tardimg_add {
position: absolute;
bottom: 193rpx;
right: 0rpx;
position: fixed;
width: 176rpx;
height: 176rpx;
image {
width: 100%;
width: 100%;
}
}
.list {
width: 694.74rpx;
margin: 0 auto;
display: flex;
margin-bottom: 21rpx;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
margin-top: 170rpx;
.item {
width: 336rpx;
height: 561rpx;
background-color: #fff;
margin-top: 21rpx;
border-radius: 14rpx 14rpx 0 0;
.shopimg {
width: 336rpx;
height: 314rpx
}
.item_text {
width: 100%;
padding-left: 25rpx;
padding-right: 25rpx;
margin-top: 19rpx;
margin-bottom: 20rpx;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
span {
height: 35rpx;
width: 100%;
padding: 3px;
margin: 2px;
background: linear-gradient(180deg, #F98649 0%, #F34E45 100%);
border-radius: 7px 0px 7px 0px;
font-weight: 400;
color: #FFFFFF;
font-size: 25rpx;
margin-right: 15rpx;
}
}
.item_prices {
font-size: 18px;
color: #F84221;
padding-left: 15px;
padding-bottom: 18rpx;
border-bottom: 1px solid #707070;
}
.item_name {
width: 100%;
padding-left: 15rpx;
display: flex;
font-size: 28rpx;
font-family: 'PingFang SC';
font-weight: 400;
color: #333333;
.avater {
width: 60rpx;
height: 60rpx;
border-radius: 50%;
margin-top: 19rpx;
margin-right: 10rpx;
image {
width: 100%;
height: 100%;
display: block;
}
}
.item_name_text {
margin-top: 30rpx;
}
}
}
}
</style>

View File

@ -5,37 +5,52 @@
<view class='list'>
<view class='item acea-row row-between-wrapper'>
<view class='name'>姓名</view>
<input type='text' placeholder='请输入姓名' name='real_name' :value="userAddress.real_name" placeholder-class='placeholder'></input>
<input type='text' placeholder='请输入姓名' name='real_name' :value="userAddress.real_name"
placeholder-class='placeholder'></input>
</view>
<view class='item acea-row row-between-wrapper'>
<view class='name'>联系电话</view>
<input type='text' placeholder='请输入联系电话' name="phone" :value='userAddress.phone' placeholder-class='placeholder'></input>
<input type='text' placeholder='请输入联系电话' name="phone" :value='userAddress.phone'
placeholder-class='placeholder'></input>
</view>
<view class='item acea-row row-between-wrapper'>
<view class='name'>所在地区</view>
<view class="region">
<view class="region_count" @click="changeRegion">
<text v-if="!addressInfo.length" style="color:#cdcdcd;">请选择地</text>
<text v-if="!addressInfo.length" style="color:#cdcdcd;">请选择地</text>
<text v-else>{{addressText}}</text>
<text class="iconfont icon-xiangyou"></text>
</view>
</view>
</view>
</view>
<view class='item acea-row row-between-wrapper'>
<view class='name'>所在村队</view>
<view class="region">
<view class="region_count" @click="changevillage">
<text v-if="!villageInfo.length" style="color:#cdcdcd;">请选择村队</text>
<text v-else>{{villageText}}</text>
<text class="iconfont icon-xiangyou"></text>
</view>
</view>
</view>
<view class='item acea-row row-between-wrapper'>
<view class='name'>详细地址</view>
<input type='text' class="location-input" placeholder='请填写具体地址' name='detail' placeholder-class='placeholder' v-model="userAddress.detail"></input>
<view class="location" @click="selfLocation">
<input type='text' class="location-input" placeholder='请填写具体地址' name='detail'
placeholder-class='placeholder' v-model="userAddress.detail"></input>
<!--<view class="location" @click="selfLocation">
<text class="iconfont icon-chakanditu"></text>
<br>
定位
</view>
</view> -->
</view>
</view>
<view class='default acea-row row-middle'>
<checkbox-group @change='ChangeIsDefault'>
<checkbox :checked="userAddress.is_default ? true : false" />设置为默认地址</checkbox-group>
<checkbox :checked="userAddress.is_default ? true : false" />设置为默认地址
</checkbox-group>
</view>
<button class='keepBnt' form-type="submit">立即保存</button>
@ -43,12 +58,16 @@
<view class="wechatAddress" v-if="!address_id" @click="getWxAddress">导入微信地址</view>
<!-- #endif -->
<!-- #ifdef H5 -->
<view class="wechatAddress" v-if="this.$wechat.isWeixin() && !address_id" @click="getAddress">导入微信地址</view>
<view class="wechatAddress" v-if="this.$wechat.isWeixin() && !address_id" @click="getAddress">导入微信地址
</view>
<!-- #endif -->
</view>
</form>
<areaWindow ref="areaWindow" :display="display" :address="addressInfo"
@submit="OnChangeAddress" @changeClose="changeClose"></areaWindow>
<areaWindow ref="areaWindow" :display="display" :address="addressInfo" @submit="OnChangeAddress"
@changeClose="changeClose"></areaWindow>
<villageTeam ref="villageTeam" :display="display_one" :address="villageInfo" :villageaddress="list"
@submit="OnChangevAddress" @changeClose="changevClose"></villageTeam>
<authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse"></authorize>
</view>
</template>
@ -63,16 +82,28 @@
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import { editAddress, getAddressDetail } from '@/api/user.js';
import { getCityV2, getCityList } from '@/api/api.js';
import { mapGetters } from "vuex";
import {
editAddress,
getAddressDetail
} from '@/api/user.js';
import {
getCityV2,
getCityList
} from '@/api/api.js';
import {
mapGetters
} from "vuex";
import areaWindow from '@/components/areaWindow';
import { getGeocoder } from '@/api/store.js';
import villageTeam from '@/components/villageTeam/villageTeam.vue';
import {
getGeocoder
} from '@/api/store.js';
import authorize from '@/components/Authorize';
export default {
components: {
areaWindow,
authorize,
villageTeam
},
data() {
return {
@ -92,14 +123,21 @@
multiIndex: [0, 0, 0],
cityId: 0,
display: false,
addressInfo:[],
display_one: false,
addressInfo: [],
villageInfo: [],
list: [],
latitude: '',
longitude: ''
};
},
computed: {...mapGetters(['isLogin','viewColor']),
addressText(){
return this.addressInfo.map(v=>v.name).join('/');
computed: {
...mapGetters(['isLogin', 'viewColor']),
addressText() {
return this.addressInfo.map(v => v.name).join('/');
},
villageText() {
return this.villageInfo.map(v => v.name).join('/');
}
},
onLoad(options) {
@ -119,8 +157,13 @@
}
},
methods: {
OnChangeAddress(address){
OnChangeAddress(address) {
this.addressInfo = address;
this.list = address
},
OnChangevAddress(address) {
this.villageInfo = address;
console.log(this.villageInfo)
},
//
getCityList: function() {
@ -129,13 +172,19 @@
this.district = res.data
})
},
changeRegion(){
changeRegion() {
this.display = true;
},
changevillage() {
this.display_one = true;
},
//
changeClose: function() {
this.display = false;
},
changevClose: function() {
this.display_one = false;
},
//
onLoadFun: function() {
this.isShowAuth = false;
@ -155,11 +204,12 @@
if (!this.address_id) return false;
let that = this;
getAddressDetail(this.address_id).then(res => {
let region = [res.data.province, res.data.city, res.data.district];
let region = [res.data.province, res.data.city, res.data.district, res.data.street, res.data.village];
that.$set(that, 'userAddress', res.data);
that.$set(that, 'region', region);
that.city_id = res.data.city_id
that.addressInfo = res.data.area
that.addressInfo = res.data.areas
that.villageInfo = [res.data.brigade]
});
},
//
@ -170,7 +220,8 @@
success: function(res) {
uni.chooseAddress({
success: function(res) {
getCityList(res.provinceName+'/'+res.cityName+'/'+res.countyName).then(res=>{
getCityList(res.provinceName + '/' + res.cityName + '/' + res
.countyName).then(res => {
that.addressInfo = res.data;
})
that.userAddress.real_name = res.userName;
@ -183,9 +234,10 @@
icon: 'none',
duration: 1000
});
if (res.errMsg == 'chooseAddress:cancel') return that.$util.Tips({
title: '取消选择'
});
if (res.errMsg == 'chooseAddress:cancel') return that.$util
.Tips({
title: '取消选择'
});
},
})
},
@ -212,7 +264,7 @@
getAddress() {
let that = this;
that.$wechat.openAddress().then(res => {
getCityList(res.provinceName+'/'+res.cityName+'/'+res.countryName).then(res=>{
getCityList(res.provinceName + '/' + res.cityName + '/' + res.countryName).then(res => {
that.addressInfo = res.data;
})
that.userAddress.real_name = res.userName;
@ -241,11 +293,15 @@
long: longitude
}).then(res => {
const data = res.data;
getCityList(data.address_component.province+'/'+data.address_component.city+'/'+data.address_component.district+'/'+(!data.address_reference.town ? '' : data.address_reference.town.title)).then(res=>{
getCityList(data.address_component.province + '/' + data.address_component
.city + '/' + data.address_component.district + '/' + (!data
.address_reference.town ? '' : data.address_reference.town
.title)).then(res => {
self.addressInfo = res.data;
self.$set(self.userAddress, 'detail', data.formatted_addresses.recommend);
self.$set(self.userAddress, 'detail', data.formatted_addresses
.recommend);
uni.hideLoading();
}).catch(e=>{
}).catch(e => {
uni.hideLoading();
uni.showToast({
title: '定位失败,请手动输入地址',
@ -253,7 +309,7 @@
duration: 1000
});
})
}).catch(e=>{
}).catch(e => {
uni.hideLoading();
uni.showToast({
title: '定位失败,请手动输入地址',
@ -291,13 +347,17 @@
if (!that.addressInfo.length) return that.$util.Tips({
title: '请选择所在地区'
});
if (!that.villageInfo.length) return that.$util.Tips({
title: '请选择所在村队'
});
if (!value.detail) return that.$util.Tips({
title: '请填写详细地址'
});
value.address_id = that.address_id;
value.is_default = that.userAddress.is_default ? 1 : 0;
value.area = that.addressInfo;
value.brigade=that.villageInfo[0]
uni.showLoading({
title: '保存中',
mask: true
@ -323,8 +383,10 @@
that.couponId = '';
uni.$emit('updataAddress')
uni.navigateTo({
url: '/pages/users/order_confirm/index?cartId=' + cartId + '&addressId=' + (that.id ? that.id : res.data
.address_id) + '&pinkId=' + pinkId + '&couponId=' + couponId
url: '/pages/users/order_confirm/index?cartId=' + cartId +
'&addressId=' + (that.id ? that.id : res.data
.address_id) + '&pinkId=' + pinkId + '&couponId=' +
couponId
});
} else {
// #ifdef H5
@ -353,74 +415,92 @@
<style scoped lang="scss">
/deep/checkbox .uni-checkbox-input.uni-checkbox-input-checked,
/deep/checkbox .wx-checkbox-input.wx-checkbox-input-checked {
border: 1px solid var(--view-theme)!important;
background-color: var(--view-theme)!important;
color: #fff!important;
border: 1px solid var(--view-theme) !important;
background-color: var(--view-theme) !important;
color: #fff !important;
}
.addAddress .list {
background-color: #fff;
}
.addAddress .list .item {
padding: 30rpx;
border-top: 1px solid #eee;
position: relative;
}
.addAddress .list .item .location{
.addAddress .list .item .location {
position: absolute;
right: 30rpx;
top: 15rpx;
text-align: center;
font-size: 20rpx;
.iconfont{
.iconfont {
color: var(--view-theme);
}
}
.addAddress .list .item .name {
width: 195rpx;
font-size: 30rpx;
color: #333;
}
.addAddress .list .item .address {
flex: 1;
margin-left: 20rpx;
}
.addAddress .list .item input,.region .region_count {
.addAddress .list .item input,
.region .region_count {
width: 475rpx;
font-size: 30rpx;
box-sizing: border-box;
}
.region .region_count{
.region .region_count {
height: 42rpx;
line-height: 42rpx;
.icon-xiangyou{
.icon-xiangyou {
float: right;
}
}
.addAddress .list .location-input{
.addAddress .list .location-input {
padding-right: 70rpx;
}
.addAddress .list .item .placeholder {
color: #ccc;
}
.addAddress .list .item picker {
width: 475rpx;
}
.addAddress .list .item picker .picker {
width: 410rpx;
font-size: 30rpx;
}
.addAddress .list .item picker .iconfont {
font-size: 43rpx;
}
.addAddress .default {
padding: 0 30rpx;
height: 90rpx;
background-color: #fff;
margin-top: 23rpx;
}
.addAddress .default checkbox {
margin-right: 15rpx;
}
.addAddress .keepBnt {
width: 690rpx;
height: 86rpx;
@ -432,6 +512,7 @@
color: #fff;
background-color: var(--view-theme);
}
.addAddress .wechatAddress {
width: 690rpx;
height: 86rpx;
@ -443,4 +524,4 @@
color: var(--view-theme);
border: 1px solid var(--view-theme);
}
</style>
</style>

View File

@ -8,7 +8,7 @@
<view class='item' v-for="(item,index) in addressList" :key="index">
<view class='address' @click='goOrder(item.address_id)'>
<view class='consignee'>收货人{{item.real_name}}<text class='phone'>{{item.phone}}</text></view>
<view>收货地址{{item.province || ''}}{{item.city || ''}}{{item.district || ''}}{{item.street || ''}}{{item.detail || ''}}</view>
<view>收货地址{{item.province || ''}}{{item.city || ''}}{{item.district || ''}}{{item.street || ''}}{{item.brigade|| ''}}{{item.detail || ''}}</view>
</view>
<view class='operation acea-row row-between-wrapper'>
<!-- #ifndef MP -->

View File

@ -19,6 +19,7 @@
<view>协议规则</view>
<text class='iconfont icon-you'></text>
</view>
<!-- #ifdef MP -->
<view class='item acea-row row-between-wrapper' @click="Setting">
<view>隐私设置</view>

BIN
static/audio/order.mp3 Normal file

Binary file not shown.

View File

@ -54,7 +54,7 @@ body {overflow-x: hidden;}
-o-box-pack: end;
-ms-flex-pack: end;
-webkit-justify-content: flex-end;
justify-content: flex-end
justify-content: flex-end;
}
.acea-row.row-left {
-webkit-box-pack: start;

View File

@ -0,0 +1,82 @@
@font-face {
font-family: "icontan"; /* Project id 3552766 */
src: url('//at.alicdn.com/t/c/font_3552766_bmogttr4zyj.woff2?t=1688542944134') format('woff2'),
url('//at.alicdn.com/t/c/font_3552766_bmogttr4zyj.woff?t=1688542944134') format('woff'),
url('//at.alicdn.com/t/c/font_3552766_bmogttr4zyj.ttf?t=1688542944134') format('truetype');
}
.icontan {
font-family: "icontan" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.tan-a-lujing17324:before {
content: "\e602";
}
.tan-xianhuo:before {
content: "\e601";
}
.tan-dianpu:before {
content: "\e600";
}
.tan-clock:before {
content: "\e627";
}
.tan-ditu_dingwei_o:before {
content: "\ebbb";
}
.tan-f24gl-telephone:before {
content: "\e953";
}
.tan-sound-Mute:before {
content: "\e766";
}
.tan-vehivles:before {
content: "\e76b";
}
.tan-shoes:before {
content: "\e76c";
}
.tan-aviation:before {
content: "\e770";
}
.tan-landtransportation:before {
content: "\e773";
}
.tan-dingwei:before {
content: "\e8c4";
}
.tan-favorites-fill:before {
content: "\e721";
}
.tan-rmb:before {
content: "\e761";
}
.tan-scanning:before {
content: "\e762";
}
.tan-raw:before {
content: "\e75e";
}
.tan-service:before {
content: "\e764";
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 B

BIN
static/images/beijin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
static/images/bg1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
static/images/bg2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
static/images/bgic1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
static/images/bgic2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
static/images/daoru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
static/images/ddjk.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 704 B

BIN
static/images/diaohuo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
static/images/discounts.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
static/images/dong.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

BIN
static/images/fabu.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
static/images/jiankong.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 635 B

BIN
static/images/season.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
static/images/serchbtn.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
static/images/shouhuo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
static/images/sjtj.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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