Преглед на файлове

feat:需求调整后的自提商品相关接口

caoliqin преди 5 дни
родител
ревизия
36f6155dd8
променени са 3 файла, в които са добавени 2619 реда и са изтрити 0 реда
  1. 16 0
      src/api/hisStore/storeOrder.js
  2. 1857 0
      src/views/hisStore/storeOrderPick/components/productOrderPick.vue
  3. 746 0
      src/views/hisStore/storeOrderPick/index.vue

+ 16 - 0
src/api/hisStore/storeOrder.js

@@ -17,6 +17,14 @@ export function listAllStoreOrder(query) {
     params: query
   })
 }
+
+export function listPickStoreOrder(query) {
+  return request({
+    url: '/store/store/storeOrder/pickList',
+    method: 'get',
+    params: query
+  })
+}
 export function getCustomerOrderList(query) {
   return request({
     url: '/store/store/storeOrder/getCustomerOrderList',
@@ -297,3 +305,11 @@ export function batchSetErpOrder(data) {
   })
 }
 
+export function refundStorePayment(data) {
+  return request({
+    url: '/store/store/storePayment/refundStorePayment',
+    method: 'post',
+    data: data
+  })
+}
+

+ 1857 - 0
src/views/hisStore/storeOrderPick/components/productOrderPick.vue

@@ -0,0 +1,1857 @@
+<template>
+  <div class="order-content">
+    <div class="order-status" v-if="order!=null">
+      <el-steps :active="order.status==3?order.status+1:order.status" align-center>
+        <el-step title="待支付"></el-step>
+        <el-step title="待发货"></el-step>
+        <el-step title="待收货"></el-step>
+        <el-step title="交易完成"></el-step>
+      </el-steps>
+    </div>
+    <div>
+
+      <el-card shadow="never" style="margin-top: 15px">
+        <div class="operate-container" v-show="order!=null">
+        <span style="margin-left: 20px" class="color-danger">订单状态:
+           <el-tag prop="status" v-for="(item, index) in statusOptions"
+                   v-if="order.status==item.dictValue">{{ item.dictLabel }}</el-tag>
+        </span>
+
+          <div class="operate-button-container">
+            <el-button size="mini" @click="handleCertificates()" v-hasPermi="['store:storeOrder:uploadCredentials']">
+              上传凭证
+            </el-button>
+            <el-button size="mini" @click="handleEditAddress()" v-if="order.status==0||order.status==1"
+                       v-hasPermi="['store:storeOrder:editAddress']">修改收货地址
+            </el-button>
+            <el-button size="mini" @click="handleBindCustomer()" v-hasPermi="['store:storeOrder:bindCustomer']">
+              关联客户
+            </el-button>
+            <el-button size="mini" @click="editOrder()" v-hasPermi="['store:storeOrder:edit']">修改订单</el-button>
+            <!-- <el-button size="mini" @click="handleEditUser()"  v-hasPermi="['users:user:edit']" >修改会员修改</el-button> -->
+            <el-button size="mini" v-if="order.customerId!=null&&order.customerId>0" @click="handleCustomer()">
+              查看客户详情
+            </el-button>
+          </div>
+
+          <div class="operate-button-container" v-hasPermi="['store:storeOrder:express']">
+            <el-button size="mini" @click="showExpress()">查看物流</el-button>
+          </div>
+            <div class="operate-button-container">
+                <el-button size="mini"  v-if="showRefundButton" @click="handleRefund" v-hasPermi="['store:storePaymentScrm:refund']">退款</el-button>
+            </div>
+        </div>
+        <div style="margin: 20px 0px" v-if="order!=null">
+        <span class="font-small">
+          基本信息
+        </span>
+        </div>
+        <el-descriptions :column="4" border>
+          <el-descriptions-item label="订单编号">
+                <span v-if="order!=null">
+                  {{ order.orderCode }}
+                </span>
+            <el-tag v-for="(item, index) in createTypeOptions"
+                    v-if="order!=null&&order.orderCreateType==item.dictValue">{{ item.dictLabel }}
+            </el-tag>
+          </el-descriptions-item>
+          <el-descriptions-item label="会员">
+                <span v-if="user!=null">
+                  {{ user.nickname }}({{ user.phone }})
+                </span>
+          </el-descriptions-item>
+          <!-- <el-descriptions-item label="进线时间"  >
+              <span v-if="user!=null">
+                {{user.registerDate}}
+              </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="推线编码"  >
+              <span v-if="user!=null">
+                {{user.registerCode}}
+              </span>
+          </el-descriptions-item> -->
+
+          <el-descriptions-item label="收货人">
+                <span v-if="order!=null ">
+                  {{ order.realName }}
+                </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="手机号码">
+                <span v-if="order!=null ">
+                  {{ order.userPhone }}
+                </span>
+            <el-button type="text" size="mini" @click="callNumber(0,0,orderId)"
+                       v-hasPermi="['store:storeOrder:callNumber']">拨号
+            </el-button>
+            <el-button type="text" size="mini" @click="handleSms(order.userPhone)"
+                       v-hasPermi="['store:storeOrder:sendSms']">短信
+            </el-button>
+            <el-button icon="el-icon-search" size="mini" @click="handlePhone()" style="margin-left: 20px;" circle
+                       v-hasPermi="['store:storeOrder:queryPhone']"></el-button>
+          </el-descriptions-item>
+          <el-descriptions-item label="收货地址">
+            <el-popover
+              v-if="order!=null"
+              placement="top-start"
+              title="收货地址"
+              width="300"
+              trigger="hover"
+              :content="order.userAddress">
+              <span slot="reference">{{ order.userAddress }}</span>
+              <el-button icon="el-icon-search" size="mini" @click="handleAddress()" style="margin-left: 20px;" circle
+                         v-hasPermi="['store:storeOrder:queryAddress']"></el-button>
+            </el-popover>
+          </el-descriptions-item>
+          <el-descriptions-item label="支付方式">
+                <span v-if="order!=null ">
+                  <el-tag prop="orderType" v-for="(item, index) in payTypeOptions" v-if="order.payType==item.dictValue">{{
+                      item.dictLabel
+                    }}</el-tag>
+                </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="订单类型">
+                <span v-if="order!=null ">
+                  <el-tag prop="orderType" v-for="(item, index) in orderTypeOptions"
+                          v-if="order.orderType==item.dictValue">{{ item.dictLabel }}</el-tag>
+                </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="物流公司编号">
+                <span v-if="order!=null ">
+                  {{ order.deliverySn }}
+                </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="物流公司名称">
+                <span v-if="order!=null ">
+                  {{ order.deliveryName }}
+                </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="快递单号">
+                <span v-if="order!=null ">
+                  {{ order.deliveryId }}
+                </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="物流状态">
+                <span v-if="order!=null">
+                  <el-tag v-for="(item, index) in deliveryStatusOptions"
+                          v-if="order.deliveryStatus==item.dictValue"
+                          :key="index">{{ item.dictLabel }}</el-tag>
+                </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="物流跟踪状态">
+                <span v-if="order!=null">
+                  <el-tag v-for="(item, index) in deliveryTypeOptions"
+                          v-if="order.deliveryType==item.dictValue"
+                          :key="index">{{ item.dictLabel }}</el-tag>
+                </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="档期归属">
+            <el-tag prop="scheduleId" v-for="(item, index) in scheduleOptions"
+                    v-if="order!=null&&order.scheduleId==item.id">{{ item.name }}
+            </el-tag>
+          </el-descriptions-item>
+          <el-descriptions-item label="用户备注">
+                <span v-if="order!=null ">
+                  {{ order.mark }}
+                </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="平台备注">
+                <span v-if="order!=null ">
+                  {{ order.remark }}
+                </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="销售名称" v-if="order!=null && order.orderType != 0">
+                <span >
+                  {{ order.companyUserName }}
+                </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="销售公司" v-if="order!=null && order.orderType != 0">
+                <span >
+                  {{ order.companyName }}
+                </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="所属营期" v-if="order!=null && order.orderType == 3">
+                <span >
+                  {{ order.periodName }}
+                </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="所属小节" v-if="order!=null && order.orderType == 3">
+                <span >
+                  {{ order.videoName }}
+                </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="跟随阶段" v-if="company.companyId == 174">
+              <span v-if="order!=null ">
+                <el-tag prop="orderVisit" v-for="(item, index) in customerUserStatusOptions"
+                        v-if="order.orderVisit==item.dictValue">{{ item.dictLabel }}</el-tag>
+              </span>
+          </el-descriptions-item>
+          <el-descriptions-item v-if="customerInfo!=null " label="客户编码">
+                <span>
+                  {{ customerInfo.customerCode }}
+                </span>
+          </el-descriptions-item>
+          <el-descriptions-item v-if="customerInfo!=null " label="进线时间">
+                <span>
+                  {{ customerInfo.registerDate }}
+                </span>
+          </el-descriptions-item>
+
+            <el-descriptions-item label="财务审核原因" v-if="isRefundOrder">
+                <span>{{ financeAuditReasonText }}</span>
+            </el-descriptions-item>
+            <el-descriptions-item label="财务审核备注" v-if="isRefundOrder">
+                <span>{{ financeAuditRemarkText }}</span>
+            </el-descriptions-item>
+
+        </el-descriptions>
+        <div style="margin: 20px 0px" v-if="order!=null">
+        <span class="font-small">
+          凭证信息
+        </span>
+        </div>
+        <el-image
+          v-if="this.certificates != null"
+          :src="certificates"
+          :preview-src-list="[certificates]"
+          :style="{ width: '100px', height: '100px' }"
+          @click.native="showImageDialog"
+        ></el-image>
+        <el-dialog :visible.sync="dialogVisibleImage" width="10%">
+          <img :src="certificates" style="width: 100%" alt="">
+        </el-dialog>
+
+        <div style="margin-top: 20px">
+          <span class="font-small">商品信息</span>
+        </div>
+        <el-table
+          ref="itemsTable"
+          border
+          v-if="items!=null"
+          :data="items"
+          size="small"
+          style="width: 100%;margin-top: 20px">
+          <el-table-column label="商品图片" width="150" align="center">
+            <template slot-scope="scope">
+              <img :src="JSON.parse(scope.row.jsonInfo).image" style="height: 80px">
+            </template>
+          </el-table-column>
+          <el-table-column label="商品名称" width="300" align="center">
+            <template slot-scope="scope">
+              <p>{{ JSON.parse(scope.row.jsonInfo).productName }}</p>
+            </template>
+          </el-table-column>
+          <el-table-column label="单价" width="240" align="center">
+            <template slot-scope="scope">
+              <p>¥{{ JSON.parse(scope.row.jsonInfo).price.toFixed(2) }}</p>
+            </template>
+          </el-table-column>
+          <el-table-column label="规格" width="240" align="center">
+            <template slot-scope="scope">
+              {{ JSON.parse(scope.row.jsonInfo).sku }}
+            </template>
+          </el-table-column>
+          <el-table-column label="数量" width="180" align="center">
+            <template slot-scope="scope">
+              <span>{{ scope.row.num }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="小计" align="center">
+            <template slot-scope="scope">
+              ¥{{ scope.row.num * JSON.parse(scope.row.jsonInfo).price.toFixed(2) }}
+            </template>
+          </el-table-column>
+        </el-table>
+        <div style="float: right;margin: 20px" v-if="order!=null">
+          合计:<span class="color-danger">¥{{ order.totalPrice.toFixed(2) }}</span>
+        </div>
+
+        <div style="margin: 60px 0px 20px 0px">
+          <span class="font-small">费用信息</span>
+        </div>
+        <el-descriptions v-if="zdyInfo !== 'gzzdy'" :column="4" border>
+          <el-descriptions-item label="商品合计">
+              <span v-if="order!=null">
+                ¥{{ order.totalPrice.toFixed(2) }}
+              </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="应付金额">
+              <span v-if="order!=null">
+                ¥{{ order.payPrice.toFixed(2) }}
+              </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="运费">
+              <span v-if="order!=null">
+                ¥{{ order.payPostage.toFixed(2) }}
+              </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="优惠券">
+              <span v-if="order!=null">
+                ¥{{ order.couponPrice.toFixed(2) }}
+              </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="积分抵扣">
+              <span v-if="order!=null">
+                ¥{{ order.deductionPrice.toFixed(2) }}
+              </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="实付金额">
+              <span v-if="order!=null">
+                ¥{{ order.payMoney.toFixed(2) }}
+              </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="代收金额">
+              <span v-if="order!=null">
+                ¥{{ order.payDelivery.toFixed(2) }}
+              </span>
+          </el-descriptions-item>
+        </el-descriptions>
+
+        <el-descriptions v-if="zdyInfo === 'gzzdy'" :column="4" border>
+          <el-descriptions-item label="商品合计">
+            <span v-if="order!=null">
+              ¥{{ order.totalPrice.toFixed(2) }}
+            </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="应付金额">
+            <span v-if="order!=null">
+              ¥{{ order.payPrice.toFixed(2) }}
+            </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="实付金额">
+            <span v-if="order!=null">
+              ¥{{ order.payMoney.toFixed(2) }}
+            </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="代收金额">
+            <span v-if="order!=null">
+              ¥{{ order.payDelivery.toFixed(2) }}
+            </span>
+            <el-button
+              size="mini"
+              type="primary"
+              plain
+              class="edit-quantity-btn"
+              @click="editPayDeliveryHandle()"
+              v-hasPermi="['store:storeOrder:editPayDelivery']">
+              修改
+            </el-button>
+          </el-descriptions-item>
+          <el-descriptions-item label="优惠券">
+            <span v-if="order!=null">
+              ¥{{ order.couponPrice.toFixed(2) }}
+            </span>
+          </el-descriptions-item>
+        </el-descriptions>
+
+        <div style="margin-top: 20px">
+          <svg-icon icon-class="marker" style="color: #606266"></svg-icon>
+          <span class="font-small">支付信息</span>
+        </div>
+        <el-table
+          border
+          :data="payments"
+          size="small"
+          style="width: 100%;margin-top: 20px">
+          <el-table-column label="支付单号" align="center" prop="payCode" width="120px"/>
+          <el-table-column label="支付金额" align="center" prop="payMoney"/>
+          <el-table-column label="类型" align="center" prop="payTypeCode"/>
+          <el-table-column label="交易单号" align="center" prop="bankTransactionId"/>
+          <el-table-column label="银行单号" align="center" prop="bankSerialNo"/>
+          <el-table-column label="创建时间" align="center" prop="createTime"/>
+          <el-table-column label="支付时间" align="center" prop="payTime"/>
+        </el-table>
+
+        <div style="margin-top: 20px">
+          <span class="font-small">操作信息</span>
+        </div>
+        <el-table style="margin-top: 20px;width: 100%"
+                  ref="orderHistoryTable"
+                  :data="logs" border>
+          <el-table-column label="操作时间" width="160" align="center">
+            <template slot-scope="scope">
+              {{ scope.row.changeTime }}
+            </template>
+          </el-table-column>
+          <el-table-column label="备注" align="center">
+            <template slot-scope="scope">
+              {{ scope.row.changeMessage }}
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <div style="margin-top: 20px">
+          <span class="font-small">审批信息</span>
+        </div>
+        <el-table style="margin-top: 20px;width: 100%"
+                  :data="auditLogs" border>
+          <el-table-column label="操作时间" width="160" align="center">
+            <template slot-scope="scope">
+              {{ scope.row.createTime }}
+            </template>
+          </el-table-column>
+          <el-table-column label="备注" align="center">
+            <template slot-scope="scope">
+              {{ scope.row.content }}
+            </template>
+          </el-table-column>
+        </el-table>
+      </el-card>
+    </div>
+    <el-dialog :title="edit.title" :visible.sync="edit.open" width="600px" append-to-body>
+      <el-form ref="editForm" :model="editForm" :rules="editRules" label-width="100px">
+        <el-form-item label="订单类型" prop="orderType">
+          <el-select style="width: 200px" v-model="editForm.orderType" placeholder="请选择订单类型" clearable
+                     size="small">
+            <el-option
+              v-for="item in orderTypeOptions"
+              :key="item.dictValue"
+              :label="item.dictLabel"
+              :value="item.dictValue"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="档期归属" prop="scheduleId">
+          <el-select filterable style="width: 200px" v-model="editForm.scheduleId" placeholder="请选择档期" clearable
+                     size="small">
+            <el-option
+              v-for="item in scheduleOptions"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="跟随阶段" prop="orderVisit" v-if="company.companyId == 174">
+          <el-select filterable style="width: 200px" v-model="editForm.orderVisit" placeholder="请选择跟随阶段"
+                     clearable size="small">
+            <el-option
+              v-for="item in customerUserStatusOptions"
+              :key="item.dictValue"
+              :label="item.dictLabel"
+              :value="item.dictValue"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="备注" prop="mark">
+          <el-input v-model="editForm.mark" placeholder="请输入备注"/>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitEditForm">确 定</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog :title="editUser.title" :visible.sync="editUser.open" width="600px" append-to-body>
+      <el-form ref="editUserForm" :model="editUserForm" :rules="editUserRules" label-width="100px">
+        <el-form-item label="进线时间" prop="registerDate">
+          <el-date-picker clearable size="small"
+                          v-model="editUserForm.registerDate"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择进线时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="推线编码" prop="registerCode">
+          <el-input v-model="editUserForm.registerCode" placeholder="请输入推线编码"/>
+        </el-form-item>
+        <el-form-item label="渠道来源" prop="source">
+          <el-input v-model="editUserForm.source" placeholder="请输入渠道来源"/>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitEditUserForm">确 定</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog :title="editAddress.title" :visible.sync="editAddress.open" width="600px" append-to-body>
+      <el-form ref="editAddressForm" :model="editAddressForm" :rules="editAddressRules" label-width="100px">
+        <el-form-item label="收件人" prop="realName">
+          <el-input v-model="editAddressForm.realName" placeholder="请输入收件人"/>
+        </el-form-item>
+        <el-form-item label="联系电话" prop="source">
+          <el-input v-model="editAddressForm.userPhone" placeholder="请输入联系电话"/>
+        </el-form-item>
+        <el-form-item label="收货地址" prop="district">
+          <el-row :gutter="20">
+            <el-col :span="6">
+              <el-select @change="provinceChange" v-model="editAddressForm.provinceId" placeholder="请选择">
+                <el-option
+                  v-for="item in province"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value">
+                </el-option>
+              </el-select>
+            </el-col>
+            <el-col :span="6">
+              <el-select @change="cityChange" v-model="editAddressForm.cityId" placeholder="请选择">
+                <el-option
+                  v-for="item in city"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value">
+                </el-option>
+              </el-select>
+            </el-col>
+            <el-col :span="6">
+              <el-select @change="districtChange" v-model="editAddressForm.districtId" placeholder="请选择">
+                <el-option
+                  v-for="item in district"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value">
+                </el-option>
+              </el-select>
+            </el-col>
+          </el-row>
+        </el-form-item>
+        <el-form-item label="详细地址" prop="detail">
+          <el-input v-model="editAddressForm.detail" placeholder="请输入收货人详细地址"/>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitEditAddressForm">确 定</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog :title="expressDialog.title" :visible.sync="expressDialog.open" width="600px" append-to-body>
+      <el-table style="margin-top: 20px;width: 100%"
+                ref="orderHistoryTable"
+                :data="traces" border>
+        <el-table-column label="操作时间" width="160" align="center">
+          <template slot-scope="scope">
+            {{ scope.row.AcceptTime }}
+          </template>
+        </el-table-column>
+        <el-table-column label="位置" align="center">
+          <template slot-scope="scope">
+            {{ scope.row.Location }}
+          </template>
+        </el-table-column>
+        <el-table-column label="描述" align="center">
+          <template slot-scope="scope">
+            {{ scope.row.AcceptStation }}
+          </template>
+        </el-table-column>
+      </el-table>
+    </el-dialog>
+    <el-dialog :title="bindCustomerDialog.title" :visible.sync="bindCustomerDialog.open" width="800px" append-to-body>
+      <el-form ref="bindCustomerForm" :model="bindCustomerForm" :rules="bindCustomerRules" label-width="100px">
+        <el-form-item label="客户查询">
+          <el-row :gutter="10" class="mb8">
+            <el-col :span="1.5">
+              <el-input v-model="bindCustomerForm.mobile" placeholder="请输入客户手机号"/>
+            </el-col>
+            <el-col :span="1.5">
+              <el-button type="primary" @click="searchCustomer">查看</el-button>
+            </el-col>
+          </el-row>
+
+        </el-form-item>
+        <el-form-item label="客户选择" prop="customerIds">
+          <el-table @selection-change="handleSelectionChange"
+                    :data="customers" border>
+            <el-table-column type="selection" width="55" align="center"/>
+            <el-table-column label="ID" align="center" prop="customerId"/>
+            <el-table-column label="客户编号" width="160" align="center">
+              <template slot-scope="scope">
+                {{ scope.row.customerCode }}
+              </template>
+            </el-table-column>
+            <el-table-column label="客户名称" width="160" align="center">
+              <template slot-scope="scope">
+                {{ scope.row.customerName }}
+              </template>
+            </el-table-column>
+            <el-table-column label="客户手机号" width="160" align="center">
+              <template slot-scope="scope">
+                {{ scope.row.mobile }}
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitBindCustomerForm">确 定</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog :title="certificateDialig.title" :visible.sync="certificateDialig.open" append-to-body>
+      <el-form ref="certificateForm" :model="certificateForm" :rules="certificateRules" label-width="100px">
+        <el-form-item label="凭证" prop="certificates">
+          <ImageUpload v-model="photoArr" type="image" :num="10" :width="150" :height="150"/>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="handleConfirm">确 定</el-button>
+      </div>
+    </el-dialog>
+    <el-drawer
+      :append-to-body="true"
+      size="75%"
+      :title="customer.title" :visible.sync="customer.open"
+    >
+      <customer-details ref="customerDetails"/>
+    </el-drawer>
+    <el-dialog :title="addSms.title" :visible.sync="addSms.open" width="800px" append-to-body>
+      <add-sms ref="sms" @close="closeSms()"></add-sms>
+    </el-dialog>
+    <!--  修改代收金额  -->
+    <el-dialog :title="editPayDelivery.title" :visible.sync="editPayDelivery.open" width="500px" append-to-body>
+      <el-form ref="payDeliveryForm" :model="payDeliveryForm" :rules="payDeliveryRules" label-width="150px">
+        <el-form-item label="代收金额(元)" prop="payDelivery">
+          <el-input-number
+            v-model="payDeliveryForm.payDelivery"
+            :min="0.00"
+            :precision="2"
+            :step="0.01"
+            size="small"
+            style="width: 150px"
+          >
+          </el-input-number>
+        </el-form-item>
+      </el-form>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="editPayDelivery.open = false">取 消</el-button>
+        <el-button type="primary" @click="submitPayDeliveryForm">确 定</el-button>
+      </div>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import {
+  getExpress,
+  getStoreOrder,
+  getStoreOrderAddress,
+  updateStoreOrder,
+  bindCustomer,
+  uploadCredentials,
+  getUserPhone,
+  editPayDelivery,
+  refundStorePayment
+} from "@/api/hisStore/storeOrder";
+import {updateUser, getUser} from "@/api/users/user";
+import {getTcmScheduleList} from "@/api/company/tcmScheduleReport";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import Editor from '@/components/Editor/wang';
+import singleImg from '@/components/Material/single'
+import {getCustomerListBySearch} from "@/api/crm/customer";
+import ImageUpload from '@/components/ImageUpload'
+import Material from '@/components/Material'
+import {getCitys} from "@/api/hisStore/city";
+import customerDetails from '@/views/crm/components/customerDetails.vue';
+import addSms from '@/views/crm/components/addSms.vue';
+
+export default {
+  name: "productOrderPick",
+  components: {customerDetails, ImageUpload, Material, addSms, Treeselect, Editor, singleImg},
+  data() {
+    return {
+      zdyInfo: process.env.VUE_APP_FS_USER_INFO,
+      customerUserStatusOptions: [],
+      scheduleOptions: [],
+      dialogVisibleImage: false,
+      customerInfo: null,
+      customer: {
+        title: "客户详情",
+        open: false,
+      },
+      photoArr: null,
+      certificateDialig: {
+        title: "上传凭证",
+        open: false,
+      },
+      certificateForm: {
+        orderCode: null,
+        certificates: null,
+      },
+      addSms: {
+        open: false,
+        title: "发短信"
+      },
+      certificateRules: {
+        certificates: [
+          {required: true, message: "凭证不能为空", trigger: "change"}
+        ]
+      },
+      customers: [],
+      bindCustomerDialog: {
+        title: "关联客户",
+        open: false,
+      },
+      bindCustomerForm: {
+        mobile: null,
+        customerIds: null,
+      },
+      bindCustomerRules: {
+        customerIds: [
+          {required: true, message: "客户不能为空", trigger: "change"}
+        ],
+
+      },
+      orderId: null,
+      expressDialog: {
+        title: "物流信息",
+        open: false,
+      },
+      citys: [],
+      province: [],
+      city: [],
+      district: [],
+      editAddress: {
+        title: "修改收货地址",
+        open: false,
+      },
+      editAddressForm: {
+        districtId: null,
+
+      },
+      editAddressRules: {},
+      editUser: {
+        title: "修改会员信息",
+        open: false,
+      },
+      editUserForm: {
+        registerDate: null,
+        registerCode: "",
+        source: "",
+      },
+      editUserRules: {},
+      edit: {
+        title: "",
+        open: false,
+      },
+      editForm: {
+        orderType: null,
+        scheduleId: null,
+        orderVisit: null,
+        mark: "",
+      },
+      editRules: {},
+      createTypeOptions: [],
+      deliveryStatusOptions: [],
+      deliveryTypeOptions: [],
+      orderTypeOptions: [],
+      payTypeOptions: [],
+      statusOptions: [],
+      certificates: null,
+      order: null,
+      user: {},
+      logs: [],
+      items: [],
+      express: [],
+      traces: [],
+      payments: [],
+      auditLogs: [],
+      // 修改代收金额相关参数
+      editPayDelivery: {
+        title: "修改代收金额",
+        open: false,
+      },
+      payDeliveryForm: {
+        id: null,
+        payDelivery: 0.00
+      },
+      payDeliveryRules: {
+        payDelivery: [
+          {required: true, message: "代收金额不能为空", trigger: "blur"},
+        ]
+      },
+      afterSales: {
+        auditReasonName: null,
+        auditRemark: null,
+        reasonValue1: null,
+        reasonValue2: null
+      }
+    };
+  },
+  created() {
+    this.getDicts("store_order_delivery_status").then((response) => {
+      this.deliveryStatusOptions = response.data;
+    });
+    this.getDicts("store_order_delivery_type").then((response) => {
+      this.deliveryTypeOptions = response.data;
+    });
+    this.getDicts("crm_customer_user_status").then((response) => {
+      this.customerUserStatusOptions = response.data;
+    });
+    this.getDicts("store_order_type").then((response) => {
+      this.orderTypeOptions = response.data;
+    });
+    this.getDicts("store_order_status").then((response) => {
+      this.statusOptions = response.data;
+    });
+    this.getDicts("store_pay_type").then((response) => {
+      this.payTypeOptions = response.data;
+    });
+    this.getDicts("store_order_create_type").then((response) => {
+      this.createTypeOptions = response.data;
+    });
+    getTcmScheduleList().then(response => {
+      this.scheduleOptions = response.data;
+    });
+
+  },
+  computed: {
+    company() {
+      return this.$store.state.user.user;
+    },
+    /** 退款中 / 已退款 */
+    isRefundOrder() {
+      if (!this.order) return false;
+      const s = Number(this.order.status);
+      return s === -1 || s === -2;
+    },
+    /** 财务审核原因:售后一级 + 二级,兼容旧数据 auditReasonName */
+    financeAuditReasonText() {
+      const a = this.afterSales;
+      if (!a) return '—';
+      const parts = [a.reasonValue1, a.reasonValue2].filter(
+        x => x != null && String(x).trim() !== ''
+      );
+      if (parts.length > 0) return parts.join(' / ');
+      if (a.auditReasonName) return a.auditReasonName;
+      return '—';
+    },
+    financeAuditRemarkText() {
+      const a = this.afterSales;
+      if (!a || a.auditRemark == null || String(a.auditRemark).trim() === '') return '—';
+      return a.auditRemark;
+    },
+    /** 已支付且存在支付记录时显示退款 */
+    showRefundButton() {
+      if (!this.order) return false;
+      const status = String(this.order.status);
+      if (status === '0') return false;
+      if (status === '-1' || status === '-2') return false;
+      if (this.order.payMoney == null || Number(this.order.payMoney) <= 0) return false;
+      const payment = this.getLatestPayment();
+      return !!(payment && payment.paymentId);
+    }
+
+  },
+  methods: {
+    // 防抖函数
+    debounce(func, wait) {
+      let timeout;
+      return function executedFunction(...args) {
+        const later = () => {
+          clearTimeout(timeout);
+          func(...args);
+        };
+        clearTimeout(timeout);
+        timeout = setTimeout(later, wait);
+      };
+    },
+
+    // 节流函数
+    throttle(func, limit) {
+      let inThrottle;
+      return function() {
+        const args = arguments;
+        const context = this;
+        if (!inThrottle) {
+          func.apply(context, args);
+          inThrottle = true;
+          setTimeout(() => inThrottle = false, limit);
+        }
+      }
+    },
+
+    closeSms() {
+      this.addSms.open = false;
+    },
+    handleSms(mobile) {
+      this.addSms.open = true;
+      var that = this;
+      setTimeout(() => {
+        that.$refs.sms.getOrderId(this.orderId, mobile, 2);
+      }, 500);
+
+    },
+    handlePhone() {
+      const id = this.order.id;
+      getUserPhone(id).then(response => {
+        this.order.userPhone = response.userPhone;
+      })
+    },
+    handleAddress() {
+      const id = this.order.id;
+      getStoreOrderAddress(id).then(response => {
+        this.order.userAddress = response.address;
+      })
+    },
+    showImageDialog() {
+      this.dialogVisible = true;
+    },
+    handleCustomer() {
+      var that = this;
+      this.customer.open = true;
+      setTimeout(() => {
+        that.$refs.customerDetails.getDetails(this.order.customerId);
+      }, 200);
+    },
+    handleSelectionChange(selection) {
+      this.bindCustomerForm.customerIds = selection.map(item => item.customerId)
+    },
+    searchCustomer() {
+      if (this.bindCustomerForm.mobile == null || this.bindCustomerForm.mobile == "") {
+        this.msgError("请输入手机号");
+        return;
+      }
+      var data = {mobile: this.bindCustomerForm.mobile};
+      getCustomerListBySearch(data).then(response => {
+        this.customers = response.data;
+      });
+    },
+    handleBindCustomer() {
+      this.customers = [];
+      this.bindCustomerDialog.open = true;
+      this.bindCustomerForm.mobile = null;
+      this.bindCustomerForm.orderId = this.orderId;
+      this.bindCustomerForm.customerIds = null;
+    },
+    /** 提交按钮 */
+    submitBindCustomerForm() {
+      this.$refs["bindCustomerForm"].validate(valid => {
+        if (valid) {
+          bindCustomer(this.bindCustomerForm).then(response => {
+            if (response.code === 200) {
+              this.msgSuccess("修改成功");
+              this.bindCustomerDialog.open = false;
+            }
+          });
+        }
+      });
+    },
+    handleCertificates() {
+      this.certificateDialig.open = true;
+      this.photoArr = null;
+    },
+    handleConfirm() {
+      this.certificateForm.id = this.orderId;
+      this.certificateForm.orderCode = this.order.orderCode;
+      this.certificateForm.certificates = this.photoArr;
+      uploadCredentials(this.certificateForm).then(response => {
+        if (response.code === 200) {
+          this.msgSuccess("上传成功");
+          this.certificateDialig.open = false;
+          this.getOrder(this.order.id);
+        }
+      });
+    },
+    showExpress() {
+      this.expressDialog.open = true;
+      this.traces = [];
+      getExpress(this.orderId).then(response => {
+        this.express = response.data;
+        if (this.express != null && this.express.Traces != null) {
+          this.traces = this.express.Traces
+        }
+
+      });
+
+    },
+    getLatestPayment() {
+      if (!this.payments || this.payments.length === 0) {
+        return null;
+      }
+      if (this.payments.length === 1) {
+        return this.payments[0];
+      }
+      const sorted = [...this.payments].sort((a, b) => {
+        const timeA = new Date(a.payTime || a.createTime || 0).getTime();
+        const timeB = new Date(b.payTime || b.createTime || 0).getTime();
+        return timeB - timeA;
+      });
+      return sorted[0];
+    },
+    handleRefund() {
+      const payment = this.getLatestPayment();
+      if (!payment || !payment.paymentId) {
+        this.msgError('未找到支付记录');
+        return;
+      }
+      const refundMoney = this.order.payMoney;
+      this.$confirm(`确认对该订单退款吗?`, '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        refundStorePayment({
+          paymentId: payment.paymentId,
+          refundMoney: refundMoney
+        }).then(response => {
+          if (response.code === 200) {
+            this.msgSuccess('退款成功');
+            this.getOrder(this.order.id);
+          }
+        });
+      }).catch(() => {});
+    },
+    districtChange(val) {
+      var item = this.district.find((item) => {
+        return item.value == val;
+      })
+
+      this.editAddressForm.district = item.label;
+
+    },
+    cityChange(val) {
+      // this.district=this.citys.filter(item => item.value===val )
+      this.editAddressForm.districtId = null;
+      var item = this.city.find((item) => {
+        return item.value == val;
+      })
+      console.log(item)
+      this.district = item.children;
+      this.editAddressForm.city = item.label;
+
+
+    },
+    provinceChange(val) {
+      // this.city=this.citys.filter(item => item.value===val )
+      this.district = [];
+      this.editAddressForm.cityId = null;
+      this.editAddressForm.districtId = null;
+      var item = this.citys.find((item) => {
+        return item.value == val;
+      })
+      this.city = item.children;
+      this.editAddressForm.province = item.label;
+    },
+    async getCityList() {
+      try {
+        const res = await getCitys();
+        this.citys = res.data;
+        this.province = res.data.filter(item => item.pid === 0);
+        // 可选:返回数据以便链式调用
+        return res.data;
+      } catch (error) {
+        console.error('获取城市列表失败:', error);
+      }
+    },
+    async handleEditAddress() {
+      // 等待城市数据加载完成
+      await this.getCityList();
+
+      // 初始化表单数据
+      this.editAddressForm.id = this.order.id;
+      this.editAddressForm.realName = this.order.realName;
+      this.editAddressForm.userPhone = this.order.userPhone;
+
+      // 初始化表单中的地址字段
+      this.editAddressForm.provinceId = '';
+      this.editAddressForm.cityId = '';
+      this.editAddressForm.districtId = '';
+      this.editAddressForm.detail = '';
+
+      // 初始化级联数据
+      this.city = [];
+      this.district = [];
+
+      // 检查是否有地址数据
+      if (!this.order?.userAddress) {
+        this.editAddress.open = true;
+        return;
+      }
+
+      // 分割地址
+      const addressParts = this.order.userAddress.trim().split(/\s+/);
+
+      // 如果地址格式不正确,将整个地址作为详情
+      if (addressParts.length < 4) {
+        this.editAddressForm.detail = this.order.userAddress;
+        this.editAddress.open = true;
+        return;
+      }
+
+      // 解析省份
+      const provinceName = addressParts[0];
+      const province = this.citys?.find(item => item.label === provinceName);
+
+      if (province) {
+        this.editAddressForm.provinceId = province.value;
+
+        // 获取城市列表
+        if (Array.isArray(province.children)) {
+          this.city = province.children.filter(item => item.pid === province.value);
+
+          // 解析城市
+          const cityName = addressParts[1];
+          const city = this.city.find(item => item.label === cityName);
+
+          if (city) {
+            this.editAddressForm.cityId = city.value;
+
+            // 获取区县列表
+            if (Array.isArray(city.children)) {
+              this.district = city.children.filter(item => item.pid === city.value);
+
+              // 解析区县
+              const districtName = addressParts[2];
+              const district = this.district.find(item => item.label === districtName);
+
+              if (district) {
+                this.editAddressForm.districtId = district.value;
+              }
+            }
+          }
+        }
+      }
+
+      // 详细地址是剩余部分
+      this.editAddressForm.detail = addressParts.slice(3).join(' ');
+
+      // 打开编辑对话框
+      this.editAddress.open = true;
+    },
+    /** 提交按钮 */
+    submitEditAddressForm() {
+      this.$refs["editAddressForm"].validate(valid => {
+        if (valid) {
+          this.editAddressForm.userAddress = this.editAddressForm.province + " " + this.editAddressForm.city + " " + this.editAddressForm.district + " " + this.editAddressForm.detail;
+          updateStoreOrder(this.editAddressForm).then(response => {
+            if (response.code === 200) {
+              this.msgSuccess("修改成功");
+              this.editAddress.open = false;
+              this.getOrder(this.order.id);
+            }
+          });
+        }
+      });
+    },
+    handleEditUser() {
+      const userId = this.order.userId
+      getUser(userId).then(response => {
+        this.editUserForm.userId = response.data.userId;
+        this.editUserForm.registerDate = response.data.registerDate;
+        this.editUserForm.registerCode = response.data.registerCode;
+        this.editUserForm.source = response.data.source;
+        this.editUser.open = true;
+      });
+    },
+    /** 提交按钮 */
+    submitEditUserForm() {
+      this.$refs["editUserForm"].validate(valid => {
+        if (valid) {
+          updateUser(this.editUserForm).then(response => {
+            if (response.code === 200) {
+              this.msgSuccess("修改成功");
+              this.editUser.open = false;
+              this.getOrder(this.order.id);
+            }
+          });
+        }
+      });
+    },
+    submitEditForm() {
+      this.$refs["editForm"].validate(valid => {
+        if (valid) {
+          updateStoreOrder(this.editForm).then(response => {
+            if (response.code === 200) {
+              this.msgSuccess("操作成功");
+              this.edit.open = false;
+              this.getOrder(this.order.id);
+            }
+          });
+
+        }
+      });
+    },
+    editOrder() {
+      this.edit.open = true;
+      this.editForm.mark = this.order.mark
+      this.editForm.id = this.order.id;
+      if (this.order.orderType != null) {
+        this.editForm.orderType = this.order.orderType.toString();
+      }
+      this.editForm.scheduleId = this.order.scheduleId;
+      this.editForm.orderVisit = this.order.orderVisit;
+
+    },
+    getOrder(orderId) {
+      this.orderId = orderId;
+      this.certificates = null;
+      getStoreOrder(orderId).then(response => {
+        this.order = response.order;
+        if (response.order.certificates != null) {
+          this.certificates = response.order.certificates;
+        }
+        this.user = response.user;
+        this.logs = response.logs;
+        this.items = response.items;
+        this.payments = response.payments;
+        this.customerInfo = response.customer;
+        this.auditLogs = response.auditLogs;
+        this.afterSales = response.afterSales || {
+          auditReasonName: null,
+          auditRemark: null,
+          reasonValue1: null,
+          reasonValue2: null
+        };
+      });
+    },
+    editPayDeliveryHandle() {
+      this.payDeliveryForm.id = this.orderId;
+      this.payDeliveryForm.payDelivery = this.order.payDelivery || 0.00;
+      this.editPayDelivery.open = true;
+    },
+    // 提交修改代收金额
+    submitPayDeliveryForm() {
+      this.$refs["payDeliveryForm"].validate(valid => {
+        if (valid) {
+          editPayDelivery(this.payDeliveryForm).then(response => {
+            if (response.code === 200) {
+              this.msgSuccess("修改成功");
+              this.editPayDelivery.open = false;
+              this.getOrder(this.order.id);
+            } else {
+              this.msgError(response.message);
+            }
+          }).catch(error => {
+            this.$message.error('请求失败: ' + error.message)
+          });
+        }
+      });
+    },
+
+  }
+};
+</script>
+<style scoped>
+.order-content {
+  margin: 10px;
+}
+
+.operate-container {
+  background: #F2F6FC;
+  height: 60px;
+  margin: -20px -20px 0;
+  line-height: 60px;
+}
+
+.operate-button-container {
+  float: right;
+  margin-right: 20px
+}
+
+.edit-quantity-btn {
+  margin-left: 4px; /* 缩小左边距 */
+  padding: 4px 8px;
+  border: 1px solid #dcdfe6;
+  border-radius: 4px;
+  color: #409eff;
+  background: transparent;
+  cursor: pointer;
+  transition: all 0.2s ease;
+}
+
+.edit-quantity-btn:hover {
+  background-color: #ecf5ff;
+  border-color: #b3d8ff;
+  color: #66b1ff;
+  transform: translateY(-1px);
+}
+
+.edit-quantity-btn i {
+  margin-right: 2px;
+  font-size: 12px;
+}
+
+.edit-quantity-btn:hover {
+  background-color: #ecf5ff;
+  border-color: #b3d8ff;
+  color: #66b1ff;
+  transform: translateY(-1px);
+}
+
+.edit-quantity-btn i {
+  margin-right: 2px;
+  font-size: 12px;
+}
+
+.dialog-product-name {
+  font-weight: 500;
+  color: #303133;
+  word-break: break-all;
+  max-width: 350px;
+  display: inline-block;
+  vertical-align: middle;
+}
+
+.more-products-btn:hover {
+  background: linear-gradient(135deg, #66b1ff, #409eff);
+  transform: translateY(-1px);
+  box-shadow: 0 4px 8px rgba(64, 158, 255, 0.3);
+}
+
+.more-products-btn i {
+  margin-right: 4px;
+}
+
+/* 历史订单商品信息样式 */
+.order-code-cell {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  gap: 6px;
+}
+
+.order-code-text {
+  font-weight: 500;
+  color: #606266;
+  font-family: 'Monaco', 'Consolas', monospace;
+}
+
+.time-cell {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  gap: 6px;
+  color: #606266;
+}
+
+.amount-cell, .deposit-cell {
+  display: flex;
+  align-items: baseline;
+  justify-content: center;
+  gap: 2px;
+}
+
+.amount-symbol, .deposit-symbol {
+  color: #606266;
+  font-weight: 600;
+  font-size: 12px;
+}
+
+.amount-value, .deposit-value {
+  color: #606266;
+  font-weight: 600;
+  font-size: 14px;
+}
+
+.status-cell {
+  display: flex;
+  justify-content: center;
+}
+
+.product-preview {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  gap: 4px;
+  padding: 8px;
+}
+
+.product-name {
+  font-weight: 500;
+  color: #303133;
+  text-align: center;
+  word-break: break-all;
+  max-width: 100%;
+}
+
+.product-count {
+  font-size: 12px;
+  color: #606266;
+  background-color: #f5f7fa;
+  padding: 2px 8px;
+  border-radius: 12px;
+}
+
+.no-product {
+  display: flex;
+  align-items: center;
+  gap: 4px;
+  color: #909399;
+  font-size: 12px;
+}
+
+.action-buttons {
+  margin-top: 8px;
+}
+
+.detail-btn {
+  padding: 4px 12px;
+  font-size: 12px;
+}
+
+/* 统一表格样式 */
+.unified-table ::v-deep .el-table__header th {
+  background: #f8f9fa !important;
+  color: #303133 !important;
+  font-weight: 600 !important;
+}
+
+.unified-table ::v-deep .el-table__body td {
+  color: #606266 !important;
+}
+
+/* 统一单元格样式 */
+.unified-cell {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  gap: 6px;
+  padding: 8px 4px;
+}
+
+.order-code-cell {
+  font-family: 'Monaco', 'Consolas', monospace;
+}
+
+.order-code-text {
+  font-weight: 500;
+  color: #606266;
+}
+
+.time-cell {
+  color: #606266;
+}
+
+.amount-cell, .deposit-cell {
+  gap: 2px;
+}
+
+.amount-symbol, .deposit-symbol {
+  color: #606266;
+  font-weight: 600;
+  font-size: 12px;
+}
+
+.amount-value, .deposit-value {
+  color: #606266;
+  font-weight: 600;
+  font-size: 14px;
+}
+
+.sales-cell {
+  gap: 4px;
+}
+
+.sales-cell i {
+  color: #409eff;
+}
+
+.sales-name {
+  color: #606266;
+  font-size: 13px;
+}
+
+.status-cell {
+  justify-content: center;
+}
+
+/* 商品预览样式 */
+.product-preview {
+  display: flex;
+  align-items: center;
+  gap: 8px;
+  padding: 8px 12px;
+  background: linear-gradient(135deg, #f8f9fa 0%, #ffffff 100%);
+  border-radius: 8px;
+  border: 1px solid #e9ecef;
+  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
+  transition: all 0.2s ease;
+  max-width: 300px;
+}
+
+.product-preview:hover {
+  transform: translateY(-1px);
+  box-shadow: 0 2px 8px rgba(64, 158, 255, 0.1);
+  border-color: #409eff;
+}
+
+.unified-product-name {
+  font-weight: 500;
+  color: #409eff;
+  flex: 1;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  font-size: 13px;
+}
+
+.product-count {
+  font-size: 12px;
+  color: #909399;
+  background: #f5f7fa;
+  padding: 2px 6px;
+  border-radius: 10px;
+}
+
+.product-name {
+  font-weight: 500;
+  color: #409eff;
+  flex: 1;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+.no-product {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  gap: 6px;
+  padding: 12px;
+  color: #909399;
+  font-style: italic;
+}
+
+.no-product i {
+  font-size: 16px;
+}
+
+/* 操作按钮样式 */
+.action-buttons {
+  margin-top: 8px;
+}
+
+.unified-btn {
+  background: linear-gradient(135deg, #409eff, #337ab7);
+  border: none;
+  color: white;
+  border-radius: 16px;
+  padding: 5px 12px;
+  font-size: 12px;
+  transition: all 0.3s ease;
+  box-shadow: 0 2px 4px rgba(64, 158, 255, 0.2);
+}
+
+.unified-btn:hover {
+  background: linear-gradient(135deg, #66b1ff, #409eff);
+  transform: translateY(-1px);
+  box-shadow: 0 4px 8px rgba(64, 158, 255, 0.3);
+}
+
+.unified-btn i {
+  margin-right: 4px;
+}
+
+/* 统一商品详情弹窗样式 */
+.unified-detail-dialog ::v-deep .el-dialog__header {
+  background: white;
+  color: #303133;
+  padding: 20px;
+  border-bottom: 1px solid #ebeef5;
+}
+
+.unified-detail-dialog ::v-deep .el-dialog__title {
+  color: #303133;
+  font-weight: 600;
+  font-size: 18px;
+}
+
+/* 自定义弹窗标题样式 */
+.dialog-custom-title {
+  .font-small {
+    font-size: 14px;
+    color: #606266;
+    font-weight: 500;
+  }
+}
+
+.unified-detail-dialog ::v-deep .el-dialog__headerbtn .el-dialog__close {
+  color: #909399;
+}
+
+.unified-detail-dialog ::v-deep .el-dialog__headerbtn .el-dialog__close:hover {
+  color: #409eff;
+}
+
+.compact-dialog-table ::v-deep .el-table__header th {
+  background: #f8f9fa !important;
+  color: #303133 !important;
+  font-weight: 600 !important;
+  padding: 6px 0 !important;
+}
+
+.compact-dialog-table ::v-deep .el-table__body td {
+  padding: 4px 0 !important;
+}
+
+.dialog-image-container {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+.dialog-product-image {
+  width: 60px;
+  height: 60px;
+  border-radius: 6px;
+  border: 1px solid #ebeef5;
+  transition: all 0.3s ease;
+}
+
+.dialog-product-image:hover {
+  transform: scale(1.05);
+  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
+}
+
+.image-placeholder {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  width: 100%;
+  height: 100%;
+  background: #f5f7fa;
+  color: #909399;
+  font-size: 20px;
+  border-radius: 6px;
+}
+
+.dialog-product-info {
+  padding: 8px;
+}
+
+.product-name-container {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  gap: 6px;
+  width: 100%;
+}
+
+.dialog-product-name {
+  font-weight: 500;
+  color: #409eff;
+  font-size: 13px;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  text-align: center;
+  display: block;
+  width: 100%;
+}
+
+.dialog-price-cell, .dialog-sku-cell {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  gap: 2px;
+}
+
+.dialog-pagination {
+  margin-top: 3px;
+  padding: 6px 10px;
+  background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
+  border-radius: 4px;
+  border: 1px solid #dee2e6;
+}
+
+.dialog-pagination ::v-deep .el-pagination {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  font-size: 12px;
+}
+
+dialog-pagination ::v-deep .el-pagination button,
+dialog-pagination ::v-deep .el-pagination .el-pager li {
+  min-width: 24px;
+  height: 24px;
+  line-height: 24px;
+}
+
+/* 表格内容区域右下角容器 */
+.table-bottom-right-container {
+  position: relative;
+  margin-top: 10px;
+  display: flex;
+  flex-direction: column;
+  align-items: flex-end;
+  gap: 8px;
+}
+
+/* 包装分页组件的容器 */
+.dialog-pagination-wrapper {
+  display: flex;
+  justify-content: flex-end;
+  align-items: center;
+  background: transparent;
+  padding: 0;
+  border-radius: 0;
+  box-shadow: none;
+}
+
+/* 分页组件样式 */
+.dialog-pagination {
+  display: inline-block;
+  background: transparent;
+  border: none;
+  padding: 0;
+  margin: 0;
+}
+
+.dialog-pagination ::v-deep .el-pagination {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  font-size: 12px;
+  background: transparent;
+  padding: 0;
+  border: none;
+}
+
+.dialog-pagination ::v-deep .el-pagination button,
+.dialog-pagination ::v-deep .el-pagination .el-pager li {
+  min-width: 24px;
+  height: 24px;
+  line-height: 24px;
+  background: white;
+  border: 1px solid #dcdfe6;
+}
+
+/* 关闭按钮区域样式 */
+.dialog-close-section {
+  display: flex;
+  justify-content: flex-end;
+  align-items: center;
+}
+
+/* 透明关闭按钮样式 */
+.transparent-close-btn {
+  background: linear-gradient(135deg, #ff6b6b, #ee5a52);
+  border: none;
+  color: white;
+  padding: 8px 20px;
+  border-radius: 6px;
+  font-weight: 500;
+  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
+  box-shadow: 0 2px 6px rgba(255, 107, 107, 0.3);
+}
+
+.transparent-close-btn:hover {
+  background: linear-gradient(135deg, #ff5252, #e53935);
+  transform: translateY(-2px);
+  box-shadow: 0 4px 12px rgba(255, 107, 107, 0.4);
+}
+
+.transparent-close-btn:active {
+  transform: translateY(0);
+  box-shadow: 0 2px 4px rgba(255, 107, 107, 0.3);
+}
+
+.transparent-close-btn i {
+  margin-right: 6px;
+  font-size: 16px;
+  transition: transform 0.3s ease;
+}
+
+.transparent-close-btn:hover i {
+  transform: rotate(90deg);
+}
+
+.compact-close-btn i {
+  font-size: 14px;
+}
+
+/* 商品详情弹窗样式 */
+.product-detail-dialog .el-dialog__header {
+  background: linear-gradient(135deg, #409eff, #337ab7);
+  color: white;
+  padding: 20px;
+}
+
+.product-detail-dialog .el-dialog__title {
+  color: white;
+  font-weight: 600;
+  font-size: 18px;
+}
+
+.product-detail-dialog .el-dialog__headerbtn .el-dialog__close {
+  color: white;
+}
+
+.product-detail-dialog .el-dialog__headerbtn .el-dialog__close:hover {
+  color: #ffd04b;
+}
+
+/* 商品信息展示样式 */
+.product-preview {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  gap: 4px;
+  padding: 8px;
+}
+
+.product-name {
+  font-weight: 500;
+  color: #303133;
+  text-align: center;
+  word-break: break-all;
+  max-width: 100%;
+}
+
+.product-count {
+  font-size: 12px;
+  color: #606266;
+  background-color: #f5f7fa;
+  padding: 2px 8px;
+  border-radius: 12px;
+}
+
+.no-product {
+  display: flex;
+  align-items: center;
+  gap: 4px;
+  color: #909399;
+  font-size: 12px;
+}
+
+.action-buttons {
+  margin-top: 8px;
+}
+
+.detail-btn {
+  padding: 4px 12px;
+  font-size: 12px;
+}
+
+/* 统一对齐样式 */
+.text-cell {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  gap: 6px;
+  padding: 8px 4px;
+  height: 100%;
+}
+
+.text-content {
+  font-size: 13px;
+  color: #606266;
+  text-align: center;
+  word-break: break-all;
+}
+
+.currency-symbol {
+  color: #606266;
+  font-weight: 600;
+  font-size: 12px;
+}
+
+.number-content {
+  color: #606266;
+  font-weight: 600;
+  font-size: 14px;
+}
+
+.tag-cell {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  height: 100%;
+  padding: 8px 4px;
+}
+
+.time-icon {
+  color: #606266;
+  font-size: 14px;
+}
+
+</style>

+ 746 - 0
src/views/hisStore/storeOrderPick/index.vue

@@ -0,0 +1,746 @@
+<template>
+  <div class="app-container">
+      <!--用户数据-->
+        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+          <el-form-item label="订单号" prop="orderCode">
+            <el-input
+            style="width:220px"
+              v-model="queryParams.orderCode"
+              placeholder="请输入订单号"
+              clearable
+              size="small"
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="运单号" prop="deliveryId">
+            <el-input
+            style="width:220px"
+              v-model="queryParams.deliveryId"
+              placeholder="请输入运单号"
+              clearable
+              size="small"
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="收件人" prop="realName">
+            <el-input
+            style="width:220px"
+              v-model="queryParams.realName"
+              placeholder="请输入收件人"
+              clearable
+              size="small"
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="产品" prop="productName">
+        <el-input
+
+          v-model="queryParams.productName"
+          placeholder="请输入产品名"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+        <el-form-item label="支付方式" prop="payType">
+         <el-select style="width: 200px" v-model="queryParams.payType" placeholder="请选择支付方式" clearable size="small" >
+         <el-option
+                v-for="item in payTypeOptions"
+                :key="item.dictValue"
+                :label="item.dictLabel"
+                :value="item.dictValue"
+              />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="上传凭证" prop="isUpload">
+         <el-select   v-model="queryParams.isUpload" placeholder="请选择" clearable size="small" >
+          <el-option key="0"  label="未上传" value="0" />
+             <el-option key="1"  label="已上传" value="1" />
+        </el-select>
+      </el-form-item>
+          <el-form-item label="手机号" prop="userPhone">
+            <el-input
+            style="width:220px"
+              v-model="queryParams.userPhone"
+              placeholder="请输入收件人手机号"
+              clearable
+              size="small"
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="员工姓名" prop="companyUserNickName">
+            <el-input
+            style="width:220px"
+              v-model="queryParams.companyUserNickName"
+              placeholder="请输入员工姓名"
+              clearable
+              size="small"
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="订单类型" prop="orderType">
+            <el-select style="width:220px" v-model="queryParams.orderType" placeholder="请选择订单类型" clearable size="small" >
+            <el-option
+                    v-for="item in orderTypeOptions"
+                    :key="item.dictValue"
+                    :label="item.dictLabel"
+                    :value="item.dictValue"
+                  />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="物流状态" prop="deliveryStatus">
+            <el-select  style="width:220px" v-model="queryParams.deliveryStatus" placeholder="请选择物流状态" clearable size="small" >
+            <el-option
+                    v-for="item in deliveryStatusOptions"
+                    :key="item.dictValue"
+                    :label="item.dictLabel"
+                    :value="item.dictValue"
+                  />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="结算状态" prop="deliveryPayStatus">
+            <el-select style="width:220px" v-model="queryParams.deliveryPayStatus" placeholder="请选择物流结算状态" clearable size="small" >
+            <el-option
+                    v-for="item in deliveryPayStatusOptions"
+                    :key="item.dictValue"
+                    :label="item.dictLabel"
+                    :value="item.dictValue"
+                  />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="下单时间" prop="createTimeRange">
+            <el-date-picker
+            style="width:220px"
+              clearable size="small"
+              v-model="createTimeRange"
+              type="daterange"
+              value-format="yyyy-MM-dd"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期">
+            </el-date-picker>
+          </el-form-item>
+          <el-form-item label="支付时间" prop="payTimeRange">
+            <el-date-picker
+            style="width:220px"
+              clearable size="small"
+              v-model="payTimeRange"
+              type="daterange"
+              value-format="yyyy-MM-dd"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期">
+            </el-date-picker>
+          </el-form-item>
+          <el-form-item label="回单时间" prop="deliveryImportTimeRange">
+            <el-date-picker
+            style="width:220px"
+              clearable size="small"
+              v-model="deliveryImportTimeRange"
+              type="daterange"
+              value-format="yyyy-MM-dd"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期">
+            </el-date-picker>
+          </el-form-item>
+          <el-form-item label="档期归属" prop="scheduleId"  >
+            <el-select filterable style="width: 200px" v-model="queryParams.scheduleId" placeholder="请选择档期" clearable size="small" >
+              <el-option
+                      v-for="item in scheduleOptions"
+                      :key="item.id"
+                      :label="item.name"
+                      :value="item.id"
+                    />
+            </el-select>
+        </el-form-item>
+          <el-form-item>
+            <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+          </el-form-item>
+        </el-form>
+        <el-row :gutter="10" class="mb8">
+        <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+        </el-row>
+        <el-tabs type="card" v-model="activeName" @tab-click="handleClick">
+          <el-tab-pane label="全部订单" name="00"></el-tab-pane>
+          <el-tab-pane label="待支付" name="0"></el-tab-pane>
+          <el-tab-pane label="待发货" name="1"></el-tab-pane>
+          <el-tab-pane label="待收货" name="2"></el-tab-pane>
+          <el-tab-pane label="交易完成" name="3"></el-tab-pane>
+          <el-tab-pane label="退款中" name="-1"></el-tab-pane>
+          <el-tab-pane label="已退款" name="-2"></el-tab-pane>
+          <el-tab-pane label="已取消" name="-3"></el-tab-pane>
+        </el-tabs>
+        <el-table height="500" border v-loading="loading" :data="storeOrderList" @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="55" align="center" />
+          <el-table-column label="订单号" align="center" prop="orderCode" />
+          <el-table-column label="所属公司" align="center" prop="companyName" />
+          <el-table-column label="所属员工" align="center" prop="companyUserNickName" />
+          <el-table-column label="用户昵称" align="center" prop="nickname" width="150px" >
+              <template slot-scope="scope">
+                  <span>{{scope.row.nickname}}</span>
+              </template>
+          </el-table-column>
+          <el-table-column label="收件人" align="center" prop="realName" width="150px" >
+              <template slot-scope="scope">
+                  <span>{{scope.row.realName}} </span>
+              </template>
+          </el-table-column>
+          <el-table-column label="跟随阶段" align="center" prop="orderVisit" >
+            <template slot-scope="scope">
+                <el-tag prop="orderVisit" v-for="(item, index) in customerUserStatusOptions"    v-if="scope.row.orderVisit==item.dictValue">{{item.dictLabel}}</el-tag>
+            </template>
+          </el-table-column>
+          <el-table-column label="订单金额" align="center" prop="totalPrice" >
+              <template slot-scope="scope">
+                  <span v-if="scope.row.totalPrice!=null">{{scope.row.totalPrice.toFixed(2)}}</span>
+              </template>
+          </el-table-column>
+          <el-table-column label="应付金额" align="center" prop="payPrice" >
+              <template slot-scope="scope">
+                  <span v-if="scope.row.payPrice!=null">{{scope.row.payPrice.toFixed(2)}}</span>
+              </template>
+          </el-table-column>
+          <el-table-column label="下单时间" align="center" prop="createTime" />
+          <!-- <el-table-column label="支付状态" align="center" prop="paid" /> -->
+          <el-table-column label="支付时间" align="center" prop="payTime" width="180">
+          </el-table-column>
+          <el-table-column label="支付方式" align="center" prop="payType" >
+              <template slot-scope="scope">
+                  <span prop="payType" v-for="(item, index) in payTypeOptions"    v-if="scope.row.payType==item.dictValue">{{item.dictLabel}}</span>
+              </template>
+          </el-table-column>
+          <el-table-column label="订单类型" align="center" prop="orderType" >
+              <template slot-scope="scope">
+                  <el-tag prop="status" v-for="(item, index) in orderTypeOptions"    v-if="scope.row.orderType==item.dictValue">{{item.dictLabel}}</el-tag>
+              </template>
+          </el-table-column>
+          <el-table-column label="状态" align="center" prop="status" >
+              <template slot-scope="scope">
+                  <el-tag prop="status" v-for="(item, index) in statusOptions"    v-if="scope.row.status==item.dictValue">{{item.dictLabel}}</el-tag>
+              </template>
+          </el-table-column>
+          <el-table-column label="物流状态" align="center" prop="deliveryStatus" >
+              <template slot-scope="scope">
+                  <el-tag prop="status" v-for="(item, index) in deliveryStatusOptions"    v-if="scope.row.deliveryStatus==item.dictValue">{{item.dictLabel}}</el-tag>
+              </template>
+          </el-table-column>
+          <el-table-column label="物流结算状态" align="center" prop="deliveryPayStatus" >
+              <template slot-scope="scope">
+                  <el-tag prop="status" v-for="(item, index) in deliveryPayStatusOptions"    v-if="scope.row.deliveryPayStatus==item.dictValue">{{item.dictLabel}}</el-tag>
+              </template>
+          </el-table-column>
+          <el-table-column label="操作" fixed="right" width="100px" align="center" class-name="small-padding fixed-width">
+            <template slot-scope="scope">
+              <el-button
+                size="mini"
+                type="text"
+                @click="handleDetails(scope.row)"
+                v-hasPermi="['store:storeOrderPick:query']"
+              >查看</el-button>
+              <!-- <el-button
+                size="mini"
+                type="text"
+                @click="handleGenPayUrl(scope.row)"
+                v-hasPermi="['store:storeOrder:genPayUrl']"
+              >生成付款链接</el-button> -->
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <pagination
+          v-show="total>0"
+          :total="total"
+          :page.sync="queryParams.pageNum"
+          :limit.sync="queryParams.pageSize"
+          @pagination="getList"
+        />
+    <el-drawer
+     size="75%"
+      :title="show.title" :visible.sync="show.open"
+      >
+      <product-order-pick ref="order" />
+    </el-drawer>
+
+  </div>
+</template>
+
+<script>
+import { exportStoreOrderItems, createUserOrder, listPickStoreOrder, getStoreOrder, delStoreOrder, addStoreOrder, updateStoreOrder, exportStoreOrder } from "@/api/hisStore/storeOrder";
+import { getUserList } from "@/api/users/user";
+import { getAddressList } from "@/api/users/userAddress";
+import productOrderPick from "./components/productOrderPick";
+import { getTcmScheduleList } from "@/api/company/tcmScheduleReport";
+export default {
+  components: { productOrderPick },
+  name: "StoreOrderPick",
+  data() {
+    return {
+      customerUserStatusOptions:[],
+      // 是否显示弹出层
+      open: false,
+      deliveryPayStatusOptions:[],
+      deliveryStatusOptions:[],
+      dateRange: [],
+      orderTypeOptions:[],
+      payTypeOptions:[],
+      payQr:{
+        open:false,
+        title:"付款二维码"
+      },
+      user:{
+        open:false,
+        title:"创建会员"
+      },
+      userAddress:{
+        open:false,
+        title:"创建收货地址"
+      },
+      tablekey:false,
+      totalMoney:0.00,
+      products:[],
+      product:{
+        open:false,
+        title:"商品选择"
+      },
+      userStatusOptions:[],
+      phone:null,
+      address:[],
+      addressloading: false,
+      userloading: false,
+      users:[],
+      userStatusOptions:[],
+      show:{
+        open:false,
+        title:"订单详情"
+      },
+      activeName:"00",
+      statusOptions:[],
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 订单表格数据
+      storeOrderList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      createTimeRange:[],
+      payTimeRange:[],
+      deliveryImportTimeRange:[],
+      scheduleOptions:[],
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        orderCode: null,
+        extendOrderId: null,
+        userId: null,
+        realName: null,
+        userPhone: null,
+        userAddress: null,
+        cartId: null,
+        freightPrice: null,
+        totalNum: null,
+        totalPrice: null,
+        totalPostage: null,
+        payPrice: null,
+        payPostage: null,
+        deductionPrice: null,
+        couponId: null,
+        couponPrice: null,
+        paid: null,
+        payTime: null,
+        payType: null,
+        status: null,
+        refundStatus: null,
+        refundReasonWapImg: null,
+        refundReasonWapExplain: null,
+        refundReasonTime: null,
+        refundReasonWap: null,
+        refundReason: null,
+        refundPrice: null,
+        deliverySn: null,
+        deliveryName: null,
+        deliveryType: null,
+        deliveryId: null,
+        gainIntegral: null,
+        useIntegral: null,
+        payIntegral: null,
+        backIntegral: null,
+        mark: null,
+        isDel: null,
+        cost: null,
+        verifyCode: null,
+        storeId: null,
+        shippingType: null,
+        isChannel: null,
+        isRemind: null,
+        isSysDel: null,
+        isPickup: 1
+      },
+      // 表单参数
+      form: {
+        addressId:null,
+        userId:null,
+        products:[],
+      },
+      // 表单校验
+      rules: {
+        userId: [
+          { required: true, message: "会员信息不能为空" }
+        ],
+        addressId: [
+          { required: true, message: "收货信息不能为空" }
+        ],
+        products: [
+          { required: true, message: "商品不能为空" }
+        ],
+
+      }
+    };
+  },
+  created() {
+    this.getDicts("crm_customer_user_status").then((response) => {
+        this.customerUserStatusOptions = response.data;
+    });
+    this.getDicts("store_order_type").then((response) => {
+      this.orderTypeOptions = response.data;
+    });
+    this.getDicts("store_pay_type").then((response) => {
+      this.payTypeOptions = response.data;
+    });
+    this.getDicts("user_status").then((response) => {
+      this.userStatusOptions = response.data;
+    });
+    this.getDicts("store_order_status").then((response) => {
+      this.statusOptions = response.data;
+    });
+    this.getDicts("store_order_delivery_status").then((response) => {
+      this.deliveryStatusOptions = response.data;
+    });
+    this.getDicts("store_delivery_pay_status").then((response) => {
+      this.deliveryPayStatusOptions = response.data;
+    });
+    getTcmScheduleList().then(response => {
+      this.scheduleOptions = response.data;
+    });
+    this.getList();
+  },
+  methods: {
+    handleGenPayUrl(row){
+      this.payQr.open=true;
+      setTimeout(() => {
+        var qrcode = new QRCode(this.$refs.qrCodeUrl, {
+            text: config.payQRUrl+row.id, // 需要转换为二维码的内容
+            width: 200,
+            height: 200,
+            colorDark: '#000000',
+            colorLight: '#ffffff',
+            correctLevel: QRCode.CorrectLevel.H
+        })
+      }, 200);
+
+
+    },
+    handleAddUser(){
+      this.user.open=true;
+    },
+    handleAddUserAddress(){
+      if(this.form.userId==null){
+        this.msgError("请选择会员");
+        return;
+      }
+      this.userAddress.open=true;
+      setTimeout(() => {
+        this.$refs.addUserAddress.init(this.form.userId);
+      }, 500);
+    },
+    addUser(){
+      this.user.open=false;
+    },
+    addUserAddress(){
+      this.userAddress.open=false;
+      //获取地址
+      this.getAddressList(this.form.userId);
+    },
+    compute(){
+      this.totalMoney=0;
+      var that=this;
+      this.products.forEach (function (value) {
+          that.totalMoney += value.money;
+      });
+    },
+    handleProductCountChange(row){
+      this.tablekey = !this.tablekey
+      row.money=row.count*row.price;
+      this.$forceUpdate();
+      this.compute();
+    },
+    selectProduct(row){
+      for(var i=0;i<this.products.length;i++){
+        if(this.products[i].id==row.id){
+          return;
+        }
+      }
+      row.count=1;
+      row.money=row.count*row.price;
+      this.products.push(row);
+      this.compute();
+    },
+    handleAddProduct(){
+      this.product.open=true;
+    },
+    searchUser(){
+      if(this.phone==null||this.phone==""){
+        return;
+      }
+      var data={phone:this.phone}
+      this.userloading = true;
+      this.users=[];
+      this.address=[];
+      getUserList(data).then(response => {
+        this.users = response.data;
+        this.userloading = false;
+        if(this.users!=null&&this.users.length==1){
+          this.form.userId=this.users[0].userId;
+          this.getAddressList(this.form.userId)
+        }
+      });
+    },
+    getAddressList(userId){
+      var data={userId:userId}
+      this.addressloading = true;
+      this.address=[];
+      getAddressList(data).then(response => {
+        this.address = response.data;
+        this.addressloading = false;
+      });
+    },
+    handleDetails(row){
+      this.show.open=true;
+      const orderId = row.id ;
+      setTimeout(() => {
+        this.$refs.order.getOrder(orderId);
+      }, 500);
+    },
+    handleClick(tab, event) {
+       if(tab.name=="all"){
+        this.queryParams.status==null;
+      }
+      else{
+         this.queryParams.status=tab.name;
+      }
+      this.getList();
+    },
+    /** 查询订单列表 */
+    getList() {
+      if(this.queryParams.status=='00'){
+        this.queryParams.status=null;
+      }
+      if(this.createTimeRange!=null&&this.createTimeRange.length==2){
+        this.queryParams.createTimeRange=this.createTimeRange[0]+"--"+this.createTimeRange[1]
+      }
+      else{
+        this.queryParams.createTimeRange=null;
+      }
+      if(this.payTimeRange!=null&&this.payTimeRange.length==2){
+        this.queryParams.payTimeRange=this.payTimeRange[0]+"--"+this.payTimeRange[1]
+      }
+      else{
+        this.queryParams.payTimeRange=null;
+      }
+      if(this.deliveryImportTimeRange!=null&&this.deliveryImportTimeRange.length==2){
+        this.queryParams.deliveryImportTimeRange=this.deliveryImportTimeRange[0]+"--"+this.deliveryImportTimeRange[1]
+      }
+      else{
+        this.queryParams.deliveryImportTimeRange=null;
+      }
+      this.loading = true;
+      listPickStoreOrder(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
+        this.storeOrderList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        addressId:null,
+        userId:null,
+        products:null,
+
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.createTimeRange = null;
+      this.payTimeRange = null;
+      this.deliveryImportTimeRange = null;
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "创建订单";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getStoreOrder(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改订单";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if(this.products.length==0){
+          this.msgError("请选择商品");
+          return;
+        }
+        this.form.products=this.products;
+        if (valid) {
+          createUserOrder(this.form).then(response => {
+            if (response.code === 200) {
+              this.msgSuccess("创建成功");
+              this.open = false;
+              this.getList();
+            }
+          });
+
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+       this.products.splice(this.products.findIndex(item => item.id === row.id), 1)
+       this.compute();
+
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+
+      if(this.queryParams.status=='00'){
+        this.queryParams.status=null;
+      }
+      if(this.createTimeRange!=null&&this.createTimeRange.length==2){
+        this.queryParams.createTimeRange=this.createTimeRange[0]+"--"+this.createTimeRange[1]
+      }
+      else{
+        this.queryParams.createTimeRange=null;
+      }
+      if(this.payTimeRange!=null&&this.payTimeRange.length==2){
+        this.queryParams.payTimeRange=this.payTimeRange[0]+"--"+this.payTimeRange[1]
+      }
+      else{
+        this.queryParams.payTimeRange=null;
+      }
+      if(this.deliveryImportTimeRange!=null&&this.deliveryImportTimeRange.length==2){
+        this.queryParams.deliveryImportTimeRange=this.deliveryImportTimeRange[0]+"--"+this.deliveryImportTimeRange[1]
+      }
+      else{
+        this.queryParams.deliveryImportTimeRange=null;
+      }
+
+      const queryParams = this.addDateRange(this.queryParams, this.dateRange);
+      this.$confirm('是否确认导出所有订单数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportStoreOrder(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        }).catch(function() {});
+    },
+    handleExportItems() {
+      if(this.queryParams.status=='00'){
+        this.queryParams.status=null;
+      }
+      if(this.createTimeRange!=null&&this.createTimeRange.length==2){
+        this.queryParams.createTimeRange=this.createTimeRange[0]+"--"+this.createTimeRange[1]
+      }
+      else{
+        this.queryParams.createTimeRange=null;
+      }
+      if(this.payTimeRange!=null&&this.payTimeRange.length==2){
+        this.queryParams.payTimeRange=this.payTimeRange[0]+"--"+this.payTimeRange[1]
+      }
+      else{
+        this.queryParams.payTimeRange=null;
+      }
+      if(this.deliveryImportTimeRange!=null&&this.deliveryImportTimeRange.length==2){
+        this.queryParams.deliveryImportTimeRange=this.deliveryImportTimeRange[0]+"--"+this.deliveryImportTimeRange[1]
+      }
+      else{
+        this.queryParams.deliveryImportTimeRange=null;
+      }
+      const queryParams = this.addDateRange(this.queryParams, this.dateRange);
+      this.$confirm('是否确认导出所有订单明细数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportStoreOrderItems(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        }).catch(function() {});
+    }
+  }
+};
+</script>
+<style scoped lang="scss">
+.items{
+  margin: 5px 0px;
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  justify-content: flex-start;
+  .pic{
+    width:60px;
+    height:60px;
+  }
+  .goods-content{
+    margin-left: 10px;
+    max-width: 200px;
+    text-align: left;
+    .goods-title{
+
+      overflow:hidden;
+      white-space: nowrap;
+      text-overflow: ellipsis;
+      -o-text-overflow:ellipsis;
+    }
+  }
+}
+</style>