|
|
@@ -9,62 +9,170 @@
|
|
|
<el-tab-pane label="已取消" name="-3"></el-tab-pane>
|
|
|
</el-tabs>
|
|
|
|
|
|
- <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
|
|
|
- <el-form-item label="订单号" prop="orderCode">
|
|
|
- <el-input
|
|
|
- v-model="queryParams.orderCode"
|
|
|
- placeholder="请输入订单号"
|
|
|
- clearable
|
|
|
- size="small"
|
|
|
- @keyup.enter.native="handleQuery"
|
|
|
+ <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px" size="small">
|
|
|
+ <el-form-item label="订单编号" prop="orderCode">
|
|
|
+ <el-input v-model="queryParams.orderCode" placeholder="请输入订单号" clearable @keyup.enter.native="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="所属部门" prop="deptId">
|
|
|
+ <treeselect style="width:220px" v-model="queryParams.deptId" :options="deptOptions" :show-count="true" placeholder="请选择所属部门" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="会员ID" prop="userId">
|
|
|
+ <el-input v-model="queryParams.userId" placeholder="请输入会员ID" clearable @keyup.enter.native="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="会员姓名" prop="memberName">
|
|
|
+ <el-input v-model="queryParams.memberName" placeholder="请输入会员姓名" clearable @keyup.enter.native="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="会员电话" prop="memberPhone">
|
|
|
+ <el-input v-model="queryParams.memberPhone" placeholder="请输入会员电话" clearable @keyup.enter.native="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="销售ID" prop="companyUserId">
|
|
|
+ <el-input v-model="queryParams.companyUserId" placeholder="请输入销售ID" clearable @keyup.enter.native="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="销售姓名" prop="companyUserName">
|
|
|
+ <el-input v-model="queryParams.companyUserName" placeholder="请输入销售姓名" clearable @keyup.enter.native="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="下单日期" prop="createTime">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="createTime"
|
|
|
+ style="width: 220px"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ type="daterange"
|
|
|
+ range-separator="-"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ end-placeholder="结束日期"
|
|
|
+ @change="handleCreateTimeChange"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="用户ID" prop="userId">
|
|
|
- <el-input
|
|
|
- v-model="queryParams.userId"
|
|
|
- placeholder="请输入用户ID"
|
|
|
- clearable
|
|
|
- size="small"
|
|
|
- @keyup.enter.native="handleQuery"
|
|
|
+ <el-form-item label="签收状态" prop="deliveryStatus">
|
|
|
+ <el-select v-model="queryParams.deliveryStatus" placeholder="请选择签收状态" clearable style="width:200px">
|
|
|
+ <el-option
|
|
|
+ v-for="item in deliveryStatusOptions"
|
|
|
+ :key="item.dictValue"
|
|
|
+ :label="item.dictLabel"
|
|
|
+ :value="Number(item.dictValue)"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="订购产品" prop="productName">
|
|
|
+ <el-input v-model="queryParams.productName" placeholder="请输入产品名称" clearable @keyup.enter.native="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="地址" prop="address">
|
|
|
+ <el-input v-model="queryParams.address" placeholder="请输入地址" clearable @keyup.enter.native="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="定金" prop="payPrice">
|
|
|
+ <el-input-number v-model="queryParams.payPrice" :precision="2" :min="0" placeholder="请输入定金" style="width:200px" controls-position="right" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="定金回款时间" prop="depositReturnTime">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="depositReturnTime"
|
|
|
+ style="width: 220px"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ type="daterange"
|
|
|
+ range-separator="-"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ end-placeholder="结束日期"
|
|
|
+ @change="handleDepositReturnTimeChange"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="收货人" prop="userName">
|
|
|
- <el-input
|
|
|
- v-model="queryParams.userName"
|
|
|
- placeholder="请输入收货人"
|
|
|
- clearable
|
|
|
- size="small"
|
|
|
- @keyup.enter.native="handleQuery"
|
|
|
+ <el-form-item label="商品总额" prop="totalPrice">
|
|
|
+ <el-input-number v-model="queryParams.totalPrice" :precision="2" :min="0" placeholder="请输入商品总额" style="width:200px" controls-position="right" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="代收金额" prop="collectionPrice">
|
|
|
+ <el-input-number v-model="queryParams.collectionPrice" :precision="2" :min="0" placeholder="请输入代收金额" style="width:200px" controls-position="right" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="备注" prop="remark">
|
|
|
+ <el-input v-model="queryParams.remark" placeholder="请输入备注" clearable @keyup.enter.native="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="快递单号" prop="deliverySn">
|
|
|
+ <el-input v-model="queryParams.deliverySn" placeholder="请输入快递单号" clearable @keyup.enter.native="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="发货日期" prop="deliveryTime">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="deliveryTime"
|
|
|
+ style="width: 220px"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ type="daterange"
|
|
|
+ range-separator="-"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ end-placeholder="结束日期"
|
|
|
+ @change="handleDeliveryTimeChange"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="收货人电话" prop="userPhone">
|
|
|
- <el-input
|
|
|
- v-model="queryParams.userPhone"
|
|
|
- placeholder="请输入收货人电话"
|
|
|
- clearable
|
|
|
- size="small"
|
|
|
- @keyup.enter.native="handleQuery"
|
|
|
+ <el-form-item label="快递公司" prop="deliveryCode">
|
|
|
+ <el-input v-model="queryParams.deliveryCode" placeholder="请输入快递公司" clearable @keyup.enter.native="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="快递类型" prop="deliveryName">
|
|
|
+ <el-input v-model="queryParams.deliveryName" placeholder="请输入快递类型" clearable @keyup.enter.native="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="跟单时间" prop="followTime">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="followTime"
|
|
|
+ style="width: 220px"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ type="daterange"
|
|
|
+ range-separator="-"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ end-placeholder="结束日期"
|
|
|
+ @change="handleFollowTimeChange"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="是否支付" prop="isPay">
|
|
|
- <el-select v-model="queryParams.isPay" placeholder="请选择是否支付" clearable size="small">
|
|
|
- <el-option label="是" value="1" />
|
|
|
- <el-option label="否" value="0" />
|
|
|
- </el-select>
|
|
|
+ <el-form-item label="退款金额" prop="refundPrice">
|
|
|
+ <el-input-number v-model="queryParams.refundPrice" :precision="2" :min="0" placeholder="请输入退款金额" style="width:200px" controls-position="right" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="创建时间" prop="createTime">
|
|
|
+ <el-form-item label="退款日期" prop="refundTime">
|
|
|
<el-date-picker
|
|
|
- v-model="createTime"
|
|
|
- size="small"
|
|
|
+ v-model="refundTime"
|
|
|
style="width: 220px"
|
|
|
value-format="yyyy-MM-dd"
|
|
|
type="daterange"
|
|
|
range-separator="-"
|
|
|
start-placeholder="开始日期"
|
|
|
end-placeholder="结束日期"
|
|
|
- @change="handleCreateTimeChange"
|
|
|
+ @change="handleRefundTimeChange"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item label="审核人" prop="auditor">
|
|
|
+ <el-input v-model="queryParams.auditor" placeholder="请输入审核人" clearable @keyup.enter.native="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="审核时间" prop="auditTime">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="auditTime"
|
|
|
+ style="width: 220px"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ type="daterange"
|
|
|
+ range-separator="-"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ end-placeholder="结束日期"
|
|
|
+ @change="handleAuditTimeChange"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="复购次数" prop="memberBuyCountMin">
|
|
|
+ <el-input-number v-model="queryParams.memberBuyCountMin" :min="0" placeholder="最小次数" style="width:120px" controls-position="right" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="会员年龄" prop="memberAge">
|
|
|
+ <el-input-number v-model="queryParams.memberAge" :min="0" placeholder="请输入年龄" style="width:200px" controls-position="right" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="会员性别" prop="memberSex">
|
|
|
+ <el-select v-model="queryParams.memberSex" placeholder="请选择性别" clearable style="width:120px">
|
|
|
+ <el-option label="男" :value="1" />
|
|
|
+ <el-option label="女" :value="2" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="病名" prop="diseaseName">
|
|
|
+ <el-input v-model="queryParams.diseaseName" placeholder="请输入病名" clearable @keyup.enter.native="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="省市" prop="province">
|
|
|
+ <el-input v-model="queryParams.province" placeholder="请输入省市" clearable @keyup.enter.native="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="二级市" prop="city">
|
|
|
+ <el-input v-model="queryParams.city" placeholder="请输入二级市" clearable @keyup.enter.native="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="区县" prop="district">
|
|
|
+ <el-input v-model="queryParams.district" placeholder="请输入区县" clearable @keyup.enter.native="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="乡镇" prop="township">
|
|
|
+ <el-input v-model="queryParams.township" placeholder="请输入乡镇" clearable @keyup.enter.native="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
<el-form-item>
|
|
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
|
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
|
|
@@ -583,13 +691,16 @@ import { listExternalOrder, createExternalOrder, getExternalOrder, auditExternal
|
|
|
import { getCompanyList } from "@/api/company/company";
|
|
|
import { listUserAddress } from "@/api/store/userAddress";
|
|
|
import { listStoreProduct, listStore } from "@/api/store/storeProduct";
|
|
|
+import { treeselect } from "@/api/company/companyDept";
|
|
|
+import Treeselect from "@riophae/vue-treeselect";
|
|
|
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
|
|
import addExternalUserAddress from "@/views/store/components/addExternalUserAddress.vue";
|
|
|
import addExternalUser from "@/views/store/components/addExternalUser.vue";
|
|
|
import request from '@/utils/request';
|
|
|
|
|
|
export default {
|
|
|
name: "ExternalOrder",
|
|
|
- components: { addExternalUserAddress, addExternalUser },
|
|
|
+ components: { addExternalUserAddress, addExternalUser, Treeselect },
|
|
|
data() {
|
|
|
return {
|
|
|
activeStatus: "all",
|
|
|
@@ -599,7 +710,6 @@ export default {
|
|
|
total: 0,
|
|
|
orderList: [],
|
|
|
companyList: [],
|
|
|
- createTime: null,
|
|
|
open: false,
|
|
|
title: "",
|
|
|
detailOpen: false,
|
|
|
@@ -639,15 +749,51 @@ export default {
|
|
|
pageNum: 1,
|
|
|
pageSize: 10,
|
|
|
orderCode: null,
|
|
|
+ deptId: null,
|
|
|
userId: null,
|
|
|
- userName: null,
|
|
|
- userPhone: null,
|
|
|
- isPay: null,
|
|
|
- companyId: null,
|
|
|
- status: null,
|
|
|
+ memberName: null,
|
|
|
+ memberPhone: null,
|
|
|
+ memberSex: null,
|
|
|
+ memberAge: null,
|
|
|
+ memberBuyCountMin: null,
|
|
|
+ companyUserId: null,
|
|
|
+ companyUserName: null,
|
|
|
+ address: null,
|
|
|
+ productName: null,
|
|
|
+ payPrice: null,
|
|
|
+ totalPrice: null,
|
|
|
+ collectionPrice: null,
|
|
|
+ refundPrice: null,
|
|
|
+ deliverySn: null,
|
|
|
+ deliveryCode: null,
|
|
|
+ deliveryName: null,
|
|
|
+ deliveryStatus: null,
|
|
|
+ auditor: null,
|
|
|
+ diseaseName: null,
|
|
|
+ remark: null,
|
|
|
+ province: null,
|
|
|
+ city: null,
|
|
|
+ district: null,
|
|
|
+ township: null,
|
|
|
sTime: null,
|
|
|
- eTime: null
|
|
|
+ eTime: null,
|
|
|
+ deliveryStartTime: null,
|
|
|
+ deliveryEndTime: null,
|
|
|
+ depositReturnTimeStart: null,
|
|
|
+ depositReturnTimeEnd: null,
|
|
|
+ followTimeStart: null,
|
|
|
+ followTimeEnd: null,
|
|
|
+ refundTimeStart: null,
|
|
|
+ refundTimeEnd: null,
|
|
|
+ auditTimeStart: null,
|
|
|
+ auditTimeEnd: null
|
|
|
},
|
|
|
+ createTime: null,
|
|
|
+ deliveryTime: null,
|
|
|
+ depositReturnTime: null,
|
|
|
+ followTime: null,
|
|
|
+ refundTime: null,
|
|
|
+ auditTime: null,
|
|
|
form: {
|
|
|
addressId: null,
|
|
|
userId: null,
|
|
|
@@ -695,6 +841,7 @@ export default {
|
|
|
deliveryStatusOptions: [],
|
|
|
deliveryTypeOptions: [],
|
|
|
userStatusOptions: [],
|
|
|
+ deptOptions: [],
|
|
|
editOpen: false,
|
|
|
editConfirmOpen: false,
|
|
|
editForm: {
|
|
|
@@ -749,6 +896,7 @@ export default {
|
|
|
this.getDicts("sys_company_status").then(response => {
|
|
|
this.userStatusOptions = response.data;
|
|
|
});
|
|
|
+ this.getTreeselect();
|
|
|
},
|
|
|
methods: {
|
|
|
handleTabClick(tab) {
|
|
|
@@ -761,7 +909,11 @@ export default {
|
|
|
},
|
|
|
getList() {
|
|
|
this.loading = true;
|
|
|
- listExternalOrder(this.queryParams).then(response => {
|
|
|
+ const params = { ...this.queryParams };
|
|
|
+ // el-input-number 清空后默认值为0,需转为null避免作为筛选条件传给后端
|
|
|
+ const numFields = ['memberAge', 'memberBuyCountMin', 'payPrice', 'totalPrice', 'collectionPrice', 'refundPrice'];
|
|
|
+ numFields.forEach(f => { if (params[f] === 0) params[f] = null; });
|
|
|
+ listExternalOrder(params).then(response => {
|
|
|
this.orderList = response.rows;
|
|
|
this.total = response.total;
|
|
|
this.loading = false;
|
|
|
@@ -774,6 +926,12 @@ export default {
|
|
|
this.companyList = response.data || [];
|
|
|
});
|
|
|
},
|
|
|
+ /** 查询部门下拉树结构 */
|
|
|
+ getTreeselect() {
|
|
|
+ treeselect().then((response) => {
|
|
|
+ this.deptOptions = response.data;
|
|
|
+ });
|
|
|
+ },
|
|
|
handleCreateTimeChange(val) {
|
|
|
if (val) {
|
|
|
this.queryParams.sTime = val[0];
|
|
|
@@ -783,6 +941,51 @@ export default {
|
|
|
this.queryParams.eTime = null;
|
|
|
}
|
|
|
},
|
|
|
+ handleDeliveryTimeChange(val) {
|
|
|
+ if (val) {
|
|
|
+ this.queryParams.deliveryStartTime = val[0];
|
|
|
+ this.queryParams.deliveryEndTime = val[1];
|
|
|
+ } else {
|
|
|
+ this.queryParams.deliveryStartTime = null;
|
|
|
+ this.queryParams.deliveryEndTime = null;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleDepositReturnTimeChange(val) {
|
|
|
+ if (val) {
|
|
|
+ this.queryParams.depositReturnTimeStart = val[0];
|
|
|
+ this.queryParams.depositReturnTimeEnd = val[1];
|
|
|
+ } else {
|
|
|
+ this.queryParams.depositReturnTimeStart = null;
|
|
|
+ this.queryParams.depositReturnTimeEnd = null;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleFollowTimeChange(val) {
|
|
|
+ if (val) {
|
|
|
+ this.queryParams.followTimeStart = val[0];
|
|
|
+ this.queryParams.followTimeEnd = val[1];
|
|
|
+ } else {
|
|
|
+ this.queryParams.followTimeStart = null;
|
|
|
+ this.queryParams.followTimeEnd = null;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleRefundTimeChange(val) {
|
|
|
+ if (val) {
|
|
|
+ this.queryParams.refundTimeStart = val[0];
|
|
|
+ this.queryParams.refundTimeEnd = val[1];
|
|
|
+ } else {
|
|
|
+ this.queryParams.refundTimeStart = null;
|
|
|
+ this.queryParams.refundTimeEnd = null;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleAuditTimeChange(val) {
|
|
|
+ if (val) {
|
|
|
+ this.queryParams.auditTimeStart = val[0];
|
|
|
+ this.queryParams.auditTimeEnd = val[1];
|
|
|
+ } else {
|
|
|
+ this.queryParams.auditTimeStart = null;
|
|
|
+ this.queryParams.auditTimeEnd = null;
|
|
|
+ }
|
|
|
+ },
|
|
|
handleQuery() {
|
|
|
this.queryParams.pageNum = 1;
|
|
|
this.getList();
|
|
|
@@ -790,8 +993,23 @@ export default {
|
|
|
resetQuery() {
|
|
|
this.resetForm("queryForm");
|
|
|
this.createTime = null;
|
|
|
+ this.deliveryTime = null;
|
|
|
+ this.depositReturnTime = null;
|
|
|
+ this.followTime = null;
|
|
|
+ this.refundTime = null;
|
|
|
+ this.auditTime = null;
|
|
|
this.queryParams.sTime = null;
|
|
|
this.queryParams.eTime = null;
|
|
|
+ this.queryParams.deliveryStartTime = null;
|
|
|
+ this.queryParams.deliveryEndTime = null;
|
|
|
+ this.queryParams.depositReturnTimeStart = null;
|
|
|
+ this.queryParams.depositReturnTimeEnd = null;
|
|
|
+ this.queryParams.followTimeStart = null;
|
|
|
+ this.queryParams.followTimeEnd = null;
|
|
|
+ this.queryParams.refundTimeStart = null;
|
|
|
+ this.queryParams.refundTimeEnd = null;
|
|
|
+ this.queryParams.auditTimeStart = null;
|
|
|
+ this.queryParams.auditTimeEnd = null;
|
|
|
this.handleQuery();
|
|
|
},
|
|
|
handleAdd() {
|