ymy hai 1 ano
pai
achega
a447b1361d

+ 49 - 11
src/views/components/bar01.vue

@@ -1,5 +1,10 @@
 <template>
-  <div class="chart" :id="id"></div>
+  <div class="chart-box">
+    <div class="title-top">
+      <span>每月订单量</span>
+    </div>
+    <div class="chart" :id="id"></div>
+  </div>
 </template>
 
 <script lang="ts">
@@ -12,7 +17,7 @@ export default class Bar02 extends Vue {
   id=this.randomString();
 
   mounted(){
-    this.init()
+    this.getData()
   }
 
   randomString(){
@@ -23,16 +28,17 @@ export default class Bar02 extends Vue {
     return result;
   }
 
-  init(){
+  initChart(data:Array<any>){
     let chartDom:any = document.getElementById(this.id);
     let myChart = echarts.init(chartDom);
     let option: EChartsOption;
-
+    let dataX=[]
+    let dataY=[]
+    for(const item of data) {
+      dataX.push(item.month)
+      dataY.push(item.total)
+    }
     option = {
-      title: {
-        text: '每月订单量',
-        left: 'center'
-      },
       tooltip: {
         trigger: 'axis',
         axisPointer: {
@@ -47,14 +53,14 @@ export default class Bar02 extends Vue {
       },
       xAxis: {
         type: 'category',
-        data: ['2022/08', '2022/09', '2022/10', '2022/11', '2022/12', '2023/01','2023/02','2023/03','2023/04','2023/05','2023/06','2023/07']
+        data: dataX
       },
       yAxis: {
         type: 'value'
       },
       series: [
         {
-          data: [0, 0, 0, 0, 0, 0, 0, 0,100,460,600, 660],
+          data: dataY,
           type: 'bar',
           showBackground: true,
           barWidth: '60%',
@@ -74,12 +80,44 @@ export default class Bar02 extends Vue {
 
     option && myChart.setOption(option);
   }
+  getData() {
+    (this as any).$request({
+      url:'/omsOrder/report/monthlyCount',
+      method: 'GET'
+    }).then((res:any) => {
+      if(res.data) {
+        this.initChart(res.data)
+      }
+    }).catch(() =>{})
+  }
 }
 </script>
 
 <style lang="scss" scoped>
-.chart{
+.chart-box{
   height: 100%;
   width: 100%;
+  .title-top{
+    height: 40px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    position: relative;
+    width: 100%;
+    >span{
+      font-size: 16px;
+      font-weight: 700;
+    }
+    .select{
+      width: 100px;
+      position: absolute;
+      top: 6px;
+      right: 0;
+    }
+  }
+}
+.chart{
+  height: calc(100% - 40px);
+  width: 100%;
 }
 </style>

+ 69 - 24
src/views/components/pie01.vue

@@ -1,5 +1,13 @@
 <template>
-  <div class="chart" :id="id"></div>
+  <div class="chart-box">
+    <div class="title-top">
+      <span>区域销量</span>
+      <el-select v-model="areatValue" size="mini" class="select" placeholder="请选择" @change="areaChange">
+        <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option>
+      </el-select>
+        </div>
+    <div class="chart" :id="id"></div>
+  </div>
 </template>
 
 <script lang="ts">
@@ -10,9 +18,16 @@ type EChartsOption = echarts.EChartsOption;
 @Component
 export default class Pie01 extends Vue {
   id=this.randomString();
-
+  areatValue=1
+  options:Array<any>=[{
+    label:'省级',
+    value:1
+  },{
+    label:'市级',
+    value: 2
+  }]
   mounted(){
-    this.init()
+    this.getData()
   }
 
   randomString(){
@@ -22,39 +37,34 @@ export default class Pie01 extends Vue {
       result += str[Math.floor(Math.random() * str.length)];
     return result;
   }
-
-  init(){
+  areaChange() {
+    this.getData()
+  }
+  initChart(data:Array<any>){
     let chartDom:any = document.getElementById(this.id);
     let myChart = echarts.init(chartDom);
     let option: EChartsOption;
-
+    let _data=[]
+    for(const item of data) {
+      _data.push({
+        name: item.area,
+        value:item.total
+      })
+    }
     option = {
-      title: {
-        text: '区域月订单量',
-        left: 'center'
-      },
       tooltip: {
         trigger: 'item'
       },
       legend: {
-        orient: 'vertical',
-        left: 'left'
+        // orient: 'vertical',
+        show:true,
+        bottom:0
       },
       series: [
         {
-          name: '当前数据',
           type: 'pie',
           radius: '50%',
-          data:
-          [
-            {name:'北京市', value:3000},
-            {name:'广西壮族自治区', value:1000},
-            {name:'广东省',value:5500},
-            {name:'湖南省',value:2500},
-            {name:'贵州省',value:1300},
-            {name:'四川省',value:2600},
-            {name:'上海市',value:3600}
-          ],
+          data:_data,
           emphasis: {
             itemStyle: {
               shadowBlur: 10,
@@ -71,12 +81,47 @@ export default class Pie01 extends Vue {
 
     option && myChart.setOption(option);
   }
+  getData() {
+    (this as any).$request({
+      url:'/omsOrder/report/areaSalesTop',
+      method: 'GET',
+      params:{
+        level:this.areatValue
+      }
+    }).then((res:any) => {
+      if(res.data) {
+        this.initChart(res.data)
+      }
+    }).catch(() =>{})
+  }
 }
 </script>
 
 <style lang="scss" scoped>
-.chart{
+.chart-box{
   height: 100%;
   width: 100%;
+  .title-top{
+    height: 40px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    position: relative;
+    width: 100%;
+    >span{
+      font-size: 16px;
+      font-weight: 700;
+    }
+    .select{
+      width: 100px;
+      position: absolute;
+      top: 6px;
+      right: 0;
+    }
+  }
+}
+.chart{
+  height: calc(100% - 40px);
+  width: 100%;
 }
 </style>

+ 71 - 19
src/views/components/pie02.vue

@@ -1,5 +1,13 @@
 <template>
-  <div class="chart" :id="id"></div>
+  <div class="chart-box">
+    <div class="title-top">
+      <span>订单来源</span>
+      <el-select v-model="dateValue" size="mini" class="select" placeholder="请选择" @change="dateChange">
+        <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option>
+      </el-select>
+        </div>
+    <div class="chart" :id="id"></div>
+  </div>
 </template>
 
 <script lang="ts">
@@ -10,9 +18,19 @@ type EChartsOption = echarts.EChartsOption;
 @Component
 export default class Pie02 extends Vue {
   id=this.randomString();
-
+  dateValue=30
+  options:Array<any>=[{
+    label:'今日',
+    value:1
+  },{
+    label:'7天',
+    value:7
+  },{
+    label:'30日',
+    value:30
+  }]
   mounted(){
-    this.init()
+    this.getData()
   }
 
   randomString(){
@@ -22,27 +40,43 @@ export default class Pie02 extends Vue {
       result += str[Math.floor(Math.random() * str.length)];
     return result;
   }
-
-  init(){
+  dateChange(){
+    this.getData()
+  }
+  getData() {
+    (this as any).$request({
+      url:'/omsOrder/report/upSourceCount',
+      method: 'GET',
+      params:{
+        days:this.dateValue
+      }
+    }).then((res:any) => {
+      if(res.data) {
+        this.initChart(res.data)
+      }
+    }).catch(() =>{})
+  }
+  initChart(data:Array<any>){
     let chartDom:any = document.getElementById(this.id);
     let myChart = echarts.init(chartDom);
     let option: EChartsOption;
-
+    let _data=[]
+    for(const item of data) {
+      _data.push({
+        name: item.up_source_name,
+        value:item.total
+      })
+    }
     option = {
-      title: {
-        text: '月订单来源',
-        left: 'center'
-      },
       tooltip: {
         trigger: 'item'
       },
       legend: {
-        orient: 'vertical',
-        right: 'right'
+        show:true,
+        bottom:0
       },
       series: [
         {
-          name: '当前数据',
           type: 'pie',
           radius: ['40%', '70%'],
           avoidLabelOverlap: false,
@@ -65,11 +99,7 @@ export default class Pie02 extends Vue {
           labelLine: {
             show: false
           },
-          data: [
-            { value: 1048, name: '手工下单' },
-            { value: 735, name: '聚水潭' },
-            { value: 580, name: '其他' }
-          ]
+          data: _data
         }
       ]
     };
@@ -81,8 +111,30 @@ export default class Pie02 extends Vue {
 </script>
 
 <style lang="scss" scoped>
-.chart{
+.chart-box{
   height: 100%;
   width: 100%;
+  .title-top{
+    height: 40px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    position: relative;
+    width: 100%;
+    >span{
+      font-size: 16px;
+      font-weight: 700;
+    }
+    .select{
+      width: 100px;
+      position: absolute;
+      top: 6px;
+      right: 0;
+    }
+  }
+}
+.chart{
+  height: calc(100% - 40px);
+  width: 100%;
 }
 </style>>

+ 69 - 21
src/views/components/rose.vue

@@ -1,5 +1,13 @@
 <template>
-  <div class="chart" :id="id"></div>
+  <div class="chart-box">
+    <div class="title-top">
+      <span>订单发货状态</span>
+      <el-select v-model="dateValue" size="mini" class="select" placeholder="请选择" @change="dateChange">
+        <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option>
+      </el-select>
+        </div>
+    <div class="chart" :id="id"></div>
+  </div>
 </template>
 
 <script lang="ts">
@@ -10,9 +18,19 @@ type EChartsOption = echarts.EChartsOption;
 @Component
 export default class Rose extends Vue {
   id=this.randomString();
-
+  dateValue=30
+  options:Array<any>=[{
+    label:'今日',
+    value:1
+  },{
+    label:'7天',
+    value:7
+  },{
+    label:'30日',
+    value:30
+  }]
   mounted(){
-    this.init()
+    this.getData()
   }
 
   randomString(){
@@ -23,16 +41,18 @@ export default class Rose extends Vue {
     return result;
   }
 
-  init(){
+  initChart(data:Array<any>){
     let chartDom:any = document.getElementById(this.id);
     let myChart = echarts.init(chartDom);
     let option: EChartsOption;
-
+    let _data=[]
+    for(const item of data) {
+      _data.push({
+        name: item.status,
+        value:item.total
+      })
+    }
     option = {
-      title: {
-        text: '月订单状态',
-        left: 'center'
-      },
       legend: {
         top: 'bottom'
       },
@@ -47,7 +67,6 @@ export default class Rose extends Vue {
       },
       series: [
         {
-          name: 'Nightingale Chart',
           type: 'pie',
           radius: [30, 120],
           center: ['50%', '50%'],
@@ -55,28 +74,57 @@ export default class Rose extends Vue {
           itemStyle: {
             borderRadius: 8
           },
-          data: [
-            { value: 40, name: '待付款' },
-            { value: 38, name: '等待供应商|外仓发货' },
-            { value: 32, name: '已付款待审核' },
-            { value: 30, name: '已客审待财审' },
-            { value: 28, name: '发货中' },
-            { value: 26, name: '已发货' },
-            { value: 22, name: '取消订单' },
-            { value: 18, name: '订单异常' }
-          ]
+          data: _data
         }
       ]
     };
 
     option && myChart.setOption(option);
   }
+  dateChange(){
+    this.getData()
+  }
+  getData() {
+    (this as any).$request({
+      url:'/omsOrder/report/sendCount',
+      method: 'GET',
+      params:{
+        days:this.dateValue
+      }
+    }).then((res:any) => {
+      if(res.data) {
+        this.initChart(res.data)
+      }
+    }).catch(() =>{})
+  }
 }
 </script>
 
 <style lang="scss" scoped>
-.chart{
+.chart-box{
   height: 100%;
   width: 100%;
+  .title-top{
+    height: 40px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    position: relative;
+    width: 100%;
+    >span{
+      font-size: 16px;
+      font-weight: 700;
+    }
+    .select{
+      width: 100px;
+      position: absolute;
+      top: 6px;
+      right: 0;
+    }
+  }
+}
+.chart{
+  height: calc(100% - 40px);
+  width: 100%;
 }
 </style>

+ 5 - 13
src/views/oms/order/components/addOrder.vue

@@ -922,25 +922,18 @@ export default class AddOrder extends Vue {
   }
   setDetail(data:any){
     this.orderValue = data;
-    if(this.orderValue.isPay == 0 || this.orderValue.isPay == 1){
-      this.radioPay = this.orderValue.isPay
-    }else{
-      this.radioPay = 2;
-    }
+    this.radioPay = this.orderValue.isPay
     if(this.orderValue.isCod == 1) {
       this.radioPay = 3
     }
   }
   //订单支付情况单选值
   inputPay(v:number){
-    this.orderValue.isPay = null;
-    if(v === 0 || v === 1){
-      this.orderValue.isPay = v;
-    }
-    if(v === 3){
+    if(v === 3) {
       this.orderValue.isCod = 1
       this.orderValue.isPay = 0
     }else{
+      this.orderValue.isPay = v;
       this.orderValue.isCod = 0
     }
   }
@@ -1178,9 +1171,7 @@ export default class AddOrder extends Vue {
       
       //付款
       this.orderValue.isPay = data.isPay;
-      if(this.orderValue.isPay != 0 || this.orderValue.isPay != 1){
-        this.radioPay == 2
-      }
+      this.radioPay = data.isPay
       if(data.isCod == 1) {
         this.radioPay == 3
       }
@@ -1502,6 +1493,7 @@ export default class AddOrder extends Vue {
             this.orderValue.pays = []
           }
           if(this.radioPay == 2){
+            this.orderValue.isPay = this.radioPay;
             (this.$refs.payform as any).validate({noMsg:true}).then(()=>{
               this.orderValue.pays = [];
               let payFormValue = (this.$refs.payform as any).getValue();

+ 2 - 7
src/views/oms/order/components/mergeMedal.vue

@@ -7,10 +7,6 @@
           <el-tag size="mini">主</el-tag>
         </div>
       </template>
-      <template v-slot:shopName="{row}">
-        <div style="color:#1890ff">{{ row.shopName }}</div>
-        <div>{{ row.buyerId }}</div>
-      </template>
       <template v-slot:address="{row}">
         <div class="addr">{{ row.receiverProvince + '-' + row.receiverCity + '-' + row.receiverDistrict + (row.receiverTown?'-'+row.receiverTown:'') }}</div>
         <div class="de-addr">{{ row.receiverAddress }}</div>
@@ -77,9 +73,8 @@ export default class MergeModel extends Vue {
       slot:true,
       width:140
     },{
-      title:'店铺+买家',
-      field:'shopName',
-      slot:true,
+      title:'买家',
+      field:'buyerNickname',
       width:150
     },{
       title:'收货人',

+ 7 - 1
src/views/oms/order/components/splitModal.vue

@@ -67,7 +67,13 @@ export default class SplitModel extends Vue {
     if(data){
       this.billData = data;
       this.data = [];
-      this.getSplitNum(data);
+      if(data.items) {
+        for(const item of data.items){
+          item.splitNum = item.qty - item.splitQty
+          this.data.push(item)
+        }
+      }
+      // this.getSplitNum(data);
     }else{
       this.billData = null;
       this.data = [];