<template>
  <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
    <div style="padding: 20px; background-color: #fff;">
      订单详情
    </div>
<div class="contentx" v-if="item!=null">
  <div class="desct"></div>
<div class="order-status" v-if="item!=null" >
          <el-steps  :active="item.status==4?item.status:item.status-1" align-center finish-status="success">
            <el-step title="待支付"></el-step>
            <el-step title="待发货"></el-step>
            <el-step title="待收货"></el-step>
            <el-step title="已完成"></el-step>
          </el-steps>
</div>
           <el-card shadow="never" style="margin-top: 15px">
             <div class="operate-container"  v-if="item!=null">
               <span style="margin-left: 20px" class="color-danger">订单状态：
                  <el-tag prop="status" v-for="(ite, index) in orderOptions"    v-if="item.status==ite.dictValue">{{ite.dictLabel}}</el-tag>
               </span>
                <div class="operate-button-container" v-if="item.status==3">
                  <el-button size="mini" @click="finishOrder()" v-hasPermi="['his:storeOrder:good']">确认收货</el-button>
               </div>
               <div class="operate-button-container"  v-if="item.status==2&&item.orderType==1">
                  <el-button size="mini" @click="sendVisible=true" v-hasPermi="['his:storeOrder:sendGoods']">发货</el-button>
               </div>
               <div class="operate-button-container"  v-if="item.status==2&&item.orderType==2">
                  <el-button size="mini" @click="tuiOrder()" v-hasPermi="['his:storeOrder:sendHisGoods']" >推送订单</el-button>
               </div>
               <div class="operate-button-container" v-if="item.inquiryOrderId!=null&&item.inquiryOrderId!=''" v-hasPermi="['his:storeOrder:inquiry']">
                  <el-button size="mini" @click="getInquiryOrder()" >问诊订单</el-button>
               </div>
               <div class="operate-button-container" v-if="item.packageOrderId!=null&&item.packageOrderId!=''" v-hasPermi="['his:storeOrder:package']" >
                  <el-button size="mini" @click="getPackageOrder()" >套餐包订单</el-button>
               </div>
              <div class="operate-button-container"   v-if="item.deliverySn!=null" v-hasPermi="['his:storeOrder:express']">
                <el-button size="mini" @click="showExpress()" >查看物流</el-button>
              </div>
              <div class="operate-button-container" >
                <el-button size="mini" @click="editDelivery()"  v-hasPermi="['his:storeOrder:updateDelivery']" >修改物流单号</el-button>
              </div>

              <div class="operate-button-container" >
                <el-button size="mini" @click="editOrder()"  v-hasPermi="['his:storeOrder:edit']" >修改订单</el-button>
              </div>
              <div class="operate-button-container" v-if="item.status ==2 && item.extendOrderId == null && item.deliverySn == null&&item.orderType==1"   v-hasPermi="['his:storeOrder:createErpOrder']">
                <el-button size="mini" @click="addErpOrder()" >创建ERP订单信息</el-button>
              </div>
              <div class="operate-button-container" v-if="item.extendOrderId!=null && item.orderType==1"  v-hasPermi="['his:storeOrder:getEroOrder']"  >
                <el-button size="mini" @click="showErpOrder()" >ERP订单信息</el-button>
              </div>
             <div class="operate-button-container" v-if="item.tuiMoneyStatus==0 && item.status==4"  v-hasPermi="['his:storeOrder:editTuiMoney']"  >
                <el-button size="mini" @click="editTuiMoney1()" >解冻</el-button>
              </div>
              <div class="operate-button-container" v-if="item.tuiMoneyStatus==1 && item.status==4"  v-hasPermi="['his:storeOrder:editTuiMoney']"  >
                <el-button size="mini" @click="editTuiMoney2()" >冻结</el-button>
              </div>
                 <div class="operate-button-container"  v-if="item.followTime!=null&&item.followTime!=''"   v-hasPermi="['his:storeOrder:msgList']"  >
                              <el-button size="mini" @click="followMsg()" >随访记录</el-button>
                 </div>

               <div class="operate-button-container" v-if="item.status>1">
                   <el-button size="mini" @click="refund()" v-hasPermi="['his:storeOrder:afterSales']">申请退款</el-button>
               </div>
               <div class="operate-button-container" v-if="item.prescribeId!=null&&item.prescribeId!=''" >
                  <el-button size="mini" @click="getPrescribeOrder()" >处方单</el-button>
               </div>
               <div class="operate-button-container" v-if="item.status== -2" >
                  <el-button size="mini" @click="returnCost()"  v-hasPermi="['his:storeOrder:returnCost']" >成本退还</el-button>
               </div>
               <div class="operate-button-container" >
                  <el-button size="mini" @click="sendFollowMsg()" v-if="item.status>1" v-hasPermi="['his:storeOrder:sendMsg']">发送随访消息</el-button>
               </div>
             </div>
     <div class="desct">
      基本信息
     </div>
      <el-descriptions :column="3" border  >
            <el-descriptions-item label="订单编号"  ><span v-if="item!=null">{{item.orderCode}}</span></el-descriptions-item>
            <el-descriptions-item label="会员"><span v-if="item.nickName!=null">{{item.nickName}}({{item.phone}})</span></el-descriptions-item>
            <el-descriptions-item label="会员ID"  ><span v-if="item!=null">{{item.userId}}</span></el-descriptions-item>
            <el-descriptions-item label="支付方式"  ><dict-tag :options="PayOptions" :value="item.payType"/></el-descriptions-item>
            <el-descriptions-item label="药品类型"  ><dict-tag :options="orderTypeOptions" :value="item.orderType"/></el-descriptions-item>
			<el-descriptions-item label="订单来源"  ><dict-tag :options="sourceOptions" :value="item.source"/></el-descriptions-item>
            <el-descriptions-item label="医生名称"  ><span v-if="item!=null">{{item.doctorName}}</span></el-descriptions-item>
            <el-descriptions-item label="店铺名称"  ><span v-if="item!=null">{{item.storeName}}</span></el-descriptions-item>
            <el-descriptions-item label="患者姓名"  > <span v-if="item!=null">{{item.patientName}}</span></el-descriptions-item>
            <el-descriptions-item label="患者年龄"  ><span v-if="item!=null">{{item.patientAge}}</span></el-descriptions-item>
            <el-descriptions-item label="患者性别"  >  <dict-tag :options="sexOptions" :value="item.patientGender"/>  </el-descriptions-item>
            <el-descriptions-item label="与本人关系"  ><span v-if="item!=null">{{item.relation}}</span> </el-descriptions-item>
            <el-descriptions-item label="收货人" >  <span v-if="item!=null">{{item.userName}}</span>  </el-descriptions-item>
            <el-descriptions-item label="收货人电话" > <span v-if="item!=null">{{item.userPhone}}</span>
              <el-button icon="el-icon-search" size="mini" @click="handlePhone()" style="margin-left: 20px;" circle v-hasPermi="['his:storeOrder:queryPhone']"></el-button>
            </el-descriptions-item>
            <el-descriptions-item label="详细地址" > <span>{{item.userAddress}}</span>  </el-descriptions-item>
            <el-descriptions-item label="所属公司"><span v-if="item!=null">{{item.companyName}}</span></el-descriptions-item>
            <el-descriptions-item label="员工"><span v-if="item!=null">{{item.companyUserName}}</span></el-descriptions-item>
            <el-descriptions-item label="推广佣金" ><span v-if="item.tuiMoney!=null">{{item.tuiMoney.toFixed(2)}}</span></el-descriptions-item>
            <el-descriptions-item label="推广佣金状态" ><span v-if="item!=null"><dict-tag :options="tuiOptions" :value="item.tuiMoneyStatus"/> </span></el-descriptions-item>
            <el-descriptions-item label="快递公司编号" > <span v-if="item!=null">{{item.deliveryCode}}</span></el-descriptions-item>
            <el-descriptions-item label="快递名称" ><span v-if="item!=null">{{item.deliveryName}}</span></el-descriptions-item>
            <el-descriptions-item label="快递单号" ><span v-if="item!=null">{{item.deliverySn}}</span></el-descriptions-item>
            <el-descriptions-item label="ERP编号" ><span v-if="item!=null">{{item.extendOrderId}}</span></el-descriptions-item>
            <el-descriptions-item label="物流状态" ><dict-tag :options="deliveryStatusOptions" :value="item.deliveryStatus"/></el-descriptions-item>
            <el-descriptions-item label="物流结算状态" ><dict-tag :options="deliveryPayStatusOptions" :value="item.deliveryPayStatus"/></el-descriptions-item>
            <el-descriptions-item label="物流结算时间" ><span v-if="item!=null">{{item.deliveryPayTime}}</span></el-descriptions-item>
            <el-descriptions-item label="物流结算金额" ><span v-if="item!=null">{{item.deliveryPayMoney}}</span></el-descriptions-item>
            <el-descriptions-item label="物流跟踪状态" ><span v-if="item!=null"><dict-tag :options="deliveryTypeOptions" :value="item.deliveryType"/> </span></el-descriptions-item>
            <el-descriptions-item label="用户备注" ><span v-if="item!=null">{{item.remark}}</span></el-descriptions-item>
            <el-descriptions-item label="档期归属" >
              <el-tag prop="scheduleId" v-for="(schedule, index) in scheduleOptions"    v-if="item!=null&&item.scheduleId==schedule.id">{{schedule.name}}
              </el-tag>
            </el-descriptions-item>
            <el-descriptions-item label="订单购买类型" ><span v-if="item!=null"><dict-tag :options="orderBuyTypeOptions" :value="item.orderBuyType"/></span></el-descriptions-item>
            <el-descriptions-item label=" 公众号/渠道" ><span v-if="item!=null">{{item.channel}}</span></el-descriptions-item>
            <el-descriptions-item label=" 渠道" ><span v-if="item!=null"><dict-tag :options="channelOptions" :value="item.orderChannel"/></span></el-descriptions-item>
            <el-descriptions-item label=" 企微主体" ><span v-if="item!=null"><dict-tag :options="qwSubjectOptions" :value="item.qwSubject"/></span></el-descriptions-item>
      </el-descriptions>
    </el-card>
 </div>
 <div class="contentx" v-if="item!=null" style="padding-bottom: 70px;">
  <div class="desct">
      商品信息
     </div>
     <el-tooltip class="item" effect="dark" :content="showList ? '显示全部' : '隐藏'" placement="top" style="float: right;">
       <el-button size="mini" circle icon="el-icon-search" @click="showListD()" />
     </el-tooltip>
  <el-table border v-if="showProd!=null" :data="showProd" 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).barCode}}</p>
           </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">
             {{scope.row.num}}
           </template>
         </el-table-column>
         <el-table-column label="处方药" width="240" align="center">
           <template slot-scope="scope">
             {{scope.row.isPrescribe!=null&&scope.row.isPrescribe==1?'是':'否'}}
           </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="item.totalPrice!=null">
         合计：<span class="color-danger">￥{{item.totalPrice.toFixed(2)}}</span>
       </div>
       <div style="float: right;margin: 20px" v-if="item.orderType==2">
         剂数：<span class="color-danger">{{counts}}</span>
       </div>
       <div style="float: right;margin: 20px" v-if="item.orderType==2">
         制作类型：<span class="color-danger">{{ recipeType === 0 ? '颗粒剂' : recipeType === 1 ? '膏方' : '饮片'}}</span>
       </div>
  </div>
   <div class="contentx" v-if="item!=null">
  <div class="desct">
    费用信息
  </div>
 <el-descriptions   :column="3" border  >
           <el-descriptions-item label="商品合计"  ><span v-if="item.totalPrice!=null">￥{{item.totalPrice.toFixed(2)}} </span></el-descriptions-item>
           <el-descriptions-item label="处方定价"  ><span v-if="item.prescribePrice!=null"> ￥{{item.prescribePrice.toFixed(2)}}</span></el-descriptions-item>
           <el-descriptions-item label="处方应付金额"  ><span v-if="item.payPrice!=null"> ￥{{item.payPrice.toFixed(2)}}</span></el-descriptions-item>
          <el-descriptions-item label="运费" ><span v-if="item.payDelivery!=null">￥{{item.payDelivery.toFixed(2)}}</span></el-descriptions-item>
          <el-descriptions-item label="优惠劵" ><span v-if="item.discountMoney!=null">￥{{item.discountMoney.toFixed(2)}}</span></el-descriptions-item>
           <el-descriptions-item label="实付金额"  ><span v-if="item.payMoney!=null">￥{{item.payMoney.toFixed(2)}}</span></el-descriptions-item>
           <el-descriptions-item label="代收金额" ><span v-if="item.payRemain!=null">￥{{item.payRemain.toFixed(2)}}</span></el-descriptions-item>
</el-descriptions>
   </div>
       <div class="contentx" v-if="item!=null">
        <div class="desct">
          支付信息
        </div>
      <el-table
        border
        :data="pay"
        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="tradeNo" />
          <el-table-column label="创建时间" align="center" prop="createTime" />
          <el-table-column label="支付时间" align="center" prop="payTime" />
      </el-table>
   </div>
       <div class="contentx" v-if="item!=null">
     <div class="desct">
       操作信息
     </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>
     <div class="contentx" v-if="item!=null">
     <div class="desct">
       分佣信息
     </div>
     <el-table
        border
        :data="tuiMoneyLogs"
        size="small"
                style="width: 100%;margin-top: 20px" >
          <el-table-column label="公司名称" align="center" prop="companyName" width="120px" />
          <el-table-column label="金额" align="center" prop="money" />
          <el-table-column label="余额" align="center" prop="balance" />
          <el-table-column label="创建时间" align="center" prop="createTime" />
          <el-table-column label="备注" align="center" prop="remark" />
      </el-table>
    </div>

                <el-dialog
                 width="50%"
                 title="发货"
                 :visible.sync="sendVisible"
                 append-to-body @close="sendCancel">
            <el-form ref="form" :model="form" :rules="rules" label-width="120px">
                <el-form-item label="快递公司编号" prop="deliveryCode">
                          <el-input v-model="form.deliveryCode" placeholder="请输入快递公司编号" />
                        </el-form-item>
                        <el-form-item label="快递名称" prop="deliveryName">
                          <el-input v-model="form.deliveryName" placeholder="请输入快递名称" />
                        </el-form-item>
                        <el-form-item label="快递单号" prop="deliverySn">
                          <el-input v-model="form.deliverySn" placeholder="请输入快递单号" />
                        </el-form-item>
              </el-form>
              <div slot="footer" class="dialog-footer">
                                <el-button type="primary" @click="sendGoods">确 定</el-button>
                                <el-button @click="sendCancel">取 消</el-button>
              </div>
            </el-dialog>
               <el-dialog :title="expressDialog.title" :visible.sync="expressDialog.open" width="600px" append-to-body>
                 <div  v-hasPermi="['his:storeOrder:syncExpress']"  >
                   <el-button size="mini" @click="syncExpress()" >同步快递鸟物流状态</el-button>
                 </div>
                 <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="editDy.title" :visible.sync="editDy.open" width="600px" append-to-body>
                  <el-form ref="editDyForm" :model="editDyForm" :rules="editDyRules" label-width="100px">
                    <div  v-hasPermi="['his:storeOrder:updateErpOrder']"  style="margin-bottom: 20px;" >
                       <el-button size="mini" @click="updateErpOrder" >同步物流单号信息</el-button>
                     </div>
                    <el-form-item label="物流公司" prop="deliveryCode" >
                       <el-select style="width:220px" v-model="editDyForm.deliveryCode" placeholder="请选择" clearable size="small">
                        <el-option key="SF"  label="顺丰" value="SF" />
                        <el-option key="EMS"  label="邮政" value="EMS" />
                         <el-option key="ZTO"  label="中通" value="ZTO" />
                         <el-option key="STO"  label="申通" value="STO" />
                         <el-option key="JD"  label="京东" value="JD" />
                         <el-option key="DBL"  label="德邦" value="DBL" />
						              <el-option key="YD"  label="韵达" value="YD" />
                       </el-select>
                     </el-form-item>
                    <el-form-item label="物流单号" prop="deliverySn"  >
                      <el-input v-model="editDyForm.deliverySn" placeholder="请输入物流单号" />
                    </el-form-item>
                  </el-form>
                  <div slot="footer" class="dialog-footer">
                    <el-button type="primary" @click="submitEditDyForm">确 定</el-button>
                    <el-button @click="editDy.open = false">取 消</el-button>
                  </div>
                </el-dialog>

               <el-dialog :title="erpDialog.title" :visible.sync="erpDialog.open" width="800px" append-to-body>
                <div v-if="item!=null&&item.extendOrderId!=null&&item.status==2" style="position: absolute; top: 50px;right: 20px;">
                  <el-button size="mini" @click="updateExpress()" v-hasPermi="['his:storeOrder:updateExpress']" >同步物流发货</el-button>
                </div>
                 <div class="table-layout"  v-if="erpOrder!=null" >
                  <el-descriptions direction="vertical"   :column="3" border >
                      <el-descriptions-item label="订单编号" > <span v-if="item!=null"> {{erpOrder.code}}</span></el-descriptions-item>
                      <el-descriptions-item label="是否代收" ><span v-if="item!=null">{{erpOrder.cod?'是':'否'}}</span></el-descriptions-item>
                      <el-descriptions-item label="快递编号" ><span v-if="item!=null">{{erpOrder.express_code}}</span></el-descriptions-item>
                      <el-descriptions-item label="快递名称" ><span v-if="item!=null"> {{erpOrder.express_name}}</span></el-descriptions-item>
                      <el-descriptions-item label="收货人" ><span v-if="item!=null">{{erpOrder.receiver_name}}</span></el-descriptions-item>
                      <el-descriptions-item label="电话" ><span v-if="item!=null"> {{erpOrder.receiver_mobile}}</span></el-descriptions-item>
                      <el-descriptions-item label="地址" ><span v-if="item!=null"> {{erpOrder.receiver_address}}</span></el-descriptions-item>
                      <el-descriptions-item label="运单号" ><span v-if="item!=null"> {{erpOrder.deliverys!=null&&erpOrder.deliverys.length>0?erpOrder.deliverys[0].mail_no:''}}</span></el-descriptions-item>
                  </el-descriptions>
                 </div>
               </el-dialog>
              <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="status" >
                   <el-select v-model="editForm.status" placeholder="请选择状态" clearable size="small" filterable>
                        <el-option
                          v-for="dict in orderOptions "
                          :key="dict.dictValue"
                          :label="dict.dictLabel"
                          :value="dict.dictValue"
                          :disabled="dict.dictLabel == '待推送'"
                        />
                      </el-select>
                   </el-form-item>
                   <el-form-item label="物流状态" prop="deliveryStatus" >
                   <el-select v-model="editForm.deliveryStatus" placeholder="请选择物流状态" clearable size="small" filterable>
                        <el-option
                          v-for="dict in deliveryStatusOptions "
                          :key="dict.dictValue"
                          :label="dict.dictLabel"
                          :value="dict.dictValue"
                        />
                      </el-select>
                   </el-form-item>
                   <el-form-item label="物流跟踪状态" prop="deliveryType" >
                    <el-select v-model="editForm.deliveryType" placeholder="请选择状态" clearable size="small" filterable>
                        <el-option
                          v-for="dict in deliveryTypeOptions "
                          :key="dict.dictValue"
                          :label="dict.dictLabel"
                          :value="dict.dictValue"
                        />
                      </el-select>
                   </el-form-item>
                   <el-form-item label="详情地址" prop="userAddress"  >
                    <el-cascader
                      ref="citySelect"
                      v-model="cityIds"
                      :options="citys"
                      @change="handleCityChange"
                      clearable>
                    </el-cascader>
                    <el-input v-model="editForm.userAddress" placeholder="请输入详细地址(不含省/市/区)" />
                   </el-form-item>
                   <el-form-item label="收货人电话" prop="userPhone"  >
                    <el-input v-model="editForm.userPhone" placeholder="请输入" />
                   </el-form-item>
                  <el-form-item label="备注" prop="remark"  >
                    <el-input v-model="editForm.remark" placeholder="请输入备注" />
                  </el-form-item>
                </el-form>
                <div slot="footer" class="dialog-footer">
                  <el-button type="primary" @click="submitEditForm">确 定</el-button>
                </div>
              </el-dialog>

              <el-drawer
                   :with-header="false"
                    :append-to-body="true"
                   size="75%"
                    :title="show.title" :visible.sync="show.open">
                <inquiryOrderDetails  ref="Details" />
              </el-drawer>
              <el-drawer
                   :with-header="false"
                    :append-to-body="true"
                   size="75%"
                    :title="pack.title" :visible.sync="pack.open">
                <packageOrderDetails  ref="packDetails" />
              </el-drawer>

               <el-dialog
                title="聊天记录"
                :visible.sync="dialogVisible"
                width="80%"
                :before-close="msgDialogClose" append-to-body >
                <msgDetails  ref="msgDetails" :msgDialogClose="msgDialogClose" /><strong></strong>
                <span slot="footer" class="dialog-footer">
                  <el-button @click="msgDialogClose">取 消</el-button>
                  <el-button type="primary" @click="msgDialogClose">确 定</el-button>
                </span>
              </el-dialog>

              <el-drawer
                    :with-header="false"
                    :append-to-body="true"
                    size="75%"
                    :title="prescribeDialog.title" :visible.sync="prescribeDialog.open">
                <prescribeDetails  ref="prescribeDetails" />
              </el-drawer>




</div>
</template>

<script>
import {getMsgFollow,sendMsg,msgList,updateMoney,getGoods,getEroOrder,editTuiMoney,updateDelivery,createErpOrder,updateExpress,updateErp, afterSales,sendgoods,logList,listOrder,getExpress,syncExpress, listOrderitem,getOrder, delOrder, addOrder, updateStoreOrder, exportOrder,payment,tuiOrder ,getPrescribe,getOrderUserPhone,returnCost} from "@/api/his/storeOrder";
import inquiryOrderDetails from '../his/inquiryOrderDetails.vue';
import packageOrderDetails from '../his/packageOrderDetails2.vue';
import prescribeDetails from '../his/prescribeDetails.vue';
import msgDetails from '../../components/his/followMsgDetails.vue';
import { getTcmScheduleList } from "@/api/company/schedule";
import {getCitys} from "@/api/store/city";
  export default {
    name: "orderDe",
    props:["data"],
    components: { inquiryOrderDetails,packageOrderDetails,prescribeDetails ,msgDetails},
    data() {
      return {
        expressDialog:{
          title:"物流信息",
          open:false,
        },
        editDy:{
          title:"修改物流单号",
          open:false,
        },
		sourceOptions:[],
        prescribeDialog:{
          title:"处方单",
          open:false,
        },
        followDialogVisible:false,
        dialogVisible:false,
        total: 0,
        msgForm:{
          pageNum: 1,
          pageSize: 10,
          userId:null,
          followDoctorId:null,
        },
        editDyForm:{
          orderId:null,
          deliveryId:null,
          deliveryCode:null,
          deliverySn: null
        },
        showList:true,
        edit:{
          title:"修改订单",
          open:false,
        },
        erpDialog:{
          title:"ERP订单信息",
          open:false,
        },
        show:{
          title:"问诊详情",
          open:false,
        },
        pack:{
          title:"套餐包",
          open:false,
        },
        followList:[],
        counts:null,
        recipeType:null,
        money:null,
        moneyVisible:false,
        rules:{},
        sendVisible:false,
        logs:[],
        pay:[],
        nickName:null,
        storeName:null,
        PayOptions:[],
        orderOptions:[],
        payStatusOptions:[],
        express:null,
        traces:[],
        msg:[],
        sexOptions:[],
        refundOptions:[],
        channelOptions:[],
        qwSubjectOptions:[],
        tuiOptions:[],
        orOptions:[],
        storeOPtions:[],
        deliveryStatusOptions:[],
        deliveryPayStatusOptions:[],
        deliveryTypeOptions:[],
        orderTypeOptions:[],
        orderBuyTypeOptions:[],
        scheduleOptions:[],
        item:null,
        tuiMoneyLogs:[],
        erpOrder:null,
        prod:null,
        showProd:null,
        editForm:{
          orderId:null,
          status:null,
          userAddress:null,
          deliveryStatus:null,
          deliveryType:null,
          userPhone:null,
          remark:"",
        },
        editDyRules:{
          deliverySn: [
            { required: true, message: "物流单号不能为空", trigger: "blur" }
          ],
          deliveryCode: [
            { required: true, message: "物流公司不能为空", trigger: "blur" }
          ],
        },
        editRules:{
          userAddress: [
            { required: true, message: "收货地址不能为空", trigger: "blur" }
          ],

        },
        mrules:{

        },
        form: {
          deliveryCode: null,
          deliveryName:null,
          deliverySn:null,
          orderId:null,
        },
        cityIds:[],
        citys:[],
        userAddress:null,
      }

    },

    created() {
      getTcmScheduleList().then(response => {
        this.scheduleOptions = response.data;
      });
      this.getDicts("sys_store_pay_type").then(response => {
          this.PayOptions = response.data;
        });
      this.getDicts("sys_order_status").then(response => {
          this.orderOptions = response.data;
        });
      this.getDicts("sys_order_pay").then(response => {
          this.payStatusOptions = response.data;
        });
		this.getDicts("sys_order_source").then(response => {
		  this.sourceOptions = response.data;
		});
      this.getDicts("sys_store_order_type").then(response => {
          this.orderTypeOptions = response.data;
        });
      this.getDicts("sys_store_order_buy_type").then(response => {
        this.orderBuyTypeOptions = response.data;
      });
      this.getDicts("sys_refund_status").then(response => {
          this.refundOptions = response.data;
      });
      this.getDicts("sys_store_channel").then(response => {
        this.channelOptions = response.data;
      });
      this.getDicts("sys_store_qw_subject").then(response => {
        this.qwSubjectOptions = response.data;
      });
      this.getDicts("sys_tui_money_status").then(response => {
            this.tuiOptions = response.data;
        });
      this.getDicts("sys_company_or").then(response => {
            this.orOptions = response.data;
        });
      this.getDicts("sys_patient_sex").then(response => {
         this.sexOptions = response.data;
       });
       this.getDicts("sys_store_delivery_pay_status").then(response => {
             this.deliveryPayStatusOptions = response.data;
           });
       this.getDicts("sys_store_order_delivery_status").then(response => {
             this.deliveryStatusOptions = response.data;
           });
        this.getDicts("sys_delivery_type").then(response => {
              this.deliveryTypeOptions = response.data;
            });

    },
    methods: {
      getCitys() {
        return getCitys().then(res => {
          this.citys = res.data || [];
          return this.citys;
        });
      },
      // 新增：切换省市区
      handleCityChange(val) {
        this.cityIds = Array.isArray(val) ? val : [];
      },

      // 新增：根据已选的 cityIds 从 citys 中获取对应的 label 数组 [省, 市, 区]
      getCityLabelsByIds() {
        if (!this.cityIds || this.cityIds.length === 0) return [];
        const [pVal, cVal, aVal] = this.cityIds;
        const p = this.citys.find(p => p.value === pVal);
        const c = p?.children?.find(c => c.value === cVal);
        const a = c?.children?.find(a => a.value === aVal);
        return [p?.label, c?.label, a?.label].filter(Boolean);
      },

      // 新增：拼装完整地址 = 省 市 区 + 详细地址
      buildFullAddress() {
        const region = this.getCityLabelsByIds().join(' ');
        const detail = (this.editForm.userAddress || '').trim();
        console.log(region)
        console.log(detail)
        return region && detail ? `${region} ${detail}` : (region || detail || '');
      },

      followMsg(row){
         const userId = this.item.userId;
         const followDoctorId =this.item.followDoctorId;
         const doctorName = this.item.doctorName;
         const patientName = this.item.patientName;

         setTimeout(() => {
               this.$refs.msgDetails.getDetails(userId,followDoctorId,doctorName,patientName);
         }, 500);
          this.dialogVisible = true;
       },
      msgDialogClose(){
        this.dialogVisible = false;
      },

      getPrescribeOrder(){
        this.prescribeDialog.open=true;
        setTimeout(() => {
              this.$refs.prescribeDetails.getDetails(this.item.prescribeId);
        }, 1);
      },
      handlePhone(){
        const orderId = this.item.orderId;
        getOrderUserPhone(orderId).then(response =>{
            this.item.userPhone = response.userPhone;
        })
      },
      editDelivery(){
        this.editDy.open = true;
        console.log(this.item)
        this.editDyForm.orderId = this.item.orderId;
        this.editDyForm.deliveryId = this.item.deliveryId;
        this.editDyForm.deliveryCode = this.item.deliveryCode;
        this.editDyForm.deliverySn = this.item.deliverySn;
      },
      showListD(){
        if(this.showList){
          this.showProd=this.prod
        }else{
          this.showProd=[this.prod[0]]
        }
        this.showList=this.showList?false:true;
      },

    showExpress(){
      this.expressDialog.open=true;
      getExpress(this.item.orderId).then(response => {
          this.express = response.data;
          if(this.express!=null&&this.express.Traces!=null){
              this.traces=this.express.Traces
          } else {
            this.traces = []
          }
      });
    },
    updateErpOrder(){
      var that=this;
        this.$confirm('确定同步物流单号信息吗', "警告", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        }).then(function() {
          var data={orderId:that.item.orderId}
          return updateErp(data);
        }).then(() => {
          this.msgSuccess("操作成功");
         getOrder(this.item.orderId).then(response => {
           this.item=response.data
           that.getlogList(this.item.orderId);
           that.$parent.$parent.getList();
         });
          this.editDy.open = false
        }).catch(function() {});

    },
    sendFollowMsg(){
      var that=this;
      this.$confirm('是否确认发送消息?', "警告", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(function() {
        return sendMsg(that.item.orderId);
      }).then(() => {
        this.msgSuccess("操作成功");
      }).catch(function() {});
    },



    handleClose1(){
      this.dialogVisible=false;
    },
    handleClose2(){
      this.followDialogVisible=false;
    },
    follow(row){
      getMsgFollow(row).then(response => {
        if(response.data.formJson!=null&&response.data.formJson!=''&&response.data.writeStatus==1){
              this.messageFollowList=JSON.parse(response.data.formJson );
              this.followDialogVisible=true;
          }else{
            this.$message({
              message: '未填写随访单',
              type: 'info'
            });
          return
          }
      });
    },

    // 修改订单状态
    submitEditForm() {
      this.$refs["editForm"].validate(valid => {
        if (!valid) return;

        // 提交前拼接完整地址
        const payload = {
          ...this.editForm,
          userAddress: this.buildFullAddress(),
        };

        updateStoreOrder(payload).then(response => {
          if (response.code === 200) {
            this.msgSuccess("操作成功");
            this.edit.open = false;
            getOrder(this.item.orderId).then(response => {
              this.item = response.data;
              this.getlogList(this.item.orderId);
              this.$parent.$parent.getList();
            });
          }
        }).finally(()=>{
          this.editDyForm.deliveryCode = null;
          this.editDyForm.orderId = null;
          this.editDyForm.deliveryId = null;
        });
        });
    },
    editOrder() {
      this.edit.open = true;
      this.editForm.orderId = this.item.orderId;
      this.editForm.remark = this.item.remark;

      // 先设置其他同步的字段
      this.editForm.userPhone = this.item.userPhone != null ? this.item.userPhone.toString() : "";
      this.editForm.status = this.item.status != null ? this.item.status.toString() : "";
      this.editForm.deliveryType = this.item.deliveryType;
      this.editForm.deliveryStatus = this.item.deliveryStatus;

      // 等城市数据加载后再解析地址
      const currentAddress = (this.item.userAddress || "").toString().trim();
      this.getCitys().then(() => {
        if (!currentAddress) {
          this.cityIds = [];
          this.editForm.userAddress = "";
          return;
        }

        // 假设格式为：省 市 区 详细地址（空格分隔）
        const parts = currentAddress.split(/\s+/);
        const detail = parts.pop() || ""; // 最后一段作为详细地址
        const provLabel = parts[0];
        const cityLabel = parts[1];
        const areaLabel = parts[2];

        const province = this.citys.find(p => p.label === provLabel);
        const city = province?.children?.find(c => c.label === cityLabel);
        const area = city?.children?.find(a => a.label === areaLabel);

        if (province && city && area) {
          this.cityIds = [province.value, city.value, area.value];
        } else {
          console.warn("未匹配到完整省市区:", { provLabel, cityLabel, areaLabel });
          this.cityIds = [];
        }
        // 把详细地址写回到输入框（只保留详细地址，不含省市区）
        this.editForm.userAddress = detail;
      });
    },
    updateExpress(){
      var that=this;
      this.$confirm('定同步物流信息吗，同步后将自动发货?', "警告", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(function() {
        var data=that.item.orderId
        return updateExpress(data);
      }).then(() => {
        this.msgSuccess("操作成功");
      getOrder(this.item.orderId).then(response => {
        this.item=response.data
        that.getlogList(this.item.orderId);
        that.$parent.$parent.getList();
      });
      }).catch(function() {});
    },
      addErpOrder(){
          var that=this;
          this.$confirm('是否确认推送管易?', "警告", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          }).then(function() {
            var data=that.item.orderId
            return createErpOrder(data);
          }).then(() => {
            this.msgSuccess("操作成功");
          getOrder(this.item.orderId).then(response => {
            this.item=response.data
            that.getlogList(this.item.orderId);
            that.$parent.$parent.getList();
          });
          }).catch(function() {});
      },
      showErpOrder(){
        this.erpDialog.open=true;
        var data=this.item.extendOrderId;
        getEroOrder(data).then(response => {
            this.erp = response.data;
            if(response.data.orders!=null&&response.data.orders.length==1){
              this.erpOrder=response.data.orders[0]
            }
        });
      },

      editTuiMoney1(){
        var that=this;
          this.$confirm('是否解冻此订单推广佣金吗?', "警告", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          }).then(function() {
             var data=that.item.orderId;
            return editTuiMoney(data);
          }).then(() => {
            this.msgSuccess("操作成功");
           getOrder(this.item.orderId).then(response => {
             this.item=response.data
             that.getlogList(this.item.orderId);
             that.$parent.$parent.getList();
           });
          }).catch(function() {});
      },
      editTuiMoney2(){
        var that=this;
          this.$confirm('是否冻结此订单推广佣金吗?', "警告", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          }).then(function() {
            var data=that.item.orderId;
            return editTuiMoney(data);
          }).then(() => {
            this.msgSuccess("操作成功");
            getOrder(this.item.orderId).then(response => {
              this.item=response.data
              that.getlogList(this.item.orderId);
              that.$parent.$parent.getList();
            });
          }).catch(function() {});
      },
      returnCost(){
        var that=this;
          this.$confirm('是否退还此订单成本吗?', "警告", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          }).then(function() {
            var data=that.item.orderId;
            return returnCost(data);
          }).then(() => {
            this.msgSuccess("操作成功");
            this.getDetails(this.item.orderId,null,null)
          }).catch(function() {});
      },


      moneyCancel(){
        this.money=null;
        this.moneyVisible=false;
    },
      refund(){
        var that=this;
        this.$confirm('是否确认申请退款?', "警告", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        }).then(function() {
          var data={
         orderId:that.item.orderId
             }
          return afterSales(data);
        }).then(() => {
          this.msgSuccess("操作成功");
          getOrder(this.item.orderId).then(response => {
              this.item = response.data;
              this.getlogList(this.item.orderId);
              this.$parent.$parent.getList();
          });
        }).catch(function() {});
      },
     finishOrder(){
         var that=this;
         this.$confirm('是否确认客户已收货?', "警告", {
           confirmButtonText: "确定",
           cancelButtonText: "取消",
           type: "warning"
         }).then(function() {
           var data={
          orderId:that.item.orderId
              }
           return getGoods(data);
         }).then(() => {
           this.msgSuccess("操作成功");
           getOrder(this.item.orderId).then(response => {
               this.item = response.data;
                this.getlistOrderitem(this.item.orderId);
               this.getlogList(this.item.orderId);
               this.$parent.$parent.getList();
           });
         }).catch(function() {});
     },


     syncExpress(){
       var that=this;
         this.$confirm('确定同步物流状态吗', "警告", {
           confirmButtonText: "确定",
           cancelButtonText: "取消",
           type: "warning"
         }).then(function() {
           var data=that.item.orderId
           return syncExpress(data);
         }).then(() => {
           this.msgSuccess("操作成功");
            this.expressDialog.open=false
         getOrder(this.item.orderId).then(response => {
           this.item=response.data
           that.getlogList(this.item.orderId);
           that.$parent.$parent.getList();
         });
         }).catch(function() {});
     },
     getInquiryOrder(){

         this.show.open=true;
         setTimeout(() => {
              this.$refs.Details.getDetails(this.item.inquiryOrderId);
         }, 1);
     },
    getPackageOrder(){
         this.pack.open=true;
         console.log(this.item.packageOrderId)
         setTimeout(() => {
              this.$refs.packDetails.getDetails(this.item.packageOrderId);
         }, 1);
     },
    tuiOrder(){
        var that=this;
        this.$confirm('是否确认推送到智慧药房?', "警告", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        }).then(function() {
          var data={
         orderId:that.item.orderId
             }
          return tuiOrder(data);
        }).then(() => {
          this.msgSuccess("操作成功");
          getOrder(this.item.orderId).then(response => {
              this.item = response.data;
              this.getlogList(this.item.orderId);
              this.$parent.$parent.getList();
          });
        }).catch(function() {});
    },
    sendCancel(){
     this.sendVisible = false;
     this.form={
       deliveryCode: null,
       deliveryName:null,
       deliverySn:null,
       orderId:null,
     }
},
    sendGoods(){
        this.form.orderId=this.item.orderId;
        sendgoods(this.form).then(response => {
              this.msgSuccess("修改成功");
              this.sendVisible = false;
              getOrder(this.item.orderId).then(response => {
                  this.item = response.data;
                  this.getlogList(this.item.orderId);
                  this.$parent.$parent.getList();
              });
              this.form={
              deliveryCode: null,
              deliveryName:null,
              deliverySn:null,
              orderId:null,
            }
        });
      },

      getDetails(orderId,nickName,storeName) {
        this.nickName=nickName;
        this.storeName=storeName;
        this.item=null;
        this.tuiMoneyLogs=null;
          getOrder(orderId).then(response => {
              this.item = response.data;
              this.tuiMoneyLogs = response.tuiMoneyLogs;
              this.getlistOrderitem(orderId);
              this.getlogList(orderId);
              this.getPayment(orderId);
              this.msgForm.userId=response.data.userId;
              this.msgForm.followDoctorId=response.data.followDoctorId;
              if(this.item.orderType==2){
                this.getCount(this.item.prescribeId);
              }
          });
      },
      getCount(id){
        getPrescribe(id).then(response => {
            this.recipeType = response.data.recipeType;
            this.counts =  JSON.parse(response.data.usageJson).counts
        });
      },
      getOrder(){
        getOrder(this.item.orderId).then(response => {
            this.item = response.data;
            this.getlistOrderitem(this.item.orderId);
            this.getlogList(this.item.orderId);
            this.getPayment(this.item.orderId);
            if(this.item.orderType==2){
              this.getCount(this.item.prescribeId);
            }
        });
      },
      submitEditDyForm(){
          this.$refs["editDyForm"].validate(valid => {
          if (valid) {
            console.log(this.editDyForm)
            updateDelivery(this.editDyForm).then(response => {
              if (response.code === 200) {
                this.msgSuccess("操作成功");
                this.editDy.open = false;
                  getOrder(this.item.orderId).then(response => {
                      this.item = response.data;
                      this.getlogList(this.item.orderId);
                      this.$parent.$parent.getList();
                  });
              }
            }).finally(()=>{
              this.editDyForm.deliveryCode = null;
              this.editDyForm.orderId = null;
              this.editDyForm.deliveryId = null;
              this.editDyForm.deliverySn = null;
            })
          }
        });
      },

      getlistOrderitem(orderId){
        listOrderitem(orderId).then(response => {
            this.prod = response.rows;
            this.showProd=[this.prod[0]]
        });
      },
      getlogList(orderId){
        logList(orderId).then(response => {
            this.logs = response.rows;
        });
      },
      getPayment(orderId){
        payment(orderId).then(response => {
            console.log(response)
            this.pay = response.data;
        });
      }
    }
  }
</script>
<style>

  .content{
      height: 100%;
      background-color: #fff;
      padding: 0px 20px;

  }
</style>
<style>

  .contentx{
      height: 100%;
      background-color: #fff;
      padding: 0px 20px 20px;


      margin: 20px;
  }
  .el-descriptions-item__label.is-bordered-label{
    font-weight: normal;
  }
  .el-descriptions-item__content {
    max-width: 150px;
    min-width: 100px;
  }
  .desct{
      padding-top: 20px;
      padding-bottom: 20px;
      color: #524b4a;
      font-weight: bold;
    }
</style>

<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
}
</style>

<style scoped>
.chat-records {

  overflow-y: auto;
}
.timestamp {
  font-size: 12px;
  color: #A9A9A9;
}
.chat-record {
  margin: 10px;
  flex-direction: column;
  align-items: flex-start;
}
.sent {
  background-color: #fbfdff;
  color: #000839;
}
.sent .timestamp {
  float: right;
}
.right{
  float: right;
}
.received {
  background-color: #fbfdff;
  color: #000000;
}

.el-descriptions-item__content {
    max-width: 150px;
    min-width: 100px;
}
.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
}
</style>
