|  | @@ -2,146 +2,117 @@
 | 
	
		
			
				|  |  |  	<ContentWrap class="order-div">
 | 
	
		
			
				|  |  |  		<!-- 搜索 -->
 | 
	
		
			
				|  |  |  		<div style="position: relative;">
 | 
	
		
			
				|  |  | -			<div style="text-align: right;background: #fafbfc;padding: 10px;">
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -				<el-button :icon="Operation" @click="showSearchMore" />
 | 
	
		
			
				|  |  | +			<div style="text-align: right;padding: 10px;">
 | 
	
		
			
				|  |  | +				<el-input v-model="queryParams['userNickname']" class="!w-240px" placeholder="搜索客户名称" @keyup.enter="handleQuery">
 | 
	
		
			
				|  |  | +					<template #suffix>
 | 
	
		
			
				|  |  | +						<Icon class="mr-5px" icon="ep:search" @click="handleQuery" style="cursor: pointer;" />
 | 
	
		
			
				|  |  | +					</template>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +					<template #append>
 | 
	
		
			
				|  |  | +						<el-button :icon="Operation" @click="showSearchMore" />
 | 
	
		
			
				|  |  | +					</template>
 | 
	
		
			
				|  |  | +				</el-input>
 | 
	
		
			
				|  |  |  			</div>
 | 
	
		
			
				|  |  | -			<div class="searchMore" v-if="searchMoreShow">
 | 
	
		
			
				|  |  | +			<div class="searchMore" v-show="searchMoreShow">
 | 
	
		
			
				|  |  |  				<el-form ref="queryFormRef" :inline="true" :model="queryParams" class="-mb-15px" label-width="68px">
 | 
	
		
			
				|  |  | -			<el-form-item label="订单状态" prop="status">
 | 
	
		
			
				|  |  | -				<el-select v-model="queryParams.status" class="!w-280px" clearable placeholder="全部">
 | 
	
		
			
				|  |  | -					<el-option v-for="dict in getIntDictOptions(DICT_TYPE.TRADE_ORDER_STATUS)" :key="dict.value"
 | 
	
		
			
				|  |  | -						:label="dict.label" :value="dict.value" />
 | 
	
		
			
				|  |  | -				</el-select>
 | 
	
		
			
				|  |  | -			</el-form-item>
 | 
	
		
			
				|  |  | -			<el-form-item label="支付方式" prop="payChannelCode">
 | 
	
		
			
				|  |  | -				<el-select v-model="queryParams.payChannelCode" class="!w-280px" clearable placeholder="全部">
 | 
	
		
			
				|  |  | -					<el-option v-for="dict in getStrDictOptions(DICT_TYPE.PAY_CHANNEL_CODE)" :key="dict.value"
 | 
	
		
			
				|  |  | -						:label="dict.label" :value="dict.value" />
 | 
	
		
			
				|  |  | -				</el-select>
 | 
	
		
			
				|  |  | -			</el-form-item>
 | 
	
		
			
				|  |  | -			<el-form-item label="创建时间" prop="createTime">
 | 
	
		
			
				|  |  | -				<el-date-picker v-model="queryParams.createTime"
 | 
	
		
			
				|  |  | -					:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-280px"
 | 
	
		
			
				|  |  | -					end-placeholder="自定义时间" start-placeholder="自定义时间" type="daterange"
 | 
	
		
			
				|  |  | -					value-format="YYYY-MM-DD HH:mm:ss" />
 | 
	
		
			
				|  |  | -			</el-form-item>
 | 
	
		
			
				|  |  | -			<el-form-item label="订单来源" prop="terminal">
 | 
	
		
			
				|  |  | -				<el-select v-model="queryParams.terminal" class="!w-280px" clearable placeholder="全部">
 | 
	
		
			
				|  |  | -					<el-option v-for="dict in getIntDictOptions(DICT_TYPE.TERMINAL)" :key="dict.value"
 | 
	
		
			
				|  |  | -						:label="dict.label" :value="dict.value" />
 | 
	
		
			
				|  |  | -				</el-select>
 | 
	
		
			
				|  |  | -			</el-form-item>
 | 
	
		
			
				|  |  | -			<el-form-item label="订单类型" prop="type">
 | 
	
		
			
				|  |  | -				<el-select v-model="queryParams.type" class="!w-280px" clearable placeholder="全部">
 | 
	
		
			
				|  |  | -					<el-option v-for="dict in getIntDictOptions(DICT_TYPE.TRADE_ORDER_TYPE)" :key="dict.value"
 | 
	
		
			
				|  |  | -						:label="dict.label" :value="dict.value" />
 | 
	
		
			
				|  |  | -				</el-select>
 | 
	
		
			
				|  |  | -			</el-form-item>
 | 
	
		
			
				|  |  | -			<el-form-item label="配送方式" prop="deliveryType">
 | 
	
		
			
				|  |  | -				<el-select v-model="queryParams.deliveryType" class="!w-280px" clearable placeholder="全部">
 | 
	
		
			
				|  |  | -					<el-option v-for="dict in getIntDictOptions(DICT_TYPE.TRADE_DELIVERY_TYPE)" :key="dict.value"
 | 
	
		
			
				|  |  | -						:label="dict.label" :value="dict.value" />
 | 
	
		
			
				|  |  | -				</el-select>
 | 
	
		
			
				|  |  | -			</el-form-item>
 | 
	
		
			
				|  |  | -			<el-form-item v-if="queryParams.deliveryType === DeliveryTypeEnum.EXPRESS.type" label="快递公司"
 | 
	
		
			
				|  |  | -				prop="logisticsId">
 | 
	
		
			
				|  |  | -				<el-select v-model="queryParams.logisticsId" class="!w-280px" clearable placeholder="全部">
 | 
	
		
			
				|  |  | -					<el-option v-for="item in deliveryExpressList" :key="item.id" :label="item.name" :value="item.id" />
 | 
	
		
			
				|  |  | -				</el-select>
 | 
	
		
			
				|  |  | -			</el-form-item>
 | 
	
		
			
				|  |  | -			<el-form-item v-if="queryParams.deliveryType === DeliveryTypeEnum.PICK_UP.type" label="自提门店"
 | 
	
		
			
				|  |  | -				prop="pickUpStoreId">
 | 
	
		
			
				|  |  | -				<el-select v-model="queryParams.pickUpStoreId" class="!w-280px" clearable multiple placeholder="全部">
 | 
	
		
			
				|  |  | -					<el-option v-for="item in pickUpStoreList" :key="item.id" :label="item.name" :value="item.id" />
 | 
	
		
			
				|  |  | -				</el-select>
 | 
	
		
			
				|  |  | -			</el-form-item>
 | 
	
		
			
				|  |  | -			<el-form-item v-if="queryParams.deliveryType === DeliveryTypeEnum.PICK_UP.type" label="核销码"
 | 
	
		
			
				|  |  | -				prop="pickUpVerifyCode">
 | 
	
		
			
				|  |  | -				<el-input v-model="queryParams.pickUpVerifyCode" class="!w-280px" clearable placeholder="请输入自提核销码"
 | 
	
		
			
				|  |  | -					@keyup.enter="handleQuery" />
 | 
	
		
			
				|  |  | -			</el-form-item>
 | 
	
		
			
				|  |  | -			<el-form-item label="聚合搜索">
 | 
	
		
			
				|  |  | -				<el-input v-show="true" v-model="queryParams[queryType.queryParam]"
 | 
	
		
			
				|  |  | -					:type="queryType.queryParam === 'userId' ? 'number' : 'text'" class="!w-280px" clearable
 | 
	
		
			
				|  |  | -					placeholder="请输入">
 | 
	
		
			
				|  |  | -					<template #prepend>
 | 
	
		
			
				|  |  | -						<el-select v-model="queryType.queryParam" class="!w-110px" clearable placeholder="全部"
 | 
	
		
			
				|  |  | -							@change="inputChangeSelect">
 | 
	
		
			
				|  |  | -							<el-option v-for="dict in dynamicSearchList" :key="dict.value" :label="dict.label"
 | 
	
		
			
				|  |  | +					<el-form-item label="订单状态" prop="status">
 | 
	
		
			
				|  |  | +						<el-select v-model="queryParams.status" clearable placeholder="全部">
 | 
	
		
			
				|  |  | +							<el-option v-for="dict in getIntDictOptions(DICT_TYPE.TRADE_ORDER_STATUS)" :key="dict.value"
 | 
	
		
			
				|  |  | +								:label="dict.label" :value="dict.value" />
 | 
	
		
			
				|  |  | +						</el-select>
 | 
	
		
			
				|  |  | +					</el-form-item>
 | 
	
		
			
				|  |  | +					<el-form-item label="支付方式" prop="payChannelCode">
 | 
	
		
			
				|  |  | +						<el-select v-model="queryParams.payChannelCode" clearable placeholder="全部">
 | 
	
		
			
				|  |  | +							<el-option v-for="dict in getStrDictOptions(DICT_TYPE.PAY_CHANNEL_CODE)" :key="dict.value"
 | 
	
		
			
				|  |  | +								:label="dict.label" :value="dict.value" />
 | 
	
		
			
				|  |  | +						</el-select>
 | 
	
		
			
				|  |  | +					</el-form-item>
 | 
	
		
			
				|  |  | +					<el-form-item label="创建时间" prop="createTime">
 | 
	
		
			
				|  |  | +						<el-date-picker v-model="queryParams.createTime"
 | 
	
		
			
				|  |  | +							:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" end-placeholder="自定义时间"
 | 
	
		
			
				|  |  | +							start-placeholder="自定义时间" type="daterange" value-format="YYYY-MM-DD HH:mm:ss" style="width: auto;" />
 | 
	
		
			
				|  |  | +					</el-form-item>
 | 
	
		
			
				|  |  | +					<el-form-item label="订单来源" prop="terminal">
 | 
	
		
			
				|  |  | +						<el-select v-model="queryParams.terminal" clearable placeholder="全部">
 | 
	
		
			
				|  |  | +							<el-option v-for="dict in getIntDictOptions(DICT_TYPE.TERMINAL)" :key="dict.value" :label="dict.label"
 | 
	
		
			
				|  |  |  								:value="dict.value" />
 | 
	
		
			
				|  |  |  						</el-select>
 | 
	
		
			
				|  |  | -					</template>
 | 
	
		
			
				|  |  | -				</el-input>
 | 
	
		
			
				|  |  | -			</el-form-item>
 | 
	
		
			
				|  |  | -			<el-row>
 | 
	
		
			
				|  |  | -				<el-col>
 | 
	
		
			
				|  |  | -						<el-form-item>
 | 
	
		
			
				|  |  | -							<el-button @click="hideSearchMore">
 | 
	
		
			
				|  |  | -								收起
 | 
	
		
			
				|  |  | -							</el-button>
 | 
	
		
			
				|  |  | -							<el-button @click="resetQuery">
 | 
	
		
			
				|  |  | -								<!-- <Icon class="mr-5px" icon="ep:refresh" /> -->
 | 
	
		
			
				|  |  | -								重置
 | 
	
		
			
				|  |  | -							</el-button>
 | 
	
		
			
				|  |  | -							<el-button @click="handleQuery"  plain type="primary">
 | 
	
		
			
				|  |  | -								<Icon class="mr-5px" icon="ep:search" />
 | 
	
		
			
				|  |  | -								搜索
 | 
	
		
			
				|  |  | -							</el-button>
 | 
	
		
			
				|  |  | -						</el-form-item>
 | 
	
		
			
				|  |  | -				</el-col>
 | 
	
		
			
				|  |  | -			</el-row>
 | 
	
		
			
				|  |  | -			
 | 
	
		
			
				|  |  | -		</el-form>
 | 
	
		
			
				|  |  | +					</el-form-item>
 | 
	
		
			
				|  |  | +					<el-form-item label="订单类型" prop="type">
 | 
	
		
			
				|  |  | +						<el-select v-model="queryParams.type" clearable placeholder="全部">
 | 
	
		
			
				|  |  | +							<el-option v-for="dict in getIntDictOptions(DICT_TYPE.TRADE_ORDER_TYPE)" :key="dict.value"
 | 
	
		
			
				|  |  | +								:label="dict.label" :value="dict.value" />
 | 
	
		
			
				|  |  | +						</el-select>
 | 
	
		
			
				|  |  | +					</el-form-item>
 | 
	
		
			
				|  |  | +					<el-form-item label="配送方式" prop="deliveryType">
 | 
	
		
			
				|  |  | +						<el-select v-model="queryParams.deliveryType" clearable placeholder="全部">
 | 
	
		
			
				|  |  | +							<el-option v-for="dict in getIntDictOptions(DICT_TYPE.TRADE_DELIVERY_TYPE)" :key="dict.value"
 | 
	
		
			
				|  |  | +								:label="dict.label" :value="dict.value" />
 | 
	
		
			
				|  |  | +						</el-select>
 | 
	
		
			
				|  |  | +					</el-form-item>
 | 
	
		
			
				|  |  | +					<el-form-item v-if="queryParams.deliveryType === DeliveryTypeEnum.EXPRESS.type" label="快递公司"
 | 
	
		
			
				|  |  | +						prop="logisticsId">
 | 
	
		
			
				|  |  | +						<el-select v-model="queryParams.logisticsId" clearable placeholder="全部">
 | 
	
		
			
				|  |  | +							<el-option v-for="item in deliveryExpressList" :key="item.id" :label="item.name" :value="item.id" />
 | 
	
		
			
				|  |  | +						</el-select>
 | 
	
		
			
				|  |  | +					</el-form-item>
 | 
	
		
			
				|  |  | +					<el-form-item v-if="queryParams.deliveryType === DeliveryTypeEnum.PICK_UP.type" label="自提门店"
 | 
	
		
			
				|  |  | +						prop="pickUpStoreId">
 | 
	
		
			
				|  |  | +						<el-select v-model="queryParams.pickUpStoreId" clearable multiple placeholder="全部">
 | 
	
		
			
				|  |  | +							<el-option v-for="item in pickUpStoreList" :key="item.id" :label="item.name" :value="item.id" />
 | 
	
		
			
				|  |  | +						</el-select>
 | 
	
		
			
				|  |  | +					</el-form-item>
 | 
	
		
			
				|  |  | +					<!-- <el-form-item v-if="queryParams.deliveryType === DeliveryTypeEnum.PICK_UP.type" label="核销码"
 | 
	
		
			
				|  |  | +				prop="pickUpVerifyCode">
 | 
	
		
			
				|  |  | +				<el-input v-model="queryParams.pickUpVerifyCode"  clearable placeholder="请输入自提核销码"
 | 
	
		
			
				|  |  | +					@keyup.enter="handleQuery" />
 | 
	
		
			
				|  |  | +			</el-form-item> -->
 | 
	
		
			
				|  |  | +					<el-form-item label="聚合搜索">
 | 
	
		
			
				|  |  | +						<el-input v-show="true" v-model="queryParams[queryType.queryParam]"
 | 
	
		
			
				|  |  | +							:type="queryType.queryParam === 'userId' ? 'number' : 'text'" clearable placeholder="请输入">
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +							<template #prepend>
 | 
	
		
			
				|  |  | +								<el-select v-model="queryType.queryParam" class="!w-110px" clearable placeholder="全部"
 | 
	
		
			
				|  |  | +									@change="inputChangeSelect">
 | 
	
		
			
				|  |  | +									<el-option v-for="dict in dynamicSearchList" :key="dict.value" :label="dict.label"
 | 
	
		
			
				|  |  | +										:value="dict.value" />
 | 
	
		
			
				|  |  | +								</el-select>
 | 
	
		
			
				|  |  | +							</template>
 | 
	
		
			
				|  |  | +						</el-input>
 | 
	
		
			
				|  |  | +					</el-form-item>
 | 
	
		
			
				|  |  | +					<el-row>
 | 
	
		
			
				|  |  | +						<el-col>
 | 
	
		
			
				|  |  | +							<el-form-item>
 | 
	
		
			
				|  |  | +								<el-button @click="hideSearchMore">
 | 
	
		
			
				|  |  | +									收起
 | 
	
		
			
				|  |  | +								</el-button>
 | 
	
		
			
				|  |  | +								<el-button @click="resetQuery">
 | 
	
		
			
				|  |  | +									<!-- <Icon class="mr-5px" icon="ep:refresh" /> -->
 | 
	
		
			
				|  |  | +									重置
 | 
	
		
			
				|  |  | +								</el-button>
 | 
	
		
			
				|  |  | +								<el-button @click="handleQuery" plain type="primary">
 | 
	
		
			
				|  |  | +									<Icon class="mr-5px" icon="ep:search" />
 | 
	
		
			
				|  |  | +									搜索
 | 
	
		
			
				|  |  | +								</el-button>
 | 
	
		
			
				|  |  | +							</el-form-item>
 | 
	
		
			
				|  |  | +						</el-col>
 | 
	
		
			
				|  |  | +					</el-row>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +				</el-form>
 | 
	
		
			
				|  |  |  			</div>
 | 
	
		
			
				|  |  |  		</div>
 | 
	
		
			
				|  |  | -		<!-- 列表 -->
 | 
	
		
			
				|  |  | -		<!-- <el-table v-loading="loading" :data="list" row-key="id">
 | 
	
		
			
				|  |  | -			<OrderTableColumn :list="list" :pick-up-store-list="pickUpStoreList">
 | 
	
		
			
				|  |  | -				<template #default="{ row }">
 | 
	
		
			
				|  |  | -					<div class="flex items-center justify-center">
 | 
	
		
			
				|  |  | -						<el-button v-hasPermi="['trade:order:query']" link type="primary" >
 | 
	
		
			
				|  |  | -							<Icon icon="ep:notification" />
 | 
	
		
			
				|  |  | -							详情
 | 
	
		
			
				|  |  | -						</el-button>
 | 
	
		
			
				|  |  | -						<el-dropdown v-hasPermi="['trade:order:update']"
 | 
	
		
			
				|  |  | -							@command="(command) => handleCommand(command, row)">
 | 
	
		
			
				|  |  | -							<el-button link type="primary">
 | 
	
		
			
				|  |  | -								<Icon icon="ep:d-arrow-right" />
 | 
	
		
			
				|  |  | -								更多
 | 
	
		
			
				|  |  | -							</el-button>
 | 
	
		
			
				|  |  | -							<template #dropdown>
 | 
	
		
			
				|  |  | -								<el-dropdown-menu>
 | 
	
		
			
				|  |  | -									如果是【快递】,并且【未发货】,则展示【发货】按钮
 | 
	
		
			
				|  |  | -									<el-dropdown-item v-if="
 | 
	
		
			
				|  |  | -                      row.deliveryType === DeliveryTypeEnum.EXPRESS.type &&
 | 
	
		
			
				|  |  | -                      row.status === TradeOrderStatusEnum.UNDELIVERED.status
 | 
	
		
			
				|  |  | -                    "command="delivery">
 | 
	
		
			
				|  |  | -										<Icon icon="ep:takeaway-box" />
 | 
	
		
			
				|  |  | -										发货
 | 
	
		
			
				|  |  | -									</el-dropdown-item>
 | 
	
		
			
				|  |  | -									<el-dropdown-item command="remark">
 | 
	
		
			
				|  |  | -										<Icon icon="ep:chat-line-square" />
 | 
	
		
			
				|  |  | -										备注
 | 
	
		
			
				|  |  | -									</el-dropdown-item>
 | 
	
		
			
				|  |  | -								</el-dropdown-menu>
 | 
	
		
			
				|  |  | -							</template>
 | 
	
		
			
				|  |  | -						</el-dropdown>
 | 
	
		
			
				|  |  | -					</div>
 | 
	
		
			
				|  |  | -				</template>
 | 
	
		
			
				|  |  | -			</OrderTableColumn>
 | 
	
		
			
				|  |  | -		</el-table> -->
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  		<el-row>
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | -			<el-col  v-for="(o, index) in list" class="product-card" :key="index" :span="7" :xl="7" :lg="7" :md="24" :sm="24" :xs="24" @mouseover="handleMouseOver(index)" @mouseout="handleMouseOut(index)">
 | 
	
		
			
				|  |  | -				<el-card @click="openDetail('view',o,o.no)">
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			<el-col v-for="(o, index) in list" class="product-card" :key="index" :span="7" :xl="7" :lg="7" :md="24" :sm="24"
 | 
	
		
			
				|  |  | +				:xs="24" @mouseover="handleMouseOver(index)" @mouseout="handleMouseOut(index)">
 | 
	
		
			
				|  |  | +				<el-card @click="openDetail('view', o, o.no)">
 | 
	
		
			
				|  |  |  					<div style="display: flex;justify-content: space-between;align-items: center;margin-bottom: 5px;">
 | 
	
		
			
				|  |  |  						<p style="width: 95%;white-space: nowrap;text-overflow: ellipsis;overflow: hidden;font-size: 16px;color:#000"
 | 
	
		
			
				|  |  | -							title=""><span v-for="item in o.items" :key="item.id">{{item.spuName}}</span>
 | 
	
		
			
				|  |  | +							title=""><span v-for="item in o.items" :key="item.id">{{ item.spuName }}</span>
 | 
	
		
			
				|  |  |  						</p>
 | 
	
		
			
				|  |  | -						<div class="setting" @click.stop="" >
 | 
	
		
			
				|  |  | -								<el-dropdown v-hasPermi="['trade:order:update']" @command="(command) => handleCommand(command, row)">
 | 
	
		
			
				|  |  | +						<div class="setting" @click.stop="">
 | 
	
		
			
				|  |  | +							<el-dropdown v-hasPermi="['trade:order:update']" @command="(command) => handleCommand(command, row)">
 | 
	
		
			
				|  |  |  								<span>
 | 
	
		
			
				|  |  |  									<el-icon size="20" color="rgb(220 223 231)" v-show="o.showSetting">
 | 
	
		
			
				|  |  |  										<Operation />
 | 
	
	
		
			
				|  | @@ -150,20 +121,25 @@
 | 
	
		
			
				|  |  |  										<arrow-down />
 | 
	
		
			
				|  |  |  									</el-icon> -->
 | 
	
		
			
				|  |  |  								</span>
 | 
	
		
			
				|  |  | -								<template #dropdown >
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +								<template #dropdown>
 | 
	
		
			
				|  |  |  									<el-dropdown-menu @mouseover="handleMouseOver(index)" @mouseout="handleMouseOut(index)">
 | 
	
		
			
				|  |  | -										<el-dropdown-item @click="handleDelivery(o.id)" v-if="o.deliveryType === DeliveryTypeEnum.EXPRESS.type && o.status === TradeOrderStatusEnum.UNDELIVERED.status">发货</el-dropdown-item>
 | 
	
		
			
				|  |  | -										<el-dropdown-item @click="handleRemark(o.id,o.remark)">备注</el-dropdown-item>
 | 
	
		
			
				|  |  | -										<el-dropdown-item @click="handleInvoice" v-if="o.status === TradeOrderStatusEnum.COMPLETED.status">开发票</el-dropdown-item>
 | 
	
		
			
				|  |  | -										<el-dropdown-item v-if="o.deliveryType === DeliveryTypeEnum.EXPRESS.type && o.status === TradeOrderStatusEnum.UNDELIVERED.status" @click="updateAddress(o.id,o.receiverAreaName,o.receiverMobile,o.receiverAreaId,o.receiverDetailAddress)">修改地址</el-dropdown-item>
 | 
	
		
			
				|  |  | +										<el-dropdown-item @click="handleDelivery(o.id)"
 | 
	
		
			
				|  |  | +											v-if="o.deliveryType === DeliveryTypeEnum.EXPRESS.type && o.status === TradeOrderStatusEnum.UNDELIVERED.status">发货</el-dropdown-item>
 | 
	
		
			
				|  |  | +										<el-dropdown-item @click="handleRemark(o.id, o.remark)">备注</el-dropdown-item>
 | 
	
		
			
				|  |  | +										<el-dropdown-item @click="handleInvoice"
 | 
	
		
			
				|  |  | +											v-if="o.status === TradeOrderStatusEnum.COMPLETED.status">开发票</el-dropdown-item>
 | 
	
		
			
				|  |  | +										<el-dropdown-item
 | 
	
		
			
				|  |  | +											v-if="o.deliveryType === DeliveryTypeEnum.EXPRESS.type && o.status === TradeOrderStatusEnum.UNDELIVERED.status"
 | 
	
		
			
				|  |  | +											@click="updateAddress(o.id, o.receiverAreaName, o.receiverMobile, o.receiverAreaId, o.receiverDetailAddress)">修改地址</el-dropdown-item>
 | 
	
		
			
				|  |  |  									</el-dropdown-menu>
 | 
	
		
			
				|  |  |  								</template>
 | 
	
		
			
				|  |  |  							</el-dropdown>
 | 
	
		
			
				|  |  |  						</div>
 | 
	
		
			
				|  |  |  					</div>
 | 
	
		
			
				|  |  |  					<div style="display:flex;align-items: center;">
 | 
	
		
			
				|  |  | -						<div style="width: 206px;height: 116px;margin-right:10px;border:1px solid rgb(220 223 231);border-radius: 5px;display: flex;align-items: center;justify-content: center;"
 | 
	
		
			
				|  |  | -							>
 | 
	
		
			
				|  |  | +						<div
 | 
	
		
			
				|  |  | +							style="width: 206px;height: 116px;margin-right:10px;border:1px solid rgb(220 223 231);border-radius: 5px;display: flex;align-items: center;justify-content: center;">
 | 
	
		
			
				|  |  |  							<img :src="o.items[0].picUrl" style="width: auto;height: auto;max-width: 100%;max-height: 100%;" />
 | 
	
		
			
				|  |  |  						</div>
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -171,9 +147,9 @@
 | 
	
		
			
				|  |  |  							<p>¥{{ o.payPrice }}</p>
 | 
	
		
			
				|  |  |  							<p>{{ o.no }}</p>
 | 
	
		
			
				|  |  |  							<p>{{ getDictObj(DICT_TYPE.TRADE_ORDER_STATUS, o.status)?.label }}</p>
 | 
	
		
			
				|  |  | -							<p>{{o.user.nickname}}</p>
 | 
	
		
			
				|  |  | -							<p><span class="year">{{timestampToY(o.createTime)}}</span>{{ timestampToMD(o.createTime) }}</p>
 | 
	
		
			
				|  |  | -							
 | 
	
		
			
				|  |  | +							<p>{{ o.user.nickname }}</p>
 | 
	
		
			
				|  |  | +							<p><span class="year">{{ timestampToY(o.createTime) }}</span>{{ timestampToMD(o.createTime) }}</p>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  						</div>
 | 
	
		
			
				|  |  |  					</div>
 | 
	
		
			
				|  |  |  				</el-card>
 | 
	
	
		
			
				|  | @@ -196,64 +172,128 @@
 | 
	
		
			
				|  |  |  </template>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  <script lang="ts" setup>
 | 
	
		
			
				|  |  | -	import type { FormInstance } from 'element-plus'
 | 
	
		
			
				|  |  | -	import OrderDeliveryForm from '@/views/mall/trade/order/form/OrderDeliveryForm.vue'
 | 
	
		
			
				|  |  | -	import OrderUpdateRemarkForm from '@/views/mall/trade/order/form/OrderUpdateRemarkForm.vue'
 | 
	
		
			
				|  |  | -	import * as TradeOrderApi from '@/api/mall/trade/order'
 | 
	
		
			
				|  |  | -	import * as PickUpStoreApi from '@/api/mall/trade/delivery/pickUpStore'
 | 
	
		
			
				|  |  | -	import { DICT_TYPE, getIntDictOptions, getStrDictOptions,getDictObj } from '@/utils/dict'
 | 
	
		
			
				|  |  | -	import * as DeliveryExpressApi from '@/api/mall/trade/delivery/express'
 | 
	
		
			
				|  |  | -	import { DeliveryTypeEnum, TradeOrderStatusEnum } from '@/utils/constants'
 | 
	
		
			
				|  |  | -	import { Setting, Search, Operation } from '@element-plus/icons-vue'
 | 
	
		
			
				|  |  | -	import { OrderTableColumn } from './components'
 | 
	
		
			
				|  |  | -	import { formatDate } from '@/utils/formatTime'
 | 
	
		
			
				|  |  | -	import OrderIndex from "./components/OrderIndex.vue"
 | 
	
		
			
				|  |  | -	import OrderUpdateAddressForm from '@/views/mall/trade/order/form/OrderUpdateAddressForm.vue'
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	//时间戳转换为yyyy/mm/dd
 | 
	
		
			
				|  |  | -	function timestampToMD(timestamp) {
 | 
	
		
			
				|  |  | -    var date = new Date(timestamp);
 | 
	
		
			
				|  |  | -    var year = date.getFullYear();
 | 
	
		
			
				|  |  | -    var month = ("0" + (date.getMonth() + 1)).slice(-2); // 补零操作
 | 
	
		
			
				|  |  | -    var day = ("0" + date.getDate()).slice(-2);
 | 
	
		
			
				|  |  | -    return month + "/" + day;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -	function timestampToY(timestamp) {
 | 
	
		
			
				|  |  | -    var date = new Date(timestamp);
 | 
	
		
			
				|  |  | -    var year = date.getFullYear();
 | 
	
		
			
				|  |  | -    var month = ("0" + (date.getMonth() + 1)).slice(-2); // 补零操作
 | 
	
		
			
				|  |  | -    var day = ("0" + date.getDate()).slice(-2);
 | 
	
		
			
				|  |  | -    return year + "/" ;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -	const searchMoreShow = ref(false)
 | 
	
		
			
				|  |  | -	// 鼠标移入显示变动图标
 | 
	
		
			
				|  |  | -	function handleMouseOver(index) {
 | 
	
		
			
				|  |  | -		list.value[index].showSetting = true;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -	// 鼠标移出不显示图标
 | 
	
		
			
				|  |  | -	function handleMouseOut(index) {
 | 
	
		
			
				|  |  | -		list.value[index].showSetting = false;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -	// 打开更多搜索条件
 | 
	
		
			
				|  |  | -	const showSearchMore = () => {
 | 
	
		
			
				|  |  | -		searchMoreShow.value = !searchMoreShow.value
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -	const hideSearchMore = () => {
 | 
	
		
			
				|  |  | +import type { FormInstance } from 'element-plus'
 | 
	
		
			
				|  |  | +import OrderDeliveryForm from '@/views/mall/trade/order/form/OrderDeliveryForm.vue'
 | 
	
		
			
				|  |  | +import OrderUpdateRemarkForm from '@/views/mall/trade/order/form/OrderUpdateRemarkForm.vue'
 | 
	
		
			
				|  |  | +import * as TradeOrderApi from '@/api/mall/trade/order'
 | 
	
		
			
				|  |  | +import * as PickUpStoreApi from '@/api/mall/trade/delivery/pickUpStore'
 | 
	
		
			
				|  |  | +import { DICT_TYPE, getIntDictOptions, getStrDictOptions, getDictObj } from '@/utils/dict'
 | 
	
		
			
				|  |  | +import * as DeliveryExpressApi from '@/api/mall/trade/delivery/express'
 | 
	
		
			
				|  |  | +import { DeliveryTypeEnum, TradeOrderStatusEnum } from '@/utils/constants'
 | 
	
		
			
				|  |  | +import { Setting, Search, Operation } from '@element-plus/icons-vue'
 | 
	
		
			
				|  |  | +import { OrderTableColumn } from './components'
 | 
	
		
			
				|  |  | +import { formatDate } from '@/utils/formatTime'
 | 
	
		
			
				|  |  | +import OrderIndex from "./components/OrderIndex.vue"
 | 
	
		
			
				|  |  | +import OrderUpdateAddressForm from '@/views/mall/trade/order/form/OrderUpdateAddressForm.vue'
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +//时间戳转换为yyyy/mm/dd
 | 
	
		
			
				|  |  | +function timestampToMD(timestamp) {
 | 
	
		
			
				|  |  | +	var date = new Date(timestamp);
 | 
	
		
			
				|  |  | +	var year = date.getFullYear();
 | 
	
		
			
				|  |  | +	var month = ("0" + (date.getMonth() + 1)).slice(-2); // 补零操作
 | 
	
		
			
				|  |  | +	var day = ("0" + date.getDate()).slice(-2);
 | 
	
		
			
				|  |  | +	return month + "/" + day;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +function timestampToY(timestamp) {
 | 
	
		
			
				|  |  | +	var date = new Date(timestamp);
 | 
	
		
			
				|  |  | +	var year = date.getFullYear();
 | 
	
		
			
				|  |  | +	var month = ("0" + (date.getMonth() + 1)).slice(-2); // 补零操作
 | 
	
		
			
				|  |  | +	var day = ("0" + date.getDate()).slice(-2);
 | 
	
		
			
				|  |  | +	return year + "/";
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +const searchMoreShow = ref(false)
 | 
	
		
			
				|  |  | +// 鼠标移入显示变动图标
 | 
	
		
			
				|  |  | +function handleMouseOver(index) {
 | 
	
		
			
				|  |  | +	list.value[index].showSetting = true;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +// 鼠标移出不显示图标
 | 
	
		
			
				|  |  | +function handleMouseOut(index) {
 | 
	
		
			
				|  |  | +	list.value[index].showSetting = false;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +// 打开更多搜索条件
 | 
	
		
			
				|  |  | +const showSearchMore = () => {
 | 
	
		
			
				|  |  | +	searchMoreShow.value = !searchMoreShow.value
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +const hideSearchMore = () => {
 | 
	
		
			
				|  |  | +	searchMoreShow.value = false
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +const formRef = ref()
 | 
	
		
			
				|  |  | +const openDetail = (type: string, row: {}, no: string) => {
 | 
	
		
			
				|  |  | +	formRef.value.open(type, row, no)
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +defineOptions({ name: 'TradeOrder' })
 | 
	
		
			
				|  |  | +const { currentRoute, push } = useRouter() // 路由跳转
 | 
	
		
			
				|  |  | +const loading = ref(true) // 列表的加载中
 | 
	
		
			
				|  |  | +const total = ref(2) // 列表的总页数
 | 
	
		
			
				|  |  | +const list = ref<TradeOrderApi.OrderVO[]>([]) // 列表的数据
 | 
	
		
			
				|  |  | +const queryFormRef = ref<FormInstance>() // 搜索的表单
 | 
	
		
			
				|  |  | +// 表单搜索
 | 
	
		
			
				|  |  | +const queryParams = ref({
 | 
	
		
			
				|  |  | +	pageNo: 1, // 页数
 | 
	
		
			
				|  |  | +	pageSize: 10, // 每页显示数量
 | 
	
		
			
				|  |  | +	status: undefined, // 订单状态
 | 
	
		
			
				|  |  | +	payChannelCode: undefined, // 支付方式
 | 
	
		
			
				|  |  | +	createTime: undefined, // 创建时间
 | 
	
		
			
				|  |  | +	terminal: undefined, // 订单来源
 | 
	
		
			
				|  |  | +	type: undefined, // 订单类型
 | 
	
		
			
				|  |  | +	deliveryType: undefined, // 配送方式
 | 
	
		
			
				|  |  | +	logisticsId: undefined, // 快递公司
 | 
	
		
			
				|  |  | +	pickUpStoreId: undefined, // 自提门店
 | 
	
		
			
				|  |  | +	pickUpVerifyCode: undefined // 自提核销码
 | 
	
		
			
				|  |  | +})
 | 
	
		
			
				|  |  | +const queryType = reactive({ queryParam: '' }) // 订单搜索类型 queryParam
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// 订单聚合搜索 select 类型配置(动态搜索)
 | 
	
		
			
				|  |  | +const dynamicSearchList = ref([
 | 
	
		
			
				|  |  | +	{ value: 'no', label: '订单号' },
 | 
	
		
			
				|  |  | +	{ value: 'userId', label: '用户UID' },
 | 
	
		
			
				|  |  | +	{ value: 'userNickname', label: '用户昵称' },
 | 
	
		
			
				|  |  | +	{ value: 'userMobile', label: '用户电话' }
 | 
	
		
			
				|  |  | +])
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * 聚合搜索切换查询对象时触发
 | 
	
		
			
				|  |  | + * @param val
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +const inputChangeSelect = (val: string) => {
 | 
	
		
			
				|  |  | +	dynamicSearchList.value
 | 
	
		
			
				|  |  | +		.filter((item) => item.value !== val)
 | 
	
		
			
				|  |  | +		?.forEach((item1) => {
 | 
	
		
			
				|  |  | +			// 清除集合搜索无用属性
 | 
	
		
			
				|  |  | +			if (queryParams.value.hasOwnProperty(item1.value)) {
 | 
	
		
			
				|  |  | +				
 | 
	
		
			
				|  |  | +				delete queryParams.value[item1.value]
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		})
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/** 查询列表 */
 | 
	
		
			
				|  |  | +const getList = async () => {
 | 
	
		
			
				|  |  | +	loading.value = true
 | 
	
		
			
				|  |  | +	try {
 | 
	
		
			
				|  |  | +		const data = await TradeOrderApi.getOrderPage(unref(queryParams))
 | 
	
		
			
				|  |  | +		data.list.forEach(obj => {
 | 
	
		
			
				|  |  | +			obj.showSetting = false;
 | 
	
		
			
				|  |  | +		});
 | 
	
		
			
				|  |  | +		list.value = data.list
 | 
	
		
			
				|  |  | +		total.value = data.total
 | 
	
		
			
				|  |  | +	} finally {
 | 
	
		
			
				|  |  | +		loading.value = false
 | 
	
		
			
				|  |  |  		searchMoreShow.value = false
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | -	const formRef = ref()
 | 
	
		
			
				|  |  | -	const openDetail = (type:string,row : {},no:string) => {
 | 
	
		
			
				|  |  | -		formRef.value.open(type,row,no)
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -	
 | 
	
		
			
				|  |  | -	defineOptions({ name: 'TradeOrder' })
 | 
	
		
			
				|  |  | -	const { currentRoute, push } = useRouter() // 路由跳转
 | 
	
		
			
				|  |  | -	const loading = ref(true) // 列表的加载中
 | 
	
		
			
				|  |  | -	const total = ref(2) // 列表的总页数
 | 
	
		
			
				|  |  | -	const list = ref<TradeOrderApi.OrderVO[]>([]) // 列表的数据
 | 
	
		
			
				|  |  | -	const queryFormRef = ref<FormInstance>() // 搜索的表单
 | 
	
		
			
				|  |  | -	// 表单搜索
 | 
	
		
			
				|  |  | -	const queryParams = ref({
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/** 搜索按钮操作 */
 | 
	
		
			
				|  |  | +const handleQuery = async () => {
 | 
	
		
			
				|  |  | +	queryParams.value.pageNo = 1
 | 
	
		
			
				|  |  | +	await getList()
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/** 重置按钮操作 */
 | 
	
		
			
				|  |  | +const resetQuery = () => {
 | 
	
		
			
				|  |  | +	queryFormRef.value?.resetFields()
 | 
	
		
			
				|  |  | +	queryParams.value = {
 | 
	
		
			
				|  |  |  		pageNo: 1, // 页数
 | 
	
		
			
				|  |  |  		pageSize: 10, // 每页显示数量
 | 
	
		
			
				|  |  |  		status: undefined, // 订单状态
 | 
	
	
		
			
				|  | @@ -265,205 +305,162 @@
 | 
	
		
			
				|  |  |  		logisticsId: undefined, // 快递公司
 | 
	
		
			
				|  |  |  		pickUpStoreId: undefined, // 自提门店
 | 
	
		
			
				|  |  |  		pickUpVerifyCode: undefined // 自提核销码
 | 
	
		
			
				|  |  | -	})
 | 
	
		
			
				|  |  | -	const queryType = reactive({ queryParam: '' }) // 订单搜索类型 queryParam
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	// 订单聚合搜索 select 类型配置(动态搜索)
 | 
	
		
			
				|  |  | -	const dynamicSearchList = ref([
 | 
	
		
			
				|  |  | -		{ value: 'no', label: '订单号' },
 | 
	
		
			
				|  |  | -		{ value: 'userId', label: '用户UID' },
 | 
	
		
			
				|  |  | -		{ value: 'userNickname', label: '用户昵称' },
 | 
	
		
			
				|  |  | -		{ value: 'userMobile', label: '用户电话' }
 | 
	
		
			
				|  |  | -	])
 | 
	
		
			
				|  |  | -	/**
 | 
	
		
			
				|  |  | -	 * 聚合搜索切换查询对象时触发
 | 
	
		
			
				|  |  | -	 * @param val
 | 
	
		
			
				|  |  | -	 */
 | 
	
		
			
				|  |  | -	const inputChangeSelect = (val : string) => {
 | 
	
		
			
				|  |  | -		dynamicSearchList.value
 | 
	
		
			
				|  |  | -			.filter((item) => item.value !== val)
 | 
	
		
			
				|  |  | -			?.forEach((item1) => {
 | 
	
		
			
				|  |  | -				// 清除集合搜索无用属性
 | 
	
		
			
				|  |  | -				if (queryParams.value.hasOwnProperty(item1.value)) {
 | 
	
		
			
				|  |  | -					delete queryParams.value[item1.value]
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -			})
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | +	handleQuery()
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// /** 查看订单详情 */
 | 
	
		
			
				|  |  | +// const openDetail = (id : number) => {
 | 
	
		
			
				|  |  | +// 	push({ name: 'TradeOrderDetail', params: { id } })
 | 
	
		
			
				|  |  | +// }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/** 操作分发 */
 | 
	
		
			
				|  |  | +const deliveryFormRef = ref()
 | 
	
		
			
				|  |  | +const updateRemarkForm = ref()
 | 
	
		
			
				|  |  | +const updateAddressFormRef = ref() // 收货地址表单 Ref
 | 
	
		
			
				|  |  | +const updateAddress = (id, receiverName, receiverMobile, receiverAreaId, receiverDetailAddress) => {
 | 
	
		
			
				|  |  | +	updateAddressFormRef.value.open(id, receiverName, receiverMobile, receiverAreaId, receiverDetailAddress)
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +const handleDelivery = (id) => {
 | 
	
		
			
				|  |  | +	deliveryFormRef.value?.open("订单列表", id)
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +const handleRemark = (id) => {
 | 
	
		
			
				|  |  | +	updateRemarkForm.value?.open(id)
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// 监听路由变化更新列表,解决订单保存/更新后,列表不刷新的问题。
 | 
	
		
			
				|  |  | +watch(
 | 
	
		
			
				|  |  | +	() => currentRoute.value,
 | 
	
		
			
				|  |  | +	() => {
 | 
	
		
			
				|  |  | +		getList()
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	/** 查询列表 */
 | 
	
		
			
				|  |  | -	const getList = async () => {
 | 
	
		
			
				|  |  | -		loading.value = true
 | 
	
		
			
				|  |  | -		try {
 | 
	
		
			
				|  |  | -			const data = await TradeOrderApi.getOrderPage(unref(queryParams))
 | 
	
		
			
				|  |  | -			data.list.forEach(obj => {
 | 
	
		
			
				|  |  | -				obj.showSetting = false;
 | 
	
		
			
				|  |  | -			});
 | 
	
		
			
				|  |  | -			list.value = data.list
 | 
	
		
			
				|  |  | -			total.value = data.total
 | 
	
		
			
				|  |  | -		} finally {
 | 
	
		
			
				|  |  | -			loading.value = false
 | 
	
		
			
				|  |  | -			searchMoreShow.value = false
 | 
	
		
			
				|  |  | +const pickUpStoreList = ref<PickUpStoreApi.DeliveryPickUpStoreVO[]>([]) // 自提门店精简列表
 | 
	
		
			
				|  |  | +const deliveryExpressList = ref<DeliveryExpressApi.DeliveryExpressVO[]>([]) // 物流公司
 | 
	
		
			
				|  |  | +/** 初始化 **/
 | 
	
		
			
				|  |  | +onMounted(async () => {
 | 
	
		
			
				|  |  | +	await getList()
 | 
	
		
			
				|  |  | +	pickUpStoreList.value = await PickUpStoreApi.getListAllSimple()
 | 
	
		
			
				|  |  | +	deliveryExpressList.value = await DeliveryExpressApi.getSimpleDeliveryExpressList()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | +})
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	/** 搜索按钮操作 */
 | 
	
		
			
				|  |  | -	const handleQuery = async () => {
 | 
	
		
			
				|  |  | -		queryParams.value.pageNo = 1
 | 
	
		
			
				|  |  | -		await getList()
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | +</script>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	/** 重置按钮操作 */
 | 
	
		
			
				|  |  | -	const resetQuery = () => {
 | 
	
		
			
				|  |  | -		queryFormRef.value?.resetFields()
 | 
	
		
			
				|  |  | -		queryParams.value = {
 | 
	
		
			
				|  |  | -			pageNo: 1, // 页数
 | 
	
		
			
				|  |  | -			pageSize: 10, // 每页显示数量
 | 
	
		
			
				|  |  | -			status: undefined, // 订单状态
 | 
	
		
			
				|  |  | -			payChannelCode: undefined, // 支付方式
 | 
	
		
			
				|  |  | -			createTime: undefined, // 创建时间
 | 
	
		
			
				|  |  | -			terminal: undefined, // 订单来源
 | 
	
		
			
				|  |  | -			type: undefined, // 订单类型
 | 
	
		
			
				|  |  | -			deliveryType: undefined, // 配送方式
 | 
	
		
			
				|  |  | -			logisticsId: undefined, // 快递公司
 | 
	
		
			
				|  |  | -			pickUpStoreId: undefined, // 自提门店
 | 
	
		
			
				|  |  | -			pickUpVerifyCode: undefined // 自提核销码
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		handleQuery()
 | 
	
		
			
				|  |  | +<style lang="scss" scoped>
 | 
	
		
			
				|  |  | +//当屏幕最大宽度为768时,走这套样式
 | 
	
		
			
				|  |  | +@media screen and (max-width: 768px) {
 | 
	
		
			
				|  |  | +	.year {
 | 
	
		
			
				|  |  | +		display: none
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	// /** 查看订单详情 */
 | 
	
		
			
				|  |  | -	// const openDetail = (id : number) => {
 | 
	
		
			
				|  |  | -	// 	push({ name: 'TradeOrderDetail', params: { id } })
 | 
	
		
			
				|  |  | -	// }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	/** 操作分发 */
 | 
	
		
			
				|  |  | -	const deliveryFormRef = ref()
 | 
	
		
			
				|  |  | -	const updateRemarkForm = ref()
 | 
	
		
			
				|  |  | -	const updateAddressFormRef = ref() // 收货地址表单 Ref
 | 
	
		
			
				|  |  | -	const updateAddress = (id,receiverName,receiverMobile,receiverAreaId,receiverDetailAddress) => {
 | 
	
		
			
				|  |  | -		updateAddressFormRef.value.open(id,receiverName,receiverMobile,receiverAreaId,receiverDetailAddress)
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -	const handleDelivery = (id) =>{
 | 
	
		
			
				|  |  | -		deliveryFormRef.value?.open("订单列表",id)
 | 
	
		
			
				|  |  | +	.product-card {
 | 
	
		
			
				|  |  | +		margin: 10px 0 !important;
 | 
	
		
			
				|  |  | +		;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | -	const handleRemark = (id,remark) => {
 | 
	
		
			
				|  |  | -		updateRemarkForm.value?.open(id,remark)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	::v-deep(.el-pagination__sizes),
 | 
	
		
			
				|  |  | +	::v-deep(.el-pagination__jump) {
 | 
	
		
			
				|  |  | +		display: none;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	// 监听路由变化更新列表,解决订单保存/更新后,列表不刷新的问题。
 | 
	
		
			
				|  |  | -	watch(
 | 
	
		
			
				|  |  | -		() => currentRoute.value,
 | 
	
		
			
				|  |  | -		() => {
 | 
	
		
			
				|  |  | -			getList()
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	const pickUpStoreList = ref<PickUpStoreApi.DeliveryPickUpStoreVO[]>([]) // 自提门店精简列表
 | 
	
		
			
				|  |  | -	const deliveryExpressList = ref<DeliveryExpressApi.DeliveryExpressVO[]>([]) // 物流公司
 | 
	
		
			
				|  |  | -	/** 初始化 **/
 | 
	
		
			
				|  |  | -	onMounted(async () => {
 | 
	
		
			
				|  |  | -		await getList()
 | 
	
		
			
				|  |  | -		pickUpStoreList.value = await PickUpStoreApi.getListAllSimple()
 | 
	
		
			
				|  |  | -		deliveryExpressList.value = await DeliveryExpressApi.getSimpleDeliveryExpressList()
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | -	})
 | 
	
		
			
				|  |  | -	
 | 
	
		
			
				|  |  | -</script>
 | 
	
		
			
				|  |  | -<style lang="scss" scoped>
 | 
	
		
			
				|  |  | -	@media screen and (max-width: 768px) {
 | 
	
		
			
				|  |  | -		.year{
 | 
	
		
			
				|  |  | -			display:none
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -	.order-div {
 | 
	
		
			
				|  |  | -		position: relative;
 | 
	
		
			
				|  |  | -		min-height: 400px;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | +.order-div {
 | 
	
		
			
				|  |  | +	position: relative;
 | 
	
		
			
				|  |  | +	min-height: 400px;
 | 
	
		
			
				|  |  | +	border: none;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	::v-deep .parent-tabs .el-tabs__nav-wrap::after {
 | 
	
		
			
				|  |  | -		position: static !important;
 | 
	
		
			
				|  |  | +::v-deep .parent-tabs .el-tabs__nav-wrap::after {
 | 
	
		
			
				|  |  | +	position: static !important;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +::v-deep .el-card__body{
 | 
	
		
			
				|  |  | +	padding: 0;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +::v-deep .parent-tabs .el-tabs__active-bar {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	::v-deep .parent-tabs .el-tabs__active-bar {
 | 
	
		
			
				|  |  | +	background-color: unset;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		background-color: unset;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | +.searchMore {
 | 
	
		
			
				|  |  | +	text-align: right;
 | 
	
		
			
				|  |  | +	background: #f3f5f8;
 | 
	
		
			
				|  |  | +	padding: 10px;
 | 
	
		
			
				|  |  | +	position: absolute;
 | 
	
		
			
				|  |  | +	// height: 100px;
 | 
	
		
			
				|  |  | +	width: calc(100% - 20px);
 | 
	
		
			
				|  |  | +	z-index: 111;
 | 
	
		
			
				|  |  | +	box-shadow: 0px 9px 6px rgba(0, 0, 0, 0.2);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	.searchMore {
 | 
	
		
			
				|  |  | -		text-align: right;
 | 
	
		
			
				|  |  | -		background: #f3f5f8;
 | 
	
		
			
				|  |  | -		padding: 10px;
 | 
	
		
			
				|  |  | -		position: absolute;
 | 
	
		
			
				|  |  | -		// height: 100px;
 | 
	
		
			
				|  |  | -		width: calc(100% - 20px);
 | 
	
		
			
				|  |  | -		z-index: 111;
 | 
	
		
			
				|  |  | -		box-shadow: 0px 9px 6px rgba(0, 0, 0, 0.2);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +.el-tabs {
 | 
	
		
			
				|  |  | +	position: absolute;
 | 
	
		
			
				|  |  | +	z-index: 111;
 | 
	
		
			
				|  |  | +	top: 25px;
 | 
	
		
			
				|  |  | +	left: 40px;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +.product-card {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	font-size: 14px;
 | 
	
		
			
				|  |  | +	margin: 10px;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	.el-card {
 | 
	
		
			
				|  |  | +		padding: 15px;
 | 
	
		
			
				|  |  | +		cursor: pointer;
 | 
	
		
			
				|  |  | +		position: relative;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +		:deep(.el-card__body) {
 | 
	
		
			
				|  |  | +			padding: unset;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	.el-tabs {
 | 
	
		
			
				|  |  | +	.setting {
 | 
	
		
			
				|  |  | +		width: 30px;
 | 
	
		
			
				|  |  | +		top: 0px;
 | 
	
		
			
				|  |  | +		right: 0px;
 | 
	
		
			
				|  |  |  		position: absolute;
 | 
	
		
			
				|  |  | -		z-index: 111;
 | 
	
		
			
				|  |  | -		top: 25px;
 | 
	
		
			
				|  |  | -		left: 40px;
 | 
	
		
			
				|  |  | +		height: 30px;
 | 
	
		
			
				|  |  | +		line-height: 30px;
 | 
	
		
			
				|  |  | +		text-align: center;
 | 
	
		
			
				|  |  | +		display: flex;
 | 
	
		
			
				|  |  | +		align-items: center;
 | 
	
		
			
				|  |  | +		justify-content: center;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	.product-card {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		font-size: 14px;
 | 
	
		
			
				|  |  | -		margin: 10px;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		.el-card {
 | 
	
		
			
				|  |  | -			padding: 15px;
 | 
	
		
			
				|  |  | -			cursor: pointer;
 | 
	
		
			
				|  |  | -			position: relative;
 | 
	
		
			
				|  |  | +	.setting :focus-visible {
 | 
	
		
			
				|  |  | +		outline: 0;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -			:deep(.el-card__body) {
 | 
	
		
			
				|  |  | -				padding: unset;
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | +	.setting:focus-visible {
 | 
	
		
			
				|  |  | +		font-size: 20px;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		.setting {
 | 
	
		
			
				|  |  | -			width: 30px;
 | 
	
		
			
				|  |  | -			top: 0px;
 | 
	
		
			
				|  |  | -			right: 0px;
 | 
	
		
			
				|  |  | -			position: absolute;
 | 
	
		
			
				|  |  | -			height: 30px;
 | 
	
		
			
				|  |  | -			line-height: 30px;
 | 
	
		
			
				|  |  | -			text-align: center;
 | 
	
		
			
				|  |  | -			display: flex;
 | 
	
		
			
				|  |  | -			align-items: center;
 | 
	
		
			
				|  |  | -			justify-content: center;
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		.setting :focus-visible {
 | 
	
		
			
				|  |  | -			outline: 0;
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		.setting:focus-visible {
 | 
	
		
			
				|  |  | -			font-size: 20px;
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		.setting:hover {
 | 
	
		
			
				|  |  | -			background: #666
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | +	.setting:hover {
 | 
	
		
			
				|  |  | +		background: #666
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		p,
 | 
	
		
			
				|  |  | -		div {
 | 
	
		
			
				|  |  | -			margin: unset;
 | 
	
		
			
				|  |  | -			padding: unset;
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | +	p,
 | 
	
		
			
				|  |  | +	div {
 | 
	
		
			
				|  |  | +		margin: unset;
 | 
	
		
			
				|  |  | +		padding: unset;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	.spu-table-expand {
 | 
	
		
			
				|  |  | -		padding-left: 42px;
 | 
	
		
			
				|  |  | +.spu-table-expand {
 | 
	
		
			
				|  |  | +	padding-left: 42px;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		:deep(.el-form-item__label) {
 | 
	
		
			
				|  |  | -			width: 82px;
 | 
	
		
			
				|  |  | -			font-weight: bold;
 | 
	
		
			
				|  |  | -			color: #99a9bf;
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | +	:deep(.el-form-item__label) {
 | 
	
		
			
				|  |  | +		width: 82px;
 | 
	
		
			
				|  |  | +		font-weight: bold;
 | 
	
		
			
				|  |  | +		color: #99a9bf;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  </style>
 |