大更新

This commit is contained in:
weipengfei 2023-12-15 19:19:16 +08:00
parent 7415eb9f60
commit e66db9a9ec
17 changed files with 12108 additions and 19 deletions

View File

@ -74,6 +74,14 @@ export function getAdminOrderDetail(merId, orderId) {
login: true
});
}
/**
* 其他订单详情
*/
export function getAdminOtherOrderDetail(merId, orderId) {
return request.get("admin/other/" + merId + "/order/" + orderId, {}, {
login: true
});
}
/**
* 订单发货信息获取
*/
@ -91,6 +99,15 @@ export function setAdminOrderDelivery(merId, id, data) {
login: true
});
}
/**
* 其他订单发货保存
*/
export function setAdminOtherOrderDelivery(merId, id, data) {
return request.post("admin/other/" + merId + "/delivery/" + id, data, {
login: true
});
}
/**
* 订单统计图
*/
@ -149,6 +166,13 @@ export function verifierOrder(mer_id, code) {
export function orderStatistics(mer_id, data) {
return request.get("admin/" + mer_id + "/statistics", data);
}
/**
* 其他订单统计数
* @returns {*}
*/
export function otherOrderStatistics(mer_id, data) {
return request.get("admin/other/" + mer_id + "/statistics", data);
}
/**
* 订单
* @returns {*}
@ -174,6 +198,15 @@ export function getOrderList(where, merId) {
login: true
});
}
/**
* 其他订单列表
* @returns {*}
*/
export function getOtherOrderList(where, merId) {
return request.get(`admin/other/${merId}/order_list`, where, {
login: true
});
}
/**
* 退款订单列表
* @returns {*}
@ -270,6 +303,7 @@ export function setRefundMark(merId, orderId, data) {
login: true
});
}
/**
* 去核销
* @param object data

View File

@ -47,6 +47,14 @@ export function getOrderList(data) {
return request.get('order/list', data);
}
/**
* 其他订单列表
* @param object data
*/
export function getOtherOrderList(data) {
return request.get('other_order/list', data);
}
/**
* 订单产品信息
* @param string unique
@ -78,6 +86,13 @@ export function orderPay(id, data) {
export function orderData(data) {
return request.get('order/number', data)
}
/**
* 其他订单统计数据
*/
export function otherOrderData(data) {
return request.get('other_order/number', data)
}
/**
* 订单取消
@ -114,6 +129,14 @@ export function getOrderDetail(uni) {
return request.get('order/detail/' + uni);
}
/**
* 其他订单详情
* @param string uni
*/
export function getOtherOrderDetail(uni) {
return request.get('other_order/detail/' + uni);
}
/**
* 未付款订单详情
* @param string uni
@ -145,6 +168,16 @@ export function orderTake(uni) {
return request.post('order/take/' + uni);
}
/**
* 其他订单收货
* @param string uni
*
*/
export function otherOrderTake(uni) {
return request.post('other_order/take/' + uni);
}
/**
* 订单查询物流信息
* @returns {*}
@ -218,6 +251,10 @@ export function orderCreate(data) {
export function createOrder(data) {
return request.post("v2/order/create", data, { noAuth: true });
}
// 生成其他订单
export function createOtherOrder(data) {
return request.post("other_order/create", data);
}
// 未支付订单
export function groupOrderList(data) {
return request.get("order/group_order_list", data, { noAuth: true });

View File

@ -106,7 +106,7 @@
</view>
</view>
<view class="right-btn-box">
<view class="right-btn-box" v-if="btn">
<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}}
@ -181,7 +181,11 @@
order_status:{
type: Number,
default: 0,
}
},
btn:{
type: Boolean,
default: true,
},
},
computed: mapGetters(['viewColor']),
data() {

View File

@ -73,12 +73,12 @@
postCartAdd,
getProductDetail
} from '@/api/store.js';
import { Toast } from '../libs/uniApi';
import { Toast } from '../libs/uniApi';
export default {
name: "shortPopup",
props: {
source:{
type: Number,
type: String | Number,
default: null
}
},

View File

@ -91,6 +91,12 @@
"navigationBarTitleText": "采购车"
}
},
{
"path": "pages/nongKe/supply_chain/shopping_trolley_other",
"style": {
"navigationBarTitleText": "采购车"
}
},
{
"path": "pages/moreProject/moreProject",
"style": {
@ -304,6 +310,18 @@
// #endif
}
},
{
"path": "indexOther",
"style": {
"navigationBarTitleText": "订单详情"
//,
//"navigationBarBackgroundColor": "#e93323"
// #ifdef MP || APP-PLUS
// ,
//"navigationBarTextStyle": "#fff"
// #endif
}
},
{
"path": "stay",
"style": {
@ -441,7 +459,13 @@
"navigationBarTitleText": "供货采购",
"enablePullDownRefresh": true
}
},{
"path": "cloud_entrepot/indexOther",
"style": {
"navigationStyle": "custom",
"navigationBarTitleText": "供货采购",
"enablePullDownRefresh": true
}
}, {
"path": "teach_video/teach_video",
"style": {
@ -711,6 +735,12 @@
"navigationBarTitleText": "提交订单"
}
},
{
"path": "order_confirm/indexOther",
"style": {
"navigationBarTitleText": "提交订单"
}
},
{
"path": "goods_details_store/index",
"style": {
@ -753,6 +783,12 @@
"navigationBarTitleText": "采购订单"
}
},
{
"path": "order_list/indexOther",
"style": {
"navigationBarTitleText": "赊账订单"
}
},
{
"path": "order_list/relase",
"style": {
@ -1150,7 +1186,13 @@
"style": {
"navigationBarTitleText": "订单列表"
}
}, {
},
{
"path": "orderList/indexOther",
"style": {
"navigationBarTitleText": "订单列表"
}
},{
"path": "financial_management/index",
"style": {
"navigationBarTitleText": "财务管理"
@ -1175,6 +1217,12 @@
"navigationBarTitleText": "订单详情"
}
},
{
"path": "orderDetail/indexOther",
"style": {
"navigationBarTitleText": "订单详情"
}
},
{
"path": "refundDetail/index",
"style": {
@ -1187,6 +1235,12 @@
"navigationBarTitleText": "订单发货"
}
},
{
"path": "delivery/indexOther",
"style": {
"navigationBarTitleText": "订单发货"
}
},
{
"path": "statistics/index",
"style": {

View File

@ -0,0 +1,851 @@
<template>
<view class="deliver-goods" :style="viewColor">
<header>
<view class="order-num acea-row row-between-wrapper">
<view class="num line1">订单号{{ delivery.order_sn }}</view>
<view class="name line1">
<span class="iconfont icon-yonghu2"></span>{{ delivery.user && delivery.user.nickname }}
</view>
</view>
<view class="address">
<view class="name">
{{ delivery.real_name }}<span class="phone">{{ delivery.user && delivery.user_phone }}</span>
</view>
<view>{{ delivery.user_address }}</view>
</view>
<view class="line">
<image :src="`${domain}/static/images/line.jpg`" />
</view>
</header>
<view class="wrapper">
<view class="item acea-row row-between-wrapper">
<view>发货方式</view>
<view class="mode acea-row row-middle row-right">
<view class="goods" :class="active === index ? 'on' : ''" v-for="(item, index) in types" :key="index" @click="changeType(item, index)">
<span class="iconfont icon-xuanzhong2"></span>{{ item.title }}
</view>
</view>
</view>
<block v-if="logistics.length>0">
<view class="list">
<block v-if="delivery_type == 1">
<view class="item acea-row row-between-wrapper">
<view>快递公司</view>
<view class="select-box">
<picker class="pickerBox" @change="bindPickerChange" :value="seIndex" :range="logistics" range-key="label">
<view class="uni-input">{{logistics[seIndex].label}}</view>
</picker>
</view>
</view>
<view class="item acea-row row-between-wrapper">
<view>快递单号</view>
<input type="text" placeholder="填写快递单号" v-model="delivery_id" class="mode" />
<!-- #ifdef MP -->
<text class="iconfont icon-xiangji" @click="scanCode"></text>
<!-- #endif -->
<!-- #ifdef H5 -->
<text v-if="isWeixin" class="iconfont icon-xiangji" @click="scanCode"></text>
<!-- #endif -->
</view>
</block>
<block v-if="delivery_type == 4">
<view class="item acea-row row-between-wrapper">
<view>快递公司</view>
<view class="select-box">
<picker class="pickerBox" @change="bindPickerChange" :value="seIndex" :range="logistics" range-key="label">
<view class="uni-input">{{logistics[seIndex].label}}</view>
</picker>
</view>
</view>
<view class="item acea-row row-between-wrapper" v-if="expTemp.length > 0 && delivery_type == 4">
<view>电子面单</view>
<div style="display: flex;align-items: center;">
<picker class="pickerBox" @change="bindTempChange" :value="expIndex" :range="expTemp" range-key="title">
<view class="uni-input input-inline">{{expTemp[expIndex].title}}</view>
</picker>
<div class="look" @click="previewImage">预览</div>
</div>
</view>
<view class="item acea-row row-between-wrapper">
<view>寄件人姓名</view>
<input type="text" placeholder="填写寄件人姓名" v-model="from_name" class="mode" />
</view>
<view class="item acea-row row-between-wrapper">
<view>寄件人电话</view>
<input type="text" placeholder="填写寄件人电话" v-model="from_tel" class="mode" />
</view>
<view class="item acea-row row-between-wrapper">
<view>寄件人地址</view>
<input type="text" placeholder="填写寄件人地址" v-model="from_addr" class="mode" />
</view>
</block>
</view>
</block>
<view class="list" v-if="delivery_type == 2">
<view class="item acea-row row-between-wrapper">
<view>送货人姓名</view>
<input type="text" placeholder="填写送货人姓名" maxlength="10" v-model="to_name" class="mode" />
</view>
<view class="item acea-row row-between-wrapper">
<view>送货人电话</view>
<input type="text" placeholder="填写送货人电话" v-model="to_phone" class="mode" />
</view>
</view>
<block v-if="delivery_type == 5">
<view class="item acea-row row-between-wrapper">
<view>发货点</view>
<view class="select-box">
<picker class="pickerBox" @change="bindStoreChange" :value="storeIndex" :range="storeList" range-key="label">
<view class="uni-input">{{storeList[storeIndex] && storeList[storeIndex].label}}</view>
</picker>
</view>
</view>
<view class="item acea-row row-between-wrapper">
<view>包裹重量</view>
<input type="number" placeholder="填写包裹重量" v-model="cargo_weight" class="mode" />
</view>
<view class="item acea-row row-between-wrapper">
<view>配送备注</view>
<input type="textarea" placeholder="填写配送备注" v-model="mark" class="mode textarea" />
</view>
</block>
<view class="list">
<view class="item acea-row row-between-wrapper">
<view>发货备注</view>
<input type="textarea" placeholder="填写发货备注" v-model="remark" class="mode textarea" />
</view>
</view>
<block v-if="(delivery.orderProduct) && ((delivery.orderProduct.length > 1) || (delivery.orderProduct.length==1 && delivery.orderProduct[0]['refund_num']>1)) && activity_type != 2">
<view class="item acea-row row-between-wrapper">
<view>分单发货</view>
<view class="mode acea-row row-middle row-right">
<view class="goods" :class="curSplit === item.key ? 'on' : ''" v-for="(item, index) in splitList" :key="index" @click="changeSplit(item, index)">
<span class="iconfont icon-xuanzhong2"></span>{{ item.title }}
</view>
</view>
</view>
<block v-if="curSplit">
<view v-for="(item, index) in delivery.orderProduct">
<view class="pro_list acea-row">
<view class="checkbox" @tap.stop="checkedChange(item)">
<text v-if="item.checked" class="iconfont icon-xuanzhong1"></text>
<text v-else class="iconfont icon-weixuanzhong"></text>
</view>
<view v-if="item.cart_info && item.cart_info.product" class="picture">
<image :src="item.cart_info.product.image"></image>
</view>
<view class="info" v-if="item.cart_info && item.cart_info.product">
<view class="name line2">{{item.cart_info.product.store_name}}</view>
<view class="info_sku" v-if="item.cart_info && item.cart_info.productAttr">{{item.cart_info.productAttr.sku}}</view>
<view class="info_price" v-if="item.cart_info && item.cart_info.productAttr"><text>{{item.cart_info.productAttr.price}}</text></view>
<view class='carnum acea-row row-center-wrapper'>
<view class="reduce" :class="item.numSub ? 'on' : ''" @click.stop='subCart(item)'>-</view>
<view class='num'>{{item.split_num}}</view>
<view class="plus" :class="item.numAdd ? 'on' : ''" @click.stop='addCart(item)'>+</view>
</view>
</view>
</view>
</view>
</block>
</block>
<block v-if="!curSplit">
<view class="pro_count" v-if="delivery.orderProduct">
<view class="title">{{delivery.orderProduct.length}}件商品</view>
<view v-for="(item, index) in delivery.orderProduct">
<view class="pro_list acea-row">
<view v-if="item.cart_info && item.cart_info.product" class="picture">
<image :src="item.cart_info.product.image"></image>
</view>
<view class="info pro_info" v-if="item.cart_info && item.cart_info.product">
<view class="name line2">{{item.cart_info.product.store_name}}</view>
<view class="info_sku" v-if="item.cart_info && item.cart_info.productAttr">{{item.cart_info.productAttr.sku}}</view>
</view>
<view class="pro_price" v-if="item.cart_info && item.cart_info.productAttr">
<view class="info_price">{{item.cart_info.productAttr.price}}</view>
<view class="info_num">x{{item.product_num}}</view>
<view class="refund_num" v-if="item.product_num-item.refund_num>0">{{item.product_num-item.refund_num}}{{item.is_refund==1?'退款中' : item.is_refund==2 ? '已退款' : item.is_refund==3?'全部退款':''}}</view>
</view>
</view>
</view>
<!-- <view class="footer">
{{delivery.orderProduct.length}}件商品应支付<text> {{delivery.pay_price}} </text>运费{{delivery.pay_postage}}
</view> -->
</view>
</block>
</view>
<view style="height:5.4rem;"></view>
<view class="confirm_btn"><view class="confirm" @click="saveInfo">确认提交</view></view>
</view>
</template>
<script>
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEBCRMEB
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import {
getAdminOrderDetail,
getAdminOtherOrderDetail,
setAdminOrderDelivery,
setAdminOtherOrderDelivery,
orderExportTemp,
orderDeliveryInfo,
getTempAndDelivery,
getDeliveryStoreLst
} from "@/api/admin";
import { mapGetters } from "vuex";
import { expressList } from "@/api/order";
import { checkPhone } from '@/utils/validate.js';
import { HTTP_REQUEST_URL } from '@/config/app';
export default {
name: "GoodsDeliver",
components: {},
props: {},
data: function() {
return {
types: [
// {
// type: 1,
// title: ""
// },
{
type: 2,
title: "送货"
},
// {
// type: 3,
// title: ""
// }
],
splitList: [
{
title: '开启',
key: 1
},
{
title: '关闭',
key: 0
}
],
curSplit: 0,
curExpress: 1,
active: 0,
order_id: "",
delivery: {
user: {}
},
logistics: [],
delivery_type: 1,
delivery_name: "",
to_phone: '', //
to_name: '', //
remark: "",
mark: "",
cargo_weight: 0,
delivery_id: "",
mer_config_temp_id: "",
mer_from_com: "",
seIndex: 0,
storeIndex: 0,
merId: "",
expIndex:0,
expTemp:[], //
from_name:'', //
from_tel:'', //
from_addr:"", //
fictitious_content: '',
isTemp: false,
isDelivery: false,
is_virtual: 0,
splitProducts: [],
storeList: [],
activity_type: 0,
domain: HTTP_REQUEST_URL,
// #ifdef H5
isWeixin: this.$wechat.isWeixin()
// #endif
};
},
watch: {
"$route.params.oid": function(newVal) {
let that = this;
if (newVal != undefined) {
that.order_id = newVal;
that.getIndex();
}
}
},
computed: mapGetters(['viewColor']),
onLoad: function(option) {
this.order_id = option.id;
this.merId = option.merId
this.getIndex();
this.expressList();
this.orderDeliveryInfo();
},
methods: {
//
scanCode() {
// #ifdef MP
let that = this;
uni.scanCode({
scanType: ['barCode'],
success(res) {
let code = res.result.split(",")
that.delivery_id = code.length == 1 ? code[0] : code[1];
}
})
// #endif
// #ifdef H5
if (this.$wechat.isWeixin()) {
this.$wechat.wechatEvevt('scanQRCode', {
needResult: 1,
scanType: ['barCode']
}).then(res => {
let code = res.resultStr.split(",")
that.delivery_id = code.length == 1 ? code[0] : code[1];
});
}
// #endif
},
//
previewImage(){
uni.previewImage({
urls: [this.expTemp[this.expIndex].pic],
success:function(){},
fail:function(error){}
});
},
//
isOpenDeliveryTemp(is_virtual){
let that = this
getTempAndDelivery(that.merId).then(
res => {
if(is_virtual == 1){
that.delivery_type = 3
that.types = [
{type: 3,title: "虚拟发货"}
]
}else{
if(res.data.crmeb_serve_dump == 1){
that.types.push({type: 4,title: "电子面单"})
}
if(res.data.delivery_status == 1){
that.types.push({type: 5,title: "同城配送"})
}
}
},
error => {
that.$util.Tips({
title: error
})
}
);
},
//
getDump(){
let that = this;
that.expTemp.forEach((val,index) =>{
if(val.temp_id == that.mer_config_temp_id){
that.expIndex = index;
return;
}
})
},
//
getStoreList() {
getDeliveryStoreLst(this.merId).then((res) => {
this.storeList = res.data
}).catch((error) => {
this.$util.Tips({
title: error
})
})
},
changeType: function(item, index) {
this.active = index;
this.delivery_type = item.type;
this.delivery_name = "";
this.delivery_id = "";
if(item.type == 5){
this.getStoreList()
}
},
changeSplit: function(item, index) {
this.curSplit = item.key;
},
getIndex: function() {
let that = this;
getAdminOtherOrderDetail(that.merId,that.order_id).then(
res => {
res.data.orderProduct.forEach((goods, j) => {
goods.checked = true
goods.split_num = goods.refund_num
})
that.delivery = res.data;
that.activity_type = res.data.activity_type;
that.is_virtual = res.data.is_virtual;
that.isOpenDeliveryTemp(that.is_virtual);
},
error => {
that.$util.Tips({
title: error
})
}
);
},
expressList: function() {
let that = this;
expressList().then(
res => {
that.logistics = res.data;
that.getExpTemp(res.data[0].value)
},
error => {
that.$util.Tips({
title: error
})
}
);
},
/*选择分单商品*/
checkedChange(item) {
item.checked = !item.checked;
},
/*获取分单商品*/
getSplitProduct() {
let that = this;
let data = [];
that.delivery.orderProduct.map((item) => {
if(item.checked){
data.push({id:item.order_product_id,num:item.split_num})
}
})
return data;
},
subCart(item) {
if(item.split_num > 1){
item.split_num--
}
},
addCart(item) {
if(item.split_num < item.refund_num){
item.split_num++
}
},
async saveInfo() {
let that = this,
delivery_type = that.delivery_type,
delivery_name = that.logistics[that.seIndex].value,
delivery_id = that.delivery_id,
save = {};
save.delivery_name = delivery_name
save.delivery_type = delivery_type
save.is_split = that.curSplit
if(that.curSplit){
that.splitProducts = that.getSplitProduct()
if(that.splitProducts.length == 0){
return this.$util.Tips({
title: '请选择分单商品'
})
}
}
save.split = that.splitProducts;
if(delivery_type==1){
if (!delivery_id) {
return this.$util.Tips({
title: '请填写快递单号'
})
}
save.delivery_id = delivery_id
that.setInfo(save);
}
if(delivery_type == 2){
if (!that.to_name) {
return this.$util.Tips({
title: '请填写送货人姓名'
})
}
if (!that.to_phone) {
return this.$util.Tips({
title: '请填写送货人手机号码'
})
}
if (!(/^1[3456789]\d{9}$/.test(that.to_phone))) {
return this.$util.Tips({
title: '请填写正确的手机号码'
})
}
save.delivery_name = that.to_name;
save.delivery_id = that.to_phone;
that.setInfo(save);
}
if(delivery_type == 3){
save.remark = that.remark;
that.setInfo(save);
}
if(delivery_type==4){
if (!that.from_name) {
return this.$util.Tips({
title: '请填写寄件人姓名'
})
}
if (!that.from_tel) {
return this.$util.Tips({
title: '请填写寄件人手机号码'
})
}
if (!(/^1[3456789]\d{9}$/.test(that.from_tel))) {
return this.$util.Tips({
title: '请填写正确的手机号码'
})
}
if (!that.from_addr) {
return this.$util.Tips({
title: '请填写寄件人地址'
})
}
if(that.expTemp.length==0){
return this.$util.Tips({
title: '请选择电子面单'
})
}
save.from_name = that.from_name
save.from_tel = that.from_tel
save.from_addr = that.from_addr
save.temp_id = that.expTemp[that.expIndex].temp_id
that.setInfo(save);
}
if(delivery_type == 5){
save.station_id = that.storeList[that.storeIndex].value
save.cargo_weight = that.cargo_weight;
save.mark = that.mark;
that.setInfo(save);
}
},
setInfo: function(item) {
let that = this;
setAdminOtherOrderDelivery(that.merId,that.order_id,item).then(
res => {
that.$util.Tips({
title: res.message,
icon: 'success',
mask: true
})
setTimeout(res => {
uni.redirectTo({
url:`/pages/admin/orderList/indexOther?types=3&merId=${that.merId}`
})
}, 1000)
},
error => {
that.$util.Tips({
title: error
})
}
);
},
bindPickerChange(e) {
this.seIndex = e.detail.value
this.getExpTemp(this.logistics[e.detail.value].value)
},
bindTempChange(e) {
this.expIndex = e.detail.value
},
bindStoreChange(e){
this.storeIndex = e.detail.value
},
getExpTemp(code){
orderExportTemp({
com: code
}).then(res=>{
this.expTemp = res.data.data
})
},
//
orderDeliveryInfo(){
let that = this
orderDeliveryInfo(that.merId).then(
res => {
that.from_name = res.data.mer_from_name;
that.from_tel = res.data.mer_from_tel;
that.from_addr = res.data.mer_from_addr;
that.mer_config_temp_id = res.data.mer_config_temp_id;
that.mer_from_com = res.data.mer_from_com
},
error => {
that.$util.Tips({
title: error
})
}
)
}
}
};
</script>
<style lang="scss" scoped>
/*发货*/
.uni-input{
display: block;
width: 400rpx;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
.input-inline{
width: auto;
}
.deliver-goods header {
width: 100%;
background-color: #fff;
margin-top: 10upx;
}
.deliver-goods header .order-num {
padding: 0 30upx;
border-bottom: 1px solid #f5f5f5;
height: 67upx;
}
.deliver-goods header .order-num .num {
width: 430upx;
font-size: 26upx;
color: #282828;
position: relative;
}
.deliver-goods header .order-num .num:after {
position: absolute;
content: '';
width: 1px;
height: 30upx;
background-color: #ddd;
top: 50%;
margin-top: -15upx;
right: 0;
}
.deliver-goods header .order-num .name {
width: 260upx;
font-size: 26upx;
color: #282828;
text-align: center;
}
.deliver-goods header .order-num .name .iconfont {
font-size: 35upx;
color: #477ef3;
vertical-align: middle;
margin-right: 10upx;
}
.deliver-goods header .address {
font-size: 26upx;
color: #868686;
background-color: #fff;
padding: 30upx;
}
.look{
margin-left: 20rpx;
color: #1890FF;
}
.deliver-goods header .address .name {
font-size: 34upx;
color: #282828;
margin-bottom: 10upx;
}
.deliver-goods header .address .name .phone {
margin-left: 40upx;
}
.deliver-goods header .line {
width: 100%;
height: 3upx;
}
.deliver-goods header .line image {
width: 100%;
height: 100%;
display: block;
}
.deliver-goods .wrapper {
width: 100%;
background-color: #fff;
}
.deliver-goods .wrapper .item {
border-bottom: 1px solid #f0f0f0;
padding: 0 30upx;
min-height: 96upx;
font-size: 28rpx;
color: #282828;
position: relative;
}
.deliver-goods .wrapper .item .mode {
width: 480upx;
height: 100%;
text-align: right;
}
.deliver-goods .wrapper .item .mode .iconfont {
font-size: 30upx;
margin-left: 13upx;
}
.deliver-goods .wrapper .item .mode .goods~.goods {
margin-left: 30upx;
}
.deliver-goods .wrapper .item .mode .goods {
color: #bbb;
margin: 10rpx 0;
}
.deliver-goods .wrapper .item .mode .goods.on {
color: #477ef3;
}
.deliver-goods .wrapper .item .icon-up {
position: absolute;
font-size: 35upx;
color: #2c2c2c;
right: 30upx;
}
.deliver-goods .wrapper .item select {
direction: rtl;
padding-right: 60upx;
position: relative;
z-index: 2;
}
.deliver-goods .wrapper .item input::placeholder {
color: #bbb;
}
.deliver-goods .confirm_btn {
position: fixed;
bottom: 0;
padding: 20rpx 30rpx;
background: #fff;
width: 100%;
}
.deliver-goods .confirm {
font-size: 32upx;
color: #fff;
width: 100%;
height: 90upx;
background-color: #477ef3;
text-align: center;
line-height: 90upx;
border-radius: 60rpx;
}
.select-box {
flex: 1;
height: 100%;
.pickerBox {
display: flex;
align-items: center;
justify-content: flex-end;
width: 100%;
height: 100%;
text-align: right;
position: relative;
// padding-right: 30rpx;
.iconfont{
font-size: 28rpx;
color: #bbb;
position: absolute;
right: 0;
top: 10rpx;
}
}
}
.pro_list{
width: 100%;
padding: 20rpx 30rpx;
position: relative;
align-items: center;
border-bottom: 1px solid #f0f0f0;
justify-content: space-between;
}
.pro_list .checkbox{
width: 60rpx;
.icon-xuanzhong1{
color: var(--view-theme);
}
}
.pro_list .picture{
width: 180rpx;
height: 180rpx;
}
/deep/.pro_list .picture image{
width: 180rpx;
height: 180rpx;
border-radius: 6rpx;
}
.pro_count .title{
padding: 20rpx 30rpx;
line-height: 50rpx;
border-bottom: 1px solid #EEEEEE;
}
.pro_list .info{
width: 420rpx;
font-size: 28rpx;
color: #282828;
}
.pro_list .pro_info{
width: 360rpx;
}
.pro_list .info_num{
color: #ff9600;
margin-top: 10rpx;
}
.pro_list .refund_num{
margin-top: 10rpx;
font-size: 24rpx;
}
.pro_list .pro_price{
text-align: right;
}
.pro_list .info .name{
line-height: 46rpx;
}
.pro_list .info .carnum{
height: 47rpx;
position: absolute;
bottom: 30rpx;
right: 30rpx;
}
.pro_list .info .carnum view{
border: 1px solid #a4a4a4;
min-width: 66rpx;
text-align: center;
height: 100%;
line-height: 46rpx;
font-size: 28rpx;
color: #a4a4a4;
}
.pro_list .info .carnum .reduce{
border-right: 0;
border-radius: 3rpx 0 0 3rpx;
}
.pro_list .info .carnum .reduce.on {
border-color: #e3e3e3;
color: #dedede;
}
.pro_list .info .carnum .plus {
border-left: 0;
border-radius: 0 3rpx 3rpx 0;
}
.pro_list .info .carnum .num {
color: #282828;
}
.pro_list .info .info_sku{
color: #868686;
font-size: 24rpx;
margin-top: 6rpx;
}
.pro_list .pro_info .info_sku{
margin-top: 20rpx;
}
.pro_list .info .info_price{
margin-top: 30rpx;
}
.footer{
padding: 20rpx 30rpx;
text-align: right;
line-height: 50rpx;
text{
color: #ff9600;
}
}
</style>

View File

@ -0,0 +1,991 @@
<template>
<view class="order-details pos-order-details">
<view class="header acea-row row-middle">
<view class="state">{{ title }}</view>
<view class="data">
<view class="order-num">订单{{ orderInfo.order_sn }}</view>
<view>
<span class="time">{{ orderInfo.create_time }}</span>
</view>
</view>
</view>
<view class="remarks acea-row" v-if="goname != 'looks'" style="align-items: center;">
<span class="iconfont icon-zhinengkefu-"></span>
<view class="line1" style="text-align: left; flex: 1; margin-left: 10rpx;" @click="modify('1')">
{{orderInfo.remark ? orderInfo.remark : '订单未备注,点击添加备注信息'}}
</view>
</view>
<view class="orderingUser acea-row row-middle">
<span class="iconfont icon-yonghu2"></span>{{ (orderInfo.user && orderInfo.user.nickname) || '' }}
</view>
<view class="address">
<view class="name">
{{ orderInfo.real_name }}<span class="phone">{{ orderInfo.user_phone }}</span>
</view>
<view>{{ orderInfo.user_address }}</view>
<!-- #ifdef H5 -->
<button class="copy copy-data" :data-clipboard-text="'收货人姓名'+orderInfo.real_name+'\n收货人电话'+ orderInfo.user_phone+'\n收货人地址'+orderInfo.user_address">复制</button>
<!-- #endif -->
<!-- #ifdef MP || APP-PLUS -->
<button class="copy" @tap="copyText">复制</button>
<!-- #endif -->
</view>
<view class="line">
<image :src="`${domain}/static/images/line.jpg`" />
</view>
<view class="pos-order-goods">
<navigator :url="`/pages/goods_details/index?id=${item.cart_info.product.product_id}`" hover-class="none" class="goods" v-for="(item, index) in orderInfo.orderProduct" :key="index">
<view class="acea-row row-between-wrapper">
<view class="picTxt acea-row row-between-wrapper">
<view class="pictrue">
<image :src="item.cart_info.productAttr.image || item.cart_info.product.image" />
</view>
<view class="text acea-row row-between row-column">
<view class="info line2">
{{ item.cart_info.product.store_name }}
</view>
<view class="attr">{{ item.cart_info.product.suk }}</view>
</view>
</view>
<view class="money">
<view class="x-money">{{ item.cart_info.productAttr.price }}</view>
<view class="num">x{{ item.product_num }}
<text class="font-color refund_num" v-if="item.product_num-item.refund_num>0">(-{{item.product_num-item.refund_num}})</text>
</view>
<view v-if="orderInfo.order_type == 0" class="y-money">{{ item.cart_info.productAttr.ot_price }}</view>
</view>
</view>
</navigator>
</view>
<!-- <view class="public-total">
{{ orderInfo.total_num }}件商品应支付
<span class="money">{{ orderInfo.pay_price }}</span> ( 邮费 ¥{{orderInfo.pay_postage}})
</view> -->
<view class="wrapper">
<view class="item acea-row row-between">
<view>订单编号</view>
<view class="conter acea-row row-middle row-right">
{{ orderInfo.order_sn }}
<!-- #ifdef H5 -->
<button class="copy copy-data" :data-clipboard-text="orderInfo.order_sn">复制</button>
<!-- #endif -->
<!-- #ifdef MP || APP-PLUS -->
<span class="copy copy-data" @click="copyNum(orderInfo.order_sn)">复制</span>
<!-- #endif -->
</view>
</view>
<view class="item acea-row row-between">
<view>下单时间</view>
<view class="conter">{{ orderInfo.create_time }}</view>
</view>
<view class="item acea-row row-between">
<view>支付状态</view>
<view class="conter">
{{ orderInfo.paid == 1 ? "已支付" : "未支付" }}
</view>
</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>
<view class="item acea-row row-between">
<view>买家留言</view>
<view class="conter">{{ orderInfo.mark }}</view>
</view>
</view>
<view v-if="orderInfo.is_virtual == 1" class='wrapper'>
<view v-for="(item,index) in orderInfo.order_extend" v-if="item && index" :key="index" class='item acea-row row-between'>
<view>{{index}}</view>
<view v-if="!Array.isArray(item)" class='conter'>{{item}}</view>
<view v-else class='conter virtual_image'>
<image v-for="(pic,i) in item" :key="i" class="picture" :src="pic" @click="getPhotoClickIdx(item,i)"></image>
</view>
</view>
</view>
<!-- <view class="wrapper">
<view class="item acea-row row-between">
<view>支付金额</view>
<view class="conter">{{ orderInfo.total_price }}</view>
</view>
<view v-if="orderInfo.coupon_price > 0" class="item acea-row row-between">
<view>优惠券抵扣</view>
<view class="conter">-{{ orderInfo.coupon_price }}</view>
</view>
<view v-if="orderInfo.integral_price > 0" class="item acea-row row-between">
<view>积分抵扣</view>
<view class="conter">-{{ orderInfo.integral_price }}</view>
</view>
<view v-if="orderInfo.pay_postage > 0" class="item acea-row row-between">
<view>运费</view>
<view class="conter">{{ orderInfo.pay_postage }}</view>
</view>
<view class="actualPay acea-row row-right">
实付款<span class="money font-color-red">{{ orderInfo.pay_price }}</span>
</view>
</view> -->
<view class="wrapper" v-if="orderInfo.delivery_type != '3' && orderInfo.order_type === 0 && orderInfo.delivery_type">
<view class="item acea-row row-between">
<view>配送方式</view>
<view class="conter" v-if="orderInfo.delivery_type === '1' || orderInfo.delivery_type === '4'">
快递
</view>
<view class="conter" v-if="orderInfo.delivery_type === '2'">送货</view>
</view>
<view class="item acea-row row-between">
<view v-if="orderInfo.delivery_type === '1' || orderInfo.delivery_type === '4'">快递公司</view>
<view v-if="orderInfo.delivery_type === '2'">送货人</view>
<view class="conter line1">{{ orderInfo.delivery_name ? orderInfo.delivery_name : '' }}</view>
</view>
<view class="item acea-row row-between">
<view v-if="orderInfo.delivery_type === '1' || orderInfo.delivery_type === '4'">快递单号</view>
<view v-if="orderInfo.delivery_type === '2'">送货人电话</view>
<view class="conter" style="display: flex;">
<text>{{ orderInfo.delivery_id ? orderInfo.delivery_id : ''}}</text>
<text class="copy copy-data" :data-clipboard-text="orderInfo.delivery_id">复制</text>
</view>
</view>
</view>
<view style="height:120upx;"></view>
<!-- <view class="footer acea-row row-right row-middle" v-if="goname != 'looks'" style="margin-bottom: var(--status-bar-height);">
<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>
<view class="bnt cancel" @click="modify('0')" v-if="types == -1">
立即退款
</view>
<view class="bnt cancel" @click="modify('1')">订单备注</view>
<view class="bnt cancel" v-if="orderInfo.pay_type === 'offline' && orderInfo.paid === 0" @click="offlinePay">
确认付款
</view>
<view class="bnt delivery" @click="toPostagequ(orderInfo)" v-if="orderInfo.status == 0&&orderInfo.activity_type==0&& orderInfo.order_type !=1 ">
收件码
</view>
<navigator class="bnt delivery" v-if="orderInfo.paid == 1 && orderInfo.status == 0 && orderInfo.order_type == 0&&orderInfo.activity_type==98" :url="'/pages/admin/delivery/indexOther?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>
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEBCRMEB
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import PriceChange from "@/components/PriceChange";
// #ifdef H5
import ClipboardJS from "@/plugin/clipboard/clipboard.js";
// #endif
import {
getAdminOrderDetail,
getAdminOtherOrderDetail,
setAdminOrderPrice,
setAdminOrderRemark,
setOfflinePay,
setOrderRefund,
orderCancellation,
logisticsCode,
postconfirm
} from "@/api/admin";
import { isMoney } from '@/utils/validate.js'
import { HTTP_REQUEST_URL } from '@/config/app';
export default {
name: "AdminOrder",
components: {
PriceChange
},
props: {},
data: function() {
return {
order: false,
change: false,
order_id: "",
mer_id: '',
orderInfo: {
_status: {},
user: {}
},
domain: HTTP_REQUEST_URL,
status: "",
title: "",
payType: "",
types: "",
clickNum: 1,
goname:'',
popUpShow: false,
payCodeUrl:''
};
},
watch: {
"$route.params.oid": function(newVal) {
let that = this;
if (newVal != undefined) {
that.order_id = newVal;
that.getIndex();
}
}
},
onLoad: function(option) {
let self = this
self.order_id = option.id
self.mer_id = option.mer_id
self.goname = option.goname
self.getIndex();
// #ifdef H5
self.$nextTick(function() {
var clipboard = new ClipboardJS('.copy-data');
// var copybtn = document.getElementsByClassName("copy-data");
// var clipboard = new Clipboard(copybtn);
clipboard.on('success', function(e) {
self.$util.Tips({
title:'复制成功'
})
});
clipboard.on('error', function(e) {
self.$util.Tips({
title:'复制失败'
})
});
});
// #endif
},
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;
},
modify: function(status) {
this.change = true;
this.status = status;
},
changeclose: function(msg) {
this.change = msg;
},
//
getPhotoClickIdx(list, idx) {
uni.previewImage({
current: list[idx], // Number H5
urls: list
});
},
copyText: function (e) {
// var copy = e.currentTarget.dataset.copy; //data-copy
let arr = [
{
name: "收货人姓名",
value: this.orderInfo.real_name
},
{
name: "收货人电话",
value: this.orderInfo.user_phone
},
{
name: "收货人地址",
value: this.orderInfo.user_address
}
]
// console.log(`${arr.map(item =>`${item.name}: ${item.value}`).join("\n")}`)
wx.setClipboardData({
data: `${arr.map(item =>`${item.name}: ${item.value}`).join("\n")}`,
success: function (res) {
wx.getClipboardData({
success: function (res) {
wx.showToast({
title: '复制成功'
})
}
})
}
})
},
getIndex: function() {
let that = this;
getAdminOtherOrderDetail(that.mer_id,that.order_id).then(
res => {
that.orderInfo = res.data;
},
err => {
that.$util.Tips({
title: err
}, {
tab: 3,
url: 1
});
}
);
},
/*核销订单*/
goCancellation() {
let that = this;
// uni.navigateTo({
// url: '/pages/admin/cancellate_result/index?mer_id='+that.mer_id+'&code='+that.orderInfo.verify_code,
// })
uni.navigateTo({
url: `/pages/admin/order_cancellation/index?mer_id=${that.mer_id}`
})
// uni.showModal({
// title: '',
// content: '',
// success: function(res) {
// if (res.confirm) {
// orderCancellation(that.mer_id,that.orderInfo.order_id).then(res => {
// return that.$util.Tips({
// title: '',
// icon: 'success'
// }, function() {
// that.getIndex();
// });
// }).catch(err => {
// return that.$util.Tips({
// title: err
// });
// })
// }
// }
// })
},
async savePrice(opt) {
let that = this,
data = {},
price = opt.price,
refund_price = opt.refund_price,
refund_status = that.orderInfo.refund_status,
remark = opt.remark;
data.order_id = that.orderInfo.order_id;
if (that.status == 0) {
// if (!isMoney(price)) {
// return that.$util.Tips({
// title: ''
// });
// }
data.price = price;
let parmas = {
pay_postage: opt.orderInfo.pay_postage,
coupon_price: opt.orderInfo.coupon_price,
total_price: Number(opt.orderInfo.total_price)
}
setAdminOrderPrice(that.mer_id,data.order_id, parmas ).then(
res => {
that.change = false;
that.$util.Tips({
title: '改价成功',
icon: 'success'
})
that.getIndex();
},
err => {
// console.log(err, 'err')
that.change = false;
that.$util.Tips({
title: err
});
}
);
} else if (that.status == 0 && refund_status === 1) {
if (!isMoney(refund_price)) {
return that.$util.Tips({
title: '请输入正确的金额'
});
}
data.price = refund_price;
data.type = opt.type;
setOrderRefund(that.mer_id,data).then(
res => {
that.change = false;
that.$util.Tips({
title: res.message
});
that.getIndex();
},
err => {
// console.log(err, 'err')
that.change = false;
that.$util.Tips({
title: err
});
}
);
} else {
if (!remark) {
return this.$util.Tips({
title: '请输入备注'
})
}
// data.remark = remark;
// console.log(data);
setAdminOrderRemark(that.mer_id,data.order_id,{ remark: remark }).then(
res => {
that.change = false;
this.$util.Tips({
title: res.message,
icon: 'success'
})
that.getIndex();
},
err => {
that.change = false;
that.$util.Tips({
title: err
});
}
);
}
},
offlinePay: function() {
setOfflinePay(this.mer_id,{
order_id: this.orderInfo.order_id
}).then(
res => {
this.$util.Tips({
title: res.msg,
icon: 'success'
});
this.getIndex();
},
err => {
this.$util.Tips({
title: err
});
}
);
},
copyNum(id) {
uni.setClipboardData({
data: id,
success: function() {
// console.log('success');
}
});
},
copyData(id){
uni.setClipboardData({
data: id,
success: function() {
// console.log('success');
}
});
},
// #ifdef H5
webCopy(item, index) {
// console.log('yunxingle')
let items = item
let indexs = index
let self = this
if (self.clickNum == 1) {
// console.log('22')
self.clickNum += 1
self.webCopy(items, indexs)
}
}
// #endif
}
};
</script>
<style lang="scss">
/*商户管理订单详情*/
.pos-order-details .header {
background: linear-gradient(to right, #2291f8 0%, #1cd1dc 100%);
background: -webkit-linear-gradient(to right, #2291f8 0%, #1cd1dc 100%);
background: -moz-linear-gradient(to right, #2291f8 0%, #1cd1dc 100%);
}
.pos-order-details .header .state {
font-size: 36upx;
color: #fff;
}
.pos-order-details .header .data {
margin-left: 35upx;
font-size: 28upx;
}
.pos-order-details .header .data .order-num {
font-size: 30upx;
margin-bottom: 8upx;
}
.pos-order-details .remarks {
width: 100%;
height: 86upx;
background-color: #fff;
padding: 0 30upx;
}
.pos-order-details .remarks .iconfont {
font-size: 40upx;
color: #2a7efb;
}
.pos-order-details .remarks input {
width: 630upx;
height: 100%;
font-size: 30upx;
}
.pos-order-details .remarks input::placeholder {
color: #666;
}
.pos-order-details .orderingUser {
font-size: 26upx;
color: #282828;
padding: 0 30upx;
height: 67upx;
background-color: #fff;
margin-top: 16upx;
border-bottom: 1px solid #f5f5f5;
}
.pos-order-details .orderingUser .iconfont {
font-size: 40upx;
color: #2a7efb;
margin-right: 15upx;
}
.pos-order-details .address {
margin-top: 0;
}
.pos-order-details .pos-order-goods {
margin-top: 17upx;
}
.pos-order-details .footer .more {
font-size: 27upx;
color: #aaa;
width: 100upx;
height: 64upx;
text-align: center;
line-height: 64upx;
margin-right: 25upx;
position: relative;
}
.pos-order-details .footer .delivery {
background: linear-gradient(to right, #2291f8 0%, #1cd1dc 100%);
background: -webkit-linear-gradient(to right, #2291f8 0%, #1cd1dc 100%);
background: -moz-linear-gradient(to right, #2291f8 0%, #1cd1dc 100%);
}
.pos-order-details .footer .more .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-details .footer .more .order .arrow:before {
content: '';
width: 0;
height: 0;
border-left: 9upx solid transparent;
border-right: 9upx solid transparent;
border-top: 19upx solid #fff;
position: absolute;
left: -10upx;
bottom: 0;
}
.pos-order-details .footer .more .order {
width: 200upx;
background-color: #fff;
border: 1px solid #eee;
border-radius: 10upx;
position: absolute;
top: -200upx;
z-index: 9;
}
.pos-order-details .footer .more .order .item {
height: 77upx;
line-height: 77upx;
}
.pos-order-details .footer .more .order .item~.item {
border-top: 1px solid #f5f5f5;
}
.pos-order-details .footer .more .moreName {
width: 100%;
height: 100%;
}
/*订单详情*/
.order-details .header {
padding: 0 30upx;
height: 150upx;
}
.order-details .header.on {
background-color: #666 !important;
}
.order-details .header .pictrue {
width: 110upx;
height: 110upx;
}
.order-details .header .pictrue image {
width: 100%;
height: 100%;
}
.order-details .header .data {
color: rgba(255, 255, 255, 0.8);
font-size: 24upx;
margin-left: 27upx;
}
.order-details .header.on .data {
margin-left: 0;
}
.order-details .header .data .state {
font-size: 30upx;
font-weight: bold;
color: #fff;
margin-bottom: 7upx;
}
/* .order-details .header .data .time{margin-left:20upx;} */
.order-details .nav {
background-color: #fff;
font-size: 26upx;
color: #282828;
padding: 25upx 0;
}
.order-details .nav .navCon {
padding: 0 40upx;
}
.order-details .nav .navCon .on {
font-weight: bold;
color: #e93323;
}
.order-details .nav .progress {
padding: 0 65upx;
margin-top: 10upx;
}
.order-details .nav .progress .line {
width: 100upx;
height: 2upx;
background-color: #939390;
}
.order-details .nav .progress .iconfont {
font-size: 25upx;
color: #939390;
margin-top: -2upx;
width: 30upx;
height: 30upx;
line-height: 33upx;
text-align: center;
margin-right: 0 !important;
}
.order-details .address {
font-size: 26upx;
color: #868686;
background-color: #fff;
padding: 25upx 30upx 30upx 30upx;
position: relative;
}
.order-details .address .name {
font-size: 30upx;
color: #282828;
margin-bottom: 0.1rem;
}
.order-details .address .name .phone {
margin-left: 40upx;
}
.order-details .line {
width: 100%;
height: 3upx;
}
.order-details .line image {
width: 100%;
height: 100%;
display: block;
}
.order-details .wrapper {
background-color: #fff;
margin-top: 12upx;
padding: 30upx;
}
.order-details .wrapper .item {
font-size: 28upx;
color: #282828;
}
.order-details .wrapper .item~.item {
margin-top: 20upx;
}
.order-details .wrapper .item .conter {
color: #868686;
text-align: right;
max-width: 450rpx;
}
.order-details .wrapper .item .virtual_image {
// text-align: left;
margin-left: 50rpx;
}
.order-details .wrapper .item .virtual_image .picture{
width: 106rpx;
height: 106rpx;
border-radius: 8rpx;
margin-right: 10rpx;
&:last-child{
margin-right: 0;
}
}
.order-details .wrapper .item .conter .copy {
font-size: 20rpx;
color: #868686;
border-radius: 3rpx;
border: 1px solid #868686;
padding: 0rpx 15rpx;
margin-left: 24rpx;
height: 40rpx;
display: flex;
align-items: center;
justify-content: center;
border-radius: 16rpx;
}
.address .copy{
font-size: 20rpx;
color: #868686;
border-radius: 3rpx;
border: 1px solid #868686;
padding: 0rpx 15rpx;
height: 40rpx;
display: flex;
align-items: center;
justify-content: center;
border-radius: 16rpx;
position: absolute;
right: 30rpx;
top: 20rpx;
}
.order-details .wrapper .actualPay {
border-top: 1upx solid #eee;
margin-top: 30upx;
padding-top: 30upx;
}
.order-details .wrapper .actualPay .money {
font-weight: bold;
font-size: 30upx;
}
.order-details .footer {
width: 100%;
height: 100upx;
position: fixed;
bottom: 0;
left: 0;
background-color: #fff;
padding: 0 30upx;
border-top: 1px solid #eee;
}
.order-details .footer .bnt {
width: auto;
height: 60upx;
line-height: 60upx;
text-align: center;
line-height: upx;
border-radius: 50upx;
color: #fff;
font-size: 27upx;
padding: 0 3%;
}
.order-details .footer .bnt.cancel {
color: #aaa;
border: 1px solid #ddd;
}
.order-details .footer .bnt.default {
color: #444;
border: 1px solid #444;
}
.order-details .footer .bnt~.bnt {
margin-left: 18upx;
}
.pos-order-goods {
padding: 0 30upx;
background-color: #fff;
position: relative;
}
.pos-order-goods .goods {
padding: 20rpx 0;
overflow: hidden;
}
.pos-order-goods .goods~.goods {
border-top: 1px dashed #e5e5e5;
}
.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 {
width: 365upx;
height: 130upx;
}
.pos-order-goods .goods .picTxt .text .info {
font-size: 28upx;
color: #282828;
}
.pos-order-goods .goods .picTxt .text .attr {
font-size: 24upx;
color: #999;
}
.pos-order-goods .goods .money {
width: 164upx;
text-align: right;
font-size: 28upx;
}
.pos-order-goods .goods .money .refund_num{
display: inline-block;
margin-left: 10rpx;
}
.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 .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;
}
.public-total {
font-size: 28upx;
color: #282828;
border-top: 1px solid #eee;
height: 92upx;
line-height: 92upx;
text-align: right;
padding: 0 30upx;
background-color: #fff;
}
.public-total .money {
color: #ff4c3c;
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -69,6 +69,25 @@
</view>
</view>
<view class="content-tools" style="margin-top: 10rpx;" v-if="$store.state.app.userInfo&&$store.state.app.userInfo.mer_info&&$store.state.app.userInfo.mer_info.type_code=='TypeSupplyChain'">
<view class="tools-one">
赊账订单
<view class=""></view>
</view>
<view class="content-order" >
<view class="" v-for="(item,i) in other_order" :key='i' @click="other_shopporder(item)">
<view class="content-order-two">
{{item.value}}
</view>
<view class="content-order-one">
{{item.name}}
</view>
</view>
<view class="" v-for="item in 3" :key="'empty'+item">
</view>
</view>
</view>
<view class="content-tools">
<view class="tools-one">
@ -373,6 +392,7 @@
import image from '../../uni_modules/uview-ui/libs/config/props/image';
import {
orderStatistics,
otherOrderStatistics,
getOrderList
} from "@/api/admin";
@ -423,7 +443,15 @@ import { Toast } from '../../libs/uniApi';
type: 6,
value: 0
}],
other_order: [{
name: '待发货',
type: 2,
value: 0
}, {
name: '待收货',
type: 3,
value: 0
}],
typelist: [{
name: '商品管理',
type: 1,
@ -667,8 +695,49 @@ import { Toast } from '../../libs/uniApi';
break;
}
} else {
this.isAuto = true;
this.isShowAuth = true
}
},
other_shopporder(item) {
if (this.userid) {
switch (item.type) {
case 1:
uni.navigateTo({
url: '/pages/admin/orderList/indexOther?merId=' + this.userInfoData.service.mer_id +
'&types=' + item.type
})
break;
case 2:
uni.navigateTo({
url: '/pages/admin/orderList/indexOther?merId=' + this.userInfoData.service.mer_id +
'&types=' + item.type
})
break;
case 3:
uni.navigateTo({
url: '/pages/admin/orderList/indexOther?merId=' + this.userInfoData.service.mer_id +
'&types=' + item.type
})
break;
case 4:
uni.navigateTo({
url: '/pages/admin/orderList/indexOther?merId=' + this.userInfoData.service.mer_id +
'&types=' + item.type
})
break;
case 6:
uni.navigateTo({
url: '/pages/admin/orderList/indexOther?merId=' + this.userInfoData.service.mer_id +
'&types=' + item.type
})
break;
}
} else {
this.isAuto = true;
this.isShowAuth = true
@ -938,6 +1007,17 @@ import { Toast } from '../../libs/uniApi';
})
}
);
otherOrderStatistics(this.userInfoData.service.mer_id, data).then(
res => {
this.other_order[0].value = res.data.order.unshipped
this.other_order[1].value = res.data.order.untake
},
err => {
that.$util.Tips({
title: err.msg
})
}
);
},
open() {
this.isshow = !this.isshow

View File

@ -155,6 +155,10 @@
<image class="icon_img" src="@/static/images/index5.png" mode="aspectFit"></image>
<text class="text">进货管理</text>
</view>
<view class="examine" @click="navigator('/pages/users/order_list/indexOther?status=-1&product_type=98&source=12')">
<image class="icon_img" src="@/static/images/index13.png" mode="aspectFit"></image>
<text class="text">赊账订单</text>
</view>
<view class="examine" @click="navigator(`/pages/admin/stockOut/index?mer_id=${mer_id}`)">
<image class="icon_img" src="@/static/images/index10.png" mode="aspectFit">
</image>

File diff suppressed because it is too large Load Diff

View File

@ -711,7 +711,7 @@
// console.log({...this.userInfoData});
let query = {
product_type: this.product_type,
cate_pid: this.storeParam.category_id,
// cate_pid: this.storeParam.category_id,
page: this.storeParam.page,
order: this.storeParam.order,
keyword: this.storeParam.keyword

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

File diff suppressed because it is too large Load Diff

View File

@ -21,12 +21,12 @@
<view class="con_kuo"
v-for="(item, index) in list"
:key="item.value"
@click="navigator(`/pages/nongKe/supply_chain/supplierA?tit=1&type_id=12&isDetail=1&product_type=98&cate_id=${id}`)">
<image class="con_img" src="@/static/images/bg1.png" mode=""></image>
@click="navigator(`/pages/nongKe/cloud_entrepot/${item.name=='现款现货'?'indexb':'indexOther'}?type_id=12&value=${item.value}&tips=${item.content}`)">
<image class="con_img" :src="item.bg" mode=""></image>
<image class="con_ico" src="@/static/images/bgic1.png" mode=""></image>
<view class="con_text">
<h3>{{item.name}}</h3>
<span>先付款后发货</span>
<span>{{item.content}}</span>
</view>
</view>
</view>
@ -50,9 +50,25 @@
systemGroupValue({
name: 'purchasing_navigation'
}).then(res=>{
console.log(res);
res.data.forEach((item)=>{
if(item.name=='线上铺货'){
item.bg = 'https://lihai001.oss-cn-chengdu.aliyuncs.com/def/71e06202312151146467207.png';
item.content = '线上选品 一键铺货';
}
if(item.name=='实体铺货'){
item.bg = 'https://lihai001.oss-cn-chengdu.aliyuncs.com/def/8cb7a202312151147485701.png';
item.content = '先售利润 后结货款';
}
if(item.name=='现款现货'){
item.bg = 'https://lihai001.oss-cn-chengdu.aliyuncs.com/def/f4521202312151148087081.png';
item.content = '先付款 后发货';
}
if(item.name=='赊账进货'){
item.bg = 'https://lihai001.oss-cn-chengdu.aliyuncs.com/def/899a4202312151148319478.png';
item.content = '先发货 后付款';
}
})
this.list = res.data;
console.log(this.list);
})
},
navigator(url, t) {
@ -73,7 +89,7 @@
.conent {
width: 100%;
display: flex;
justify-content: space-around;
justify-content: space-evenly;
flex-wrap: wrap;
margin-top: 20px;
@ -81,13 +97,13 @@
position: relative;
.con_img {
width: 192px;
width: 360rpx;
height: 92px;
}
.con_ico {
position: absolute;
left: 25px;
left: 15px;
top: 32px;
width: 31px;
height: 32px;
@ -95,7 +111,7 @@
.con_text {
position: absolute;
left: 66px;
left: 55px;
top: 20px;
color: white;
}