cmy 11 månader sedan
förälder
incheckning
754e620dc9
4 ändrade filer med 1837 tillägg och 3 borttagningar
  1. 35 3
      src/api/order.js
  2. 1219 0
      src/pages/order/orderList/examine.vue
  3. 565 0
      src/pages/order/stock/examine.vue
  4. 18 0
      src/router/modules/order.js

+ 35 - 3
src/api/order.js

@@ -10,7 +10,16 @@ export function orderList(data) {
 		params: data
 	});
 };
-
+/**
+ *订单-订单初审列表
+ */
+export function examine_lst(data) {
+	return request({
+		url: `order/examine_lst`,
+		method: 'get',
+		params: data
+	});
+};
 /**
  * @description 获取快递公司
  */
@@ -427,6 +436,14 @@ export function orderExamine(data) {
 		data: data
     });
 };
+//审核订单初审
+export function examine_status_order(data) {
+    return request({
+        url: `/order/examine_status`,
+        method: 'post',
+		data: data
+    });
+};
 //审核进货订单
 export function shelves_verify(data) {
     return request({
@@ -435,7 +452,22 @@ export function shelves_verify(data) {
 		data: data
     });
 };
-
+//进货审核列表
+export function examine_shelves_lst(data) {
+    return request({
+        url: `/order/examine_shelves_lst`,
+        method: 'get',
+		params: data
+    });
+};
+//审核进货订单初审
+export function examine_shelves_verify(data) {
+    return request({
+        url: `/order/examine_shelves_verify`,
+        method: 'post',
+		data: data
+    });
+};
 //省市区订单
 export function order_statistics(data) {
     return request({
@@ -443,4 +475,4 @@ export function order_statistics(data) {
         method: 'get',
 		params: data
     });
-};
+};

+ 1219 - 0
src/pages/order/orderList/examine.vue

@@ -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>

+ 565 - 0
src/pages/order/stock/examine.vue

@@ -0,0 +1,565 @@
+<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.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.level_id" style="width: 250px" class="mr30" clearable
+							@on-change="userSearchs" placeholder="全部">
+							<Option value="">全部</Option>
+							<Option :value="it.id" v-for="it in levelList">{{it.name}}</Option>
+						</Select>
+					</FormItem>
+					<FormItem label="用户UID:">
+						<Input v-model="orderData.uid" placeholder="请输入用户UID" element-id="name" clearable
+							style="width:250px;" maxlength="20">
+						</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="delAll">批量审核</Button>
+					</Tooltip>
+					<!-- <Button class="mr10" type="primary" @click="manualModal = true">手动批量发货</Button> -->
+					<Tooltip content="本页至少选中一项" :disabled="!!checkUidList.length && isAll==0">
+					</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="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="id" title="ID"  width="80"></vxe-column>
+				<vxe-column field="info" title="进货货架" min-width="100">
+					<template v-slot="{ row }">
+						{{row.level_name}}
+					</template>
+				</vxe-column>
+				<vxe-column field="store_name" title="进货门店" min-width="130">
+					<template v-slot="{ row }">
+						{{ row.store_name }}
+						(ID:{{ row.store_id }})[UID:{{row.uid}}]
+					</template>
+				</vxe-column>
+				<vxe-column field="img" title="支付凭证" min-width="130">
+					<template v-slot="{ row }">
+						<div class="tabBox" v-for="it in row.img" v-if="row.img.length>0">
+							<div class="tabBox_img" v-viewer><img v-lazy="it" /></div>
+						</div>
+						<div v-else>
+							无凭证
+						</div>
+					</template>
+				</vxe-column>
+
+				<vxe-column field="add_time" title="创建时间" min-width="110"></vxe-column>
+				<vxe-column field="number" title="进货数量" min-width="90">
+					<template v-slot="{ row }">
+						<div>{{row.number}}</div>
+					</template>
+				</vxe-column>
+				<vxe-column field="is_status" title="审核状态" min-width="90">
+					<template v-slot="{ row }">
+						<div v-if="row.is_status==0">审核中</div>
+						<div v-if="row.is_status==1">已通过</div>
+						<div v-if="row.is_status==2">已拒绝</div>
+					</template>
+				</vxe-column>
+				<vxe-column field="action" title="操作" align="center" width="130" fixed="right">
+					<template v-slot="{ row }">
+						<a v-if="row.is_status==0" @click="checkedSend(row)">审核</a>
+						<a v-if="row.is_status==1" @click="backOrder(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>
+		<Modal v-model="showSend" title="进货单审核" width="750">
+			<Form :label-width="labelWidth" :label-position="labelPosition" ref="orderData" :model="sendData"
+				class="tabform">
+				<FormItem label="支付凭证:">
+					<div class="tabBox"  v-if="actionSendData.img.length>0">
+						<div class="alert_img" v-for="it in actionSendData.img" v-viewer>
+							<img v-lazy="it" />
+						</div>
+					</div>
+					<div v-else>
+						无凭证
+					</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="sendOrder(2)">拒绝</Button>
+				<Button type="primary" @click="sendOrder(1)">通过</Button>
+			</div>
+		</Modal>
+		<!-- 会员详情-->
+		<user-details ref="userDetails" fromType="order"></user-details>
+	</div>
+</template>
+
+<script>
+	import {
+		mapState
+	} from "vuex";
+	import userDetails from "@/components/userDetails/userDetails";
+	import timeOptions from "@/utils/timeOptions";
+	import util from "@/libs/util";
+	import Setting from "@/setting";
+	import exportExcel from "@/utils/newToExcel.js";
+	import {
+		examine_shelves_lst,
+		shelves_lst,
+		storeOrderApi,
+		examine_shelves_verify
+	} from "@/api/order";
+	export default {
+		name: "index",
+		components: {
+			userDetails,
+		},
+		data() {
+			return {
+				showSend: false, //显示审核弹窗
+				actionSendData: {
+					img:[]
+				}, //保存点击的商品
+				levelList: [], //货架列表
+				sendData: {
+					id: '',
+					status: "",
+					mark: '',
+				},
+				isAll: 0,
+				isCheckBox: false,
+				checkUidList: [],
+				timeVal: [],
+				options: timeOptions,
+				// 订单列表
+				orderData: {
+					page: 1,
+					limit: 10,
+					level_id: "",
+					status: "0",
+					start_time: "",
+					end_time: "",
+					pay_img_status:1,
+					uid:''
+				},
+				orderList: [],
+				total: 0,
+				loading: false,
+				orderId: 0,
+				delfromData: {},
+				rowActive: {},
+				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() {
+			if (this.$route.fullPath === `${Setting.roterPre}/order/list?type=7&status=1`) {
+				this.getPath();
+			} else {
+				this.getList();
+			}
+		},
+		mounted() {
+			this.shelves_lst();
+		},
+		methods: {
+			// 通过拒绝审核
+			sendOrder(type) {
+				if (type == 2 && this.sendData.mark == "") {
+					this.$Message.error("请填写拒绝原因");
+					return
+				}
+				this.sendData.status = type;
+				examine_shelves_verify(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;
+			},
+			// 获取货架列表
+			shelves_lst() {
+				shelves_lst().then((res) => {
+					this.levelList = res.data;
+					console.log(this.levelList)
+				});
+			},
+			//跳转刷新
+			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;
+				}
+			},
+			reset() {
+				this.timeVal = [];
+				this.orderData = {
+					page: 1,
+					limit: 10,
+					level_id: "",
+					status: "0",
+					start_time: "",
+					end_time: "",
+					pay_img_status:1,
+					uid:''
+				};
+				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,
+				}
+				
+				this.sendData.id=this.checkUidList.join(',');
+				this.sendData.status =1
+				let delfromData = {
+					title: "审核通过订单",
+					url: `/order/shelves_verify`,
+					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);
+				});
+			},
+			// 退单
+			backOrder(item) {
+				let delfromData = {
+					title: "进货单退单",
+					url: `/order/update_shelves_refund/${item.id}`,
+					method: "put",
+				};
+				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);
+					});
+				});
+			},
+			// 删除单条订单
+			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_shelves_lst(this.orderData).then(res => {
+					let data = res.data;
+					let list = data.list.map((s)=>{
+						if(s.status=="已通过"){
+							s.is_status = 1
+							return s;
+						}
+						if(s.status=="已拒绝"){
+							s.is_status = 2
+							return s;
+						}
+						if(s.status=="审核中"){
+							s.is_status = 0
+							return s;
+						}
+					})
+					this.$set(this, 'orderList', data.list);
+					this.total = res.data.count;
+					this.loading = 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.start_time = this.timeVal[0] || "";
+				this.orderData.end_time = this.timeVal[1] || "";
+				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;
+	}
+
+	.tabBox {
+		width: 100%;
+		height: 100%;
+		display: flex;
+		align-items: center;
+		.alert_img{
+			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>

+ 18 - 0
src/router/modules/order.js

@@ -43,6 +43,24 @@ export default {
 				title: '进货订单'
 			},
 			component: () => import('@/pages/order/stock/index')
+		},
+		{
+			path: 'stockexamine',
+			name: `${pre}stockexamine`,
+			meta: {
+				auth: ['order-stock-examine'],
+				title: '进货审核'
+			},
+			component: () => import('@/pages/order/stock/examine')
+		},
+		{
+			path: 'listexamine',
+			name: `${pre}listexamine`,
+			meta: {
+				auth: ['order-list-examine'],
+				title: '订单审核'
+			},
+			component: () => import('@/pages/order/orderList/examine')
 		}
 	]
 };