|
|
@@ -1,381 +1,455 @@
|
|
|
<template>
|
|
|
- <div class="app-container">
|
|
|
- <el-form
|
|
|
- :model="orderForm"
|
|
|
- label-width="68px"
|
|
|
- :inline="true"
|
|
|
- >
|
|
|
- <el-row :gutter="20">
|
|
|
- <el-col :span="6">
|
|
|
- <el-form-item label="订单号">
|
|
|
- <el-input style="width: 280px" v-model="orderForm.a" clearable></el-input>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="6">
|
|
|
- <el-form-item label="下单时间">
|
|
|
- <el-date-picker
|
|
|
- style="width: 280px"
|
|
|
- v-model="orderForm.b"
|
|
|
- type="daterange"
|
|
|
- range-separator="至"
|
|
|
- start-placeholder="开始日期"
|
|
|
- end-placeholder="结束日期"
|
|
|
- value-format="yyyy-MM-dd"
|
|
|
- clearable
|
|
|
- ></el-date-picker>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="6">
|
|
|
- <el-form-item label="用户信息">
|
|
|
- <el-input style="width: 280px" v-model="orderForm.d" placeholder="请填写" clearable >
|
|
|
- <el-select style="width: 100px" v-model="orderForm.c" slot="prepend" placeholder="请选择">
|
|
|
- <el-option label="手机号" value="1"></el-option>
|
|
|
- <el-option label="昵称" value="2"></el-option>
|
|
|
- <el-option label="姓名" value="3"></el-option>
|
|
|
- </el-select>
|
|
|
- </el-input>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="6">
|
|
|
- <el-form-item label="服务分类">
|
|
|
- <el-select style="width: 280px" v-model="orderForm.e" clearable>
|
|
|
- <el-option label="1" value="1"></el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="6">
|
|
|
- <el-form-item label="项目名称">
|
|
|
- <el-input style="width: 280px" v-model="orderForm.f" clearable></el-input>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="6">
|
|
|
- <el-form-item label="商户信息">
|
|
|
- <el-input style="width: 280px" v-model="orderForm.d" placeholder="请填写" clearable >
|
|
|
- <el-select style="width: 100px" v-model="orderForm.c" slot="prepend" placeholder="请选择">
|
|
|
- <el-option label="手机号" value="1"></el-option>
|
|
|
- <el-option label="昵称" value="2"></el-option>
|
|
|
- <el-option label="姓名" value="3"></el-option>
|
|
|
- </el-select>
|
|
|
- </el-input>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="6">
|
|
|
- <el-form-item label="支付方式">
|
|
|
- <el-select style="width: 280px" v-model="orderForm.e" clearable>
|
|
|
- <el-option label="1" value="1"></el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="6">
|
|
|
- <el-form-item label="订单归属">
|
|
|
- <el-select style="width: 280px" v-model="orderForm.e" clearable>
|
|
|
- <el-option label="1" value="1"></el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="6">
|
|
|
- <el-button type="primary" @click="handleSearch">搜索</el-button>
|
|
|
- <el-button @click="handleReset">重置</el-button>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </el-form>
|
|
|
- <div class="btns">
|
|
|
- <div class="type">
|
|
|
- <span class="typeItem" :class="{ 'active': typeIndex === index }" @click="handleTypeIndex(item, index)" v-for="(item, index) in typeList">{{ item.name }}</span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <el-table
|
|
|
- :data="table"
|
|
|
- >
|
|
|
- <el-table-column label="订单信息" width="200">
|
|
|
- <template #default="{ row }">
|
|
|
- <div class="orderNum">订单号:20251201103742</div>
|
|
|
- <div class="orderTime">下单时间:2025.12.02 12:00:01</div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="服务项目" width="340">
|
|
|
- <template #default="{ row }">
|
|
|
- <div class="serveProject">
|
|
|
- <div class="photo">
|
|
|
- <image-preview :src="row.ccover" :width="80" :height="80" />
|
|
|
- </div>
|
|
|
- <div class="message">
|
|
|
- <div class="title">斯诺克技术指导-个性化斯诺克技术指导-个性化</div>
|
|
|
- <div class="type">陪练(120分钟)</div>
|
|
|
- <div class="serveTime">服务时间:2025.12.02 12:00-13:00</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="单价/数量" width="150">
|
|
|
- <template #default="{ row }">
|
|
|
- <div class="orderNum">188.00/次</div>
|
|
|
- <div class="orderTime">×12</div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="订单金额" width="240">
|
|
|
- <template #default="{ row }">
|
|
|
- <div class="orderNum">¥362(含出行费:¥0.00)</div>
|
|
|
- <div class="orderTime">余额支付</div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="联系信息">
|
|
|
- <template #default="{ row }">
|
|
|
- <div class="connectMsg">用户:用户709514</div>
|
|
|
- <div class="connectMsg">联系人:好 178 **** 0334</div>
|
|
|
- <div class="connectMsg connectAddress">地址:云南省昆明市官渡区彩云辅路</div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="状态">
|
|
|
- <template #default="{ row }">
|
|
|
- <div class="orderNum">状态</div>
|
|
|
- <div class="orderNum">关联的售后状态</div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="服务商户">
|
|
|
- <template #default="{ row }">
|
|
|
- <div class="orderNum">姓名</div>
|
|
|
- <div class="orderNum">手机号</div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="操作" fixed="right" width="120">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-dropdown @command="(command) => clickMenuItem(command, row)">
|
|
|
- <span class="el-dropdown-link">
|
|
|
- <el-button size="small" type="text">操作<i class="el-icon-arrow-down el-icon--right"></i></el-button>
|
|
|
- </span>
|
|
|
- <el-dropdown-menu slot="dropdown">
|
|
|
- <el-dropdown-item command="view" @click="handleView(row)">详情</el-dropdown-item>
|
|
|
- <el-dropdown-item command="allot" @click="handleAllot(row)">分配</el-dropdown-item>
|
|
|
- <el-dropdown-item command="del" @click="handleDel(row)">删除</el-dropdown-item>
|
|
|
- <el-dropdown-item command="refund" @click="handleRefund(row)">退款</el-dropdown-item>
|
|
|
- <el-dropdown-item command="exchange" @click="handleExchange(row)">更换商户</el-dropdown-item>
|
|
|
- </el-dropdown-menu>
|
|
|
- </el-dropdown>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- <div class="pagination">
|
|
|
- <el-pagination
|
|
|
- v-show="total > 0"
|
|
|
- background
|
|
|
- @size-change="handleSizeChange"
|
|
|
- @current-change="handleCurrentChange"
|
|
|
- :current-page="orderForm.current"
|
|
|
- :page-size="orderForm.size"
|
|
|
- layout="total, sizes, prev, pager, next, jumper"
|
|
|
- :total="total"
|
|
|
- />
|
|
|
- </div>
|
|
|
+ <div class="app-container">
|
|
|
+ <el-form :model="orderForm" label-width="68px" :inline="true">
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="订单号">
|
|
|
+ <el-input style="width: 280px" v-model="orderForm.orderNo" clearable></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="下单时间">
|
|
|
+ <el-date-picker style="width: 280px" v-model="orderForm.createTime" type="daterange" range-separator="至"
|
|
|
+ start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" clearable></el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="用户信息">
|
|
|
+ <el-input style="width: 280px" v-model="orderForm.userKeyword" placeholder="请填写" clearable>
|
|
|
+ <el-select style="width: 100px" v-model="orderForm.userSearchType" slot="prepend" placeholder="请选择">
|
|
|
+ <el-option label="手机号" value="phone"></el-option>
|
|
|
+ <el-option label="昵称" value="nickName"></el-option>
|
|
|
+ <el-option label="姓名" value="name"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="服务分类">
|
|
|
+ <el-select style="width: 280px" v-model="orderForm.categoryId" clearable>
|
|
|
+ <el-option v-for="item in serveTypes" :label="item.name" :value="item.id"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="项目名称">
|
|
|
+ <el-input style="width: 280px" v-model="orderForm.projectName" clearable></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="商户信息">
|
|
|
+ <el-input style="width: 280px" v-model="orderForm.merchantKeyword" placeholder="请填写" clearable>
|
|
|
+ <el-select style="width: 100px" v-model="orderForm.merchantSearchType" slot="prepend" placeholder="请选择">
|
|
|
+ <el-option label="手机号" value="phone"></el-option>
|
|
|
+ <el-option label="昵称" value="nickName"></el-option>
|
|
|
+ <el-option label="姓名" value="name"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="支付方式">
|
|
|
+ <el-select style="width: 280px" v-model="orderForm.paymentMethod" clearable>
|
|
|
+ <el-option label="购物卡支付" value="0"></el-option>
|
|
|
+ <el-option label="微信支付" value="1"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="订单归属">
|
|
|
+ <el-select style="width: 280px" v-model="orderForm.e" clearable>
|
|
|
+ <el-option label="1" value="1"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
|
|
|
- <DispatchOrderDialog ref="dispatchDialogRefs" />
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-button type="primary" @click="handleSearch">搜索</el-button>
|
|
|
+ <el-button @click="handleReset">重置</el-button>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ <div class="btns">
|
|
|
+ <div class="type">
|
|
|
+ <span class="typeItem" :class="{ 'active': typeIndex === index }" @click="handleTypeIndex(item, index)"
|
|
|
+ v-for="(item, index) in typeList">{{ item.name }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <el-table :data="table">
|
|
|
+ <el-table-column label="订单信息" width="200">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <div class="orderNum">{{ row.orderNo }}</div>
|
|
|
+ <div class="orderTime">下单时间:{{ row.orderTime }}</div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="服务项目" width="340">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <div class="serveProject">
|
|
|
+ <div class="photo">
|
|
|
+ <image-preview :src="row.ccover" :width="80" :height="80" />
|
|
|
+ </div>
|
|
|
+ <div class="message">
|
|
|
+ <div class="title">{{ row.projectName }}</div>
|
|
|
+ <div class="type">{{ row.projectDuration }}分钟</div>
|
|
|
+ <div class="serveTime">服务时间:2025.12.02 12:00-13:00</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="单价/数量" width="130">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <div class="orderNum">{{ row.unitPrice }}/{{ row.unitName }}</div>
|
|
|
+ <div class="orderTime">×{{ row.quantity }}</div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="订单金额" width="240">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <div class="orderNum">¥{{ row.orderAmount }}(含出行费:¥{{ row.trafficFee }})</div>
|
|
|
+ <div class="orderTime">{{ row.status == 0 ? '--' : row.paymentMethodName }}</div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="联系信息" width="200">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <div class="connectMsg">用户:{{ row.userNickName }}</div>
|
|
|
+ <div class="connectMsg" v-if="row.contactPersonName">联系人:{{ row.contactPersonName[0] }} 男 {{
|
|
|
+ row.contactPhoneMasked }}</div>
|
|
|
+ <div class="connectMsg connectAddress">地址:{{ row.contactAddressInfo }}</div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="状态">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <!-- <div class="orderNum">状态</div> -->
|
|
|
+ <div class="orderNum">{{ row.execStatusName }}</div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="服务商户">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <div class="orderNum">姓名:{{ row.merchantName }}</div>
|
|
|
+ <div class="orderNum">手机号:{{ row.merchantPhone }}</div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="操作" fixed="right" width="120">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <el-dropdown @command="(command) => clickMenuItem(command, row)">
|
|
|
+ <span class="el-dropdown-link">
|
|
|
+ <el-button size="small" type="text">操作<i class="el-icon-arrow-down el-icon--right"></i></el-button>
|
|
|
+ </span>
|
|
|
+ <el-dropdown-menu slot="dropdown">
|
|
|
+ <el-dropdown-item command="view" @click="handleView(row)">详情</el-dropdown-item>
|
|
|
+ <el-dropdown-item command="allot" v-if="row.status == 1" @click="handleAllot(row)">分配</el-dropdown-item>
|
|
|
+ <el-dropdown-item command="del" v-if="row.status == 0 || row.status == 1 || row.status == 6"
|
|
|
+ @click="handleDel(row)">删除</el-dropdown-item>
|
|
|
+ <el-dropdown-item command="refund" v-if="row.status == 2 || row.status == 3 || row.status == 4 || row.status == 5"
|
|
|
+ @click="handleRefund(row)">退款</el-dropdown-item>
|
|
|
+ <el-dropdown-item command="exchange" v-if="row.status == 2"
|
|
|
+ @click="handleExchange(row)">更换商户</el-dropdown-item>
|
|
|
+ </el-dropdown-menu>
|
|
|
+ </el-dropdown>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <div class="pagination">
|
|
|
+ <el-pagination v-show="total > 0" background @size-change="handleSizeChange" @current-change="handleCurrentChange"
|
|
|
+ :current-page="orderForm.current" :page-size="orderForm.size" layout="total, sizes, prev, pager, next, jumper"
|
|
|
+ :total="total" />
|
|
|
</div>
|
|
|
+
|
|
|
+ <DispatchOrderDialog ref="dispatchDialogRefs" />
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
import DispatchOrderDialog from '@/views/mapDemo/components/DispatchOrderDialog.vue'
|
|
|
-
|
|
|
+import { serviceCategory, orderPage, orderDetail } from '@/api/order/serviceOrder'
|
|
|
const MOCK_ORDER = {
|
|
|
- cId: '1',
|
|
|
- orderNo: 'ORD20260601001',
|
|
|
- cName: '张三',
|
|
|
- cPhone: '13800138001',
|
|
|
- cAddress: '北京市东城区王府井大街88号',
|
|
|
- category: '按摩',
|
|
|
- region: 'city',
|
|
|
- arrivalLongitude: 116.297428,
|
|
|
- arrivalLatitude: 39.90923,
|
|
|
- dispatchStatus: 'pending'
|
|
|
+ cId: '1',
|
|
|
+ orderNo: 'ORD20260601001',
|
|
|
+ cName: '张三',
|
|
|
+ cPhone: '13800138001',
|
|
|
+ cAddress: '北京市东城区王府井大街88号',
|
|
|
+ category: '按摩',
|
|
|
+ region: 'city',
|
|
|
+ arrivalLongitude: 116.297428,
|
|
|
+ arrivalLatitude: 39.90923,
|
|
|
+ dispatchStatus: 'pending'
|
|
|
}
|
|
|
export default {
|
|
|
- name: "serveOrder",
|
|
|
- components: { DispatchOrderDialog },
|
|
|
- data() {
|
|
|
- return {
|
|
|
- orderForm: {
|
|
|
- current: 1,
|
|
|
- size: 10,
|
|
|
- },
|
|
|
- total: 1,
|
|
|
- typeIndex: 0,
|
|
|
- typeList: [
|
|
|
- {
|
|
|
- name: '全部'
|
|
|
- },
|
|
|
- {
|
|
|
- name: '待派单'
|
|
|
- }
|
|
|
- ],
|
|
|
- table: [
|
|
|
- {}
|
|
|
- ],
|
|
|
- allotDialogShow: false
|
|
|
+ name: "serveOrder",
|
|
|
+ components: { DispatchOrderDialog },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ serveTypes: [],
|
|
|
+ orderForm: {
|
|
|
+ current: 1,
|
|
|
+ size: 10,
|
|
|
+ userSearchType: 'phone',
|
|
|
+ merchantSearchType: 'nickName',
|
|
|
+ },
|
|
|
+ orderStatus: [
|
|
|
+ { value: 0, label: "待支付" },
|
|
|
+ { value: 1, label: "待派单" },
|
|
|
+ { value: 2, label: "待接单" },
|
|
|
+ { value: 3, label: "待服务" },
|
|
|
+ { value: 4, label: "服务中" },
|
|
|
+ { value: 5, label: "已完成" },
|
|
|
+ { value: 6, label: "已取消" },
|
|
|
+ ],
|
|
|
+ total: 1,
|
|
|
+ typeIndex: 0,
|
|
|
+ typeList: [
|
|
|
+ { name: '全部' },
|
|
|
+ { value: 0, name: "待接单" },
|
|
|
+ { value: 1, name: "待派单" },
|
|
|
+ { value: 2, name: "待接单" },
|
|
|
+ { value: 3, name: "待服务" },
|
|
|
+ { value: 4, name: "服务中" },
|
|
|
+ { value: 5, name: "已完成" },
|
|
|
+ { value: 6, name: "已取消" },
|
|
|
+ ],
|
|
|
+ table: [
|
|
|
+ {}
|
|
|
+ ],
|
|
|
+ allotDialogShow: false
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ //初始化数据
|
|
|
+ initData() {
|
|
|
+ let params = {
|
|
|
+ current: this.orderForm.current,
|
|
|
+ size: this.orderForm.size,
|
|
|
+ orderNo: this.orderForm.orderNo,
|
|
|
+ projectName: this.orderForm.projectName,
|
|
|
+ merchantSearchType: this.orderForm.merchantSearchType,
|
|
|
+ merchantKeyword: this.orderForm.merchantKeyword,
|
|
|
+ startTime: this.orderForm.createTime?.[0],
|
|
|
+ endTime: this.orderForm.createTime?.[1],
|
|
|
+ userSearchType: this.orderForm.userSearchType,
|
|
|
+ userKeyword: this.orderForm.userKeyword,
|
|
|
+ categoryId: this.orderForm.categoryId,
|
|
|
+ paymentMethod: this.orderForm.paymentMethod,
|
|
|
+ status: this.typeList[this.typeIndex].value || null,
|
|
|
+ }
|
|
|
+ orderPage(params).then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.table = res.data.records
|
|
|
+ this.total = res.data.total
|
|
|
}
|
|
|
- },
|
|
|
- methods: {
|
|
|
- initData() {
|
|
|
-
|
|
|
- },
|
|
|
- handleSearch() {
|
|
|
- this.orderForm.current = 1
|
|
|
- this.orderForm.size = 10
|
|
|
- this.initData();
|
|
|
- },
|
|
|
- handleReset() {
|
|
|
- this.orderForm.current = 1
|
|
|
- this.orderForm.size = 10
|
|
|
- this.initData();
|
|
|
- },
|
|
|
- handleTypeIndex(item, index) {
|
|
|
- this.typeIndex = index
|
|
|
- },
|
|
|
- handleSizeChange(size) {
|
|
|
- this.orderForm.size = size
|
|
|
- this.initData();
|
|
|
- },
|
|
|
- handleCurrentChange(page) {
|
|
|
- this.orderForm.current = page
|
|
|
- this.initData();
|
|
|
- },
|
|
|
- handleView(row) {
|
|
|
- this.$router.push({
|
|
|
- path: '/order/orderDetail',
|
|
|
- query: {
|
|
|
- id: row.id
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- handleAllot(row) {
|
|
|
- this.allotDialogShow = true
|
|
|
- this.$nextTick(() => {
|
|
|
- this.$refs.dispatchDialogRefs.open(MOCK_ORDER)
|
|
|
- })
|
|
|
- },
|
|
|
- handleDel(row) {
|
|
|
- this.$confirm('被删除的订单可以通过「订单回收站」查找并恢复', '是否确认删除?', {
|
|
|
- type: 'warning',
|
|
|
- confirmButtonText: '确认删除'
|
|
|
- })
|
|
|
- .then(() => {
|
|
|
- this.$modal.msgSuccess("删除成功");
|
|
|
- })
|
|
|
- .catch(() => {
|
|
|
+ })
|
|
|
|
|
|
- });
|
|
|
- },
|
|
|
- handleRefund(row) {
|
|
|
- this.$confirm('是否确认退款?', '系统提示', {
|
|
|
- type: 'warning',
|
|
|
- confirmButtonText: '确认'
|
|
|
- })
|
|
|
- .then(() => {
|
|
|
- this.$modal.msgSuccess("申请退款中...");
|
|
|
- })
|
|
|
- .catch(() => {
|
|
|
+ },
|
|
|
+ //删除服务订单
|
|
|
+ handleDel(row) {
|
|
|
+ orderDetail(row.id).then(res => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ this.$message({
|
|
|
+ message: res.msg,
|
|
|
+ type: 'success'
|
|
|
+ });
|
|
|
+ this.initData();
|
|
|
+ } else {
|
|
|
+ this.$message({
|
|
|
+ message: res.msg,
|
|
|
+ type: 'error'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //获取服务类型
|
|
|
+ serviceCategoryFun() {
|
|
|
+ serviceCategory().then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.serveTypes = res.data
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handleSearch() {
|
|
|
+ this.orderForm.current = 1
|
|
|
+ this.orderForm.size = 10
|
|
|
+ this.initData();
|
|
|
+ },
|
|
|
+ handleReset() {
|
|
|
+ this.orderForm.current = 1
|
|
|
+ this.orderForm.size = 10
|
|
|
+ this.initData();
|
|
|
+ },
|
|
|
+ handleTypeIndex(item, index) {
|
|
|
+ this.typeIndex = index
|
|
|
+ },
|
|
|
+ handleSizeChange(size) {
|
|
|
+ this.orderForm.size = size
|
|
|
+ this.initData();
|
|
|
+ },
|
|
|
+ handleCurrentChange(page) {
|
|
|
+ this.orderForm.current = page
|
|
|
+ this.initData();
|
|
|
+ },
|
|
|
+ handleView(row) {
|
|
|
+ this.$router.push({
|
|
|
+ path: '/order/orderDetail',
|
|
|
+ query: {
|
|
|
+ id: row.id
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handleAllot(row) {
|
|
|
+ this.allotDialogShow = true
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs.dispatchDialogRefs.open(MOCK_ORDER)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handleDel(row) {
|
|
|
+ this.$confirm('被删除的订单可以通过「订单回收站」查找并恢复', '是否确认删除?', {
|
|
|
+ type: 'warning',
|
|
|
+ confirmButtonText: '确认删除'
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ this.$modal.msgSuccess("删除成功");
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
|
|
|
- });
|
|
|
- },
|
|
|
- handleExchange(row) {
|
|
|
- this.allotDialogShow = true
|
|
|
- this.$nextTick(() => {
|
|
|
- this.$refs.dispatchDialogRefs.open(MOCK_ORDER)
|
|
|
- })
|
|
|
- },
|
|
|
- clickMenuItem(command, row) {
|
|
|
- switch (command) {
|
|
|
- case 'view':
|
|
|
- this.handleView(row)
|
|
|
- break;
|
|
|
- case 'allot':
|
|
|
- this.handleAllot(row)
|
|
|
- break;
|
|
|
- case 'del':
|
|
|
- this.handleDel(row)
|
|
|
- break;
|
|
|
- case 'refund':
|
|
|
- this.handleRefund(row)
|
|
|
- break;
|
|
|
- case 'exchange':
|
|
|
- this.handleExchange(row)
|
|
|
- break;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ handleRefund(row) {
|
|
|
+ this.$confirm('是否确认退款?', '系统提示', {
|
|
|
+ type: 'warning',
|
|
|
+ confirmButtonText: '确认'
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ refundApply(row.id).then(res => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ this.$message({
|
|
|
+ message: res.msg,
|
|
|
+ type: 'success'
|
|
|
+ });
|
|
|
+ this.initData();
|
|
|
+ } else {
|
|
|
+ this.$message({
|
|
|
+ message: res.msg,
|
|
|
+ type: 'error'
|
|
|
+ });
|
|
|
}
|
|
|
- }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+
|
|
|
+ });
|
|
|
+ },
|
|
|
+ handleExchange(row) {
|
|
|
+ this.allotDialogShow = true
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs.dispatchDialogRefs.open(MOCK_ORDER)
|
|
|
+ })
|
|
|
},
|
|
|
- mounted() {
|
|
|
- this.initData();
|
|
|
+ clickMenuItem(command, row) {
|
|
|
+ switch (command) {
|
|
|
+ case 'view':
|
|
|
+ this.handleView(row)
|
|
|
+ break;
|
|
|
+ case 'allot':
|
|
|
+ this.handleAllot(row)
|
|
|
+ break;
|
|
|
+ case 'del':
|
|
|
+ this.handleDel(row)
|
|
|
+ break;
|
|
|
+ case 'refund':
|
|
|
+ this.handleRefund(row)
|
|
|
+ break;
|
|
|
+ case 'exchange':
|
|
|
+ this.handleExchange(row)
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.initData();
|
|
|
+ this.serviceCategoryFun();
|
|
|
+ }
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
-.btns{
|
|
|
- margin: 20px 0;
|
|
|
+.btns {
|
|
|
+ margin: 20px 0;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: flex-start;
|
|
|
+
|
|
|
+ .type {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
justify-content: flex-start;
|
|
|
- .type{
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- justify-content: flex-start;
|
|
|
- .typeItem{
|
|
|
- padding: 5px 15px;
|
|
|
- font-size: 14px;
|
|
|
- margin: 0 10px 0 0;
|
|
|
- cursor: pointer;
|
|
|
- border-bottom: 1px solid #ffffff;
|
|
|
- }
|
|
|
- .active{
|
|
|
- border-bottom: 1px solid #1890ff;
|
|
|
- }
|
|
|
+
|
|
|
+ .typeItem {
|
|
|
+ padding: 5px 15px;
|
|
|
+ font-size: 14px;
|
|
|
+ margin: 0 10px 0 0;
|
|
|
+ cursor: pointer;
|
|
|
+ border-bottom: 1px solid #ffffff;
|
|
|
}
|
|
|
+
|
|
|
+ .active {
|
|
|
+ border-bottom: 1px solid #1890ff;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
-.orderNum{
|
|
|
- font-size: 14px;
|
|
|
- color: black;
|
|
|
+
|
|
|
+.orderNum {
|
|
|
+ font-size: 14px;
|
|
|
+ color: black;
|
|
|
}
|
|
|
-.orderTime{
|
|
|
- font-size: 12px;
|
|
|
+
|
|
|
+.orderTime {
|
|
|
+ font-size: 12px;
|
|
|
}
|
|
|
-.serveProject{
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- justify-content: flex-start;
|
|
|
- .photo{
|
|
|
- margin-right: 10px;
|
|
|
+
|
|
|
+.serveProject {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: flex-start;
|
|
|
+
|
|
|
+ .photo {
|
|
|
+ margin-right: 10px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .message {
|
|
|
+ width: calc(100% - 90px);
|
|
|
+ color: black;
|
|
|
+
|
|
|
+ .title {
|
|
|
+ width: 100%;
|
|
|
+ overflow: hidden;
|
|
|
+ white-space: nowrap;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ font-size: 14px;
|
|
|
}
|
|
|
- .message{
|
|
|
- width: calc(100% - 90px);
|
|
|
- color: black;
|
|
|
- .title{
|
|
|
- width: 100%;
|
|
|
- overflow: hidden;
|
|
|
- white-space: nowrap;
|
|
|
- text-overflow: ellipsis;
|
|
|
- font-size: 14px;
|
|
|
- }
|
|
|
- .type{
|
|
|
- font-size: 14px;
|
|
|
- }
|
|
|
- .serveTime{
|
|
|
- font-size: 12px;
|
|
|
- }
|
|
|
+
|
|
|
+ .type {
|
|
|
+ font-size: 14px;
|
|
|
}
|
|
|
+
|
|
|
+ .serveTime {
|
|
|
+ font-size: 12px;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
-.connectMsg{
|
|
|
- width: 100%;
|
|
|
- color: black;
|
|
|
- font-size: 14px;
|
|
|
+
|
|
|
+.connectMsg {
|
|
|
+ width: 100%;
|
|
|
+ color: black;
|
|
|
+ font-size: 14px;
|
|
|
}
|
|
|
-.connectAddress{
|
|
|
- overflow: hidden;
|
|
|
- white-space: nowrap;
|
|
|
- text-overflow: ellipsis;
|
|
|
+
|
|
|
+.connectAddress {
|
|
|
+ overflow: hidden;
|
|
|
+ white-space: nowrap;
|
|
|
+ text-overflow: ellipsis;
|
|
|
}
|
|
|
|
|
|
-.pagination{
|
|
|
- margin-top: 20px;
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- justify-content: flex-end;
|
|
|
+.pagination {
|
|
|
+ margin-top: 20px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: flex-end;
|
|
|
}
|
|
|
</style>
|