|
@@ -0,0 +1,374 @@
|
|
|
+<template>
|
|
|
+ <div class="app-container">
|
|
|
+ <el-form
|
|
|
+ :model="queryParams"
|
|
|
+ ref="queryForm"
|
|
|
+ :inline="true"
|
|
|
+ v-show="showSearch"
|
|
|
+ label-width="90px"
|
|
|
+ >
|
|
|
+ <el-form-item label="用户昵称">
|
|
|
+ <el-input
|
|
|
+ v-model="queryParams.nickName"
|
|
|
+ placeholder="请输入用户昵称"
|
|
|
+ clearable
|
|
|
+ size="small"
|
|
|
+ style="width: 240px"
|
|
|
+ @keyup.enter.native="handleQuery"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="商品名称">
|
|
|
+ <el-input
|
|
|
+ v-model="queryParams.title"
|
|
|
+ placeholder="请输入商品名称"
|
|
|
+ clearable
|
|
|
+ size="small"
|
|
|
+ style="width: 240px"
|
|
|
+ @keyup.enter.native="handleQuery"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="订单号">
|
|
|
+ <el-input
|
|
|
+ v-model="queryParams.orderId"
|
|
|
+ placeholder="输入订单编号"
|
|
|
+ clearable
|
|
|
+ size="small"
|
|
|
+ style="width: 240px"
|
|
|
+ @keyup.enter.native="handleQuery"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="下单时间">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="tradeTimeArr"
|
|
|
+ type="datetimerange"
|
|
|
+ size="small"
|
|
|
+ value-format="timestamp"
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="时间选择"
|
|
|
+ end-placeholder="时间选择"
|
|
|
+ @change="tardeTime"
|
|
|
+ >
|
|
|
+ </el-date-picker>
|
|
|
+ </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
|
|
|
+ >
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <el-row :gutter="10">
|
|
|
+ <right-toolbar
|
|
|
+ :showSearch.sync="showSearch"
|
|
|
+ @queryTable="getList"
|
|
|
+ ></right-toolbar>
|
|
|
+ </el-row>
|
|
|
+ <!-- 订单状态 -->
|
|
|
+ <el-tabs type="card" v-model="state" @tab-click="handleClick">
|
|
|
+ <el-tab-pane label="全部订单" name="no"></el-tab-pane>
|
|
|
+ <el-tab-pane label="待付款" name="0"></el-tab-pane>
|
|
|
+ <el-tab-pane label="待发货" name="1"></el-tab-pane>
|
|
|
+ <el-tab-pane label="已发货" name="2"></el-tab-pane>
|
|
|
+ <el-tab-pane label="部分发货" name="4"></el-tab-pane>
|
|
|
+ <el-tab-pane label="已完成" name="3"></el-tab-pane>
|
|
|
+ <el-tab-pane label="已取消" name="-1"></el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ <!-- 列表 -->
|
|
|
+ <el-table ref="table" v-loading="loading" :data="list">
|
|
|
+ <!-- 展开 -->
|
|
|
+ <el-table-column type="expand">
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ <el-table :data="row.items">
|
|
|
+ <el-table-column label="商品图片" min-width="80">
|
|
|
+ <div slot-scope="{ row }">
|
|
|
+ <el-image
|
|
|
+ style="width: 100px; height: 100px"
|
|
|
+ :src="row.picUrl"
|
|
|
+ :preview-src-list="[row.picUrl]"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="商品名称" prop="title" min-width="80" />
|
|
|
+ <el-table-column label="规格" min-width="100">
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ <div>{{ row.properties || "--" }}</div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="数量" prop="orderNum" min-width="85">
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ <div>{{ row.goodsNum }}件</div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="订单号" prop="orderId" min-width="80" />
|
|
|
+ <el-table-column label="下单时间" min-width="100">
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ <div>
|
|
|
+ {{ parseTime(row.createdTime) }}
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="数量" prop="pkgNum" min-width="85">
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ <div>{{ row.orderNum }}件</div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="支付金额(元)" min-width="85">
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ <div>{{ $numberFormat(row.payAmt) }}</div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="用户/收货地址" prop="addr" min-width="120">
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ <div>
|
|
|
+ {{
|
|
|
+ `${row.receiver},${row.tel},${row.province}${row.city}${row.area}${row.address}`
|
|
|
+ }}
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="订单状态" align="center">
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ <div>
|
|
|
+ <el-tag :type="row.status.value === 1 ? 'success' : 'info'">{{
|
|
|
+ row.status.desc
|
|
|
+ }}</el-tag>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="操作" align="center" width="80">
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ <div>
|
|
|
+ <el-button
|
|
|
+ v-hasPermi="['business:ticket:on']"
|
|
|
+ type="text"
|
|
|
+ @click="getDetail(row)"
|
|
|
+ >查看详情</el-button
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ v-if="row.status.value === 1"
|
|
|
+ v-hasPermi="['business:ticket:on']"
|
|
|
+ type="text"
|
|
|
+ @click="toGoods(row)"
|
|
|
+ >发货</el-button
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+
|
|
|
+ <pagination
|
|
|
+ v-show="total > 0"
|
|
|
+ :total="total"
|
|
|
+ :page.sync="pageParams.pageNum"
|
|
|
+ :limit.sync="pageParams.pageSize"
|
|
|
+ @pagination="getList"
|
|
|
+ />
|
|
|
+
|
|
|
+ <el-dialog
|
|
|
+ title="订单发货"
|
|
|
+ :visible.sync="goodsShow"
|
|
|
+ width="800px"
|
|
|
+ :before-close="close"
|
|
|
+ >
|
|
|
+ <el-form :model="shipForm" ref="queryForm" label-width="100px">
|
|
|
+ <el-form-item label="订单号:">
|
|
|
+ <span>{{ goodsInfo.orderId }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="收货地址:">
|
|
|
+ <span>{{
|
|
|
+ `${goodsInfo.receiver},${goodsInfo.tel},${goodsInfo.province}${goodsInfo.city}${goodsInfo.area}${goodsInfo.address}`
|
|
|
+ }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="快递公司:">
|
|
|
+ <el-select
|
|
|
+ v-model="shipForm.deliveryId"
|
|
|
+ placeholder="请选择快递公司"
|
|
|
+ clearable
|
|
|
+ size="small"
|
|
|
+ style="width: 300px"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in companyData"
|
|
|
+ :key="item.areaId"
|
|
|
+ :label="item.companyName"
|
|
|
+ :value="item.deliveryId"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="快递单号:">
|
|
|
+ <el-input
|
|
|
+ v-model="shipForm.deliveryFlowId"
|
|
|
+ placeholder="输入快递单号"
|
|
|
+ clearable
|
|
|
+ size="small"
|
|
|
+ style="width: 300px"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="盲票组:">
|
|
|
+ <el-select
|
|
|
+ v-model="shipForm.deliveryId"
|
|
|
+ placeholder="请选择盲票组"
|
|
|
+ clearable
|
|
|
+ size="small"
|
|
|
+ style="width: 300px"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in companyData"
|
|
|
+ :key="item.areaId"
|
|
|
+ :label="item.companyName"
|
|
|
+ :value="item.deliveryId"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="盲票包序号:">
|
|
|
+ <el-input
|
|
|
+ v-model="shipForm.deliveryFlowId"
|
|
|
+ placeholder="输入盲票包序号"
|
|
|
+ clearable
|
|
|
+ size="small"
|
|
|
+ style="width: 300px"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
+ <send-goods :send-show="goodsShow" :goods-info="goodsInfo" @close="close" />
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script>
|
|
|
+import { getDeliverList, companyList } from "@/api/business/order";
|
|
|
+import { publicFileGetUrl } from "@/api/common";
|
|
|
+import SendGoods from "./components/SendGoods";
|
|
|
+export default {
|
|
|
+ components: {
|
|
|
+ SendGoods,
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ loading: false,
|
|
|
+ showSearch: true,
|
|
|
+ queryParams: {
|
|
|
+ nickName: "",
|
|
|
+ title: "",
|
|
|
+ orderId: "",
|
|
|
+ startTime: "",
|
|
|
+ endTime: "",
|
|
|
+ status: "",
|
|
|
+ },
|
|
|
+ pageParams: {
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ },
|
|
|
+ // 总条数
|
|
|
+ total: 0,
|
|
|
+ list: [],
|
|
|
+ // 经销商
|
|
|
+ merchantArr: [],
|
|
|
+ // 下单时间
|
|
|
+ tradeTimeArr: [],
|
|
|
+ // 订单列表状态
|
|
|
+ state: "no",
|
|
|
+
|
|
|
+ goodsShow: false,
|
|
|
+ goodsInfo: {},
|
|
|
+ shipForm: {
|
|
|
+ deliveryId: "",
|
|
|
+ deliveryFlowId: "",
|
|
|
+ },
|
|
|
+ companyData: [],
|
|
|
+ };
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.getList();
|
|
|
+ this.getCompanyList();
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ getList() {
|
|
|
+ this.loading = true;
|
|
|
+ getDeliverList(
|
|
|
+ "pageNum=" +
|
|
|
+ this.pageParams.pageNum +
|
|
|
+ "&pageSize=" +
|
|
|
+ this.pageParams.pageSize +
|
|
|
+ "&",
|
|
|
+ this.queryParams
|
|
|
+ )
|
|
|
+ .then((res) => {
|
|
|
+ this.loading = false;
|
|
|
+ if (res.code == 0) {
|
|
|
+ res.rows.forEach((item) => {
|
|
|
+ let items = item.items;
|
|
|
+ items.forEach((item) => {
|
|
|
+ let picUrlArr = item.picUrl.split(",");
|
|
|
+ item.picUrl = publicFileGetUrl + picUrlArr[0];
|
|
|
+ });
|
|
|
+ item.status = JSON.parse(item.status);
|
|
|
+ });
|
|
|
+ this.total = res.total;
|
|
|
+ this.list = res.rows;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ this.loading = false;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ getCompanyList() {
|
|
|
+ companyList({}).then((res) => {
|
|
|
+ this.companyData = res.data;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //搜索
|
|
|
+ handleQuery() {
|
|
|
+ this.getList();
|
|
|
+ },
|
|
|
+ // 重置
|
|
|
+ resetQuery() {},
|
|
|
+ // 选择下单时间
|
|
|
+ tardeTime(e) {
|
|
|
+ if (e) {
|
|
|
+ this.queryParams.startTime = e[0];
|
|
|
+ this.queryParams.endTime = e[1];
|
|
|
+ this.handleQuery();
|
|
|
+ } else {
|
|
|
+ this.queryParams.startTime = "";
|
|
|
+ this.queryParams.endTime = "";
|
|
|
+ this.handleQuery();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 订单切换
|
|
|
+ handleClick(e) {
|
|
|
+ if (e.name == "no") {
|
|
|
+ this.queryParams.status = "";
|
|
|
+ } else {
|
|
|
+ this.queryParams.status = Number(e.name);
|
|
|
+ }
|
|
|
+ this.getList();
|
|
|
+ },
|
|
|
+ // 查看详情
|
|
|
+ getDetail(row) {
|
|
|
+ this.$router.push({ name: "UserDetail", query: { id: row.orderId } });
|
|
|
+ },
|
|
|
+ toGoods(row) {
|
|
|
+ this.goodsShow = true;
|
|
|
+ this.goodsInfo = row;
|
|
|
+ },
|
|
|
+ close() {
|
|
|
+ this.goodsShow = false;
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+<style lang="scss" scoped>
|
|
|
+::v-deep .el-tabs--border-card > .el-tabs__content {
|
|
|
+ padding: 0;
|
|
|
+}
|
|
|
+</style>
|