Просмотр исходного кода

Merge branch 'master' of http://47.107.53.207:3000/ymy/oms

AlanWong 1 год назад
Родитель
Сommit
927fc3fa70

+ 227 - 0
src/views/oms/order/components/deliveryGoodsInfo.vue

@@ -0,0 +1,227 @@
+<template>
+  <div class="info">
+    <div class="g-box">
+      <div class="info-row">
+        <div class="info-col">
+          <span class="label">订单编号:</span>
+          <span></span>
+        </div>
+      </div>
+      <div class="info-row">
+        <div class="info-col col-width">
+          <span class="label">开单时间:</span>
+          <span></span>
+        </div>
+        <div class="info-col col-width">
+          <span class="label">状态:</span>
+          <span></span>
+        </div>
+      </div>
+      <div class="info-row">
+        <div class="info-col col-width">
+          <span class="label">业务员:</span>
+          <span></span>
+        </div>
+        <div class="info-col col-width">
+          <span class="label">备注:</span>
+          <span></span>
+        </div>
+      </div>
+      <div class="info-row">
+        <div class="info-col">
+          <span class="label">业务员手机:</span>
+          <span></span>
+        </div>
+      </div>
+      <div class="info-row">
+        <div class="info-col">
+          <span class="label">物流状态:</span>
+          <span></span>
+        </div>
+      </div>
+      <div class="info-row">
+        <div class="info-col">
+          <span class="label">运输方式:</span>
+          <span></span>
+        </div>
+      </div>
+    </div>
+    <div class="g-box">
+      <div class="info-row">
+        <div class="info-col col-width">
+          <span class="label">发货省:</span>
+          <span></span>
+        </div>
+        <div class="info-col col-width">
+          <span class="label">收货单位:</span>
+          <span></span>
+        </div>
+      </div>
+      <div class="info-row">
+        <div class="info-col col-width">
+          <span class="label">发货市:</span>
+          <span></span>
+        </div>
+        <div class="info-col col-width">
+          <span class="label">收货省:</span>
+          <span></span>
+        </div>
+      </div>
+      <div class="info-row">
+        <div class="info-col col-width">
+          <span class="label">发货区(县):</span>
+          <span></span>
+        </div>
+        <div class="info-col col-width">
+          <span class="label">收货市:</span>
+          <span></span>
+        </div>
+      </div>
+      <div class="info-row">
+        <div class="info-col col-width">
+          <span class="label">发货地址(详情):</span>
+          <span></span>
+        </div>
+        <div class="info-col col-width">
+          <span class="label">收货地址(详情):</span>
+          <span></span>
+        </div>
+      </div>
+      <div class="info-row">
+        <div class="info-col col-width">
+          <span class="label">发货人:</span>
+          <span></span>
+        </div>
+        <div class="info-col col-width">
+          <span class="label">收货人:</span>
+          <span></span>
+        </div>
+      </div>
+      <div class="info-row">
+        <div class="info-col col-width">
+          <span class="label">发货人联系电话:</span>
+          <span></span>
+        </div>
+        <div class="info-col col-width">
+          <span class="label">收货人联系电话:</span>
+          <span></span>
+        </div>
+      </div>
+      <div class="info-row">
+        <div class="info-col col-width">
+          <span class="label">期望提货时间:</span>
+          <span class="time">2023-07-29 12:00</span>
+        </div>
+        <div class="info-col col-width">
+          <span class="label">期望送达时间:</span>
+          <span class="time">2023-08-01 18:00</span>
+        </div>
+      </div>
+    </div>
+    <div class="g-box">
+      <div class="goods-top">
+        <div class="g-label">物料信息</div>
+        <div class="g-cont">
+          <div class="g-total">
+            <span class="name-label">重量合计:</span>
+            <span class="total-num">20.00kg</span>
+          </div>
+          <div class="g-total">
+            <span class="name-label">体积合计:</span>
+            <span class="total-num">2.00m³</span>
+          </div>
+        </div>
+      </div>
+      <div class="table">
+        <vxe-table
+          border
+          size="mini"
+          align="center"
+          header-cell-class-name="header-cell"
+          height="200"
+          :data="data">
+          <vxe-column field="name" title="物料编码"></vxe-column>
+          <vxe-column field="sex" title="物料名称" show-overflow></vxe-column>
+          <vxe-column field="age" title="体积"></vxe-column>
+          <vxe-column field="address" title="重量"></vxe-column>
+          <vxe-column field="age" title="单价"></vxe-column>
+          <vxe-column field="age" title="数量"></vxe-column>
+          <vxe-column field="age" title="小计"></vxe-column>
+        </vxe-table>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script lang="ts">
+import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+@Component
+export default class DeliveryGoodsInfo extends Vue {
+  data:Array<any>=[]
+}
+</script>
+<style lang="scss" scoped>
+.info{
+  width: 100%;
+  .g-box{
+    width: 100%;
+    background-color: rgba(160,205,255,0.22);
+    margin-bottom: 16px;
+    padding:16px;
+    box-sizing: border-box;
+    .info-row{
+      width: 100%;
+      display: flex;
+      padding-bottom: 16px;
+      .info-col{
+        width: 100%;
+        display: flex;
+        align-items: center;
+        span{
+          font-size: 14px;
+        }
+        .time{
+          color: #F00;
+        }
+      }
+      .col-width{
+        width: 50%;
+      }
+    }
+    .info-row:last-child{
+      padding: 0;
+    }
+    .goods-top{
+      padding-bottom: 8px;
+      width: 100%;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      .g-label{
+        font-size: 14px;
+      }
+      .g-cont{
+        width: 60%;
+        display: flex;
+        align-items: center;
+        justify-content: flex-end;
+        .g-total{
+          padding-left: 8px;
+          font-size: 12px;
+          .name-label{
+            color: #999;
+          }
+        }
+      }
+    }
+    .table{
+      width: 100%;
+    }
+  }
+}
+</style>
+<style lang="scss">
+.header-cell{
+  background-color: rgba(160,205,255,0.48);
+}
+</style>

+ 162 - 0
src/views/oms/order/components/deliveryModal.vue

@@ -0,0 +1,162 @@
+<template>
+  <el-drawer
+    title="订单发货"
+    :visible.sync="drawer"
+    :direction="direction"
+    size="40%"
+    :before-close="handleClose">
+    <div class="content">
+      <deliveryGoodsInfo />
+      <div class="send-box">
+        <div class="title-label">预计配送和预计费用</div>
+        <div class="send-type">
+          <div class="send-item onSend">
+            <div class="label-name">整车配送</div>
+            <div class="send-info">
+              <div class="s-time">7月23 12:23前</div>
+              <div class="send-price">¥16.00起</div>
+            </div>
+          </div>
+          <div class="send-item">
+            <div class="label-name">标准汽运</div>
+            <div class="send-info">
+              <div class="s-time">7月23 12:23前</div>
+              <div class="send-price">¥22.00起</div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div class="space"></div>
+    <div class="deli-footer">
+      <div class="d-left">
+        <div class="estimate-total">
+          预计总价<span class="total">¥16.00</span> <span class="detail">明细></span>
+        </div>
+        <div class="agreement">
+          <el-checkbox v-model="checked">已读并同意《XXX电子运单协议》</el-checkbox>
+        </div>
+      </div>
+      <div class="send-btn">确认发货</div>
+    </div>
+  </el-drawer>
+</template>
+
+<script lang="ts">
+import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+import DeliveryGoodsInfo from "./deliveryGoodsInfo.vue";
+@Component({components:{DeliveryGoodsInfo}})
+export default class DeliveryModal extends Vue {
+  drawer=false;
+  direction='rtl'
+  checked=false;
+  handleClose(){}
+  setShow(v:boolean){
+    this.drawer=v;
+  }
+}
+</script>
+<style lang="scss" scoped>
+.content{
+  width: 100%;
+  box-sizing: border-box;
+  padding: 0 16px;
+  background-color: #FFF;
+  .send-box{
+    width: 100%;
+    box-sizing: border-box;
+    padding: 16px;
+    background-color: rgba(255, 226, 160, 0.3);
+    .title-label{
+      font-size: 14px;
+      padding-bottom: 8px;
+    }
+    .send-type{
+      width: 100%;
+      display: flex;
+      align-items: center;
+      .send-item{
+        width: 156px;
+        box-sizing: border-box;
+        border:solid 3px #999;
+        border-radius: 6px;
+        overflow: hidden;
+        margin-right: 32px;
+        cursor: pointer;
+        .label-name{
+          background-color: #999;
+          color: #FFF;
+          font-size: 16px;
+          font-weight: 700;
+          padding: 2px 0 4px;
+          text-align: center;
+        }
+        .send-info{
+          padding: 8px 0;
+          text-align: center;
+          background-color: #FFF;
+          .s-time{
+            font-size: 14px;
+            color: #1684FC;
+          }
+          .send-price{
+            font-size: 20px;
+            padding-top: 4px;
+          }
+        }
+      }
+      .send-item:hover,.onSend{
+        border:solid 3px #1684FC;
+        .label-name{
+          background-color: #1684FC;
+        }
+      }
+    }
+  }
+}
+.deli-footer{
+  height: 60px;
+  width: 100%;
+  padding: 0 16px;
+  box-sizing: border-box;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  position: absolute;
+  background-color: #FFF;
+  left: 0;
+  bottom: 0;
+  .d-left{
+    width: 70%;
+    .estimate-total{
+      font-size: 14px;
+      padding-bottom: 4px;
+      .total{
+        font-size: 16px;
+        color: #F00;
+      }
+      .detail{
+        color: #1684FC;
+        padding-left: 16px;
+      }
+    }
+  }
+  .send-btn{
+    width: 120px;
+    height: 40px;
+    line-height: 40px;
+    border-radius: 8px;
+    background: linear-gradient(129.2deg, rgba(22,132,252,1) 9.81%,rgba(93,167,249,1) 97.4%);
+    color: rgba(255, 255, 255, 100);
+    font-size: 14px;
+    text-align: center;
+    box-shadow: 0px 2px 6px 0px rgba(93, 167, 249, 100);
+    cursor: pointer;
+  }
+}
+.space{
+  height: 60px;
+  width: 100%;
+  margin-top: 16px;
+}
+</style>

+ 1 - 0
src/views/oms/order/components/orderTable.vue

@@ -125,6 +125,7 @@
       <template #default="{ row }">
         <el-button type="text" size="mini" v-if="showMerge(row)" @click="mergeHandle(row)">合并</el-button>
         <el-button type="text" size="mini" v-if="showSplit(row)" @click="splitHandle(row)">拆分</el-button>
+        <el-button type="text" size="mini" v-if="row.status == 'WaitFConfirm'">发货</el-button>
       </template>
     </vxe-column>
   </vxe-table>

+ 5 - 3
src/views/oms/order/components/orderTool.vue

@@ -32,11 +32,11 @@
       </el-dropdown-menu>
     </el-dropdown>
     <div class="split"></div>
-    <el-dropdown split-button type="text" class="dropdown" @command="handleCommand">
-      修改
+    <el-dropdown split-button type="text" class="dropdown" @click="handle('addGift')" @command="handleCommand">
+      添加赠品
       <el-dropdown-menu slot="dropdown">
         <!-- <el-dropdown-item command="addProduct">添加商品</el-dropdown-item> -->
-        <el-dropdown-item command="addGift">添加赠品</el-dropdown-item>
+        <!-- <el-dropdown-item command="addGift">添加赠品</el-dropdown-item> -->
         <el-dropdown-item command="updateFreight">改运费</el-dropdown-item>
         <el-dropdown-item command="updateTag">改标签</el-dropdown-item>
         <el-dropdown-item command="updateRmk">改备注</el-dropdown-item>
@@ -45,6 +45,8 @@
     </el-dropdown>
     <el-button type="text" @click="handle('producePurchase')" title="选取已提交数据">生成采购单</el-button>
     <el-button type="text" @click="handle('orderFile')">订单归档</el-button>
+    <div class="split"></div>
+    <el-button type="text" @click="handle('sendGoods')">发货</el-button>
   </div>
 </template>
 

+ 9 - 16
src/views/oms/order/index.vue

@@ -109,20 +109,6 @@
               <el-input style="width: 140px;" v-model="value.noteContent" size="mini" placeholder="备注内容"></el-input>
             </template>
           </order-radio>
-          <!-- <el-collapse-item title="标签" name="label">
-            <div class="orderSelect">
-              <el-select v-model="value.includeLabelsType" placeholder="请选择包含标签类型" clearable size="mini">
-                <el-option label="包含任意一个标签" :value="1"></el-option>
-                <el-option label="同时包含指定标签" :value="2"></el-option>
-              </el-select>
-            </div>
-            <el-input placeholder="包含标签" :value="value.includeLabels" @clear="labelsClear(true)" class="labels-width-btn" size="mini" clearable>
-              <el-button slot="append" icon="el-icon-more" @click="showLabels"></el-button>
-            </el-input>
-            <el-input placeholder="排除标签" :value="value.excludeLabels" @clear="labelsClear" class="labels-width-btn" size="mini" clearable>
-              <el-button slot="append" icon="el-icon-more" @click="showLabels2"></el-button>
-            </el-input>
-          </el-collapse-item> -->
           <order-radio title="订单来源" keyName="sourceFrom" ref="searchCom11" :options="sourceFromOptions" noLimit @radioChange="onChange($event,'sourceFrom')" />
           <order-checkbox title="订单类型" keyName="typeList" ref="searchCom12" :options="typeOption" noLimit @checkboxChange="onChange($event,'typeList')" />
           <el-collapse-item title="付款方式 & 是否付款" name="codAndPay">
@@ -155,7 +141,7 @@
       <div class="tool">
         <order-tool @addOrder="addOrder" @smt="smtOrder" @reSmt="reSmt" @loadOrder="loadOrder" @producePurchase="producePurchase" @cancelOrder="cancelOrder" 
         @reCancelOrder="reCancelOrder" @updateRmk="updateRmk" @changeQues="changeQues" @changeNormal="changeNormal" @updateSalesman="updateSalesman" 
-        @updateTag="updateTag" @addGift="addGift" @addProduct="addProduct" @updateFreight="updateFreight" @orderFile="orderFile" />
+        @updateTag="updateTag" @addGift="addGift" @addProduct="addProduct" @updateFreight="updateFreight" @orderFile="orderFile" @sendGoods="sendGoods" />
       </div>
       <div class="table">
         <order-table :data="data" ref="orderTable" class="order-table" @detail="detail" @mergeHandle="mergeHandle" @splitHandle="splitHandle" />
@@ -193,6 +179,8 @@
       <freight-modal ref="freightModal" @handleSuccess="handleSuccess" />
       <!-- 标签 -->
       <labels-modal ref="labelsModal" @onChange="onChangeLabel" />
+      <!-- 发货 -->
+      <delivery-modal ref="deliveryModal" />
     </div>
   </div>
 </template>
@@ -221,11 +209,12 @@ import TabModal from "./components/tabModal.vue";
 import AddProductModal from "./components/addProductModal.vue";
 import FreightModal from "./components/freightModal.vue";
 import LabelsModal from "./components/labelsModal.vue";
+import DeliveryModal from "./components/deliveryModal.vue";
 import { query,getProvince,smt,unSmt,purchaseQty,unCancel,resetQuestion,archive } from '@/api/omsOrder'
 import { queryAll } from '@/api/question'
 @Component({components:{filterInput,OrderCheckbox,OrderRadio,filterDate,OrderTool,OrderTable,AddOrder,InputSelect,OrderProduct,
   filterMinMax,loadOrderModal,PurchaseModel,MergeModel,SplitModel,CancelOrderModel,QuestModel,SetQuesModal,UpdateRmkModal,UpdateSalerModal,
-  TabModal,AddProductModal,FreightModal,LabelsModal}})
+  TabModal,AddProductModal,FreightModal,LabelsModal,DeliveryModal}})
 export default class Order extends Vue {
   activeNames:Array<any>=['1','statusList']
   radio=''
@@ -500,6 +489,10 @@ export default class Order extends Vue {
     this.getProvince();
     this.getQuestionList();
   }
+  //发货
+  sendGoods(){
+    (this.$refs.deliveryModal as any).setShow(true);
+  }
   //显示标签弹窗
   showLabels(){
     this.isContainLabel = true;