|
@@ -0,0 +1,1219 @@
|
|
|
|
|
+<template>
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <Card :bordered="false" dis-hover class="mt15">
|
|
|
|
|
+ <Form ref="orderData" :model="orderData" :label-width="labelWidth" :label-position="labelPosition"
|
|
|
|
|
+ class="tabform" @submit.native.prevent>
|
|
|
|
|
+ <div class="acea-row">
|
|
|
|
|
+ <FormItem label="时间选择:">
|
|
|
|
|
+ <DatePicker :editable="false" :clearable="true" @on-change="onchangeTime" :value="timeVal"
|
|
|
|
|
+ format="yyyy/MM/dd HH:mm:ss" type="datetimerange" placement="bottom-start"
|
|
|
|
|
+ placeholder="自定义时间" style="width: 250px" class="mr30" :options="options"></DatePicker>
|
|
|
|
|
+ </FormItem>
|
|
|
|
|
+ <!-- <FormItem label="订单类型:">
|
|
|
|
|
+ <Select v-model="orderData.type" style="width: 250px" class="mr30" clearable
|
|
|
|
|
+ @on-change="userSearchs" placeholder="全部订单">
|
|
|
|
|
+ <Option value="">全部订单</Option>
|
|
|
|
|
+ <Option value="0">普通订单</Option>
|
|
|
|
|
+ <Option value="1">秒杀订单</Option>
|
|
|
|
|
+ <Option value="2">砍价订单</Option>
|
|
|
|
|
+ <Option value="3">拼团订单</Option>
|
|
|
|
|
+ <Option value="4">套餐订单</Option>
|
|
|
|
|
+ <Option value="9">新人订单</Option>
|
|
|
|
|
+ </Select>
|
|
|
|
|
+ </FormItem> -->
|
|
|
|
|
+ <FormItem label="订单审核:">
|
|
|
|
|
+ <Select v-model="orderData.pay_status" style="width: 250px" class="mr30" clearable
|
|
|
|
|
+ @on-change="userSearchs" placeholder="全部订单">
|
|
|
|
|
+ <Option value="-1">全部订单</Option>
|
|
|
|
|
+ <Option value="0">待审核</Option>
|
|
|
|
|
+ <Option value="1">已通过</Option>
|
|
|
|
|
+ <Option value="2">已拒绝</Option>
|
|
|
|
|
+ </Select>
|
|
|
|
|
+ </FormItem>
|
|
|
|
|
+ <FormItem label="凭证:">
|
|
|
|
|
+ <Select v-model="orderData.pay_img_status" style="width: 250px" class="mr30" clearable
|
|
|
|
|
+ @on-change="userSearchs" placeholder="全部订单">
|
|
|
|
|
+ <Option :value="0">没有凭证</Option>
|
|
|
|
|
+ <Option :value="1">有凭证</Option>
|
|
|
|
|
+ </Select>
|
|
|
|
|
+ </FormItem>
|
|
|
|
|
+ <FormItem label="订单类型:">
|
|
|
|
|
+ <Select v-model="orderData.is_level_order" style="width: 250px" class="mr30" clearable
|
|
|
|
|
+ @on-change="userSearchs" placeholder="全部订单">
|
|
|
|
|
+ <Option :value="-1">全部</Option>
|
|
|
|
|
+ <Option :value="1">升级订单</Option>
|
|
|
|
|
+ <Option :value="2">普通订单</Option>
|
|
|
|
|
+ </Select>
|
|
|
|
|
+ </FormItem>
|
|
|
|
|
+ <FormItem label="订单状态:">
|
|
|
|
|
+ <Select v-model="orderData.status" style="width: 250px" class="mr30" clearable
|
|
|
|
|
+ @on-change="userSearchs" placeholder="全部">
|
|
|
|
|
+ <Option value="">全部</Option>
|
|
|
|
|
+ <Option value="0">待确认</Option>
|
|
|
|
|
+ <Option value="1">未发货</Option>
|
|
|
|
|
+ <Option value="2">待收货</Option>
|
|
|
|
|
+ <Option value="3">待评价</Option>
|
|
|
|
|
+ <Option value="4">交易完成</Option>
|
|
|
|
|
+ <Option value="-4">已删除</Option>
|
|
|
|
|
+ </Select>
|
|
|
|
|
+ </FormItem>
|
|
|
|
|
+ <FormItem label="支付方式:">
|
|
|
|
|
+ <Select v-model="orderData.pay_type" clearable class="mr30" style="width: 250px"
|
|
|
|
|
+ @on-change="userSearchs" placeholder="全部">
|
|
|
|
|
+ <Option v-for="item in payList" :value="item.val" :key="item.id">{{
|
|
|
|
|
+ item.label
|
|
|
|
|
+ }}</Option>
|
|
|
|
|
+ </Select>
|
|
|
|
|
+ </FormItem>
|
|
|
|
|
+ <FormItem label="订单搜索:">
|
|
|
|
|
+ <Input v-model="orderData.real_name" placeholder="请输入" element-id="name" clearable
|
|
|
|
|
+ style="width:250px;" maxlength="20">
|
|
|
|
|
+ <Select v-model="orderData.field_key" slot="prepend" style="width:80px;" default-label="全部">
|
|
|
|
|
+ <Option value="all">全部</Option>
|
|
|
|
|
+ <Option value="order_id">订单号</Option>
|
|
|
|
|
+ <Option value="uid">用户UID</Option>
|
|
|
|
|
+ <Option value="real_name">用户姓名</Option>
|
|
|
|
|
+ <Option value="user_phone">用户电话</Option>
|
|
|
|
|
+ <Option value="title">商品名称</Option>
|
|
|
|
|
+ <Option value="total_num">商品件数</Option>
|
|
|
|
|
+ </Select>
|
|
|
|
|
+ </Input>
|
|
|
|
|
+ </FormItem>
|
|
|
|
|
+ <Button type="primary" @click="userSearchs" class="ml20">查询</Button>
|
|
|
|
|
+ <Button @click="reset" class="ml20">重置</Button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </Form>
|
|
|
|
|
+ </Card>
|
|
|
|
|
+ <Card :bordered="false" dis-hover class="mt15">
|
|
|
|
|
+ <div class="acea-row row-between">
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <Tooltip content="本页至少选中一项" :disabled="!!checkUidList.length && isAll==0">
|
|
|
|
|
+ <Button class="mr10" type="primary" :disabled="!checkUidList.length && isAll==0"
|
|
|
|
|
+ @click="allOrderChecked">批量审核</Button>
|
|
|
|
|
+ </Tooltip>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <vxe-table border="inner" ref="xTable" class="mt25" :loading="loading" row-id="id"
|
|
|
|
|
+ :expand-config="{accordion: true}" :checkbox-config="{reserve: true}" @checkbox-all="checkboxAll"
|
|
|
|
|
+ @checkbox-change="checkboxItem" :data="orderList">
|
|
|
|
|
+ <vxe-column type="" width="0"></vxe-column>
|
|
|
|
|
+ <vxe-column type="expand" width="35">
|
|
|
|
|
+ <template #content="{ row }">
|
|
|
|
|
+ <div class="tdinfo">
|
|
|
|
|
+ <Row class="expand-row">
|
|
|
|
|
+ <Col span="8">
|
|
|
|
|
+ <span class="expand-key">商品总价:</span>
|
|
|
|
|
+ <span class="expand-value" v-text="row.total_price"></span>
|
|
|
|
|
+ </Col>
|
|
|
|
|
+ <Col span="8">
|
|
|
|
|
+ <span class="expand-key">下单时间:</span>
|
|
|
|
|
+ <span class="expand-value" v-text="row.add_time"></span>
|
|
|
|
|
+ </Col>
|
|
|
|
|
+ <Col span="8">
|
|
|
|
|
+ <span class="expand-key">推广人:</span>
|
|
|
|
|
+ <span class="expand-value" v-text="row.spread_nickname?row.spread_nickname:'无'"></span>
|
|
|
|
|
+ </Col>
|
|
|
|
|
+ </Row>
|
|
|
|
|
+ <Row class="expand-row">
|
|
|
|
|
+ <Col span="8">
|
|
|
|
|
+ <span class="expand-key">用户备注:</span>
|
|
|
|
|
+ <span class="expand-value" v-text="row.mark?row.mark:'无'"></span>
|
|
|
|
|
+ </Col>
|
|
|
|
|
+ <Col span="8">
|
|
|
|
|
+ <span class="expand-key">商家备注:</span>
|
|
|
|
|
+ <span class="expand-value" v-text="row.remark?row.remark:'无'"></span>
|
|
|
|
|
+ </Col>
|
|
|
|
|
+ </Row>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </vxe-column>
|
|
|
|
|
+ <vxe-column type="checkbox" width="100">
|
|
|
|
|
+ <template #header>
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <Dropdown transfer @on-click="allPages">
|
|
|
|
|
+ <a href="javascript:void(0)" class="acea-row row-middle">
|
|
|
|
|
+ <span>全选({{isAll==1?(total-checkUidList.length):checkUidList.length}})</span>
|
|
|
|
|
+ <Icon type="ios-arrow-down"></Icon>
|
|
|
|
|
+ </a>
|
|
|
|
|
+ <template #list>
|
|
|
|
|
+ <DropdownMenu>
|
|
|
|
|
+ <DropdownItem name="0">当前页</DropdownItem>
|
|
|
|
|
+ <DropdownItem name="1">所有页</DropdownItem>
|
|
|
|
|
+ </DropdownMenu>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </Dropdown>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </vxe-column>
|
|
|
|
|
+ <vxe-column field="order_id" title="订单号" min-width="190">
|
|
|
|
|
+ <template v-slot="{ row }">
|
|
|
|
|
+ <Tooltip theme="dark" max-width="300" :delay="600" content="用户已删除"
|
|
|
|
|
+ v-if="row.is_del === 1 && row.delete_time == null">
|
|
|
|
|
+ <span style="color: #ed4014; display: block">{{row.order_id}}</span>
|
|
|
|
|
+ </Tooltip>
|
|
|
|
|
+ <span @click="changeMenu(row,'2')" v-else
|
|
|
|
|
+ style="color: #2D8cF0; display: block;cursor: pointer;">{{row.order_id}}</span>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </vxe-column>
|
|
|
|
|
+ <vxe-column field="info" title="商品信息" min-width="330">
|
|
|
|
|
+ <template v-slot="{ row }">
|
|
|
|
|
+ <Tooltip :transfer="true" theme="dark" max-width="300" :delay="600">
|
|
|
|
|
+ <div class="tabBox" v-for="(val, i) in row._info" :key="i">
|
|
|
|
|
+ <div class="tabBox_img" v-viewer>
|
|
|
|
|
+ <img v-lazy="
|
|
|
|
|
+ val.cart_info.productInfo.attrInfo
|
|
|
|
|
+ ? val.cart_info.productInfo.attrInfo.image
|
|
|
|
|
+ : val.cart_info.productInfo.image
|
|
|
|
|
+ " />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <span class="tabBox_tit line1">
|
|
|
|
|
+ <span class="font-color-red" v-if="val.cart_info.is_gift">赠品</span>
|
|
|
|
|
+ {{ val.cart_info.productInfo.store_name + " | "}}
|
|
|
|
|
+ {{val.cart_info.productInfo.attrInfo ? val.cart_info.productInfo.attrInfo.suk: ""}}
|
|
|
|
|
+ </span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div slot="content">
|
|
|
|
|
+ <div v-for="(val, i) in row._info" :key="i">
|
|
|
|
|
+ <p class="font-color-red" v-if="val.cart_info.is_gift">赠品</p>
|
|
|
|
|
+ <p>{{ val.cart_info.productInfo.store_name }}</p>
|
|
|
|
|
+ <p> {{val.cart_info.productInfo.attrInfo ? val.cart_info.productInfo.attrInfo.suk: ""}}
|
|
|
|
|
+ </p>
|
|
|
|
|
+ <p class="tabBox_pice">
|
|
|
|
|
+ {{ "¥" + val.cart_info.sum_price + " x " + val.cart_info.cart_num }}</p>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </Tooltip>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </vxe-column>
|
|
|
|
|
+ <vxe-column field="info" title="支付凭证" min-width="100">
|
|
|
|
|
+ <template v-slot="{ row }">
|
|
|
|
|
+ <div class="tabBox" v-if="row.pay_img.length>0">
|
|
|
|
|
+ <div class="tabBox_img" v-for="it in row.pay_img" v-viewer><img v-lazy="it" /></div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </vxe-column>
|
|
|
|
|
+ <vxe-column field="nickname" title="用户信息" min-width="130">
|
|
|
|
|
+ <template v-slot="{ row }">
|
|
|
|
|
+ <a @click="showUserInfo(row)">{{ row.nickname }}</a>
|
|
|
|
|
+ <span style="color: #ed4014;" v-if="row.delete_time != null"> (已注销)</span>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </vxe-column>
|
|
|
|
|
+ <!-- <vxe-column field="pink_name" title="订单类型" min-width="110"></vxe-column> -->
|
|
|
|
|
+ <vxe-column field="is_level_order" title="订单类型" min-width="100">
|
|
|
|
|
+ <template v-slot="{ row }">
|
|
|
|
|
+ <Tag color="default" size="medium" v-show="row.is_level_order == 2">普通订单</Tag>
|
|
|
|
|
+ <Tag color="green" size="medium" v-show="row.is_level_order == 1">升级订单</Tag>
|
|
|
|
|
+ <Tag color="default" size="medium" v-show="row.is_level_order == 0">普通订单</Tag>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </vxe-column>
|
|
|
|
|
+ <vxe-column field="pay_price" title="实际支付" min-width="90">
|
|
|
|
|
+ <template v-slot="{ row }">
|
|
|
|
|
+ <div>{{row.paid>0?row.pay_price:0}}</div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </vxe-column>
|
|
|
|
|
+
|
|
|
|
|
+ <vxe-column field="statusName" title="订单状态" min-width="100">
|
|
|
|
|
+ <template v-slot="{ row }">
|
|
|
|
|
+ <Tag color="default" size="medium" v-show="row.status == 3">{{row.status_name.status_name}}
|
|
|
|
|
+ </Tag>
|
|
|
|
|
+ <Tag color="orange" size="medium" v-show="row.status == 1 || row.status == 2"
|
|
|
|
|
+ v-html="row.status_name.status_name"></Tag>
|
|
|
|
|
+ <Tag color="red" size="medium" v-show="row.status == 0" v-html="row.status_name.status_name">
|
|
|
|
|
+ </Tag>
|
|
|
|
|
+ <Tag color="red" size="medium" v-show="row.status == 4">{{row.status_name.status_name}}</Tag>
|
|
|
|
|
+ <Tag color="red" size="medium" v-show="row.status == 5">{{row.status_name.status_name}}</Tag>
|
|
|
|
|
+ <Tag color="orange" size="medium" v-if="!row.is_all_refund && row.refund.length">部分退款中</Tag>
|
|
|
|
|
+ <Tag color="orange" size="medium"
|
|
|
|
|
+ v-if="row.is_all_refund && row.refund.length && row.refund_type != 6">退款中</Tag>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </vxe-column>
|
|
|
|
|
+ <vxe-column field="pay_type" title="支付状态" min-width="90">
|
|
|
|
|
+ <template v-slot="{ row }">
|
|
|
|
|
+ <div>{{row.paid==1?'已支付':'未支付'}}</div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </vxe-column>
|
|
|
|
|
+ <vxe-column field="pay_status" title="审核状态" min-width="90">
|
|
|
|
|
+ <template v-slot="{ row }">
|
|
|
|
|
+ <Tag color="orange" size="medium" v-show="row.pay_status==0" v-html="'待审核'"></Tag>
|
|
|
|
|
+ <Tag color="green" size="medium" v-show="row.pay_status==1" v-html="'已通过'"></Tag>
|
|
|
|
|
+ <Tag color="red" size="medium" v-show="row.pay_status==2" v-html="'未通过'"></Tag>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </vxe-column>
|
|
|
|
|
+ <vxe-column field="pay_type_name" title="支付方式" min-width="110"></vxe-column>
|
|
|
|
|
+ <vxe-column field="_pay_time" title="支付时间" min-width="130"></vxe-column>
|
|
|
|
|
+ <vxe-column field="action" title="操作" align="center" width="130" fixed="right">
|
|
|
|
|
+ <template v-slot="{ row }">
|
|
|
|
|
+ <a @click="changeMenu(row,'2')">详情</a>
|
|
|
|
|
+ <Divider type="vertical" />
|
|
|
|
|
+ <a @click="checkedSend(row)">审核</a>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </vxe-column>
|
|
|
|
|
+ </vxe-table>
|
|
|
|
|
+ <div class="acea-row row-right mt15">
|
|
|
|
|
+ <Page :total="total" :current="orderData.page" show-elevator show-total @on-change="pageChange"
|
|
|
|
|
+ :page-size="orderData.limit" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </Card>
|
|
|
|
|
+ <!-- 编辑 配送信息表单数据 退款 退积分 不退款-->
|
|
|
|
|
+ <edit-from ref="edits" :FromData="FromData" @submitFail="submitFail"></edit-from>
|
|
|
|
|
+ <!-- 详情 -->
|
|
|
|
|
+ <details-from ref="detailss" :orderDatalist="orderDatalist" :orderId="orderId" :row-active="rowActive"
|
|
|
|
|
+ :formType="1"></details-from>
|
|
|
|
|
+ <!-- 会员详情-->
|
|
|
|
|
+ <user-details ref="userDetails" fromType="order"></user-details>
|
|
|
|
|
+ <!-- 备注 -->
|
|
|
|
|
+ <order-remark ref="remarks" :orderId="orderId" @submitFail="submitFail"></order-remark>
|
|
|
|
|
+ <!-- 记录 -->
|
|
|
|
|
+ <order-record ref="record"></order-record>
|
|
|
|
|
+ <!-- 发送货 -->
|
|
|
|
|
+ <order-send ref="send" :orderId="orderId" @submitFail="submitFail">
|
|
|
|
|
+ </order-send>
|
|
|
|
|
+ <Modal v-model="manualModal" title="手动批量发货" @on-ok="manualModalOk" @on-cancel="manualModalCancel"
|
|
|
|
|
+ class-name="vertical-center-modal">
|
|
|
|
|
+ <Row type="flex">
|
|
|
|
|
+ <Col span="4">
|
|
|
|
|
+ <div style="line-height: 32px; text-align: right">文件:</div>
|
|
|
|
|
+ </Col>
|
|
|
|
|
+ <Col span="20">
|
|
|
|
|
+ <Upload ref="upload" :action="uploadAction" :headers="uploadHeaders" accept=".xlsx,.xls"
|
|
|
|
|
+ :format="['xlsx', 'xls']" :disabled="!!fileList.length" :on-success="uploadSuccess"
|
|
|
|
|
+ :on-remove="removeFile">
|
|
|
|
|
+ <Button icon="ios-cloud-upload-outline">上传文件</Button>
|
|
|
|
|
+ </Upload>
|
|
|
|
|
+ </Col>
|
|
|
|
|
+ </Row>
|
|
|
|
|
+ </Modal>
|
|
|
|
|
+ <!--订单核销模态框-->
|
|
|
|
|
+ <Modal v-model="modals2" title="订单核销" class="paymentFooter" scrollable width="400"
|
|
|
|
|
+ class-name="vertical-center-modal">
|
|
|
|
|
+ <Form ref="writeOffFrom" :model="writeOffFrom" :rules="writeOffRules" :label-position="labelPosition"
|
|
|
|
|
+ class="tabform" @submit.native.prevent>
|
|
|
|
|
+ <FormItem prop="code" label-for="code">
|
|
|
|
|
+ <Input search enter-button="验证" style="width: 100%" type="text" placeholder="请输入12位核销码"
|
|
|
|
|
+ @on-search="search('writeOffFrom')" v-model.number="writeOffFrom.code" number />
|
|
|
|
|
+ </FormItem>
|
|
|
|
|
+ </Form>
|
|
|
|
|
+ <div slot="footer">
|
|
|
|
|
+ <Button type="primary" @click="ok">立即核销</Button>
|
|
|
|
|
+ <Button @click="del('writeOffFrom')">取消</Button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </Modal>
|
|
|
|
|
+ <auto-send ref="sends" :selectArr="checkUidList" :isAll="isAll"></auto-send>
|
|
|
|
|
+ <queue-list ref="queue"></queue-list>
|
|
|
|
|
+ <Modal v-model="showSend" title="进货单审核" width="900">
|
|
|
|
|
+ <Form :label-width="labelWidth" :label-position="labelPosition" ref="showSend" :model="sendData"
|
|
|
|
|
+ class="tabform">
|
|
|
|
|
+ <FormItem label="支付凭证:">
|
|
|
|
|
+ <div class="alertflex" >
|
|
|
|
|
+
|
|
|
|
|
+ <div class="tabBox" v-for="it in actionSendData.pay_img" v-if="actionSendData.pay_img.length>0">
|
|
|
|
|
+ <div class="alert_image" v-viewer><img v-lazy="it" /></div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div v-else>
|
|
|
|
|
+ 无凭证
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </FormItem>
|
|
|
|
|
+ <FormItem label="备注:">
|
|
|
|
|
+ <Input v-model="sendData.mark" placeholder="备注" element-id="name" clearable style="width:500px;"
|
|
|
|
|
+ maxlength="20">
|
|
|
|
|
+ </Input>
|
|
|
|
|
+ </FormItem>
|
|
|
|
|
+ </Form>
|
|
|
|
|
+ <div slot="footer">
|
|
|
|
|
+ <Button @click="sendOrderChecked(2)">拒绝</Button>
|
|
|
|
|
+ <Button type="primary" @click="sendOrderChecked(1)">通过</Button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </Modal>
|
|
|
|
|
+ </div>
|
|
|
|
|
+</template>
|
|
|
|
|
+
|
|
|
|
|
+<script>
|
|
|
|
|
+ import {
|
|
|
|
|
+ mapState
|
|
|
|
|
+ } from "vuex";
|
|
|
|
|
+ import editFrom from "@/components/from/from";
|
|
|
|
|
+ import orderSend from "./components/orderSend";
|
|
|
|
|
+ import detailsFrom from "./components/orderDetails";
|
|
|
|
|
+ import orderRecord from "./components/orderRecord";
|
|
|
|
|
+ import orderRemark from "./components/orderRemark";
|
|
|
|
|
+ import userDetails from "@/components/userDetails/userDetails";
|
|
|
|
|
+ import autoSend from "./components/autoSend";
|
|
|
|
|
+ import queueList from "./components/queueList";
|
|
|
|
|
+ import timeOptions from "@/utils/timeOptions";
|
|
|
|
|
+ import util from "@/libs/util";
|
|
|
|
|
+ import Setting from "@/setting";
|
|
|
|
|
+ import exportExcel from "@/utils/newToExcel.js";
|
|
|
|
|
+ import expandRow from "./components/tableExpand.vue";
|
|
|
|
|
+ import {
|
|
|
|
|
+ examine_lst,
|
|
|
|
|
+ getOrdeDatas,
|
|
|
|
|
+ getDataInfo,
|
|
|
|
|
+ getRefundFrom,
|
|
|
|
|
+ refundIntegral,
|
|
|
|
|
+ getnoRefund,
|
|
|
|
|
+ getDistribution,
|
|
|
|
|
+ writeUpdate,
|
|
|
|
|
+ storeOrderApi,
|
|
|
|
|
+ handBatchDelivery,
|
|
|
|
|
+ putWrite,
|
|
|
|
|
+ exportExpressList,
|
|
|
|
|
+ examine_status_order
|
|
|
|
|
+ } from "@/api/order";
|
|
|
|
|
+ export default {
|
|
|
|
|
+ name: "index",
|
|
|
|
|
+ components: {
|
|
|
|
|
+ editFrom,
|
|
|
|
|
+ detailsFrom,
|
|
|
|
|
+ orderRecord,
|
|
|
|
|
+ orderRemark,
|
|
|
|
|
+ orderSend,
|
|
|
|
|
+ userDetails,
|
|
|
|
|
+ autoSend,
|
|
|
|
|
+ queueList
|
|
|
|
|
+ },
|
|
|
|
|
+ data() {
|
|
|
|
|
+ const codeNum = (rule, value, callback) => {
|
|
|
|
|
+ if (!value) {
|
|
|
|
|
+ return callback(new Error("请填写核销码"));
|
|
|
|
|
+ }
|
|
|
|
|
+ // 模拟异步验证效果
|
|
|
|
|
+ if (!Number.isInteger(value)) {
|
|
|
|
|
+ callback(new Error("请填写12位数字"));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ const reg = /\b\d{12}\b/;
|
|
|
|
|
+ if (!reg.test(value)) {
|
|
|
|
|
+ callback(new Error("请填写12位数字"));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ callback();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ };
|
|
|
|
|
+ return {
|
|
|
|
|
+ showSend: false, //显示审核弹窗
|
|
|
|
|
+ actionSendData: {}, //保存点击的商品
|
|
|
|
|
+ sendData: {
|
|
|
|
|
+ id: '',
|
|
|
|
|
+ status: "",
|
|
|
|
|
+ mark: '',
|
|
|
|
|
+ },
|
|
|
|
|
+ isAll: 0,
|
|
|
|
|
+ isCheckBox: false,
|
|
|
|
|
+ checkUidList: [],
|
|
|
|
|
+ manualModal: false,
|
|
|
|
|
+ timeVal: [],
|
|
|
|
|
+ options: timeOptions,
|
|
|
|
|
+ payList: [{
|
|
|
|
|
+ label: "全部",
|
|
|
|
|
+ val: ""
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: "微信支付",
|
|
|
|
|
+ val: "1"
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: "支付宝支付",
|
|
|
|
|
+ val: "4"
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: "余额支付",
|
|
|
|
|
+ val: "2"
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: "线下支付",
|
|
|
|
|
+ val: "3"
|
|
|
|
|
+ },
|
|
|
|
|
+ ],
|
|
|
|
|
+ // 订单列表
|
|
|
|
|
+ orderData: {
|
|
|
|
|
+ page: 1,
|
|
|
|
|
+ limit: 10,
|
|
|
|
|
+ type: "",
|
|
|
|
|
+ status: "",
|
|
|
|
|
+ data: "",
|
|
|
|
|
+ real_name: "",
|
|
|
|
|
+ pay_type: "",
|
|
|
|
|
+ field_key: "all",
|
|
|
|
|
+ pay_status: "-1",
|
|
|
|
|
+ pay_img_status:1,
|
|
|
|
|
+ is_level_order:-1,
|
|
|
|
|
+ },
|
|
|
|
|
+ orderList: [],
|
|
|
|
|
+ total: 0,
|
|
|
|
|
+ loading: false,
|
|
|
|
|
+ orderConNum: 0,
|
|
|
|
|
+ orderConId: 0,
|
|
|
|
|
+ orderId: 0,
|
|
|
|
|
+ delfromData: {},
|
|
|
|
|
+ rowActive: {},
|
|
|
|
|
+ orderDatalist: null,
|
|
|
|
|
+ FromData: null,
|
|
|
|
|
+ file: "",
|
|
|
|
|
+ uploadAction: `${Setting.apiBaseURL}/file/upload/1`,
|
|
|
|
|
+ uploadHeaders: {},
|
|
|
|
|
+ fileList: [],
|
|
|
|
|
+ modals2: false,
|
|
|
|
|
+ writeOffRules: {
|
|
|
|
|
+ code: [{
|
|
|
|
|
+ validator: codeNum,
|
|
|
|
|
+ trigger: "blur",
|
|
|
|
|
+ required: true
|
|
|
|
|
+ }],
|
|
|
|
|
+ },
|
|
|
|
|
+ writeOffFrom: {
|
|
|
|
|
+ code: "",
|
|
|
|
|
+ confirm: 0,
|
|
|
|
|
+ },
|
|
|
|
|
+ exportListOn: 0,
|
|
|
|
|
+ exportList: [{
|
|
|
|
|
+ name: "1",
|
|
|
|
|
+ label: "导出发货单",
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ name: "0",
|
|
|
|
|
+ label: "导出订单",
|
|
|
|
|
+ },
|
|
|
|
|
+ ],
|
|
|
|
|
+ };
|
|
|
|
|
+ },
|
|
|
|
|
+ watch: {
|
|
|
|
|
+ $route() {
|
|
|
|
|
+ if (this.$route.fullPath === `${Setting.roterPre}/order/list?type=7&status=1`) {
|
|
|
|
|
+ this.getPath();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ computed: {
|
|
|
|
|
+ ...mapState("store/layout", ["isMobile"]),
|
|
|
|
|
+ labelWidth() {
|
|
|
|
|
+ return this.isMobile ? undefined : 80;
|
|
|
|
|
+ },
|
|
|
|
|
+ labelPosition() {
|
|
|
|
|
+ return this.isMobile ? "top" : "right";
|
|
|
|
|
+ },
|
|
|
|
|
+ },
|
|
|
|
|
+ created() {
|
|
|
|
|
+ this.getToken();
|
|
|
|
|
+ if (this.$route.fullPath === `${Setting.roterPre}/order/list?type=7&status=1`) {
|
|
|
|
|
+ this.getPath();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ mounted() {
|
|
|
|
|
+
|
|
|
|
|
+ },
|
|
|
|
|
+ methods: {
|
|
|
|
|
+ allOrderChecked(){
|
|
|
|
|
+ if (this.checkUidList.length === 0 && this.isAll == 0) {
|
|
|
|
|
+ return this.$Message.error('请先选择删除的订单!')
|
|
|
|
|
+ }
|
|
|
|
|
+ let idss = {
|
|
|
|
|
+ all: this.isAll,
|
|
|
|
|
+ ids: this.checkUidList,
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ this.sendData.id=this.checkUidList.join(',');
|
|
|
|
|
+ this.sendData.status =1
|
|
|
|
|
+ let delfromData = {
|
|
|
|
|
+ title: "审核通过订单",
|
|
|
|
|
+ url: `/order/examine`,
|
|
|
|
|
+ method: "post",
|
|
|
|
|
+ ids: this.sendData,
|
|
|
|
|
+ };
|
|
|
|
|
+ this.$modalSure(delfromData).then((res) => {
|
|
|
|
|
+ this.$Message.success(res.msg);
|
|
|
|
|
+ this.allReset();
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ }).catch((res) => {
|
|
|
|
|
+ this.$Message.error(res.msg);
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ // 通过拒绝审核
|
|
|
|
|
+ sendOrderChecked(type) {
|
|
|
|
|
+ if (type == 2 && this.sendData.mark == "") {
|
|
|
|
|
+ this.$Message.error("请填写拒绝原因");
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ this.sendData.status = type;
|
|
|
|
|
+ examine_status_order(this.sendData)
|
|
|
|
|
+ .then((res) => {
|
|
|
|
|
+ this.$Message.success(res.msg);
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ this.showSend = false;
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch((res) => {
|
|
|
|
|
+ this.$Message.error(res.msg);
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ },
|
|
|
|
|
+ // 点击显示弹窗
|
|
|
|
|
+ checkedSend(item) {
|
|
|
|
|
+ this.showSend = true;
|
|
|
|
|
+ this.actionSendData = item;
|
|
|
|
|
+ this.sendData.id = item.id;
|
|
|
|
|
+ },
|
|
|
|
|
+ //跳转刷新
|
|
|
|
|
+ getPath() {
|
|
|
|
|
+ this.orderData.page = 1;
|
|
|
|
|
+ this.orderData.status = this.$route.query.status;
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ },
|
|
|
|
|
+ allReset() {
|
|
|
|
|
+ this.isAll = 0;
|
|
|
|
|
+ this.isCheckBox = false;
|
|
|
|
|
+ this.$refs.xTable.setAllCheckboxRow(false);
|
|
|
|
|
+ this.checkUidList = [];
|
|
|
|
|
+ },
|
|
|
|
|
+ allPages(e) {
|
|
|
|
|
+ this.isAll = e;
|
|
|
|
|
+ if (e == 0) {
|
|
|
|
|
+ this.$refs.xTable.toggleAllCheckboxRow();
|
|
|
|
|
+ // this.checkboxAll();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ if (!this.isCheckBox) {
|
|
|
|
|
+ this.$refs.xTable.setAllCheckboxRow(true);
|
|
|
|
|
+ this.isCheckBox = true;
|
|
|
|
|
+ this.isAll = 1;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.$refs.xTable.setAllCheckboxRow(false);
|
|
|
|
|
+ this.isCheckBox = false;
|
|
|
|
|
+ this.isAll = 0;
|
|
|
|
|
+ }
|
|
|
|
|
+ this.checkUidList = []
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ checkboxItem(e) {
|
|
|
|
|
+ let id = parseInt(e.rowid);
|
|
|
|
|
+ let index = this.checkUidList.indexOf(id);
|
|
|
|
|
+ if (index !== -1) {
|
|
|
|
|
+ this.checkUidList = this.checkUidList.filter((item) => item !== id);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.checkUidList.push(id);
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ checkboxAll() {
|
|
|
|
|
+ // 获取选中当前值
|
|
|
|
|
+ let obj2 = this.$refs.xTable.getCheckboxRecords(true);
|
|
|
|
|
+ // 获取之前选中值
|
|
|
|
|
+ let obj = this.$refs.xTable.getCheckboxReserveRecords(true);
|
|
|
|
|
+ if (this.isAll == 0 && this.checkUidList.length <= obj.length && !this.isCheckBox) {
|
|
|
|
|
+ obj = [];
|
|
|
|
|
+ }
|
|
|
|
|
+ obj = obj.concat(obj2);
|
|
|
|
|
+ let ids = [];
|
|
|
|
|
+ obj.forEach((item) => {
|
|
|
|
|
+ ids.push(parseInt(item.id))
|
|
|
|
|
+ })
|
|
|
|
|
+ this.checkUidList = ids;
|
|
|
|
|
+ if (!obj2.length) {
|
|
|
|
|
+ this.isCheckBox = false;
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ printOreder() {
|
|
|
|
|
+ if (this.checkUidList.length > 10 || (this.isAll == 1 && this.total > 10)) {
|
|
|
|
|
+ return this.$Message.error('最多批量打印10个订单')
|
|
|
|
|
+ }
|
|
|
|
|
+ let ids = []
|
|
|
|
|
+ if (this.isAll == 1 && this.total <= 10) {
|
|
|
|
|
+ this.orderList.forEach(item => {
|
|
|
|
|
+ ids.push(parseInt(item.id))
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+ let pathInfo = this.$router.resolve({
|
|
|
|
|
+ path: `${Setting.roterPre}/order/distribution`,
|
|
|
|
|
+ query: {
|
|
|
|
|
+ id: this.isAll == 1 ? ids.join(',') : this.checkUidList.join(','),
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ window.open(pathInfo.href, '_blank');
|
|
|
|
|
+ },
|
|
|
|
|
+ reset() {
|
|
|
|
|
+ this.timeVal = [];
|
|
|
|
|
+ this.orderData = {
|
|
|
|
|
+ page: 1,
|
|
|
|
|
+ limit: 10,
|
|
|
|
|
+ type: "",
|
|
|
|
|
+ status: "",
|
|
|
|
|
+ data: "",
|
|
|
|
|
+ real_name: "",
|
|
|
|
|
+ pay_type: "",
|
|
|
|
|
+ field_key: "all",
|
|
|
|
|
+ pay_status: "-1",
|
|
|
|
|
+ pay_img_status:1,
|
|
|
|
|
+ is_level_order:-1,
|
|
|
|
|
+ };
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ },
|
|
|
|
|
+ queuemModal() {
|
|
|
|
|
+ this.$refs.queue.modal = true;
|
|
|
|
|
+ },
|
|
|
|
|
+ delAll() {
|
|
|
|
|
+ if (this.checkUidList.length === 0 && this.isAll == 0) {
|
|
|
|
|
+ return this.$Message.error('请先选择删除的订单!')
|
|
|
|
|
+ }
|
|
|
|
|
+ let idss = {
|
|
|
|
|
+ all: this.isAll,
|
|
|
|
|
+ ids: this.checkUidList,
|
|
|
|
|
+ }
|
|
|
|
|
+ let delfromData = {
|
|
|
|
|
+ title: "删除订单",
|
|
|
|
|
+ url: `/order/dels`,
|
|
|
|
|
+ method: "post",
|
|
|
|
|
+ ids: idss,
|
|
|
|
|
+ };
|
|
|
|
|
+ this.$modalSure(delfromData).then((res) => {
|
|
|
|
|
+ this.$Message.success(res.msg);
|
|
|
|
|
+ this.allReset();
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ }).catch((res) => {
|
|
|
|
|
+ this.$Message.error(res.msg);
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ onAuto() {
|
|
|
|
|
+ this.$refs.sends.modals = true;
|
|
|
|
|
+ this.$refs.sends.getList();
|
|
|
|
|
+ this.$refs.sends.getDeliveryList();
|
|
|
|
|
+ },
|
|
|
|
|
+ // 订单导出
|
|
|
|
|
+ async exports(value) {
|
|
|
|
|
+ this.exportListOn = this.exportList.findIndex(
|
|
|
|
|
+ (item) => item.name === value
|
|
|
|
|
+ );
|
|
|
|
|
+ let [th, filekey, data, fileName] = [
|
|
|
|
|
+ [],
|
|
|
|
|
+ [],
|
|
|
|
|
+ [], ""
|
|
|
|
|
+ ];
|
|
|
|
|
+ let excelData = JSON.parse(JSON.stringify(this.orderData));
|
|
|
|
|
+ excelData.page = 1;
|
|
|
|
|
+ excelData.type = value;
|
|
|
|
|
+ excelData.ids = this.checkUidList.join();
|
|
|
|
|
+ for (let i = 0; i < excelData.page + 1; i++) {
|
|
|
|
|
+ let lebData = await this.downOrderData(excelData);
|
|
|
|
|
+ if (!fileName) fileName = lebData.filename;
|
|
|
|
|
+ if (!filekey.length) {
|
|
|
|
|
+ filekey = lebData.filekey;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!th.length) th = lebData.header;
|
|
|
|
|
+ if (lebData.export.length) {
|
|
|
|
|
+ data = data.concat(lebData.export);
|
|
|
|
|
+ excelData.page++;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ exportExcel(th, filekey, fileName, data);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ downOrderData(excelData) {
|
|
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
|
|
+ storeOrderApi(excelData).then((res) => {
|
|
|
|
|
+ return resolve(res.data);
|
|
|
|
|
+ });
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ // 订单核销
|
|
|
|
|
+ writeOff() {
|
|
|
|
|
+ this.modals2 = true;
|
|
|
|
|
+ },
|
|
|
|
|
+ // 验证
|
|
|
|
|
+ search(name) {
|
|
|
|
|
+ this.$refs[name].validate((valid) => {
|
|
|
|
|
+ if (valid) {
|
|
|
|
|
+ this.writeOffFrom.confirm = 0;
|
|
|
|
|
+ putWrite(this.writeOffFrom)
|
|
|
|
|
+ .then(async (res) => {
|
|
|
|
|
+ if (res.status === 200) {
|
|
|
|
|
+ this.$Message.success(res.msg);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.$Message.error(res.msg);
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch((res) => {
|
|
|
|
|
+ this.$Message.error(res.msg);
|
|
|
|
|
+ });
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.$Message.error("请填写正确的核销码");
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ // 订单核销
|
|
|
|
|
+ ok() {
|
|
|
|
|
+ if (!this.writeOffFrom.code) {
|
|
|
|
|
+ this.$Message.warning("请先验证订单!");
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.writeOffFrom.confirm = 1;
|
|
|
|
|
+ putWrite(this.writeOffFrom)
|
|
|
|
|
+ .then(async (res) => {
|
|
|
|
|
+ if (res.status === 200) {
|
|
|
|
|
+ this.$Message.success(res.msg);
|
|
|
|
|
+ this.modals2 = false;
|
|
|
|
|
+ this.$refs[name].resetFields();
|
|
|
|
|
+ this.getList()
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.$Message.error(res.msg);
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch((res) => {
|
|
|
|
|
+ this.$Message.error(res.msg);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ del(name) {
|
|
|
|
|
+ this.modals2 = false;
|
|
|
|
|
+ this.writeOffFrom.confirm = 0;
|
|
|
|
|
+ this.$refs[name].resetFields();
|
|
|
|
|
+ },
|
|
|
|
|
+ // 上传头部token
|
|
|
|
|
+ getToken() {
|
|
|
|
|
+ this.uploadHeaders["Authori-zation"] = "Bearer " + util.cookies.get("token");
|
|
|
|
|
+ },
|
|
|
|
|
+ // 上传成功
|
|
|
|
|
+ uploadSuccess(res, file, fileList) {
|
|
|
|
|
+ if (res.status === 200) {
|
|
|
|
|
+ this.$Message.success(res.msg);
|
|
|
|
|
+ this.file = res.data.src;
|
|
|
|
|
+ this.fileList = fileList;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.$Message.error(res.msg);
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ //移除文件
|
|
|
|
|
+ removeFile(file, fileList) {
|
|
|
|
|
+ this.file = "";
|
|
|
|
|
+ this.fileList = fileList;
|
|
|
|
|
+ },
|
|
|
|
|
+ // 下载物流公司对照表
|
|
|
|
|
+ async getExpressList() {
|
|
|
|
|
+ let [th, filekey, data, fileName] = [
|
|
|
|
|
+ [],
|
|
|
|
|
+ [],
|
|
|
|
|
+ [], ""
|
|
|
|
|
+ ];
|
|
|
|
|
+ let lebData = await this.getExcelData();
|
|
|
|
|
+ if (!fileName) fileName = lebData.filename;
|
|
|
|
|
+ if (!filekey.length) {
|
|
|
|
|
+ filekey = lebData.filekey;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!th.length) th = lebData.header;
|
|
|
|
|
+ data = lebData.export;
|
|
|
|
|
+ exportExcel(th, filekey, fileName, data);
|
|
|
|
|
+ },
|
|
|
|
|
+ getExcelData() {
|
|
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
|
|
+ exportExpressList().then((res) => {
|
|
|
|
|
+ return resolve(res.data);
|
|
|
|
|
+ });
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ // 手动批量发货-确定
|
|
|
|
|
+ manualModalOk() {
|
|
|
|
|
+ this.$refs.upload.clearFiles();
|
|
|
|
|
+ handBatchDelivery({
|
|
|
|
|
+ file: this.file,
|
|
|
|
|
+ }).then((res) => {
|
|
|
|
|
+ this.$Message.success(res.msg);
|
|
|
|
|
+ this.fileList = [];
|
|
|
|
|
+ }).catch((err) => {
|
|
|
|
|
+ this.$Message.error(err.msg);
|
|
|
|
|
+ this.fileList = [];
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ // 手动批量发货-取消
|
|
|
|
|
+ manualModalCancel() {
|
|
|
|
|
+ this.fileList = [];
|
|
|
|
|
+ this.$refs.upload.clearFiles();
|
|
|
|
|
+ },
|
|
|
|
|
+ // 核销订单
|
|
|
|
|
+ bindWrite(row) {
|
|
|
|
|
+ let self = this;
|
|
|
|
|
+ this.$Modal.confirm({
|
|
|
|
|
+ title: "提示",
|
|
|
|
|
+ content: "确定要核销该订单吗?",
|
|
|
|
|
+ cancelText: "取消",
|
|
|
|
|
+ closable: true,
|
|
|
|
|
+ maskClosable: true,
|
|
|
|
|
+ onOk: function() {
|
|
|
|
|
+ writeUpdate(row.order_id).then((res) => {
|
|
|
|
|
+ self.$Message.success(res.msg);
|
|
|
|
|
+ self.getList();
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ onCancel: () => {},
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ // 配送信息表单数据
|
|
|
|
|
+ delivery(row, num) {
|
|
|
|
|
+ getDistribution(row.id).then(async (res) => {
|
|
|
|
|
+ this.orderConNum = num;
|
|
|
|
|
+ this.orderConId = row.pid;
|
|
|
|
|
+ this.FromData = res.data;
|
|
|
|
|
+ this.$refs.edits.modals = true;
|
|
|
|
|
+ if (num != 1) {
|
|
|
|
|
+ this.getData(this.orderId, 1);
|
|
|
|
|
+ }
|
|
|
|
|
+ }).catch((res) => {
|
|
|
|
|
+ this.$Message.error(res.msg);
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ // 编辑
|
|
|
|
|
+ edit(row) {
|
|
|
|
|
+ this.getOrderData(row.id);
|
|
|
|
|
+ },
|
|
|
|
|
+ // 获取编辑表单数据
|
|
|
|
|
+ getOrderData(id) {
|
|
|
|
|
+ getOrdeDatas(id).then(async (res) => {
|
|
|
|
|
+ if (res.data.status === false) {
|
|
|
|
|
+ return this.$authLapse(res.data);
|
|
|
|
|
+ }
|
|
|
|
|
+ this.$authLapse(res.data);
|
|
|
|
|
+ this.FromData = res.data;
|
|
|
|
|
+ this.$refs.edits.modals = true;
|
|
|
|
|
+ }).catch((res) => {
|
|
|
|
|
+ this.$Message.error(res.msg);
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ // 发送货
|
|
|
|
|
+ sendOrder(row, num) {
|
|
|
|
|
+ this.orderConId = row.pid;
|
|
|
|
|
+ this.orderConNum = num;
|
|
|
|
|
+ this.$store.commit("store/order/setSplitOrder", row.total_num);
|
|
|
|
|
+ this.$refs.send.modals = true;
|
|
|
|
|
+ this.orderId = row.id;
|
|
|
|
|
+ this.$refs.send.getList();
|
|
|
|
|
+ this.$refs.send.getDeliveryList();
|
|
|
|
|
+ this.$nextTick((e) => {
|
|
|
|
|
+ this.$refs.send.getCartInfo(row._status, row.id);
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ // 修改成功
|
|
|
|
|
+ submitFail() {
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ if (this.orderConNum != 1) {
|
|
|
|
|
+ this.getData(this.orderId, 1);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.$refs.detailss.getSplitOrder(this.orderConId);
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ // 操作
|
|
|
|
|
+ changeMenu(row, name, num) {
|
|
|
|
|
+ this.orderId = row.id;
|
|
|
|
|
+ this.orderConId = row.pid > 0 ? row.pid : row.id;
|
|
|
|
|
+ this.orderConNum = num;
|
|
|
|
|
+ switch (name) {
|
|
|
|
|
+ case "1":
|
|
|
|
|
+ this.delfromData = {
|
|
|
|
|
+ title: "修改立即支付",
|
|
|
|
|
+ url: `/order/pay_offline/${row.id}`,
|
|
|
|
|
+ method: "post",
|
|
|
|
|
+ ids: "",
|
|
|
|
|
+ };
|
|
|
|
|
+ this.$modalSure(this.delfromData)
|
|
|
|
|
+ .then((res) => {
|
|
|
|
|
+ this.$Message.success(res.msg);
|
|
|
|
|
+ this.getData(row.id, 1);
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch((res) => {
|
|
|
|
|
+ this.$Message.error(res.msg);
|
|
|
|
|
+ });
|
|
|
|
|
+ break;
|
|
|
|
|
+ case "2":
|
|
|
|
|
+ this.rowActive = row;
|
|
|
|
|
+ this.getData(row.id);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case "3":
|
|
|
|
|
+ this.$refs.record.modals = true;
|
|
|
|
|
+ this.$refs.record.getList(row.id);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case "4":
|
|
|
|
|
+ this.$refs.remarks.formValidate.remark = row.remark;
|
|
|
|
|
+ this.$refs.remarks.modals = true;
|
|
|
|
|
+ break;
|
|
|
|
|
+ case "5":
|
|
|
|
|
+ this.getOnlyRefundData(row.id, row.refund_type);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case "55":
|
|
|
|
|
+ this.getRefundData(row.id, row.refund_type);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case "6":
|
|
|
|
|
+ this.getRefundIntegral(row.id);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case "7":
|
|
|
|
|
+ this.getNoRefundData(row.id);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case "8":
|
|
|
|
|
+ this.delfromData = {
|
|
|
|
|
+ title: "修改确认收货",
|
|
|
|
|
+ url: `/order/take/${row.id}`,
|
|
|
|
|
+ method: "put",
|
|
|
|
|
+ ids: "",
|
|
|
|
|
+ };
|
|
|
|
|
+ this.$modalSure(this.delfromData)
|
|
|
|
|
+ .then((res) => {
|
|
|
|
|
+ this.$Message.success(res.msg);
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ if (num) {
|
|
|
|
|
+ this.$refs.detailss.getSplitOrder(row.pid)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.getData(row.id, 1);
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch((res) => {
|
|
|
|
|
+ this.$Message.error(res.msg);
|
|
|
|
|
+ });
|
|
|
|
|
+ break;
|
|
|
|
|
+ case "10":
|
|
|
|
|
+ this.delfromData = {
|
|
|
|
|
+ title: "立即打印订单",
|
|
|
|
|
+ info: "您确认打印此订单吗?",
|
|
|
|
|
+ url: `/order/print/${row.id}`,
|
|
|
|
|
+ method: "get",
|
|
|
|
|
+ ids: "",
|
|
|
|
|
+ };
|
|
|
|
|
+ this.$modalSure(this.delfromData)
|
|
|
|
|
+ .then((res) => {
|
|
|
|
|
+ this.$Message.success(res.msg);
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch((res) => {
|
|
|
|
|
+ this.$Message.error(res.msg);
|
|
|
|
|
+ });
|
|
|
|
|
+ break;
|
|
|
|
|
+ case "11":
|
|
|
|
|
+ this.delfromData = {
|
|
|
|
|
+ title: "立即打印电子面单",
|
|
|
|
|
+ info: "您确认打印此电子面单吗?",
|
|
|
|
|
+ url: `/order/order_dump/${row.id}`,
|
|
|
|
|
+ method: "get",
|
|
|
|
|
+ ids: "",
|
|
|
|
|
+ };
|
|
|
|
|
+ this.$modalSure(this.delfromData)
|
|
|
|
|
+ .then((res) => {
|
|
|
|
|
+ this.$Message.success(res.msg);
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch((res) => {
|
|
|
|
|
+ this.$Message.error(res.msg);
|
|
|
|
|
+ });
|
|
|
|
|
+ break;
|
|
|
|
|
+ case "12":
|
|
|
|
|
+ let pathInfo = this.$router.resolve({
|
|
|
|
|
+ path: `${Setting.roterPre}/order/distribution`,
|
|
|
|
|
+ query: {
|
|
|
|
|
+ id: row.id
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ window.open(pathInfo.href, '_blank');
|
|
|
|
|
+ break;
|
|
|
|
|
+ default:
|
|
|
|
|
+ this.delfromData = {
|
|
|
|
|
+ title: "删除订单",
|
|
|
|
|
+ url: `/order/del/${row.id}`,
|
|
|
|
|
+ method: "DELETE",
|
|
|
|
|
+ ids: "",
|
|
|
|
|
+ };
|
|
|
|
|
+ this.delOrder(row, this.delfromData);
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ // 获取详情表单数据
|
|
|
|
|
+ getData(id, type) {
|
|
|
|
|
+ getDataInfo(id)
|
|
|
|
|
+ .then(async (res) => {
|
|
|
|
|
+ if (!type) {
|
|
|
|
|
+ this.$refs.detailss.modals = true;
|
|
|
|
|
+ }
|
|
|
|
|
+ this.$refs.detailss.activeName = 'detail';
|
|
|
|
|
+ this.orderDatalist = res.data;
|
|
|
|
|
+ if (this.orderDatalist.orderInfo.refund_reason_wap_img) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ this.orderDatalist.orderInfo.refund_reason_wap_img = JSON.parse(
|
|
|
|
|
+ this.orderDatalist.orderInfo.refund_reason_wap_img
|
|
|
|
|
+ );
|
|
|
|
|
+ } catch (e) {
|
|
|
|
|
+ this.orderDatalist.orderInfo.refund_reason_wap_img = [];
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch((res) => {
|
|
|
|
|
+ this.$Message.error(res.msg);
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ // 仅退款
|
|
|
|
|
+ getOnlyRefundData(id, refund_type) {
|
|
|
|
|
+ this.$modalForm(getRefundFrom(id)).then(() => {
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ this.$refs.detailss.modals = false;
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ // 退货退款
|
|
|
|
|
+ getRefundData(id, refund_type) {
|
|
|
|
|
+ this.delfromData = {
|
|
|
|
|
+ title: "是否立即退货退款",
|
|
|
|
|
+ url: `/refund/agree/${id}`,
|
|
|
|
|
+ method: "get",
|
|
|
|
|
+ };
|
|
|
|
|
+ this.$modalSure(this.delfromData)
|
|
|
|
|
+ .then((res) => {
|
|
|
|
|
+ this.$Message.success(res.msg);
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch((res) => {
|
|
|
|
|
+ this.$Message.error(res.msg);
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ // 获取退积分表单数据
|
|
|
|
|
+ getRefundIntegral(id) {
|
|
|
|
|
+ refundIntegral(id)
|
|
|
|
|
+ .then(async (res) => {
|
|
|
|
|
+ this.FromData = res.data;
|
|
|
|
|
+ this.$refs.edits.modals = true;
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch((res) => {
|
|
|
|
|
+ this.$Message.error(res.msg);
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ // 不退款表单数据
|
|
|
|
|
+ getNoRefundData(id) {
|
|
|
|
|
+ this.$modalForm(getnoRefund(id)).then(() => {
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ // 删除单条订单
|
|
|
|
|
+ delOrder(row, data) {
|
|
|
|
|
+ if (row.is_del === 1) {
|
|
|
|
|
+ this.$modalSure(data)
|
|
|
|
|
+ .then((res) => {
|
|
|
|
|
+ this.$Message.success(res.msg);
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ this.$refs.detailss.modals = false;
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch((res) => {
|
|
|
|
|
+ this.$Message.error(res.msg);
|
|
|
|
|
+ });
|
|
|
|
|
+ } else {
|
|
|
|
|
+ const title = "错误!";
|
|
|
|
|
+ const content =
|
|
|
|
|
+ "<p>您选择的的订单存在用户未删除的订单,无法删除用户未删除的订单!</p>";
|
|
|
|
|
+ this.$Modal.error({
|
|
|
|
|
+ title: title,
|
|
|
|
|
+ content: content,
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ getList() {
|
|
|
|
|
+ this.loading = true;
|
|
|
|
|
+ examine_lst(this.orderData).then(res => {
|
|
|
|
|
+ let data = res.data;
|
|
|
|
|
+ data.data.forEach((item) => {
|
|
|
|
|
+ if (item.id == this.orderId) {
|
|
|
|
|
+ this.rowActive = item;
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ this.$set(this, 'orderList', data.data);
|
|
|
|
|
+ this.total = res.data.count;
|
|
|
|
|
+ this.loading = false;
|
|
|
|
|
+ this.$nextTick(function() {
|
|
|
|
|
+ if (this.isAll == 1) {
|
|
|
|
|
+ if (this.isCheckBox) {
|
|
|
|
|
+ this.$refs.xTable.setAllCheckboxRow(true);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.$refs.xTable.setAllCheckboxRow(false);
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ let obj = this.$refs.xTable.getCheckboxReserveRecords(true);
|
|
|
|
|
+ if (!this.checkUidList.length || this.checkUidList.length <= obj.length) {
|
|
|
|
|
+ this.$refs.xTable.setAllCheckboxRow(false);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ }).catch(err => {
|
|
|
|
|
+ this.loading = false;
|
|
|
|
|
+ this.$Message.error(err.msg)
|
|
|
|
|
+ })
|
|
|
|
|
+ },
|
|
|
|
|
+ // 具体日期
|
|
|
|
|
+ onchangeTime(e) {
|
|
|
|
|
+ if (e[1].slice(-8) === "00:00:00") {
|
|
|
|
|
+ e[1] = e[1].slice(0, -8) + "23:59:59";
|
|
|
|
|
+ this.timeVal = e;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.timeVal = e;
|
|
|
|
|
+ }
|
|
|
|
|
+ this.orderData.data = this.timeVal[0] ? this.timeVal.join("-") : "";
|
|
|
|
|
+ this.orderData.page = 1;
|
|
|
|
|
+ this.allReset();
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ },
|
|
|
|
|
+ showUserInfo(row) {
|
|
|
|
|
+ this.$refs.userDetails.modals = true;
|
|
|
|
|
+ this.$refs.userDetails.activeName = 'info';
|
|
|
|
|
+ this.$refs.userDetails.getDetails(row.uid);
|
|
|
|
|
+ },
|
|
|
|
|
+ pageChange(index) {
|
|
|
|
|
+ this.orderData.page = index;
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ },
|
|
|
|
|
+ userSearchs() {
|
|
|
|
|
+ this.allReset();
|
|
|
|
|
+ this.orderData.page = 1;
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ };
|
|
|
|
|
+</script>
|
|
|
|
|
+
|
|
|
|
|
+<style lang="stylus" scoped>
|
|
|
|
|
+ .tdinfo {
|
|
|
|
|
+ margin-left: 75px;
|
|
|
|
|
+ margin-top: 16px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .expand-row {
|
|
|
|
|
+ margin-bottom: 16px;
|
|
|
|
|
+ font-size: 12px;
|
|
|
|
|
+ }
|
|
|
|
|
+ .alertflex{
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: flex-start
|
|
|
|
|
+ flex-wrap: wrap
|
|
|
|
|
+ }
|
|
|
|
|
+ .tabBox {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 100%;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ .alert_image{
|
|
|
|
|
+ width: 300px;
|
|
|
|
|
+ height: 300px;
|
|
|
|
|
+
|
|
|
|
|
+ img {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 100%;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ .tabBox_img {
|
|
|
|
|
+ width: 30px;
|
|
|
|
|
+ height: 30px;
|
|
|
|
|
+
|
|
|
|
|
+ img {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 100%;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .tabBox_tit {
|
|
|
|
|
+ width: 267px;
|
|
|
|
|
+ height: 30px;
|
|
|
|
|
+ line-height: 30px;
|
|
|
|
|
+ font-size: 12px !important;
|
|
|
|
|
+ margin: 0 2px 0 10px;
|
|
|
|
|
+ letter-spacing: 1px;
|
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .tabBox+.tabBox {
|
|
|
|
|
+ margin-top: 5px;
|
|
|
|
|
+ }
|
|
|
|
|
+</style>
|