Browse Source

生命礼赞订单

wangxy 1 day ago
parent
commit
8646261d9f
2 changed files with 1225 additions and 0 deletions
  1. 47 0
      src/api/his/lifeSaluteOrder.js
  2. 1178 0
      src/views/his/lifeSaluteOrder/index.vue

+ 47 - 0
src/api/his/lifeSaluteOrder.js

@@ -0,0 +1,47 @@
+import request from '@/utils/request'
+
+export function listLifeSaluteOrder(query) {
+  return request({
+    url: '/his/lifeSaluteOrder/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function createLifeSaluteOrder(data) {
+  return request({
+    url: '/his/lifeSaluteOrder/create',
+    method: 'post',
+    data: data
+  })
+}
+
+export function exportLifeSaluteOrder(query) {
+  return request({
+    url: '/his/lifeSaluteOrder/export',
+    method: 'get',
+    params: query
+  })
+}
+
+export function importTemplate() {
+  return request({
+    url: '/his/lifeSaluteOrder/importTemplate',
+    method: 'get'
+  })
+}
+
+export function getLifeSaluteOrderExpress(id) {
+  return request({
+    url: '/his/lifeSaluteOrder/getExpress/' + id,
+    method: 'get'
+  })
+}
+
+
+export function syncLifeSaluteOrderExpress(id) {
+  return request({
+    url: '/his/lifeSaluteOrder/syncExpress/' + id,
+    method: 'get'
+  })
+}

+ 1178 - 0
src/views/his/lifeSaluteOrder/index.vue

@@ -0,0 +1,1178 @@
+<template>
+  <div class="app-container">
+    <el-form v-show="showSearch" ref="queryForm" :model="queryParams" :inline="true" label-width="100px">
+      <el-form-item label="系统订单号" prop="orderNo">
+        <el-input
+          v-model="queryParams.orderNo"
+          placeholder="请输入系统订单号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="商家订单号" prop="merchantOrderNo">
+        <el-input
+          v-model="queryParams.merchantOrderNo"
+          placeholder="请输入商家订单号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="平台订单号" prop="platformOrderNo">
+        <el-input
+          v-model="queryParams.platformOrderNo"
+          placeholder="请输入平台订单号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="运单号" prop="waybillNo">
+        <el-input
+          v-model="queryParams.waybillNo"
+          placeholder="请输入运单号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="收件人姓名" prop="receiverName">
+        <el-input
+          v-model="queryParams.receiverName"
+          placeholder="请输入收件人姓名"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="收件人手机" prop="receiverMobile">
+        <el-input
+          v-model="queryParams.receiverMobile"
+          placeholder="请输入收件人手机"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="订单状态" prop="orderStatus">
+        <el-select v-model="queryParams.orderStatus" placeholder="请选择订单状态" clearable size="small" style="width: 200px">
+          <el-option label="待处理" :value="0" />
+          <el-option label="处理中" :value="1" />
+          <el-option label="已完成" :value="2" />
+          <el-option label="已取消" :value="3" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="下单时间" prop="orderTimeRange">
+        <el-date-picker
+          v-model="queryParams.orderTimeRange"
+          type="datetimerange"
+          format="yyyy-MM-dd HH"
+          value-format="yyyy-MM-dd HH"
+          range-separator="至"
+          start-placeholder="开始小时"
+          end-placeholder="结束小时"
+          :picker-options="orderTimePickerOptions"
+          clearable
+          size="small"
+          style="width: 360px"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" 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">
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          :loading="exportLoading"
+          @click="handleExport"
+        >导出</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="info"
+          plain
+          icon="el-icon-upload2"
+          size="mini"
+          @click="handleImport"
+        >导入</el-button>
+      </el-col>
+      <right-toolbar :show-search.sync="showSearch" @queryTable="getList" />
+    </el-row>
+
+    <el-table v-loading="loading" border :data="orderList">
+      <el-table-column label="系统订单号" align="center" prop="orderNo" width="180" show-overflow-tooltip />
+      <el-table-column label="商家订单号" align="center" prop="merchantOrderNo" width="150" show-overflow-tooltip />
+      <el-table-column label="平台订单号" align="center" prop="platformOrderNo" width="150" show-overflow-tooltip />
+      <el-table-column label="预制运单号" align="center" prop="preWaybillNo" width="150" show-overflow-tooltip />
+      <el-table-column label="运单号" align="center" prop="waybillNo" width="150" show-overflow-tooltip />
+      <el-table-column label="处方编号" align="center" prop="prescriptionNo" width="150" show-overflow-tooltip />
+      <el-table-column label="处方人姓名" align="center" prop="prescriptionName" width="120" show-overflow-tooltip />
+      <el-table-column label="寄件人" align="center" prop="senderName" width="100" />
+      <el-table-column label="寄件手机" align="center" prop="senderMobile" width="120" />
+      <el-table-column label="寄件地址" align="center" prop="senderAddress" width="200" show-overflow-tooltip />
+      <el-table-column label="收件人" align="center" prop="receiverName" width="100" />
+      <el-table-column label="收件手机" align="center" prop="receiverMobile" width="120" />
+      <el-table-column label="收件地址" align="center" prop="receiverAddress" width="200" show-overflow-tooltip />
+      <el-table-column label="物品类型" align="center" prop="goodsType" width="100" />
+      <el-table-column label="总件数" align="center" prop="packageCount" width="80" />
+      <el-table-column label="重量(KG)" align="center" prop="weight" width="90" />
+      <el-table-column label="订单金额" align="center" prop="orderAmount" width="100" />
+      <el-table-column label="物流状态" align="center" width="100">
+        <template slot-scope="scope">
+          <template v-if="scope.row.deliveryStatus != null">
+            <template v-for="item in deliveryStatusOptions">
+              <span v-if="scope.row.deliveryStatus == item.dictValue" :key="item.dictValue">{{ item.dictLabel }}</span>
+            </template>
+          </template>
+          <span v-else>-</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="物流跟踪状态" align="center" width="120">
+        <template slot-scope="scope">
+          <template v-if="scope.row.deliveryType != null">
+            <template v-for="item in deliveryTypeOptions">
+              <span v-if="scope.row.deliveryType == item.dictValue" :key="item.dictValue">{{ item.dictLabel }}</span>
+            </template>
+          </template>
+          <span v-else>-</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="订单状态" align="center" prop="orderStatus" width="100">
+        <template slot-scope="scope">
+          <el-tag v-if="scope.row.orderStatus === 0" type="info">待处理</el-tag>
+          <el-tag v-else-if="scope.row.orderStatus === 1" type="warning">处理中</el-tag>
+          <el-tag v-else-if="scope.row.orderStatus === 2" type="success">已完成</el-tag>
+          <el-tag v-else-if="scope.row.orderStatus === 3" type="danger">已取消</el-tag>
+          <span v-else>{{ scope.row.orderStatus }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="创建时间" align="center" prop="createTime" width="180" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="180px">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            @click="handleDetails(scope.row)"
+          >查看</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            @click="handleExpress(scope.row)"
+            v-if="scope.row.waybillNo"
+          >查看物流</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-dialog v-if="open" :title="title" :visible.sync="open" width="900px" append-to-body :close-on-click-modal="false">
+      <el-form ref="form" :model="form" :rules="rules" label-width="130px">
+        <el-divider content-position="left">基础信息</el-divider>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="预制运单号" prop="preWaybillNo">
+              <el-input v-model="form.preWaybillNo" placeholder="请输入预制运单号" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="商家订单号" prop="merchantOrderNo">
+              <el-input v-model="form.merchantOrderNo" placeholder="请输入商家订单号" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="平台订单号" prop="platformOrderNo">
+              <el-input v-model="form.platformOrderNo" placeholder="请输入平台订单号" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-divider content-position="left">寄件人信息</el-divider>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="寄件人姓名" prop="senderName">
+              <el-input v-model="form.senderName" placeholder="请输入寄件人姓名" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="寄件人手机" prop="senderMobile">
+              <el-input v-model="form.senderMobile" placeholder="请输入寄件人手机" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="寄件人座机" prop="senderTel">
+              <el-input v-model="form.senderTel" placeholder="请输入寄件人座机" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="寄件公司" prop="senderCompany">
+              <el-input v-model="form.senderCompany" placeholder="请输入寄件公司" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="寄件省" prop="senderProvince">
+              <el-input v-model="form.senderProvince" placeholder="请输入寄件省" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="寄件市" prop="senderCity">
+              <el-input v-model="form.senderCity" placeholder="请输入寄件市" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="寄件区县" prop="senderDistrict">
+              <el-input v-model="form.senderDistrict" placeholder="请输入寄件区县" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="24">
+            <el-form-item label="寄件详细地址" prop="senderAddress">
+              <el-input v-model="form.senderAddress" placeholder="请输入寄件详细地址" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-divider content-position="left">收件人信息</el-divider>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="收件人姓名" prop="receiverName">
+              <el-input v-model="form.receiverName" placeholder="请输入收件人姓名" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="收件人手机" prop="receiverMobile">
+              <el-input v-model="form.receiverMobile" placeholder="请输入收件人手机" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="收件人座机" prop="receiverTel">
+              <el-input v-model="form.receiverTel" placeholder="请输入收件人座机" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="收件公司" prop="receiverCompany">
+              <el-input v-model="form.receiverCompany" placeholder="请输入收件公司" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="收件省" prop="receiverProvince">
+              <el-input v-model="form.receiverProvince" placeholder="请输入收件省" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="收件市" prop="receiverCity">
+              <el-input v-model="form.receiverCity" placeholder="请输入收件市" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="收件区县" prop="receiverDistrict">
+              <el-input v-model="form.receiverDistrict" placeholder="请输入收件区县" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="24">
+            <el-form-item label="收件详细地址" prop="receiverAddress">
+              <el-input v-model="form.receiverAddress" placeholder="请输入收件详细地址" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-divider content-position="left">物品信息</el-divider>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="物品类型" prop="goodsType">
+              <el-input v-model="form.goodsType" placeholder="请输入物品类型" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="总件数" prop="packageCount">
+              <el-input-number v-model="form.packageCount" :min="1" :max="999" style="width: 100%" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="重量(KG)" prop="weight">
+              <el-input-number v-model="form.weight" :min="0" :precision="2" :step="0.1" style="width: 100%" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="长度(CM)" prop="length">
+              <el-input-number v-model="form.length" :min="0" :precision="1" :step="1" style="width: 100%" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="宽度(CM)" prop="width">
+              <el-input-number v-model="form.width" :min="0" :precision="1" :step="1" style="width: 100%" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="高度(CM)" prop="height">
+              <el-input-number v-model="form.height" :min="0" :precision="1" :step="1" style="width: 100%" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="温层" prop="temperatureType">
+              <el-select v-model="form.temperatureType" placeholder="请选择温层" clearable style="width: 100%">
+                <el-option label="普通" :value="1" />
+                <el-option label="冷藏" :value="2" />
+                <el-option label="冷冻" :value="3" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="时效产品" prop="expressProductType">
+              <el-input v-model="form.expressProductType" placeholder="请输入时效产品" @change="handleExpressProductTypeChange" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="付款方式" prop="payType">
+              <el-select v-model="form.payType" placeholder="请选择付款方式" clearable style="width: 100%">
+                <el-option label="寄付月结" value="1" />
+                <el-option label="到付月结" value="2" />
+                <el-option label="第三方付" value="3" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-divider content-position="left">增值服务</el-divider>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="保价金额" prop="insuredAmount">
+              <el-input-number v-model="form.insuredAmount" :min="0" :precision="2" :step="0.1" style="width: 100%" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="代收货款金额" prop="codAmount">
+              <el-input-number v-model="form.codAmount" :min="0" :precision="2" :step="0.1" style="width: 100%" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="订单金额" prop="orderAmount">
+              <el-input-number v-model="form.orderAmount" :min="0" :precision="2" :step="0.1" style="width: 100%" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="期望上门日期" prop="pickupDate">
+              <el-date-picker v-model="form.pickupDate" type="date" value-format="yyyy-MM-dd" placeholder="选择日期" style="width: 100%" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="期望上门时间" prop="pickupTime">
+              <el-time-picker v-model="form.pickupTime" value-format="HH:mm" placeholder="选择时间" style="width: 100%" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="发货仓编码" prop="warehouseCode">
+              <el-input v-model="form.warehouseCode" placeholder="请输入发货仓编码" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="函速达文件" prop="isUploadWaybillFile">
+              <el-select v-model="form.isUploadWaybillFile" placeholder="请选择" clearable style="width: 100%">
+                <el-option label="否" :value="0" />
+                <el-option label="是" :value="1" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="函速达打印" prop="isPrintWaybill">
+              <el-select v-model="form.isPrintWaybill" placeholder="请选择" clearable style="width: 100%">
+                <el-option label="黑白打印" :value="0" />
+                <el-option label="彩色打印" :value="1" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="签单返还" prop="isSignReturn">
+              <el-select v-model="form.isSignReturn" placeholder="请选择" clearable style="width: 100%">
+                <el-option label="否" :value="0" />
+                <el-option label="纸质+电子" :value="1" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="京尊达" prop="isJdExpress">
+              <el-select v-model="form.isJdExpress" placeholder="请选择" clearable style="width: 100%">
+                <el-option label="否" :value="0" />
+                <el-option label="是" :value="1" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="防撕码采集" prop="isFraudCodeCollect">
+              <el-select v-model="form.isFraudCodeCollect" placeholder="请选择" clearable style="width: 100%">
+                <el-option label="否" :value="0" />
+                <el-option label="是" :value="1" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="开箱验货" prop="isOpenCheck">
+              <el-select v-model="form.isOpenCheck" placeholder="请选择" clearable style="width: 100%">
+                <el-option label="否" :value="0" />
+                <el-option label="是" :value="1" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="打包服务" prop="isPackService">
+              <el-select v-model="form.isPackService" placeholder="请选择" clearable style="width: 100%">
+                <el-option label="否" :value="0" />
+                <el-option label="是" :value="1" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="快递入仓" prop="isExpressWarehouse">
+              <el-select v-model="form.isExpressWarehouse" placeholder="请选择" clearable style="width: 100%">
+                <el-option label="否" :value="0" />
+                <el-option label="是" :value="1" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="退回箱" prop="isReturnBox">
+              <el-select v-model="form.isReturnBox" placeholder="请选择" clearable style="width: 100%">
+                <el-option label="否" :value="0" />
+                <el-option label="是" :value="1" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="指定签收" prop="isDesignatedSign">
+              <el-select v-model="form.isDesignatedSign" placeholder="请选择" clearable style="width: 100%">
+                <el-option label="否" :value="0" />
+                <el-option label="短信验证签收" :value="1" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="自定义验证码" prop="designatedSignVerifyCode">
+              <el-input v-model="form.designatedSignVerifyCode" placeholder="请输入验证码" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="身份证验证" prop="isDesignatedSignIdcard">
+              <el-input v-model="form.isDesignatedSignIdcard" placeholder="请输入身份证号" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="包装服务" prop="isPackageService">
+              <el-select v-model="form.isPackageService" placeholder="请选择" clearable style="width: 100%">
+                <el-option label="否" :value="0" />
+                <el-option label="是" :value="1" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="销售渠道" prop="salesChannel">
+              <el-input v-model="form.salesChannel" placeholder="请输入销售渠道" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="自定义信息" prop="customInfo">
+              <el-input v-model="form.customInfo" placeholder="请输入自定义信息" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
+    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".xlsx, .xls"
+        :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport"
+        :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload" />
+        <div class="el-upload__text">
+          将文件拖到此处,或
+          <em>点击上传</em>
+        </div>
+        <div slot="tip" class="el-upload__tip">
+          <el-checkbox v-model="upload.updateSupport" :true-label="1" :false-label="0">是否更新已经存在的数据</el-checkbox>
+          <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
+        </div>
+        <div slot="tip" class="el-upload__tip" style="color:red">提示:仅允许导入xls、xlsx格式文件!</div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
+
+    <el-dialog v-if="details.open" title="订单详情" :visible.sync="details.open" width="900px" append-to-body>
+      <el-form ref="detailsForm" :model="details.data" label-width="130px">
+        <el-divider content-position="left">订单信息</el-divider>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="系统订单号">{{ details.data.orderNo }}</el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="商家订单号">{{ details.data.merchantOrderNo }}</el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="平台订单号">{{ details.data.platformOrderNo }}</el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="预制运单号">{{ details.data.preWaybillNo }}</el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="运单号">{{ details.data.waybillNo }}</el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="订单状态">
+              <el-tag v-if="details.data.orderStatus === 0" type="info">待处理</el-tag>
+              <el-tag v-else-if="details.data.orderStatus === 1" type="warning">处理中</el-tag>
+              <el-tag v-else-if="details.data.orderStatus === 2" type="success">已完成</el-tag>
+              <el-tag v-else-if="details.data.orderStatus === 3" type="danger">已取消</el-tag>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="创建时间">{{ details.data.createTime }}</el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="更新时间">{{ details.data.updateTime }}</el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-divider content-position="left">寄件人信息</el-divider>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="寄件人姓名">{{ details.data.senderName }}</el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="寄件人手机">{{ details.data.senderMobile }}</el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="寄件人座机">{{ details.data.senderTel }}</el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="寄件公司">{{ details.data.senderCompany }}</el-form-item>
+          </el-col>
+          <el-col :span="16">
+            <el-form-item label="寄件地址">{{ details.data.senderProvince }} {{ details.data.senderCity }} {{ details.data.senderDistrict }} {{ details.data.senderAddress }}</el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-divider content-position="left">收件人信息</el-divider>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="收件人姓名">{{ details.data.receiverName }}</el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="收件人手机">{{ details.data.receiverMobile }}</el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="收件人座机">{{ details.data.receiverTel }}</el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="收件公司">{{ details.data.receiverCompany }}</el-form-item>
+          </el-col>
+          <el-col :span="16">
+            <el-form-item label="收件地址">{{ details.data.receiverProvince }} {{ details.data.receiverCity }} {{ details.data.receiverDistrict }} {{ details.data.receiverAddress }}</el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-divider content-position="left">物品信息</el-divider>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="物品类型">{{ details.data.goodsType }}</el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="总件数">{{ details.data.packageCount }}</el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="重量">{{ details.data.weight }}KG</el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="长度">{{ details.data.length }}CM</el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="宽度">{{ details.data.width }}CM</el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="高度">{{ details.data.height }}CM</el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="温层">
+              <span v-if="details.data.temperatureType === 1">普通</span>
+              <span v-else-if="details.data.temperatureType === 2">冷藏</span>
+              <span v-else-if="details.data.temperatureType === 3">冷冻</span>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="时效产品">{{ details.data.expressProductType }}</el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="付款方式">
+              <span v-if="details.data.payType === '1'">寄付月结</span>
+              <span v-else-if="details.data.payType === '2'">到付月结</span>
+              <span v-else-if="details.data.payType === '3'">第三方付</span>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="订单金额">{{ details.data.orderAmount }}</el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="期望上门日期">{{ details.data.pickupDate }}</el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="期望上门时间">{{ details.data.pickupTime }}</el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="发货仓编码">{{ details.data.warehouseCode }}</el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-divider content-position="left">增值服务</el-divider>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="保价金额">{{ details.data.insuredAmount }}</el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="代收货款金额">{{ details.data.codAmount }}</el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="函速达文件">
+              <span v-if="details.data.isUploadWaybillFile === 0">否</span>
+              <span v-else-if="details.data.isUploadWaybillFile === 1">是</span>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="函速达打印">
+              <span v-if="details.data.isPrintWaybill === 0">黑白打印</span>
+              <span v-else-if="details.data.isPrintWaybill === 1">彩色打印</span>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="签单返还">
+              <span v-if="details.data.isSignReturn === 0">否</span>
+              <span v-else-if="details.data.isSignReturn === 1">纸质+电子</span>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="京尊达">
+              <span v-if="details.data.isJdExpress === 0">否</span>
+              <span v-else-if="details.data.isJdExpress === 1">是</span>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="防撕码采集">
+              <span v-if="details.data.isFraudCodeCollect === 0">否</span>
+              <span v-else-if="details.data.isFraudCodeCollect === 1">是</span>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="开箱验货">
+              <span v-if="details.data.isOpenCheck === 0">否</span>
+              <span v-else-if="details.data.isOpenCheck === 1">是</span>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="打包服务">
+              <span v-if="details.data.isPackService === 0">否</span>
+              <span v-else-if="details.data.isPackService === 1">是</span>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="快递入仓">
+              <span v-if="details.data.isExpressWarehouse === 0">否</span>
+              <span v-else-if="details.data.isExpressWarehouse === 1">是</span>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="退回箱">
+              <span v-if="details.data.isReturnBox === 0">否</span>
+              <span v-else-if="details.data.isReturnBox === 1">是</span>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="指定签收">
+              <span v-if="details.data.isDesignatedSign === 0">否</span>
+              <span v-else-if="details.data.isDesignatedSign === 1">短信验证签收</span>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="自定义验证码">{{ details.data.designatedSignVerifyCode }}</el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="身份证验证">{{ details.data.isDesignatedSignIdcard }}</el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="包装服务">
+              <span v-if="details.data.isPackageService === 0">否</span>
+              <span v-else-if="details.data.isPackageService === 1">是</span>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="销售渠道">{{ details.data.salesChannel }}</el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="自定义信息">{{ details.data.customInfo }}</el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+    </el-dialog>
+
+    <el-dialog :title="expressDialog.title" :visible.sync="expressDialog.open" width="700px" append-to-body>
+      <div style="margin-bottom: 10px;">
+        <el-button
+          size="mini"
+          type="primary"
+          @click="handleSyncExpress(expressDialog.row)"
+          v-if="expressDialog.row && expressDialog.row.waybillNo"
+        >同步快递鸟物流状态</el-button>
+      </div>
+      <el-table style="width: 100%" :data="traces" border>
+        <el-table-column label="操作时间" width="160" align="center" prop="AcceptTime" />
+        <el-table-column label="位置" align="center" prop="Location" />
+        <el-table-column label="描述" align="center" prop="AcceptStation" />
+      </el-table>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listLifeSaluteOrder, createLifeSaluteOrder, exportLifeSaluteOrder, importTemplate, getLifeSaluteOrderExpress, syncLifeSaluteOrderExpress } from '@/api/his/lifeSaluteOrder'
+import { getCompanyInfo } from '@/api/company/company'
+import { getToken } from '@/utils/auth'
+
+export default {
+  name: 'LifeSaluteOrder',
+  data() {
+    return {
+      loading: true,
+      exportLoading: false,
+      showSearch: true,
+      total: 0,
+      orderList: [],
+      title: '',
+      open: false,
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        orderNo: null,
+        merchantOrderNo: null,
+        platformOrderNo: null,
+        waybillNo: null,
+        receiverName: null,
+        receiverMobile: null,
+        orderStatus: null,
+        orderTimeRange: [],
+        params: {}
+      },
+      form: {
+        preWaybillNo: null,
+        merchantOrderNo: null,
+        platformOrderNo: null,
+        senderName: null,
+        senderMobile: null,
+        senderTel: null,
+        senderCompany: null,
+        senderProvince: null,
+        senderCity: null,
+        senderDistrict: null,
+        senderAddress: null,
+        receiverName: null,
+        receiverMobile: null,
+        receiverTel: null,
+        receiverCompany: null,
+        receiverProvince: null,
+        receiverCity: null,
+        receiverDistrict: null,
+        receiverAddress: null,
+        goodsType: null,
+        packageCount: 1,
+        weight: null,
+        length: null,
+        width: null,
+        height: null,
+        temperatureType: null,
+        expressProductType: null,
+        pickupDate: null,
+        pickupTime: null,
+        warehouseCode: null,
+        payType: null,
+        isUploadWaybillFile: null,
+        isPrintWaybill: null,
+        insuredAmount: null,
+        isSignReturn: null,
+        codAmount: null,
+        isJdExpress: null,
+        isFraudCodeCollect: null,
+        isOpenCheck: null,
+        isPackService: null,
+        isExpressWarehouse: null,
+        isReturnBox: null,
+        isDesignatedSign: null,
+        designatedSignVerifyCode: null,
+        isDesignatedSignIdcard: null,
+        isPackageService: null,
+        salesChannel: null,
+        orderAmount: null,
+        customInfo: null
+      },
+      rules: {
+        senderName: [
+          { required: true, message: '请输入寄件人姓名', trigger: 'blur' }
+        ],
+        senderMobile: [
+          { validator: function() {}, trigger: 'blur' }
+        ],
+        senderTel: [
+          { validator: function() {}, trigger: 'blur' }
+        ],
+        senderProvince: [
+          { required: true, message: '请输入寄件省', trigger: 'blur' }
+        ],
+        senderAddress: [
+          { required: true, message: '请输入寄件详细地址', trigger: 'blur' }
+        ],
+        receiverName: [
+          { required: true, message: '请输入收件人姓名', trigger: 'blur' }
+        ],
+        receiverMobile: [
+          { validator: function() {}, trigger: 'blur' }
+        ],
+        receiverTel: [
+          { validator: function() {}, trigger: 'blur' }
+        ],
+        receiverProvince: [
+          { required: true, message: '请输入收件省', trigger: 'blur' }
+        ],
+        receiverAddress: [
+          { required: true, message: '请输入收件详细地址', trigger: 'blur' }
+        ],
+        goodsType: [
+          { required: true, message: '请输入物品类型', trigger: 'blur' }
+        ],
+        expressProductType: [
+          { required: true, message: '请输入时效产品', trigger: 'blur' }
+        ],
+        temperatureType: [
+          { validator: function() {}, trigger: 'change' }
+        ]
+      },
+      upload: {
+        open: false,
+        title: '导入生命礼赞订单',
+        isUploading: false,
+        updateSupport: 0,
+        headers: { Authorization: 'Bearer ' + getToken() },
+        url: process.env.VUE_APP_BASE_API + '/his/lifeSaluteOrder/importData'
+      },
+      details: {
+        open: false,
+        data: {}
+      },
+      expressDialog: {
+        open: false,
+        title: '物流轨迹',
+        row: null
+      },
+      traces: [],
+      deliveryStatusOptions: [],
+      deliveryTypeOptions: [],
+      orderTimePickerOptions: {
+        selectableRange: '00:00:00 - 23:59:59'
+      }
+    }
+  },
+  created() {
+    this.getDicts('sys_store_order_delivery_status').then(response => {
+      this.deliveryStatusOptions = response.data
+    })
+    this.getDicts('sys_delivery_type').then(response => {
+      this.deliveryTypeOptions = response.data
+    })
+    this.getList()
+    this.rules.senderMobile[0].validator = this.validateSenderContact
+    this.rules.senderTel[0].validator = this.validateSenderContact
+    this.rules.receiverMobile[0].validator = this.validateReceiverContact
+    this.rules.receiverTel[0].validator = this.validateReceiverContact
+    this.rules.temperatureType[0].validator = this.validateTemperatureType
+  },
+  methods: {
+    validateSenderContact(rule, value, callback) {
+      if (!this.form.senderMobile && !this.form.senderTel) {
+        callback(new Error('手机和座机至少填写一项'))
+      } else {
+        callback()
+      }
+    },
+    validateReceiverContact(rule, value, callback) {
+      if (!this.form.receiverMobile && !this.form.receiverTel) {
+        callback(new Error('手机和座机至少填写一项'))
+      } else {
+        callback()
+      }
+    },
+    validateTemperatureType(rule, value, callback) {
+      const expressType = this.form.expressProductType
+      if (expressType && (expressType.indexOf('生鲜') !== -1 || expressType.indexOf('医药') !== -1) && !value) {
+        callback(new Error('时效产品为生鲜/医药时,温层必填'))
+      } else {
+        callback()
+      }
+    },
+    handleExpressProductTypeChange() {
+      this.$refs.form.clearValidate('temperatureType')
+    },
+    getList() {
+      this.loading = true
+      this.setOrderTimeQueryParams()
+      listLifeSaluteOrder(this.queryParams).then(response => {
+        this.orderList = response.rows
+        this.total = response.total
+        this.loading = false
+      })
+    },
+    setOrderTimeQueryParams() {
+      const range = this.queryParams.orderTimeRange
+      this.queryParams.params = this.queryParams.params || {}
+      this.queryParams.params.createTimeStart = range && range.length > 0 ? range[0] : null
+      this.queryParams.params.createTimeEnd = range && range.length > 1 ? range[1] : null
+    },
+    handleQuery() {
+      this.queryParams.pageNum = 1
+      this.getList()
+    },
+    resetQuery() {
+      this.resetForm('queryForm')
+      this.handleQuery()
+    },
+    handleAdd() {
+      this.reset()
+      this.open = true
+      this.title = '创建生命礼赞订单'
+      getCompanyInfo().then(response => {
+        if (response.code === 200 && response.data) {
+          this.form.senderName = response.data.senderName || null
+          this.form.senderMobile = response.data.senderPhone || null
+        }
+      })
+    },
+    handleDetails(row) {
+      this.details.data = row
+      this.details.open = true
+    },
+    handleExpress(row) {
+      this.expressDialog.row = row
+      this.expressDialog.open = true
+      this.traces = []
+      getLifeSaluteOrderExpress(row.id).then(response => {
+        if (response.data != null && response.data.Traces != null) {
+          this.traces = response.data.Traces
+        }
+      })
+    },
+    handleSyncExpress(row) {
+      if (!row || !row.id) {
+        this.msgError('请选择订单')
+        return
+      }
+      this.$confirm('确定同步物流状态吗?', '警告', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        return syncLifeSaluteOrderExpress(row.id)
+      }).then(() => {
+        this.msgSuccess('操作成功')
+        this.expressDialog.open = false
+        this.getList()
+      }).catch(() => {})
+    },
+    reset() {
+      this.form = {
+        preWaybillNo: null,
+        merchantOrderNo: null,
+        platformOrderNo: null,
+        senderName: null,
+        senderMobile: null,
+        senderTel: null,
+        senderCompany: null,
+        senderProvince: null,
+        senderCity: null,
+        senderDistrict: null,
+        senderAddress: null,
+        receiverName: null,
+        receiverMobile: null,
+        receiverTel: null,
+        receiverCompany: null,
+        receiverProvince: null,
+        receiverCity: null,
+        receiverDistrict: null,
+        receiverAddress: null,
+        goodsType: null,
+        packageCount: 1,
+        weight: null,
+        length: null,
+        width: null,
+        height: null,
+        temperatureType: null,
+        expressProductType: null,
+        pickupDate: null,
+        pickupTime: null,
+        warehouseCode: null,
+        payType: null,
+        isUploadWaybillFile: null,
+        isPrintWaybill: null,
+        insuredAmount: null,
+        isSignReturn: null,
+        codAmount: null,
+        isJdExpress: null,
+        isFraudCodeCollect: null,
+        isOpenCheck: null,
+        isPackService: null,
+        isExpressWarehouse: null,
+        isReturnBox: null,
+        isDesignatedSign: null,
+        designatedSignVerifyCode: null,
+        isDesignatedSignIdcard: null,
+        isPackageService: null,
+        salesChannel: null,
+        orderAmount: null,
+        customInfo: null
+      }
+      this.resetForm('form')
+    },
+    cancel() {
+      this.open = false
+      this.reset()
+    },
+    submitForm() {
+      this.$refs['form'].validate(valid => {
+        if (valid) {
+          createLifeSaluteOrder(this.form).then(response => {
+            if (response.code === 200) {
+              this.msgSuccess('创建成功')
+              this.open = false
+              this.getList()
+            } else {
+              this.msgError(response.msg || '创建失败')
+            }
+          }).catch(() => {
+            this.msgError('创建失败')
+          })
+        }
+      })
+    },
+    handleExport() {
+      this.$confirm('是否确认导出所有生命礼赞订单数据项?', '警告', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        this.exportLoading = true
+        return exportLifeSaluteOrder(this.queryParams)
+      }).then(response => {
+        this.download(response.msg)
+        this.exportLoading = false
+      }).catch(() => {
+        this.exportLoading = false
+      })
+    },
+    handleImport() {
+      this.upload.title = '导入生命礼赞订单'
+      this.upload.open = true
+    },
+    importTemplate() {
+      importTemplate().then(response => {
+        this.download(response.msg)
+      })
+    },
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true
+    },
+    handleFileSuccess(response, file, fileList) {
+      this.upload.open = false
+      this.upload.isUploading = false
+      this.$refs.upload.clearFiles()
+      this.$alert(response.msg, '导入结果', { dangerouslyUseHTMLString: true })
+      this.getList()
+    },
+    submitFileForm() {
+      this.$refs.upload.submit()
+    }
+  }
+}
+</script>