This commit is contained in:
KangKang0928 2025-01-03 17:56:36 +08:00
commit 42b5c3ae76
19 changed files with 1753 additions and 541 deletions

View File

@ -212,11 +212,19 @@ export const mer_admin = {
params: data,
});
},
//订单管理
//全部订单管理
orderPage: (data) => {
return $http.request({
method: "get",
url: `/merchant-api/order/page`,
url: `/merchant-api/manager/order/page`,
params: data,
});
},
//根据店铺查询订单
shopOrderPage: (data) => {
return $http.request({
method: "get",
url: `/merchant-api/manager/merchant/order/page`,
params: data,
});
},

View File

@ -77,6 +77,20 @@ export default {
open: null,
list: [],
},
{
menuId: getUUID(),
parentId: 0,
parentName: null,
name: "总订单管理",
url: "operation-management/total-order/index",
perms: "",
type: 1,
elIcon: "el-icon-menu",
orderNum: 0,
open: null,
list: [],
hideInMenu: true,
},
{
menuId: getUUID(),
parentId: 0,

View File

@ -86,7 +86,7 @@ const router = new Router({
});
router.beforeEach((to, from, next) => {
console.log("beforeEach");
console.log("beforeEach", to);
// 添加动态(菜单)路由
// 1. 已经添加 or 全局路由, 直接访问
// 2. 获取菜单列表, 添加并保存本地存储

View File

@ -168,6 +168,8 @@ export function getMenu(role) {
"wallet/index",
"ogistics-fare",
"logistics-fare/logistics-template/index",
"bank-card/index",
"operation-management/total-order/index"
];
} else if (role == "ROLE_BRAND_MANAGER") {
return [

View File

@ -5,8 +5,15 @@
:default-active="menuActiveName || 'home'"
:collapse="sidebarFold"
:collapseTransition="false"
class="site-sidebar__menu">
<el-input v-show="showSearchInput" class="search-input" v-model="keyWord" style="width" placeholder="快速搜索菜单"></el-input>
class="site-sidebar__menu"
>
<el-input
v-show="showSearchInput"
class="search-input"
v-model="keyWord"
style="width"
placeholder="快速搜索菜单"
></el-input>
<el-menu-item index="home" @click="$router.push({ name: 'home' })">
<icon-svg name="shouye" class="site-sidebar__menu-icon"></icon-svg>
<span slot="title">首页</span>
@ -29,7 +36,8 @@
v-for="menu in filterMenu"
:key="menu.menuId"
:menu="menu"
:dynamicMenuRoutes="dynamicMenuRoutes">
:dynamicMenuRoutes="dynamicMenuRoutes"
>
</sub-menu>
</el-menu>
</div>
@ -37,41 +45,61 @@
</template>
<script>
import SubMenu from './main-sidebar-sub-menu'
import { isURL } from '@/utils/validate'
import SubMenu from "./main-sidebar-sub-menu";
import { isURL } from "@/utils/validate";
export default {
data() {
return {
dynamicMenuRoutes: [],
//
keyWord:""
}
keyWord: "",
};
},
components: {
SubMenu
SubMenu,
},
computed: {
sidebarLayoutSkin: {
get () { return this.$store.state.common.sidebarLayoutSkin }
get() {
return this.$store.state.common.sidebarLayoutSkin;
},
},
sidebarFold: {
get () { return this.$store.state.common.sidebarFold }
get() {
return this.$store.state.common.sidebarFold;
},
},
menuList: {
get () { return this.$store.state.common.menuList },
set (val) { this.$store.commit('common/updateMenuList', val) }
get() {
return this.$store.state.common.menuList;
},
set(val) {
this.$store.commit("common/updateMenuList", val);
},
},
menuActiveName: {
get () { return this.$store.state.common.menuActiveName },
set (val) { this.$store.commit('common/updateMenuActiveName', val) }
get() {
return this.$store.state.common.menuActiveName;
},
set(val) {
this.$store.commit("common/updateMenuActiveName", val);
},
},
mainTabs: {
get () { return this.$store.state.common.mainTabs },
set (val) { this.$store.commit('common/updateMainTabs', val) }
get() {
return this.$store.state.common.mainTabs;
},
set(val) {
this.$store.commit("common/updateMainTabs", val);
},
},
mainTabsActiveName: {
get () { return this.$store.state.common.mainTabsActiveName },
set (val) { this.$store.commit('common/updateMainTabsActiveName', val) }
get() {
return this.$store.state.common.mainTabsActiveName;
},
set(val) {
this.$store.commit("common/updateMainTabsActiveName", val);
},
},
//
filterMenu() {
@ -81,57 +109,71 @@
if (item.name.includes(keyWord)) return true;
if (item.list && item.list.length > 0) {
//
return (item.list=item.list.filter(f)).length
return (item.list = item.list.filter(f)).length;
}
})
}
let filterMenu=filterMethod(JSON.parse(JSON.stringify(this.menuList)),this.keyWord);
console.log(filterMenu);
return filterMenu.filter(item=>item.hideInMenu!=true);
});
};
let filterMenu = filterMethod(
JSON.parse(JSON.stringify(this.menuList)),
this.keyWord
);
console.log(filterMenu, "filterMenu");
return filterMenu.filter((item) => {
item.list = item.list.filter((prop) => prop.hideInMenu != true);
return item.hideInMenu != true;
});
},
//
showSearchInput() {
return this.$store.state.common.sidebarFold==false
}
return this.$store.state.common.sidebarFold == false;
},
},
watch: {
$route: 'routeHandle'
$route: "routeHandle",
},
created() {
this.menuList = JSON.parse(sessionStorage.getItem('menuList') || '[]')
this.dynamicMenuRoutes = JSON.parse(sessionStorage.getItem('dynamicMenuRoutes') || '[]')
this.routeHandle(this.$route)
this.menuList = JSON.parse(sessionStorage.getItem("menuList") || "[]");
this.dynamicMenuRoutes = JSON.parse(
sessionStorage.getItem("dynamicMenuRoutes") || "[]"
);
this.routeHandle(this.$route);
},
methods: {
//
routeHandle(route) {
if (route.meta.isTab) {
// tab,
var tab = this.mainTabs.filter(item => item.name === route.name)[0]
var tab = this.mainTabs.filter((item) => item.name === route.name)[0];
if (!tab) {
if (route.meta.isDynamic) {
route = this.dynamicMenuRoutes.filter(item => item.name === route.name)[0]
route = this.dynamicMenuRoutes.filter(
(item) => item.name === route.name
)[0];
if (!route) {
return console.error('未能找到可用标签页!')
return console.error("未能找到可用标签页!");
}
}
tab = {
menuId: route.meta.menuId || route.name,
name: route.name,
title: route.meta.title,
type: route.meta.isMicroApp?'microApp' : (isURL(route.meta.iframeUrl) ? 'iframe' : 'module'),
iframeUrl: route.meta.iframeUrl || '',
type: route.meta.isMicroApp
? "microApp"
: isURL(route.meta.iframeUrl)
? "iframe"
: "module",
iframeUrl: route.meta.iframeUrl || "",
params: route.params,
query: route.query
}
this.mainTabs = this.mainTabs.concat(tab)
}
this.menuActiveName = tab.menuId + ''
this.mainTabsActiveName = tab.name
}
}
query: route.query,
};
this.mainTabs = this.mainTabs.concat(tab);
}
this.menuActiveName = tab.menuId + "";
this.mainTabsActiveName = tab.name;
}
},
},
};
</script>
<style lang="scss" scoped>
.search-input {

View File

@ -3,6 +3,7 @@
<obj-modal
ref="modal"
labelWidth="190px"
class="popup"
:modalCols="modalCols"
:modalConfig="modalConfig"
:modalData="modalData"
@ -316,4 +317,8 @@ export default {
};
</script>
<style lang="scss" scoped>
.popup ::v-deep .el-dialog__body {
overflow-y: scroll !important;
height: 65vh !important;
}
</style>

View File

@ -105,7 +105,7 @@
<!-- 新粉优惠卷 -->
<newPowder @queryList="$refs.oTable.reload()" ref="newPowder"></newPowder>
<!-- 查看详情 -->
<!-- <viewDetails ref="viewDetails"></viewDetails> -->
<viewDetails ref="viewDetails"></viewDetails>
</div>
</template>
@ -114,9 +114,9 @@ import { mapState } from "vuex";
import fullReductio from "./popup/full-reduction.vue";
import AddOrUpdate from "./popup/add-or-update.vue";
import newPowder from "./popup/new-powder.vue";
// import viewDetails from "./popup/view-details.vue";
import viewDetails from "./popup/view-details.vue";
export default {
components: { AddOrUpdate, fullReductio, newPowder },
components: { AddOrUpdate, fullReductio, newPowder, viewDetails },
data() {
return {
dataList: [],
@ -406,9 +406,9 @@ export default {
type: "jsx",
align: "center",
width: "140px",
render: (row) => {
render: ({ row }) => {
let edit = () => {
// this.$refs.viewDetails.toggle(row).update();
this.$refs.viewDetails.toggle(row).update();
};
return (
<div>

View File

@ -0,0 +1,188 @@
<template>
<div>
<obj-modal
ref="modal"
labelWidth="150px"
:modalConfig="modalConfig"
:modalData="modalData"
:modalHandles="modalHandles"
>
<div slot="dialog__content">
<el-form
:model="ruleForm"
ref="ruleForm"
label-width="150px"
class="demo-ruleForm"
>
<el-row>
<el-col :span="8">
<el-form-item label="优惠卷名称:">
<span>{{ ruleForm.name }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="优惠卷类别:">
<span>{{ getCategory(ruleForm.category) }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="优惠金额:">
<span>{{ ruleForm.money }}</span>
</el-form-item></el-col
>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="最低消费:">
<span>{{ ruleForm.minPrice }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="领取限量:">
<span>{{ ruleForm.limitedNum }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="发放总数:">
<span>{{ ruleForm.total }}</span>
</el-form-item></el-col
>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="剩余数量:">
<span>{{ ruleForm.lastTotal }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="可领取开始时间:">
<span>{{ ruleForm.receiveStartTime }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="可领取结束时间:">
<span>{{ ruleForm.receiveEndTime }}</span>
</el-form-item></el-col
>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="使用时间范围开始时间:">
<span>{{ ruleForm.useStartTime }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="可使用时间范围结束时间:">
<span>{{ ruleForm.useEndTime }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="状态:">
<span>{{ ruleForm.status == 1 ? "开启" : "结束" }}</span>
</el-form-item></el-col
>
</el-row>
</el-form>
</div>
<!-- 选择商品 -->
</obj-modal>
</div>
</template>
<script>
import { debounce, cloneDeep } from "lodash";
export default {
components: {},
props: {},
data() {
return {
isAdd: true,
//
modalConfig: {
title: "优惠卷详情",
show: false,
width: "1200px",
fullscreen: true,
},
modalData: {},
ruleForm: {},
tableData: [],
};
},
watch: {
// "modalConfig.show"(newVal) {
// if (newVal) {
// //
// setTimeout(() => {
// this.$refs.ruleForm.resetFields();
// });
// }
// },
},
methods: {
queryTableData(pageNo, pageSize) {},
toggle(e) {
if (this.modalConfig.show == false) {
this.modalConfig.show = true;
} else {
this.modalConfig.show = false;
}
if (e) {
this.init(cloneDeep(e));
}
return {
add: () => {
this.modalConfig.title = "订单详情";
this.isAdd = true;
},
update: () => {
this.modalConfig.title = "优惠卷详情";
this.isAdd = false;
},
};
},
init(row) {
console.log(row);
this.ruleForm = JSON.parse(JSON.stringify(row));
console.log(this.ruleForm);
},
handleSelectionChange(e) {
console.log(e);
},
getCategory(val) {
if (val == "NO_THRESHOLD") {
return "无门槛优惠券"
} else if (val == "MAX_OUT") {
return "满减优惠券"
} else if (val == "FIRST_ATTENTION") {
return "首次关注优惠券"
} else if (val == "BIRTHDAY") {
return "生日券"
} else if (val == "PLATFORM") {
return "平台优惠券"
}
},
},
computed: {
modalHandles() {
return [
{
label: "关闭",
handle: () => {
this.toggle();
},
},
// {
// label: "",
// type: "primary",
// // submit: true,
// handle: () => {
// },
// },
];
},
},
asyncComputed: {},
};
</script>
<style lang="scss" scoped>
</style>

View File

@ -12,7 +12,7 @@
>
<template slot="tableTop">
<el-form :inline="true" :model="formInline" class="demo-form-inline">
<el-form-item label="模块">
<!-- <el-form-item label="模块">
<el-select
@change="changeModule"
class="filter-item"
@ -72,7 +72,7 @@
>
</el-option>
</el-select>
</el-form-item>
</el-form-item> -->
<el-form-item label="应用">
<el-select
class="filter-item"
@ -142,7 +142,7 @@ export default {
formInline: {
type: 0,
ownerId: "",
module: "shop",
module: "",
},
tableProp: {
"auto-resize": true,
@ -176,12 +176,24 @@ export default {
};
},
created() {
if (
JSON.parse(sessionStorage.getItem("userInfo")).role === "ROLE_MANAGER"
) {
this.formInline = {
type: 0,
ownerId: this.marketId,
module: "market",
app: 1,
};
} else {
this.formInline = {
type: 0,
ownerId: this.shopId,
module: "shop",
app: 1,
};
}
this.$nextTick(() => {
this.$refs.oTable.reload();
});
@ -261,8 +273,8 @@ export default {
return (
<el-image
style="width: 60px; height: 60px"
src={row.img}
preview-src-list={[row.img]}
src={row.img.split(",")[0]}
preview-src-list={row.img.split(",")}
></el-image>
);
},

View File

@ -3,6 +3,7 @@
<obj-modal
ref="modal"
labelWidth="150px"
class="popup"
:modalCols="modalCols"
:modalConfig="modalConfig"
:modalData="modalData"
@ -77,12 +78,12 @@ export default {
},
init(row) {
this.modalData = row;
this.fileList = [
{
this.fileList = row.img.split(",").map((item) => {
return {
name: "轮播图",
url: this.modalData.img,
},
];
url: item,
};
});
},
},
computed: {
@ -100,40 +101,40 @@ export default {
trigger: "blur",
},
},
{
label: "分类",
prop: "type",
maxlength: "30",
rules: {
required: true,
message: "请输入轮播图名称",
trigger: "blur",
},
type: "jsx",
render: () => {
return (
<el-select
v-model={this.modalData.type}
placeholder="请选择销售单位"
>
{[
{ label: "菜市场", value: 0 },
{
label: "云店",
value: 1,
},
].map((item) => {
return (
<el-option
label={item.label}
value={item.value}
></el-option>
);
})}
</el-select>
);
},
},
// {
// label: "",
// prop: "type",
// maxlength: "30",
// rules: {
// required: true,
// message: "",
// trigger: "blur",
// },
// type: "jsx",
// render: () => {
// return (
// <el-select
// v-model={this.modalData.type}
// placeholder=""
// >
// {[
// { label: "", value: 0 },
// {
// label: "",
// value: 1,
// },
// ].map((item) => {
// return (
// <el-option
// label={item.label}
// value={item.value}
// ></el-option>
// );
// })}
// </el-select>
// );
// },
// },
{
label: "状态",
prop: "status",
@ -200,18 +201,27 @@ export default {
render: () => {
const handleAvatarSuccess = (res, file, fileList) => {
console.log(res, fileList);
this.modalData.img = res.data;
this.modalData.img = fileList
.map((item) => {
return item.response.data;
})
.join(",");
console.log(this.modalData.img);
this.$refs.modal.validate();
};
const handleRemove = (file, fileList) => {
console.log(file, fileList);
this.fileList = [];
this.modalData.img = "";
this.modalData.img = fileList
.map((item) => {
return item.response.data;
})
.join(",");
};
return (
<el-upload
class="upload-demo"
drag
limit={3}
action={this.$api.mer_admin.uploadFile()}
{...{
props: {
@ -273,4 +283,8 @@ export default {
};
</script>
<style lang="scss" scoped>
.popup ::v-deep .el-dialog__body {
overflow-y: scroll !important;
height: 65vh !important;
}
</style>

View File

@ -12,7 +12,7 @@
>
<template slot="tableTop">
<el-form :inline="true" :model="formInline" class="demo-form-inline">
<el-form-item label="模块">
<!-- <el-form-item label="模块">
<el-select
@change="changePosition"
class="filter-item"
@ -39,7 +39,7 @@
</el-select>
</el-form-item>
<el-form-item
v-if="storeList.length > 1 && formInline.position === '1'"
v-if="storeList.length > 1 && formInline.position === '3'"
label="摊铺"
>
<el-select
@ -72,7 +72,7 @@
>
</el-option>
</el-select>
</el-form-item>
</el-form-item> -->
<el-form-item label="应用">
<el-select
class="filter-item"
@ -176,12 +176,23 @@ export default {
};
},
created() {
if (
JSON.parse(sessionStorage.getItem("userInfo")).role === "ROLE_MANAGER"
) {
this.formInline = {
type: 0,
targetId: this.shopId,
targetId: this.marketId,
position: "2",
app: 1,
};
} else {
this.formInline = {
type: 0,
ownerId: this.shopId,
position: "3",
app: 1,
};
}
this.$nextTick(() => {
this.$refs.oTable.reload();
});
@ -202,7 +213,9 @@ export default {
this.$refs.addOrUpdate.toggle().add(this.formInline);
},
changePosition(e) {
if (e === "shop") {
console.log(e, this.shopId, this.marketId);
if (e == 3) {
this.formInline.targetId = this.shopId;
} else {
this.formInline.targetId = this.marketId;

View File

@ -1,29 +1,12 @@
<template>
<div style="height: calc(100vh - 200px)">
<obj-table-plus
ref="oTable"
style="height: 100%"
:tableCols="tableCols"
:tableProp="tableProp"
@query="queryList"
v-model="dataList"
:tableEvent="tableEvent"
:enableAutoQuery="false"
<el-form
v-if="storeList.length > 1"
:inline="true"
:model="formInline"
class="demo-form-inline"
>
<template slot="tableTop">
<el-form :inline="true" :model="formInline" class="demo-form-inline">
<el-form-item label="订单号">
<el-select v-model="formInline.group" placeholder="请选择">
<el-option
v-for="item in statusList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item v-if="storeList.length > 1" label="摊铺">
<el-form-item label="摊铺">
<el-select
class="filter-item"
style="width: 200px"
@ -40,27 +23,86 @@
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="$refs.oTable.reload()"
>查询</el-button
>
<el-button type="primary" @click="getList">查询</el-button>
<el-button type="primary" @click="Reset">重置</el-button>
<el-button
type="success"
@click="
$router.push({ name: 'operation-management-total-order/index' })
"
>菜市场总订单</el-button
>
</el-form-item>
</el-form>
<!-- <el-tabs v-model="activeName" @tab-click="handleClick">
<el-tabs v-model="formInline.group" @tab-click="handleClick">
<el-tab-pane
v-for="item in statusList"
:key="item.value"
:label="item.label"
:name="item.value"
></el-tab-pane>
</el-tabs> -->
<!-- <div class="mb-2">
<el-button type="primary" size="small" @click="addProduct"
>批量导出</el-button
</el-tabs>
<el-table :data="tableData" height="70vh" border style="width: 100%">
<el-table-column type="expand">
<template slot-scope="props">
<div style="padding-left: 20px" m="4">
<el-table :data="props.row.productOrders" :border="true">
<el-table-column type="index" width="50" label="序号">
</el-table-column>
<el-table-column label="商品订单号" prop="productOrderNo" />
<el-table-column label="商品名称" prop="productName" />
<el-table-column label="商品原价" prop="originPrice" />
<el-table-column label="商品终价" prop="finalPrice" />
<el-table-column label="商品订单金额" prop="productOrderMoney" />
<el-table-column label="商品数量" prop="productCount" />
<el-table-column label="商品单价" prop="productFinalPrice" />
<el-table-column label="商品图片" prop="productImg">
<template slot-scope="scope">
<el-image
style="width: 60px; height: 60px"
:src="scope.row.productImg"
:preview-src-list="[scope.row.productImg]"
>
</div> -->
</el-image>
</template>
</obj-table-plus>
</el-table-column>
</el-table>
</div>
</template>
</el-table-column>
<el-table-column label="总订单号" prop="orderNo" />
<el-table-column label="结算单位订单号" prop="unitOrderNo" />
<el-table-column label="总商品数量" prop="productCount" />
<el-table-column label="顾客实际支付" prop="totalMoney" />
<el-table-column label="商品总价" prop="productMoney" />
<el-table-column label="配送费" prop="deliveryMoney" />
<el-table-column label="优惠券减免" prop="couponMoney" />
<el-table-column label="支付时间" prop="payTime" />
<el-table-column label="预计送达时间" prop="predictDeliveryTime" />
<el-table-column label="预计收入" prop="predictIncome" />
<el-table-column label="距离" prop="distance" />
<el-table-column label="备注" prop="remark" />
<el-table-column fixed="right" width="100px" label="操作" align="center">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="view(scope.row)">
查看
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<div class="pagination-container">
<el-pagination
:current-page="formInline.pageNumber"
:page-sizes="[10, 20, 30, 50]"
:page-size="formInline.pageSize"
:total="total"
background
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>
<!-- 订单详情 -->
<viewDetails ref="viewDetails"></viewDetails>
</div>
@ -68,120 +110,62 @@
<script>
import viewDetails from "./popup/view-details.vue";
import content from "./popup/content.vue";
import { mapState } from "vuex";
export default {
components: { content,viewDetails },
components: { viewDetails },
data() {
return {
activeName: "5",
value1: "1",
advanceSellStatus: "",
dataList: [],
formInline: {
group: "",
shopId: "",
},
tableProp: {
"auto-resize": true,
border: true,
height: "auto",
"row-id": "id",
"show-overflow": false,
pageNumber: 1,
pageSize: 10,
},
statusList: [
{
label: "历史订单",
label: "全部订单",
value: "0",
},
{
label: "进行中",
label: "待备货",
value: "1",
},
{
label: "新订单",
label: "待取货",
value: "2",
},
{
label: "待货",
label: "待货",
value: "3",
},
{
label: "待配送",
label: "已完成",
value: "4",
},
{
label: "售后订单",
value: "5",
},
],
productFilterType: "SALE",
selectList: [],
tableData: [],
total: 0,
};
},
created() {
this.formInline = {
group: "0",
// marketId: this.marketId,
shopId: this.shopId,
};
this.$nextTick(() => {
this.$refs.oTable.reload();
});
this.getList();
},
methods: {
// getData() {
// this.$api.mer_admin
// .storeList({ marketId: this.formInline.marketId })
// .then((res) => {
// this.storeList = res.data.data;
// this.formInline.shopId = res.data.data[0].shopId;
// this.$nextTick(() => {
// this.$refs.oTable.reload();
// });
// });
// },
addProduct() {
this.$refs.addOrUpdate.toggle().add();
},
deleteProduct() {
console.log(this.selectList);
let integers = this.selectList.map((item) => {
return item.id;
});
this.$confirm("此操作将删除该商品, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
console.log("111");
this.$api.mer_admin.BatchDeleteProducts(integers).then((res) => {
this.$refs.oTable.reload();
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消删除",
});
});
},
queryList(pageNo, pageSize) {
getList() {
//
this.$api.mer_admin
.orderPage({
pageNumber: pageNo,
pageSize: pageSize,
.shopOrderPage({
...this.formInline,
})
.then((res) => {
console.log(res);
this.$refs.oTable.complete(
res.data.data.data,
Number(res.data.data.total)
);
})
.catch((err) => {
this.$refs.oTable.complete(false);
this.tableData = res.data.data.data;
this.total = Number(res.data.data.total);
});
},
Reset() {
@ -189,215 +173,25 @@ export default {
group: "0",
shopId: this.shopId,
};
this.$refs.oTable.reload();
this.getList();
},
handleClick(e) {
console.log(e.name);
if (e.name == "5") {
this.advanceSellStatus = "";
} else {
this.advanceSellStatus = e.name;
}
this.$refs.oTable.reload();
this.getList();
},
addEarlyWarning() {
this.$refs.earlyWarning.toggle().add();
view(row) {
this.$refs.viewDetails.toggle(row).update();
},
handleSizeChange(val) {
this.formInline.pageSize = val;
this.getList();
},
handleCurrentChange(val) {
this.formInline.pageNumber = val;
this.getList();
},
},
computed: {
tableCols() {
return [
// { type: "checkbox", width: "60px", fixed: "left" },
{
type: "seq",
width: "60px",
fixed: "left",
align: "center",
title: "序号",
},
{
title: "商品详情",
// align: "center",
// width: "120px",
// field: "unitOrderStatus",
type: "jsx-out",
render: (col) => {
console.log(col);
return <content />;
},
},
{
title: "总订单号",
align: "center",
width: "120px",
field: "orderNo",
},
{
title: "结算单位订单号",
align: "center",
width: "120px",
field: "unitOrderNo",
},
{
title: "总商品数量",
align: "center",
width: "120px",
field: "productCount",
},
{
title: "顾客支付",
align: "center",
width: "120px",
field: "totalMoney",
},
{
title: "配送费",
align: "center",
width: "120px",
field: "deliveryMoney",
},
{
title: "优惠券减免",
align: "center",
width: "120px",
field: "couponMoney",
},
{
title: "下单时间",
align: "center",
width: "120px",
field: "payTime",
},
{
title: "预计送达时间",
align: "center",
width: "120px",
field: "predictDeliveryTime",
},
{
title: "预计收入",
align: "center",
width: "120px",
field: "predictIncome",
},
{
title: "距离",
align: "center",
width: "120px",
field: "distance",
},
{
title: "预计自动取消时间",
align: "center",
width: "120px",
field: "predictAutoCancelTime",
},
{
title: "备注",
align: "center",
width: "120px",
field: "remark",
},
{
title: "包装费",
align: "center",
width: "120px",
field: "packageMoney",
},
{
title: "平台服务费",
align: "center",
width: "120px",
field: "platformMoney",
},
{
title: "备餐完成时间",
align: "center",
width: "120px",
field: "completePrepareTime",
},
{
title: "开始配送时间",
align: "center",
width: "120px",
field: "startDeliveryTime",
},
{
title: "配送完成时间",
align: "center",
width: "120px",
field: "startDeliveryTime",
},
{
title: "开始配送时间",
align: "center",
width: "120px",
field: "startDeliveryTime",
},
{
title: "订单退款状态",
align: "center",
width: "120px",
field: "refundStatus",
},
{
title: "申请退款原因",
align: "center",
width: "120px",
field: "refundReason",
},
{
title: "订单商品",
field: "productPhotoList",
align: "center",
width: "80px",
type: "jsx",
render: ({ row }) => {
return (
<el-image
preview-src-list={[row.refundImg]}
src={row.refundImg}
></el-image>
);
},
},
{
title: "申请退款时间",
align: "center",
width: "120px",
field: "applyRefundTime",
},
{
title: "操作",
fixed: "right",
type: "jsx",
align: "center",
width: "100px",
render: ({ row }) => {
let changeInventory = () => {
this.$refs.addStock.toggle(row).update();
};
return (
<div>
<el-button size="mini" type="primary" onClick={changeInventory}>
查看
</el-button>
</div>
);
},
},
];
},
tableEvent() {
return {
"checkbox-all": ({ records, reserves }) => {
this.selectList = [...records, ...reserves];
},
"checkbox-change": ({ records, reserves }) => {
this.selectList = [...records, ...reserves];
},
};
},
...mapState("userData", [
"isMerchant",
"marketList",

View File

@ -3,23 +3,214 @@
<obj-modal
ref="modal"
labelWidth="150px"
:modalCols="modalCols"
:modalConfig="modalConfig"
:modalData="modalData"
:modalHandles="modalHandles"
>
<template slot="dialog__after">
<div class="introduce">
<div slot="dialog__content">
<el-form
:model="ruleForm"
ref="ruleForm"
label-width="150px"
class="demo-ruleForm"
>
<el-row>
<el-col :span="8">
<el-form-item label="总订单号:">
<span>{{ ruleForm.orderNo }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label=" 结算单位订单号:">
<span>{{ ruleForm.unitOrderNo }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="总商品数量:">
<span>{{ ruleForm.productCount }}</span>
</el-form-item></el-col
>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="顾客支付:">
<span>{{ ruleForm.totalMoney }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="配送费:">
<span>{{ ruleForm.deliveryMoney }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="优惠券减免:">
<span>{{ ruleForm.couponMoney }}</span>
</el-form-item></el-col
>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="下单时间:">
<span>{{ ruleForm.payTime }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="预计送达时间:">
<span>{{ ruleForm.predictDeliveryTime }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="预计收入:">
<span>{{ ruleForm.predictIncome }}</span>
</el-form-item></el-col
>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="距离:">
<span>{{ ruleForm.distance }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="预计自动取消时间:">
<span>{{ ruleForm.predictAutoCancelTime }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="备注:">
<span>{{ ruleForm.remark }}</span>
</el-form-item></el-col
>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="包装费:">
<span>{{ ruleForm.packageMoney }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="平台服务费:">
<span>{{ ruleForm.platformMoney }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="备餐完成时间:">
<span>{{ ruleForm.completePrepareTime }}</span>
</el-form-item></el-col
>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="开始配送时间:">
<span>{{ ruleForm.startDeliveryTime }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="配送完成时间:">
<span>{{ ruleForm.completeDeliveryTime }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="下单时间:">
<span>{{ruleForm.createTime}}</span>
</el-form-item></el-col
>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="完成取货时间:">
<span>{{ ruleForm.pickTime }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="订单完成时间:">
<span>{{ ruleForm.completeTime }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<!-- <el-form-item label="配送方式:">
<span>{{ ruleForm.deliveryType }}</span>
</el-form-item> -->
</el-col>
</el-row>
<div style="padding: 0 0 0 20px; font-size: 16px; font-weight: 600">
订单商品
</div>
<div style="padding: 20px">
<div style="border-top: 1px solid #ccc; padding: 10px 0 0 0">
<el-table
border
ref="multipleTable"
:data="ruleForm.productOrders"
tooltip-effect="dark"
style="width: 100%"
@selection-change="handleSelectionChange"
>
<el-table-column
prop="shopName"
align="center"
label="店铺名称"
width="80"
>
</el-table-column>
<el-table-column
align="center"
label="商品名称"
prop="productName"
/>
<el-table-column
align="center"
label="商品图片"
prop="productImg"
>
<template slot-scope="scope">
<el-image
style="width: 60px; height: 60px"
:src="scope.row.productImg"
:preview-src-list="[scope.row.productImg]"
>
</el-image>
</template>
</el-table-column>
<el-table-column
align="center"
label="规格"
prop="productSpecName"
>
</el-table-column>
<el-table-column
align="center"
label="商品原价"
prop="originPrice"
>
</el-table-column>
<el-table-column
align="center"
label="商品终价"
prop="finalPrice"
width="120"
/>
<el-table-column
prop="productOrderMoney"
align="center"
label="商品订单金额"
width="200"
>
</el-table-column>
</el-table>
</div>
</div>
</el-form>
</div>
<!-- 选择商品 -->
</obj-modal>
</div>
</template>
<script>
import { debounce, cloneDeep } from "lodash";
import { Divider } from "element-ui";
export default {
components: {},
props: {},
data() {
return {
isAdd: true,
@ -27,13 +218,24 @@ export default {
modalConfig: {
title: "订单详情",
show: false,
width: "60%",
width: "1200px",
fullscreen: true,
},
modalData: {},
value1: [],
ProductData: {},
ruleForm: {},
tableData: [],
};
},
watch: {
// "modalConfig.show"(newVal) {
// if (newVal) {
// //
// setTimeout(() => {
// this.$refs.ruleForm.resetFields();
// });
// }
// },
},
methods: {
queryTableData(pageNo, pageSize) {},
toggle(e) {
@ -51,26 +253,52 @@ export default {
this.isAdd = true;
},
update: () => {
this.modalConfig.title = "订单详情";
this.isAdd = false;
},
};
},
init(row) {
this.modalData = row;
console.log(row);
this.ruleForm = row;
},
handleSelectionChange(e) {
console.log(e);
},
getRefundStatus(val) {
if (val == 0) {
return "正常";
} else if (val == 1) {
return "退款中";
} else if (val == 2) {
return "完全退款";
} else if (val == 3) {
return "部分退款";
} else if (val == 4) {
return "拒绝用户退款";
} else if (val == -1) {
return "退款失败";
} else if (val == -2) {
return "用户申请退款中";
}
},
},
computed: {
modalCols() {
return [];
},
modalHandles() {
return [
{
label: "取消",
label: "关闭",
handle: () => {
this.toggle();
},
},
// {
// label: "",
// type: "primary",
// // submit: true,
// handle: () => {
// },
// },
];
},
},

View File

@ -0,0 +1,173 @@
<template>
<div style="height: calc(100vh - 200px)">
<el-tabs v-model="formInline.group" @tab-click="handleClick">
<el-tab-pane
v-for="item in statusList"
:key="item.value"
:label="item.label"
:name="item.value"
></el-tab-pane>
</el-tabs>
<el-table :data="tableData" height="70vh" border style="width: 100%">
<el-table-column type="expand">
<template slot-scope="props">
<div style="padding-left: 20px" m="4">
<el-table :data="props.row.shopOrders" :border="true">
<el-table-column type="expand">
<template slot-scope="props">
<div style="padding-left: 20px" m="4">
<el-table :data="props.row.productOrders" :border="true">
<el-table-column type="index" width="50" label="序号">
</el-table-column>
<el-table-column
label="商品订单号"
prop="productOrderNo"
/>
<el-table-column label="商品名称" prop="productName" />
<el-table-column label="商品原价" prop="originPrice" />
<el-table-column label="商品终价" prop="finalPrice" />
<el-table-column
label="商品订单金额"
prop="productOrderMoney"
/>
<el-table-column label="商品数量" prop="productCount" />
<el-table-column
label="商品单价"
prop="productFinalPrice"
/>
<el-table-column label="商品图片" prop="productImg">
<template #default="scope">
<el-image
style="width: 60px; height: 60px"
:src="scope.row.productImg"
:zoom-rate="1.2"
:max-scale="7"
:min-scale="0.2"
:preview-src-list="[scope.row.productImg]"
:initial-index="4"
:preview-teleported="true"
fit="cover"
/>
</template>
</el-table-column>
</el-table>
</div>
</template>
</el-table-column>
<el-table-column type="index" width="50" label="序号">
</el-table-column>
<el-table-column label="店铺名称" prop="shopName" />
</el-table>
</div>
</template>
</el-table-column>
<el-table-column label="总订单号" prop="orderNo"> </el-table-column>
<el-table-column label="顾客支付" prop="totalMoney"> </el-table-column>
<el-table-column label="配送费" prop="deliveryMoney"> </el-table-column>
<el-table-column label="优惠券减免" prop="couponMoney"> </el-table-column>
<el-table-column label="下单时间" prop="payTime"> </el-table-column>
<el-table-column label="预计送达时间" prop="predictDeliveryTime">
</el-table-column>
<el-table-column label="预计收入" prop="predictIncome"> </el-table-column>
<el-table-column label="距离" prop="distance"> </el-table-column>
</el-table>
<!-- 分页 -->
<div class="pagination-container">
<el-pagination
:current-page="formInline.pageNumber"
:page-sizes="[10, 20, 30, 50]"
:page-size="formInline.pageSize"
:total="total"
background
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>
</div>
</template>
<script>
import { mapState } from "vuex";
export default {
components: {},
data() {
return {
formInline: {
group: "",
shopId: "",
pageNumber: 1,
pageSize: 10,
},
statusList: [
{
label: "全部订单",
value: "0",
},
{
label: "进行中",
value: "1",
},
{
label: "新订单",
value: "2",
},
{
label: "待备货",
value: "3",
},
{
label: "待配送",
value: "4",
},
],
total: 0,
tableData: [],
};
},
created() {
this.formInline = {
group: "0",
marketId: this.marketId,
};
this.getList();
},
methods: {
getList() {
this.$api.mer_admin
.orderPage({
...this.formInline,
})
.then((res) => {
console.log(res);
this.tableData = res.data.data.data;
this.total = Number(res.data.data.total);
})
.catch((err) => {});
},
handleClick(e) {
this.formInline.group = e.name;
this.getList();
},
handleSizeChange(val) {
this.formInline.pageSize = val;
this.getList();
},
handleCurrentChange(val) {
this.formInline.pageNumber = val;
this.getList();
},
},
computed: {
...mapState("userData", [
"isMerchant",
"marketList",
"storeList",
"marketId",
"shopId",
]),
},
};
</script>
<style lang="scss" scoped></style>

View File

@ -0,0 +1,43 @@
<template>
<vxe-column type="expand" width="60">
<template #content="{ row }">
<div class="expand-wrapper">
<vxe-table border :data="row.shopOrders.productOrders" height="200">
<vxe-column field="productOrderNo" title="商品订单号"></vxe-column>
<vxe-column field="productName" title="商品名称"></vxe-column>
<vxe-column field="productImg" title="商品图片" width="120">
<template slot-scope="{ row }">
<el-image
:preview-src-list="[row.productImg]"
:src="row.productImg"
:width="80"
:height="80"
/>
</template>
</vxe-column>
<vxe-column field="productSpecName" title="商品规格名称"></vxe-column>
<vxe-column field="originPrice" title="商品原价"></vxe-column>
<vxe-column field="finalPrice" title="商品终价"></vxe-column>
<vxe-column
field="productOrderMoney"
title="商品订单金额"
></vxe-column>
<vxe-column field="productCount" title="商品数量"></vxe-column>
<vxe-column field="productLimit" title="商品限购数量"></vxe-column>
<vxe-column field="shopName" title="店铺名称"></vxe-column>
</vxe-table>
</div>
</template>
</vxe-column>
</template>
<script>
export default {
data() {
return {};
},
};
</script>
<style>
</style>

View File

@ -0,0 +1,309 @@
<template>
<div>
<obj-modal
ref="modal"
labelWidth="150px"
:modalConfig="modalConfig"
:modalData="modalData"
:modalHandles="modalHandles"
>
<div slot="dialog__content">
<el-form
:model="ruleForm"
ref="ruleForm"
label-width="150px"
class="demo-ruleForm"
>
<el-row>
<el-col :span="8">
<el-form-item label="总订单号:">
<span>{{ ruleForm.orderNo }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label=" 结算单位订单号:">
<span>{{ ruleForm.unitOrderNo }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="总商品数量:">
<span>{{ ruleForm.productCount }}</span>
</el-form-item></el-col
>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="顾客支付:">
<span>{{ ruleForm.totalMoney }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="配送费:">
<span>{{ ruleForm.deliveryMoney }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="优惠券减免:">
<span>{{ ruleForm.couponMoney }}</span>
</el-form-item></el-col
>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="下单时间:">
<span>{{ ruleForm.payTime }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="预计送达时间:">
<span>{{ ruleForm.predictDeliveryTime }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="预计收入:">
<span>{{ ruleForm.predictIncome }}</span>
</el-form-item></el-col
>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="距离:">
<span>{{ ruleForm.distance }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="预计自动取消时间:">
<span>{{ ruleForm.predictAutoCancelTime }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="备注:">
<span>{{ ruleForm.remark }}</span>
</el-form-item></el-col
>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="包装费:">
<span>{{ ruleForm.packageMoney }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="平台服务费:">
<span>{{ ruleForm.platformMoney }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="备餐完成时间:">
<span>{{ ruleForm.completePrepareTime }}</span>
</el-form-item></el-col
>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="开始配送时间:">
<span>{{ ruleForm.startDeliveryTime }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="配送完成时间:">
<span>{{ ruleForm.completeDeliveryTime }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="订单退款状态:">
<span>{{ getRefundStatus(ruleForm.refundStatus) }}</span>
</el-form-item></el-col
>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="申请退款原因:">
<span>{{ ruleForm.refundReason }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="申请退款时间:">
<span>{{ ruleForm.applyRefundTime }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<!-- <el-form-item label="配送方式:">
<span>{{ ruleForm.deliveryType }}</span>
</el-form-item> -->
</el-col>
</el-row>
<div style="padding: 0 0 0 20px; font-size: 16px; font-weight: 600">
订单商品
</div>
<div style="padding: 20px">
<div style="border-top: 1px solid #ccc; padding: 10px 0 0 0">
<el-table
border
ref="multipleTable"
:data="ruleForm.productOrders"
tooltip-effect="dark"
style="width: 100%"
@selection-change="handleSelectionChange"
>
<el-table-column
prop="shopName"
align="center"
label="店铺名称"
width="80"
>
</el-table-column>
<el-table-column
align="center"
label="商品名称"
prop="productName"
/>
<el-table-column
align="center"
label="商品图片"
prop="productImg"
>
<template slot-scope="scope">
<el-image
style="width: 60px; height: 60px"
:src="scope.row.productImg"
:preview-src-list="[scope.row.productImg]"
>
</el-image>
</template>
</el-table-column>
<el-table-column
align="center"
label="规格"
prop="productSpecName"
>
</el-table-column>
<el-table-column
align="center"
label="商品原价"
prop="originPrice"
>
</el-table-column>
<el-table-column
align="center"
label="商品终价"
prop="finalPrice"
width="120"
/>
<el-table-column
prop="productOrderMoney"
align="center"
label="商品订单金额"
width="200"
>
</el-table-column>
</el-table>
</div>
</div>
</el-form>
</div>
<!-- 选择商品 -->
</obj-modal>
</div>
</template>
<script>
import { debounce, cloneDeep } from "lodash";
export default {
components: {},
props: {},
data() {
return {
isAdd: true,
//
modalConfig: {
title: "订单详情",
show: false,
width: "1200px",
fullscreen: true,
},
modalData: {},
ruleForm: {},
tableData: [],
};
},
watch: {
// "modalConfig.show"(newVal) {
// if (newVal) {
// //
// setTimeout(() => {
// this.$refs.ruleForm.resetFields();
// });
// }
// },
},
methods: {
queryTableData(pageNo, pageSize) {},
toggle(e) {
if (this.modalConfig.show == false) {
this.modalConfig.show = true;
} else {
this.modalConfig.show = false;
}
if (e) {
this.init(cloneDeep(e));
}
return {
add: () => {
this.modalConfig.title = "订单详情";
this.isAdd = true;
},
update: () => {
this.modalConfig.title = "订单详情";
this.isAdd = false;
},
};
},
init(row) {
console.log(row);
this.ruleForm = row;
},
handleSelectionChange(e) {
console.log(e);
},
getRefundStatus(val) {
if (val == 0) {
return "正常";
} else if (val == 1) {
return "退款中";
} else if (val == 2) {
return "完全退款";
} else if (val == 3) {
return "部分退款";
} else if (val == 4) {
return "拒绝用户退款";
} else if (val == -1) {
return "退款失败";
} else if (val == -2) {
return "用户申请退款中";
}
},
},
computed: {
modalHandles() {
return [
{
label: "关闭",
handle: () => {
this.toggle();
},
},
// {
// label: "",
// type: "primary",
// // submit: true,
// handle: () => {
// },
// },
];
},
},
asyncComputed: {},
};
</script>
<style lang="scss" scoped>
</style>

View File

@ -49,16 +49,6 @@
placeholder="商品名称搜索"
></el-input>
</el-form-item>
<!-- <el-form-item label="状态">
<el-select v-model="formInline.status" placeholder="请选择状态">
<el-option
v-for="item in statusList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item> -->
<el-form-item>
<el-button type="primary" @click="$refs.oTable.reload()"
>查询</el-button
@ -98,15 +88,12 @@
@queryList="$refs.oTable.reload()"
ref="addOrUpdate"
></add-or-update>
<!-- 改价格 -->
<!-- <AddPrice ref="AddPrice" @queryList="$refs.oTable.reload()"></AddPrice> -->
<!-- 改库存 -->
<!-- <addStock ref="addStock" @queryList="$refs.oTable.reload()"></addStock> -->
<!-- 打折扣 -->
<earlyWarning
ref="earlyWarning"
@queryList="$refs.oTable.reload()"
></earlyWarning>
<!-- 查看商品 -->
<viewProducts ref="viewProducts"></viewProducts>
</div>
<div style="height: calc(100vh - 200px)" v-else>
<el-empty :image-size="200" description="您不是摊主哦"></el-empty>
@ -115,13 +102,12 @@
</template>
<script>
// import AddDiscount from "./popup/add-discount.vue";
// import AddPrice from "./popup/add-price.vue";
import { mapState } from "vuex";
import viewProducts from "./popup/view-products.vue";
import AddOrUpdate from "./popup/add-or-update.vue";
import earlyWarning from "./popup/early-warning.vue";
export default {
components: { earlyWarning, AddOrUpdate },
components: { earlyWarning, AddOrUpdate, viewProducts },
data() {
return {
activeName: "5",
@ -496,15 +482,12 @@ export default {
this.$refs.oTable.reload();
});
};
let changeInventory = () => {
this.$refs.addStock.toggle(row).update();
};
let setDiscounts = () => {
this.$refs.AddDiscount.toggle(row).update();
let view = () => {
this.$refs.viewProducts.toggle(row).update();
};
return (
<div>
<el-button size="mini" type="primary" onClick={changeInventory}>
<el-button size="mini" type="primary" onClick={view}>
查看
</el-button>
<el-button

View File

@ -0,0 +1,384 @@
<template>
<div>
<obj-modal
ref="modal"
labelWidth="150px"
:modalConfig="modalConfig"
:modalData="modalData"
:modalHandles="modalHandles"
>
<div slot="dialog__content">
<el-form
:model="ruleForm"
ref="ruleForm"
label-width="150px"
class="demo-ruleForm"
>
<el-row>
<el-col :span="12">
<el-form-item label="订金支付时间:" prop="startTime">
<el-date-picker
@change="getOrderTime"
format="yyyy-MM-dd HH:mm"
data-format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm:ss"
v-model="orderTime"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
:editable="false"
>
</el-date-picker> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item
label="尾款支付时间:"
prop="balancePaymentStartTime"
>
<el-date-picker
@change="getArrearsTime"
format="yyyy-MM-dd"
data-format="yyyy-MM-dd"
value-format="yyyy-MM-dd HH:mm:ss"
v-model="arrears"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
:picker-options="pickerOptions"
>
</el-date-picker> </el-form-item
></el-col>
</el-row>
<el-form-item
label="预计发货时间:"
prop="estimatedStartDeliveryTime"
>
<el-date-picker
format="yyyy-MM-dd HH:mm"
data-format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm:ss"
@change="deliveryTime"
v-model="delivery"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
:picker-options="pickerOptions"
>
</el-date-picker>
</el-form-item>
<el-form-item label="定金可退:" prop="isRefundEarnestMoney">
<el-radio v-model="ruleForm.isRefundEarnestMoney" :label="1"
></el-radio
>
<el-radio v-model="ruleForm.isRefundEarnestMoney" :label="2"
></el-radio
>
<span>
选择是用户可在付尾款前申请退定金申请后自动退无需审核或付尾款时间结束后系统自动退定金
</span>
</el-form-item>
<div style="padding: 0 0 0 20px; font-size: 16px; font-weight: 600">
已选择商品
</div>
<div style="padding: 20px">
<div style="border-top: 1px solid #ccc; padding: 10px 0 0 0">
<div style="font-size: 16px; margin-bottom: 20px">
<span>商品ID:{{ ruleForm.productId }}</span>
<span style="margin-left: 20px"
>商品名称:{{ ruleForm.name }}</span
>
</div>
<el-table
border
ref="multipleTable"
:data="ruleForm.productSpecificationList"
tooltip-effect="dark"
style="width: 100%"
@selection-change="handleSelectionChange"
>
<el-table-column align="center" label="是否预售" width="80">
<template slot-scope="scope">
<span>{{
scope.row.isAdvanceSell == 1 ? "是" : "否"
}}</span>
<!-- <el-checkbox
:true-label="1"
:false-label="0"
v-model="scope.row.isAdvanceSell"
></el-checkbox> -->
</template>
</el-table-column>
<el-table-column align="center" label="SKU-ID" prop="id" />
<el-table-column
align="center"
label="规格"
prop="attributeList"
>
<template slot-scope="scope">
<span>{{ scope.row.attributeValue }}</span>
</template>
</el-table-column>
<el-table-column align="center" label="属性" prop="address">
<template slot-scope="scope">
<span>{{
scope.row.attributeList
? scope.row.attributeList[0].attributeName
: "无"
}}</span>
</template>
</el-table-column>
<el-table-column
align="center"
label="销售价"
prop="marketPrice"
width="120"
/>
<el-table-column
prop="presalePrice"
align="center"
label="*预售价"
width="200"
>
<template slot-scope="scope">
<span v-if="scope.row.isAdvanceSell">{{
scope.row.presalePrice
}}</span>
</template>
</el-table-column>
<el-table-column
prop="earnestMoney"
align="center"
label="*定金"
width="200"
>
<template slot-scope="scope">
<span v-if="scope.row.isAdvanceSell">{{
scope.row.earnestMoney
}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="尾款" width="200">
<template slot-scope="scope">
<span v-if="scope.row.isAdvanceSell">{{
scope.row.presalePrice
? scope.row.presalePrice - scope.row.earnestMoney
: ""
}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="*预售库存" width="200">
<template slot-scope="scope">
<span v-if="scope.row.isAdvanceSell">{{
scope.row.advanceSellStockNum
}}</span>
</template>
</el-table-column>
</el-table>
</div>
<el-empty
v-show="ruleForm.productList?.length == 0"
description="请选择商品"
></el-empty>
</div>
</el-form>
</div>
<!-- 选择商品 -->
</obj-modal>
</div>
</template>
<script>
import { debounce, cloneDeep } from "lodash";
export default {
components: {},
props: {
marketId: {
type: String,
default: "",
},
shopId: {
type: String,
default: "",
},
},
data() {
return {
isAdd: true,
//
modalConfig: {
title: "查看预售",
show: false,
width: "1200px",
fullscreen: true,
},
modalData: {},
ruleForm: {
productList: [],
isRefundEarnestMoney: 1, //退 1 2
},
pickerOptions: {
disabledDate(time) {
return time.getTime() < Date.now();
},
},
orderTime: [], //
arrears: [], //
delivery: [], //
tableData: [],
};
},
watch: {
"modalConfig.show"(newVal) {
if (newVal) {
//
setTimeout(() => {
this.$refs.ruleForm.resetFields();
});
}
},
},
methods: {
queryTableData(pageNo, pageSize) {},
toggle(e) {
if (this.modalConfig.show == false) {
this.modalConfig.show = true;
} else {
this.modalConfig.show = false;
}
if (e) {
this.init(cloneDeep(e));
}
return {
add: () => {
this.orderTime = [];
this.arrears = [];
this.delivery = [];
this.ruleForm = {
startTime: "",
endTime: "",
balancePaymentStartTime: "",
balancePaymentEndTime: "",
estimatedStartDeliveryTime: "",
estimatedEndDeliveryTime: "",
productList: [],
isRefundEarnestMoney: 1, //退 1 2
};
this.modalConfig.title = "新增预售";
this.isAdd = true;
},
update: () => {
this.modalConfig.title = "查看预售";
this.isAdd = false;
},
};
},
init(row) {
console.log(row.startTime, row.endTime);
this.orderTime = [row.startTime, row.endTime];
this.arrears = [row.balancePaymentStartTime, row.balancePaymentEndTime];
this.delivery = [
row.estimatedStartDeliveryTime,
row.estimatedEndDeliveryTime,
];
(this.ruleForm = {
productId: row.id,
advanceSellId: row.advanceSellId,
startTime: row.startTime,
name: row.name,
endTime: row.endTime,
balancePaymentStartTime: row.balancePaymentStartTime,
balancePaymentEndTime: row.balancePaymentEndTime,
estimatedStartDeliveryTime: row.estimatedStartDeliveryTime,
estimatedEndDeliveryTime: row.estimatedEndDeliveryTime,
isRefundEarnestMoney: row.isRefundEarnestMoney,
productSpecificationList: row.productSpecificationList,
}),
console.log(this.orderTime, this.arrears, this.delivery);
// this.ruleForm = row;
},
//
getOrderTime(e) {
if (e) {
console.log(e);
this.ruleForm.startTime = e[0];
this.ruleForm.endTime = e[1];
} else {
this.ruleForm.startTime = "";
this.ruleForm.endTime = "";
}
},
//
getArrearsTime(e) {
if (e) {
console.log(e);
this.ruleForm.balancePaymentStartTime = e[0];
this.ruleForm.balancePaymentEndTime = e[1];
} else {
this.ruleForm.balancePaymentStartTime = "";
this.ruleForm.balancePaymentEndTime = "";
}
},
//
deliveryTime(e) {
if (e) {
console.log(e);
this.ruleForm.estimatedStartDeliveryTime = e[0];
this.ruleForm.estimatedEndDeliveryTime = e[1];
} else {
this.ruleForm.estimatedStartDeliveryTime = "";
this.ruleForm.estimatedEndDeliveryTime = "";
}
},
selectProduct() {
console.log("选择商品", this.marketId, this.shopId);
this.$nextTick(() => {
this.$refs.commodity.toggle().add({
marketId: this.marketId,
shopId: this.shopId,
});
});
},
handleSelectionChange(e) {
console.log(e);
},
getProduct(row) {
this.ruleForm.productList = row.map((item) => {
return {
productId: item.id,
name: item.name,
productSpecificationList: item.productSpecificationList,
};
});
console.log(this.ruleForm.productList, this.ruleForm.productList.length);
console.log("获取商品");
},
},
computed: {
modalHandles() {
return [
{
label: "关闭",
handle: () => {
this.toggle();
},
},
// {
// label: "",
// type: "primary",
// // submit: true,
// handle: () => {
// },
// },
];
},
},
asyncComputed: {},
};
</script>
<style lang="scss" scoped>
</style>

View File

@ -13,7 +13,7 @@
</div>
<div>
<el-button
@click="$router.push({ path: 'bank-card-index' })"
@click="$router.push({ name: 'bank-card-index' })"
type="primary"
round
>绑定银行卡</el-button