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

修改新增达沃特、诺晶等

caojunjie преди 2 години
родител
ревизия
55fb806cf9

+ 1 - 1
src/views/businessManagement/receipt/configuration/mainList.json

@@ -69,7 +69,7 @@
       "type": "date",
       "unlinkPanels": true,
       "searchRange": true,
-      "label": "发货时间",
+      "label": "发货完成时间",
       "format": "yyyy-MM-dd",
       "valueFormat": "yyyy-MM-dd",
       "prop": "businessDate",

+ 2 - 2
src/views/businessManagement/salesOrder/index.vue

@@ -509,12 +509,12 @@ export default {
         params.orderEndDate = params.businesDate[1] + " " + "23:59:59";
         this.$delete(params, "businesDate");
       }
-      if (params.receiptTime) {
+      if (params.receiptTime && params.receiptTime != "") {
         params.receiptTimeStart = params.receiptTime[0] + " " + "00:00:00";
         params.receiptTimeEnd = params.receiptTime[1] + " " + "23:59:59";
         this.$delete(params, "receiptTime");
       }
-      if (params.arrivalTime) {
+      if (params.arrivalTime && params.arrivalTime != "") {
         params.arrivalTimeStart = params.arrivalTime[0] + " " + "00:00:00";
         params.arrivalTimeEnd = params.arrivalTime[1] + " " + "23:59:59";
         this.$delete(params, "arrivalTime");

+ 28 - 0
src/views/exportTrade/customerInquiry/detailsPage.vue

@@ -7,6 +7,9 @@
         </el-button>
       </div>
       <div class="add-customer-btn" v-if="showBut">
+        <el-button type="primary" size="small" class="el-button--small-yh "
+                   @click.stop="refresh">刷新数据
+        </el-button>
         <el-button type="primary" size="small" v-if="detailData.status == 1" class="el-button--small-yh "
           @click.stop="openEdit">编辑
         </el-button>
@@ -2053,6 +2056,31 @@ export default {
         (this.form.clientAttn ? this.form.clientAttn + ";" : "") +
         (this.form.clientAddress ? this.form.clientAddress + ";" : "");
     },
+    refresh(){
+      let orderFeesList = this.$refs.feeInfo.submitData();
+      if (
+          contrastObj(this.form, this.oldform) ||
+          contrastList(this.data, this.olddata) ||
+          contrastList(orderFeesList, this.oldorderFeesList) ||
+          contrastList(this.orderFilesList, this.oldorderFilesList)
+      ) {
+        this.$confirm("数据发生变化未有保存记录, 是否保存?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          this.editCustomer("submit");
+        }).catch(() => {
+          this.getDetail(this.form.id)
+        });
+      } else {
+        if (!this.form.id){
+          this.$message.error('请保存再刷新')
+        }else {
+          this.getDetail(this.form.id)
+        }
+      }
+    },
     //返回列表
     backToList() {
       let orderFeesList = this.$refs.feeInfo.submitData();

+ 7 - 0
src/views/exportTrade/shippingInquiry/config/mainList.json

@@ -23,6 +23,13 @@
       "index": 1,
       "span": 8
     },{
+      "label": "船务状态",
+      "prop": "ifShipping",
+      "overHidden": true,
+      "minWidth": 100,
+      "index": 1,
+      "span": 8
+    },{
       "label": "询价日期",
       "prop": "businesDate",
       "search": true,

+ 30 - 4
src/views/exportTrade/shippingInquiry/detailsPage.vue

@@ -7,6 +7,9 @@
         </el-button>
       </div>
       <div class="add-customer-btn" v-if="showBut">
+        <el-button type="primary" size="small" class="el-button--small-yh "
+          @click.stop="refresh">刷新数据
+        </el-button>
         <el-button type="primary" size="small" v-if="detailData.status == 1" class="el-button--small-yh "
           @click.stop="openEdit" :disabled="form.ifShipping == '船务确认'">编辑
         </el-button>
@@ -581,6 +584,8 @@ export default {
                     ? res.data.data.orderFreightList
                     : []
                 );
+                this.orderFeesList = this.deepClone(res.data.data.orderFeesList?res.data.data.orderFeesList:[])
+                // this.getDetail(res.data.data.id)
                 if (status2 == "goBack") {
                   if (this.form.id) {
                     this.unLock({
@@ -638,6 +643,29 @@ export default {
         }
       });
     },
+    refresh(){
+      if (
+          contrastObj(this.form, this.oldform) ||
+          contrastList(this.data, this.olddata) ||
+          contrastList(this.freightData, this.oldfreightData)
+      ) {
+        this.$confirm("数据发生变化未有保存记录, 是否保存?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          this.editCustomer("submit");
+        }).catch(() => {
+          this.getDetail(this.form.id)
+        });
+      } else {
+        if (!this.form.id){
+          this.$message.error('请保存再刷新')
+        }else {
+          this.getDetail(this.form.id)
+        }
+      }
+    },
     //返回列表
     backToList() {
       if (
@@ -649,11 +677,9 @@ export default {
           confirmButtonText: "确定",
           cancelButtonText: "取消",
           type: "warning"
-        })
-          .then(() => {
+        }).then(() => {
             this.editCustomer("submit", "goBack");
-          })
-          .catch(() => {
+          }).catch(() => {
             if (this.form.id) {
               this.unLock({
                 moduleName: "cw",

+ 218 - 0
src/views/wel/home/noctite/components/audit-data.vue

@@ -0,0 +1,218 @@
+<template>
+  <div class="home-container">
+    <el-card class="home-container__card">
+      <div class="title">
+        <span>
+          审核数据
+        </span>
+        <span>
+          <i
+            class="el-icon-refresh-right"
+            style="cursor: pointer;font-size:20px"
+            @click="refresh"
+          ></i>
+        </span>
+      </div>
+      <div class="content" v-loading="loading">
+        <div class="content-item" v-for="(item, index) in list" :key="index">
+          <div class="card">
+            <i :class="item.icon" style="font-size:30px;color:#409EFF"></i>
+            <div class="card-content">
+              <span class="card-content-num">{{ item.qty }}</span>
+              <span class="card-content-text">{{ item.text }}</span>
+            </div>
+          </div>
+        </div>
+      </div>
+    </el-card>
+  </div>
+</template>
+
+<script>
+import {
+  checkDate,
+  shipCheckDate,
+  financeCheck
+} from "@/api/wel";
+export default {
+  name: "basicContainer",
+  props: {
+    sysType: Number
+  },
+  data() {
+    return {
+      loading: false,
+      list: [
+        { icon: "el-icon-s-order", qty: "0", text: "入库管理/待审核" },
+        { icon: "el-icon-s-order", qty: "0", text: "出库管理/待审核" },
+        { icon: "el-icon-s-goods", qty: "0", text: "融资管理/待审核" },
+        { icon: "el-icon-s-home", qty: "0", text: "库内盘点/待审核" }
+      ],
+      tradeType: null
+    };
+  },
+  created() {
+    this.getSysType();
+  },
+  mounted() {
+    this.init();
+  },
+  methods: {
+    init() {
+      // if(this.sysType === 3){
+
+      // }
+      if (this.sysType === 5) {
+        this.list = [
+          { icon: "el-icon-s-order", qty: "0", text: "主营业务/待审核" }
+        ];
+      }
+      this.getCheckDate();
+      this.getshipCheckDate();
+      this.getfinanceCheck()
+    },
+    getSysType() {
+      const sysType = localStorage.getItem("sysitemType");
+      if (sysType == 6) {
+        this.tradeType = "JXS";
+      } else if (sysType == 5) {
+        this.tradeType = "SW";
+      } else if (sysType == 4) {
+        this.tradeType = "CK";
+      } else if (sysType == 3) {
+        this.tradeType = "JK";
+      } else if (sysType == 2) {
+        this.tradeType = "GN";
+      } else if (sysType == 1) {
+        this.tradeType = "XX";
+      }else if(sysType == 999){
+        this.tradeType = "ADMIN";
+      }
+    },
+    getCheckDate() {
+      this.loading = true;
+      checkDate({ tradeType: this.tradeType }).then(res => {
+        this.list.forEach(e => {
+          if (e.text == "入库管理/待审核") {
+            e.qty = res.data.data.purchaseNumber;
+          }
+          if (e.text == "出库管理/待审核") {
+            e.qty = res.data.data.sellNumber;
+          }
+          if (e.text == "融资管理/待审核") {
+            e.qty = res.data.data.financingSum;
+          }
+          if (e.text == "库内盘点/待审核") {
+            e.qty = res.data.data.offerNumber;
+          }
+        });
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    getshipCheckDate() {
+      this.loading = true;
+      shipCheckDate({ tradeType: this.tradeType })
+        .then(res => {
+          if (this.sysType == 2){
+            this.domList.forEach(e => {
+              if (e.text == "发货/待审核") {
+                e.qty = res.data.data.sellNumber;
+              }
+              if (e.text == "收货/待审核") {
+                e.qty = res.data.data.purchaseNumber;
+              }
+            });
+          }else {
+            this.list.forEach(e => {
+              if (e.text == "发货/待审核") {
+                e.qty = res.data.data.sellNumber;
+              }
+              if (e.text == "收货/待审核") {
+                e.qty = res.data.data.purchaseNumber;
+              }
+            });
+          }
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    getfinanceCheck(){
+      this.loading = true;
+      financeCheck({ tradeType: this.tradeType })
+        .then(res => {
+          if (this.sysType == 2){
+            this.domList.forEach(e => {
+              if (e.text == "申请付款/待审核") {
+                e.qty = res.data.data;
+              }
+            });
+          }else {
+            this.list.forEach(e => {
+              if (e.text == "申请付款/待审核") {
+                e.qty = res.data.data;
+              }
+            });
+          }
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    refresh() {
+      this.getCheckDate();
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.home-container {
+  padding: 0px 5px 5px 5px;
+  box-sizing: border-box;
+  height: 100%;
+  ::v-deep .el-card__body {
+    padding: 10px 15px;
+    font-size: 14px;
+  }
+  &__card {
+    width: 100%;
+    height: 100%;
+  }
+  .title {
+    display: flex;
+    justify-content: space-between;
+  }
+}
+.content {
+  display: flex;
+  &-item {
+    background-color: #f4f8ff;
+    margin-top: 0.5vh;
+    margin-right: 0.5vw;
+    height: 13vh;
+    width: 15vw;
+    display: flex;
+    align-items: center;
+    padding-left: 1.5vw;
+    .card {
+      display: flex;
+      align-items: center;
+      &-content {
+        padding-left: 1vw;
+        display: flex;
+        flex-direction: column;
+        &-num {
+          font-size: 20px;
+          font-weight: 600;
+        }
+        &-text {
+          color: #909399;
+        }
+      }
+    }
+  }
+}
+</style>

+ 44 - 0
src/views/wel/home/noctite/components/butCard.vue

@@ -0,0 +1,44 @@
+<template>
+  <div style="padding:5px">
+    <div class="card el-button--primary">
+      <div class="card-content">
+        <i :class="iconName"></i>
+        <div>{{ name }}</div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {};
+  },
+  props: {
+    name: {
+      type: String
+    },
+    iconName: {
+      type: String
+    }
+  },
+  methods: {}
+};
+</script>
+
+<style lang="scss" scoped>
+.card{
+  //background: #ff7d13;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  height: 14vh;
+  .card-content{
+    text-align: center;
+    color: #fff;
+    i{
+      font-size: 30px;
+    }
+  }
+}
+</style>

+ 63 - 0
src/views/wel/home/noctite/components/card.vue

@@ -0,0 +1,63 @@
+<template>
+  <div style="width: 100%;">
+    <div class="card">
+      <div class="card-head">
+        <span> <i :class="iconName" class="index-icon"></i>{{ title }}</span>
+      </div>
+      <div class="card-select">
+        <slot name="select"></slot>
+      </div>
+      <div class="card-content">
+        <slot name="content"></slot>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {};
+  },
+  props: {
+    title: {
+      type: String
+    },
+    iconName: {
+      type: String
+    }
+  },
+  methods: {}
+};
+</script>
+
+<style lang="scss" scoped>
+.card {
+  margin: 5px;
+  .card-head {
+    height: 28px;
+    font-size: 12px;
+    background: #f4f4f4;
+    border: 1px solid #d6d6d6;
+    display: flex;
+    align-items: center;
+  }
+  .card-select {
+    padding: 10px;
+    display: flex;
+    justify-content: right;
+    border-left: 1px solid #d6d6d6;
+    border-right: 1px solid #d6d6d6;
+  }
+  .card-content {
+    border-left: 1px solid #d6d6d6;
+    border-right: 1px solid #d6d6d6;
+    border-bottom: 1px solid #d6d6d6;
+    padding: 10px;
+    height: 100%;
+  }
+}
+.index-icon {
+  margin: 0 10px;
+}
+</style>

+ 148 - 0
src/views/wel/home/noctite/components/charge-today.vue

@@ -0,0 +1,148 @@
+<template>
+  <div class="home-container">
+    <el-card class="home-container__card">
+      <div class="title">
+        <span>
+          今日收款
+        </span>
+        <span>
+          <i
+              class="el-icon-refresh-right"
+              style="cursor: pointer;font-size:20px"
+              @click="refresh"
+          ></i>
+        </span>
+      </div>
+      <div v-loading="loading">
+        <div class="content">
+          <div class="content_item divider">
+            <div>
+              <div class="content_item_num">{{ data.received }}</div>
+              <div class="content_item_text">已收金额</div>
+            </div>
+          </div>
+          <div class="content_item divider">
+            <div>
+              <div class="content_item_num">{{ data.toBeReceived }}</div>
+              <div class="content_item_text">待收金额</div>
+            </div>
+          </div>
+          <div class="content_item">
+            <div>
+              <div class="content_item_num">{{data.unsettledDocuments}}</div>
+              <div class="content_item_text">未结单据</div>
+            </div>
+          </div>
+        </div>
+        <div id="chargeData" ref="chargeData" style="width:45vw;height:30vh"/>
+      </div>
+    </el-card>
+  </div>
+</template>
+
+<script>
+import {monthSalesTwo} from "@/api/wel";
+
+export default {
+  name: "basicContainer",
+  data() {
+    return {
+      loading: false,
+      data:{}
+    };
+  },
+  mounted() {
+    this.getmonthSales()
+  },
+  methods: {
+    refresh() {
+      this.getmonthSales()
+    },
+    getmonthSales() {
+      this.loading = true;
+      monthSalesTwo({billType: '收费'}).then(res => {
+        this.data = res.data.data;
+        this.loading = false;
+      })
+    },
+    chargeData() {
+      let chargeData = this.$echarts.init(
+          document.getElementById("chargeData")
+      );
+      chargeData.setOption({
+        tooltip: {
+          trigger: "axis",
+          axisPointer: {
+            type: "line"
+          }
+        },
+        xAxis: {
+          type: "category",
+          data: []
+        },
+        yAxis: {
+          type: "value"
+        },
+        series: [
+          {
+            data: [0.1, 0.4, 0.6, 0.7, 0.8, 0.9, 1],
+            type: "line",
+            smooth: true
+          }
+        ]
+      });
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.home-container {
+  padding: 0px 5px 5px 5px;
+  box-sizing: border-box;
+  height: 100%;
+
+  ::v-deep .el-card__body {
+    padding: 10px 15px;
+    font-size: 14px;
+  }
+
+  &__card {
+    width: 100%;
+    height: 100%;
+  }
+
+  .title {
+    display: flex;
+    justify-content: space-between;
+    margin-bottom: 5px;
+  }
+}
+
+.content {
+  display: flex;
+  background-color: #fafafa;
+  justify-content: space-around;
+
+  .divider {
+    border-right: 1px dashed #dcdfe6;
+  }
+
+  &_item {
+    margin: 20px 0px 20px 20px;
+    height: 5vh;
+    width: 33.3%;
+    display: flex;
+    align-items: center;
+
+    &_num {
+      font-size: 18px;
+      font-weight: 600;
+    }
+
+    &_text {
+      color: #909399;
+    }
+  }
+}
+</style>

+ 138 - 0
src/views/wel/home/noctite/components/pay-today.vue

@@ -0,0 +1,138 @@
+<template>
+  <div class="home-container">
+    <el-card class="home-container__card">
+      <div class="title">
+        <span>
+          今日付款
+        </span>
+        <span>
+          <i
+            class="el-icon-refresh-right"
+            style="cursor: pointer;font-size:20px"
+            @click="refresh"
+          ></i>
+        </span>
+      </div>
+      <div v-loading="loading">
+        <div class="content">
+          <div class="content_item divider">
+            <div>
+              <div class="content_item_num">{{ data.received }}</div>
+              <div class="content_item_text">已付金额</div>
+            </div>
+          </div>
+          <div class="content_item divider">
+            <div>
+              <div class="content_item_num">{{ data.toBeReceived }}</div>
+              <div class="content_item_text">待付金额</div>
+            </div>
+          </div>
+          <div class="content_item">
+            <div>
+              <div class="content_item_num">{{data.unsettledDocuments}}</div>
+              <div class="content_item_text">未结单据</div>
+            </div>
+          </div>
+        </div>
+        <div id="payData" ref="payData" style="width:45vw;height:30vh" />
+      </div>
+    </el-card>
+  </div>
+</template>
+
+<script>
+import {monthSalesTwo} from "@/api/wel";
+
+export default {
+  name: "basicContainer",
+  data() {
+    return {
+      loading: false,
+      data:{}
+    };
+  },
+  mounted() {
+    this.getmonthSales()
+  },
+  methods: {
+    refresh() {
+      this.getmonthSales()
+    },
+    getmonthSales() {
+      this.loading = true;
+      monthSalesTwo({billType: '付费'}).then(res => {
+        this.loading = false;
+        this.data = res.data.data;
+      })
+    },
+    payData() {
+      let payData = this.$echarts.init(document.getElementById("payData"));
+      payData.setOption({
+        tooltip: {
+          trigger: "axis",
+          axisPointer: {
+            type: "line"
+          }
+        },
+        xAxis: {
+          type: "category",
+          data: []
+        },
+        yAxis: {
+          type: "value"
+        },
+        series: [
+          {
+            data: [0.1, 0.3, 0.4, 0.5, 0.6, 0.7, 1],
+            type: "line",
+            smooth: true
+          }
+        ]
+      });
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.home-container {
+  padding: 0px 5px 5px 0px;
+  box-sizing: border-box;
+  height: 100%;
+  ::v-deep .el-card__body {
+    padding: 10px 15px;
+    font-size: 14px;
+  }
+  &__card {
+    width: 100%;
+    height: 100%;
+  }
+  .title {
+    display: flex;
+    justify-content: space-between;
+    margin-bottom: 5px;
+  }
+}
+.content {
+  display: flex;
+  background-color: #fafafa;
+  justify-content: space-around;
+  .divider {
+    border-right: 1px dashed #dcdfe6;
+  }
+  &_item {
+    margin: 20px 0px 20px 20px;
+    height: 5vh;
+    width: 33.3%;
+    display: flex;
+    align-items: center;
+    &_num {
+      font-size: 18px;
+      font-weight: 600;
+    }
+    &_text {
+      color: #909399;
+    }
+  }
+}
+</style>

+ 165 - 0
src/views/wel/home/noctite/components/quick-launch.vue

@@ -0,0 +1,165 @@
+<template>
+  <div class="home-container">
+    <el-card class="home-container__card">
+      <div class="title">
+        <span>
+          快速发起
+        </span>
+      </div>
+      <div class="content">
+        <div class="content-icon" @click="inPage('266504_fb')">
+          <i class="tradingIcon icon-sales" style="color:#409EFF"></i>
+          <span>发布标书</span>
+        </div>
+      </div>
+    </el-card>
+  </div>
+</template>
+
+<script>
+import { getToken } from "@/util/auth";
+export default {
+  name: "basicContainer",
+  data() {
+    return {
+      largeScreenToken: '',
+      roleName:''
+    };
+  },
+  props: {
+    sysType: Number
+  },
+  created() {
+    if (this.sysType == 2) {
+      this.getWorkDicts('large_screen').then(res => {
+        this.largeScreenToken = res.data.data[0].dictKey;
+      })
+    }
+    this.roleName=localStorage.getItem("roleName")
+  },
+  methods: {
+    inPage(type) {
+      //出口
+      switch (type) {
+        case "266504_fb":
+          this.$router.push("/bidingDocument/issueTender/index");
+          break;
+      }
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.home-container {
+  padding: 5px;
+  box-sizing: border-box;
+  height: 100%;
+
+  ::v-deep .el-card__body {
+    padding: 10px 15px;
+    font-size: 14px;
+  }
+
+  &__card {
+    width: 100%;
+    height: 100%;
+  }
+
+  .title {
+    display: flex;
+    justify-content: space-between;
+  }
+}
+
+.tradingIcon {
+  font-size: 36px;
+}
+
+.content {
+  display: flex;
+
+  &-icon {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    margin: 1.5vh 1vw 0vh 1vw;
+
+    span {
+      margin-top: 0.2vh;
+    }
+  }
+}
+
+.content2 {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  height: 10vh;
+  width: 80vw;
+
+  .divider {
+    display: block;
+    height: 0px;
+    width: 100%;
+    margin-top: -20px;
+    border-top: 1px dashed #dcdfe6;
+  }
+
+  &-item {
+    margin-left: 1vw;
+
+    .card {
+      width: 100px;
+      display: flex;
+      flex-direction: column;
+      align-items: center;
+
+      &-title {
+        width: 40px;
+        height: 40px;
+        text-align: center;
+        border-radius: 50%;
+        font-size: 20px;
+        font-weight: 600;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+
+        span {
+          line-height: 20px;
+        }
+      }
+
+      &-title1 {
+        color: #037fe1;
+        background-color: rgba(3, 127, 225, 0.15);
+      }
+
+      &-title2 {
+        color: #ffa21e;
+        background-color: rgba(255, 162, 30, 0.15);
+      }
+
+      &-title3 {
+        color: #fb5b60;
+        background-color: rgba(251, 91, 96, 0.15);
+      }
+
+      &-title4 {
+        color: #42bc6f;
+        background-color: rgba(66, 188, 111, 0.15);
+      }
+
+      &-content {
+        display: flex;
+        flex-direction: column;
+        margin-top: 4px;
+        &-text {
+          color: #909399;
+        }
+      }
+    }
+  }
+}
+</style>

+ 293 - 0
src/views/wel/home/noctite/components/realtime-data.vue

@@ -0,0 +1,293 @@
+<template>
+  <div class="home-container">
+    <el-card class="home-container__card">
+      <div class="title">
+        <span>
+          实时数据
+        </span>
+        <span class="right">
+          <div class="right_but">
+            <div
+              class="right_but_left"
+              :class="{ right_but_active: isActive == 1 }"
+              @click="inDay"
+            >
+              本日
+            </div>
+            <div
+              class="right_but_right"
+              :class="{ right_but_active: isActive == 2 }"
+              @click="inMoon"
+            >
+              本月
+            </div>
+          </div>
+          <el-date-picker
+            v-model="realDate"
+            type="daterange"
+            size="mini"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            style="margin-right:10px;width:240px"
+          >
+          </el-date-picker>
+          <el-button
+            type="primary"
+            size="mini"
+            icon="el-icon-search"
+            style="margin-right:10px;"
+            @click="search"
+            circle
+          ></el-button>
+          <i
+            class="el-icon-refresh-right"
+            style="cursor: pointer;font-size:20px;line-height: 15px;"
+            @click="refresh"
+          ></i>
+        </span>
+      </div>
+      <div style="display: flex;justify-content: center;">
+        <div class="content" v-loading="loading">
+          <div class="content-item">
+            <div class="card">
+              <div class="card-title card-title1">
+                <span>
+                  入
+                </span>
+              </div>
+              <div class="card-content">
+                <span class="card-content-num">{{ data1.purchaseNumber || '0' }}立方</span>
+                <span class="card-content-text">入库</span>
+              </div>
+            </div>
+          </div>
+          <div class="divider" />
+          <div class="content-item">
+            <div class="card">
+              <div class="card-title card-title1">
+                <span>
+                  出
+                </span>
+              </div>
+              <div class="card-content">
+                <span class="card-content-num">{{ data1.sellNumber || '0' }}立方</span>
+                <span class="card-content-text">出库</span>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </el-card>
+  </div>
+</template>
+
+<script>
+import { defaultDate2, defaultDate3 } from "@/util/date";
+import { realTimeData, shipRealTimeData } from "@/api/wel";
+export default {
+  name: "basicContainer",
+  props: {
+    sysType: Number
+  },
+  data() {
+    return {
+      isActive: 1,
+      loading: false,
+      realDate: [],
+      data1: {},
+      data2: {},
+      tradeType: null
+    };
+  },
+  created() {
+    this.getSysType();
+    this.realDate = defaultDate2();
+  },
+  mounted() {
+    this.getrealTimeData();
+    this.getshipRealTimeData();
+  },
+  methods: {
+    init() {
+      if (this.realDate == null) {
+        return this.$message.error("请选择日期");
+      }
+      this.getrealTimeData();
+      this.getshipRealTimeData();
+    },
+    refresh() {
+      this.init();
+    },
+    getSysType() {
+      const sysType = localStorage.getItem("sysitemType");
+      if (sysType == 6) {
+        this.tradeType = "JXS";
+      } else if (sysType == 5) {
+        this.tradeType = "SW";
+      } else if (sysType == 4) {
+        this.tradeType = "CK";
+      } else if (sysType == 3) {
+        this.tradeType = "JK";
+      } else if (sysType == 2) {
+        this.tradeType = "GN";
+      } else if (sysType == 1) {
+        this.tradeType = "XX";
+      } else if (sysType == 999) {
+        this.tradeType = "ADMIN";
+      }
+    },
+    getrealTimeData() {
+      this.loading = true;
+      realTimeData({
+        tradeType: this.tradeType,
+        orderStartDate: this.realDate[0],
+        orderEndDate: this.realDate[1]
+      })
+        .then(res => {
+          this.data2 = res.data.data;
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    getshipRealTimeData() {
+      this.loading = true;
+      shipRealTimeData({
+        tradeType: this.tradeType,
+        orderStartDate: this.realDate[0],
+        orderEndDate: this.realDate[1]
+      })
+        .then(res => {
+          this.data1 = res.data.data;
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    inDay() {
+      this.isActive = 1;
+      this.realDate = defaultDate2();
+      this.init();
+    },
+    inMoon() {
+      this.isActive = 2;
+      this.realDate = defaultDate3();
+      this.init();
+    },
+    search() {
+      this.isActive = 3;
+      this.init();
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.home-container {
+  padding: 0px 5px 5px 5px;
+  box-sizing: border-box;
+  height: 100%;
+  ::v-deep .el-card__body {
+    padding: 10px 15px;
+    font-size: 14px;
+  }
+  &__card {
+    width: 100%;
+    height: 100%;
+  }
+  .title {
+    display: flex;
+    justify-content: space-between;
+    .right {
+      display: flex;
+      align-items: center;
+      &_but {
+        margin-right: 10px;
+        border: 1px solid #409eff;
+        width: 80px;
+        border-radius: 3px;
+        display: flex;
+        &_left {
+          width: 40px;
+          text-align: center;
+          color: #409eff;
+          border-right: 1px solid #409eff;
+          cursor: pointer;
+        }
+        &_right {
+          width: 40px;
+          text-align: center;
+          color: #409eff;
+          cursor: pointer;
+        }
+        &_active {
+          color: #fff;
+          background-color: #409eff;
+        }
+      }
+    }
+  }
+}
+.content {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  height: 15vh;
+  width: 60vw;
+  .divider {
+    display: block;
+    height: 0px;
+    width: 100%;
+    border-top: 1px dashed #dcdfe6;
+  }
+  &-item {
+    margin-left: 1vw;
+    .card {
+      width: 180px;
+      display: flex;
+      align-items: center;
+      &-title {
+        width: 40px;
+        height: 40px;
+        text-align: center;
+        border-radius: 50%;
+        font-size: 20px;
+        font-weight: 600;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        span {
+          line-height: 20px;
+        }
+      }
+      &-title1 {
+        color: #037fe1;
+        background-color: rgba(3, 127, 225, 0.15);
+      }
+      &-title2 {
+        color: #ffa21e;
+        background-color: rgba(255, 162, 30, 0.15);
+      }
+      &-title3 {
+        color: #fb5b60;
+        background-color: rgba(251, 91, 96, 0.15);
+      }
+      &-title4 {
+        color: #42bc6f;
+        background-color: rgba(66, 188, 111, 0.15);
+      }
+      &-content {
+        display: flex;
+        flex-direction: column;
+        &-num {
+          font-size: 20px;
+          font-weight: 600;
+        }
+        &-text {
+          color: #909399;
+        }
+      }
+    }
+  }
+}
+</style>

+ 202 - 0
src/views/wel/home/noctite/components/sales-reached.vue

@@ -0,0 +1,202 @@
+<template>
+  <div>
+    <div class="home-container" v-if="sysType != 2">
+      <el-card class="home-container__card">
+        <div class="title">
+        <span>
+          当月入库
+        </span>
+          <span>
+          <i
+            class="el-icon-refresh-right"
+            style="cursor: pointer;font-size:20px"
+            @click="refresh"
+          ></i>
+        </span>
+        </div>
+        <div class="content" v-loading="loading">
+          <div style="display:flex">
+            <div id="ringData" ref="ringData" style="width:20vw;height:33vh" />
+            <div>
+              <div class="content_item">
+                <div class="content_item_num">{{ data.grossAmount || 0 }}</div>
+                <div class="content_item_text">已审核数量</div>
+              </div>
+              <div class="content_item">
+                <div class="content_item_num">{{ data.reachAmount || 0 }}</div>
+                <div class="content_item_text">未审核数量</div>
+              </div>
+              <div class="content_item">
+                <div class="divider" />
+              </div>
+              <div class="content_item">
+                <div class="content_item_num">{{ data.notReachAmount || 0}}</div>
+                <div class="content_item_text">合计</div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </el-card>
+    </div>
+<!--    <domSales v-if="sysType == 2"/>-->
+  </div>
+</template>
+
+<script>
+import { monthSales } from "@/api/wel";
+// import domSales from "/home/domesticTrade/domSales";
+export default {
+  name: "basicContainer",
+  props: {
+    sysType: Number
+  },
+  components: {
+    // domSales
+  },
+  data() {
+    return {
+      loading: false,
+      tradeType: null,
+      data: {}
+    };
+  },
+  created() {
+    this.getSysType();
+  },
+  mounted() {
+    this.init();
+  },
+  methods: {
+    init() {
+      this.getmonthSales();
+    },
+    getSysType() {
+      const sysType = localStorage.getItem("sysitemType");
+      if (sysType == 6) {
+        this.tradeType = "JXS";
+      } else if (sysType == 5) {
+        this.tradeType = "SW";
+      } else if (sysType == 4) {
+        this.tradeType = "CK";
+      } else if (sysType == 3) {
+        this.tradeType = "JK";
+      } else if (sysType == 2) {
+        this.tradeType = "GN";
+      } else if (sysType == 1) {
+        this.tradeType = "XX";
+      } else if (sysType == 999) {
+        this.tradeType = "ADMIN";
+      }
+    },
+    getmonthSales() {
+      this.loading = true;
+      monthSales({ tradeType: this.tradeType, billType: "BJ" })
+        .then(res => {
+          this.data = res.data.data;
+        })
+        .finally(() => {
+          this.loading = false;
+          this.ringData();
+        });
+    },
+    refresh() {
+      this.init();
+    },
+    ringData() {
+      let ringData = this.$echarts.init(document.getElementById("ringData"));
+      ringData.setOption({
+        tooltip: {
+          trigger: "item"
+        },
+        legend: {
+          top: "3%",
+          left: "center"
+        },
+        graphic: [
+          {
+            type: "text",
+            left: "center",
+            top: "43%",
+            style: {
+              text: this.data.yieldRate + "%",
+              textAlign: "center",
+              fill: "#000",
+              fontSize: 24
+            }
+          },
+          {
+            type: "text",
+            left: "center",
+            top: "53%",
+            style: {
+              text: "报价达成率",
+              textAlign: "center",
+              fill: "#999999",
+              fontSize: 16
+            }
+          }
+        ],
+        color: ["#F6695E", "#E3E3E3"],
+        series: [
+          {
+            name: "当月报价",
+            type: "pie",
+            radius: ["55%", "70%"],
+            avoidLabelOverlap: false,
+            label: {
+              show: false,
+              position: "center"
+            },
+            labelLine: {
+              show: false
+            },
+            data: [
+              { value: Number(this.data.grossAmount), name: "已审核数量" },
+              { value: Number(this.data.reachAmount), name: "未审核数量" }
+            ]
+          }
+        ]
+      });
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.home-container {
+  padding: 0px 5px 5px 5px;
+  box-sizing: border-box;
+  height: 100%;
+  ::v-deep .el-card__body {
+    padding: 10px 15px;
+    font-size: 14px;
+  }
+  &__card {
+    width: 100%;
+    height: 100%;
+  }
+  .title {
+    display: flex;
+    justify-content: space-between;
+  }
+}
+.content {
+  display: flex;
+  &_item {
+    margin-top: 20px;
+    .divider {
+      display: block;
+      height: 0px;
+      width: 12vw;
+      border-top: 1px dashed #dcdfe6;
+    }
+    &_num {
+      font-size: 18px;
+      font-weight: 600;
+    }
+    &_text {
+      color: #909399;
+    }
+  }
+}
+</style>

+ 186 - 0
src/views/wel/home/noctite/components/sales-trend.vue

@@ -0,0 +1,186 @@
+<template>
+  <div class="home-container">
+    <el-card class="home-container__card">
+      <div v-if="sysType !== 5">
+        <div class="title">
+          <span>
+            销售趋势
+          </span>
+          <span>
+            <i
+              class="el-icon-refresh-right"
+              style="cursor: pointer;font-size:20px"
+              @click="refresh"
+            ></i>
+          </span>
+        </div>
+
+        <div class="content" v-loading="loading">
+          <div class="content-year">
+            <el-date-picker
+              v-model="annual"
+              type="year"
+              size="mini"
+              placeholder="选择年"
+              value-format="yyyy"
+              style="margin-right:10px"
+              @change="getsalesTrend"
+            />
+          </div>
+
+          <div
+            id="polylineData"
+            ref="polylineData"
+            style="width:55vw;height:33vh"
+          />
+        </div>
+      </div>
+      <div v-if="sysType === 5">
+        <div class="title">
+          <span>
+            业绩趋势
+          </span>
+          <span>
+            <i
+              class="el-icon-refresh-right"
+              style="cursor: pointer;font-size:20px"
+              @click="refresh"
+            ></i>
+          </span>
+        </div>
+        <div class="content" v-loading="loading">
+          <div
+            id="polylineDatas"
+            ref="polylineData"
+            style="width:60vw;height:33vh"
+          />
+        </div>
+      </div>
+    </el-card>
+  </div>
+</template>
+
+<script>
+import { getYearDate } from "@/util/date";
+import { salesTrendTow } from "@/api/wel";
+export default {
+  name: "basicContainer",
+  props: {
+    sysType: Number
+  },
+  data() {
+    return {
+      loading: false,
+      annual: "",
+      tradeType: null,
+      moneyList: [],
+      xAxisData:[]
+    };
+  },
+  created() {
+    this.annual = getYearDate().toString();
+    this.getSysType();
+  },
+  mounted() {
+    this.init();
+  },
+  methods: {
+    init() {
+      this.getsalesTrend();
+    },
+    getSysType() {
+      const sysType = localStorage.getItem("sysitemType");
+      if (sysType == 6) {
+        this.tradeType = "JXS";
+      } else if (sysType == 5) {
+        this.tradeType = "SW";
+      } else if (sysType == 4) {
+        this.tradeType = "CK";
+      } else if (sysType == 3) {
+        this.tradeType = "JK";
+      } else if (sysType == 2) {
+        this.tradeType = "GN";
+      } else if (sysType == 1) {
+        this.tradeType = "XX";
+      } else if (sysType == 999) {
+        this.tradeType = "ADMIN";
+      }
+    },
+    getsalesTrend() {
+      this.loading = true;
+      this.moneyList = [];
+      this.xAxisData = [];
+      salesTrendTow({
+        year: this.annual
+      }).then(res => {
+          res.data.data.forEach(e => {
+            this.moneyList.push(Number(e.money));
+            this.xAxisData.push(e.moon)
+          });
+        })
+        .finally(() => {
+          this.loading = false;
+          this.polylineData();
+        });
+    },
+    refresh() {
+      this.init();
+    },
+    polylineData() {
+      let polylineData = this.$echarts.init(
+        document.getElementById("polylineData")
+      );
+      polylineData.setOption({
+        tooltip: {
+          trigger: "axis",
+          axisPointer: {
+            type: "line"
+          }
+        },
+        xAxis: {
+          type: "category",
+          data: this.xAxisData
+        },
+        yAxis: {
+          type: "value"
+        },
+        series: [
+          {
+            data: this.moneyList,
+            type: "line",
+            smooth: true
+          }
+        ]
+      });
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.home-container {
+  padding: 0px 5px 5px 0px;
+  box-sizing: border-box;
+  height: 100%;
+  ::v-deep .el-card__body {
+    padding: 10px 15px;
+    font-size: 14px;
+  }
+  &__card {
+    width: 100%;
+    height: 100%;
+  }
+  .title {
+    display: flex;
+    justify-content: space-between;
+  }
+}
+.content {
+  display: flex;
+  flex-direction: column;
+  &-year {
+    display: flex;
+    justify-content: right;
+  }
+}
+</style>

+ 82 - 0
src/views/wel/home/noctite/landTransportation.vue

@@ -0,0 +1,82 @@
+<template>
+  <div class="container">
+    <quick-launch class="item1" :sysType="sysType" />
+<!--    <audit-data class="item2" :sysType="sysType"/>-->
+<!--    <realtime-data class="item3" :sysType="sysType"/>-->
+<!--    <sales-reached class="item4" :sysType="sysType" v-if="sysType!=4||roleName!='采购'"/>-->
+<!--    <sales-trend class="item5" :sysType="sysType" v-if="sysType!=4||roleName!='采购'"/>-->
+<!--    <charge-today class="item6" :sysType="sysType" v-if="sysType!=4||roleName!='采购'"/>-->
+<!--    <pay-today class="item7" :sysType="sysType" v-if="sysType!=4||roleName!='采购'"/>-->
+  </div>
+</template>
+
+<script>
+import quickLaunch from "./components/quick-launch";
+import auditData from "./components/audit-data";
+import realtimeData from "./components/realtime-data";
+import salesReached from "./components/sales-reached";
+import salesTrend from "./components/sales-trend";
+import chargeToday from "./components/charge-today";
+import payToday from "./components/pay-today";
+export default {
+  name: "wel",
+  data() {
+    return {
+      roleName:''
+    };
+  },
+  props:{
+    sysType:Number
+  },
+  created() {
+    this.roleName=localStorage.getItem("roleName")
+  },
+  components: {
+    quickLaunch,
+    auditData,
+    realtimeData,
+    salesReached,
+    salesTrend,
+    chargeToday,
+    payToday
+  },
+  computed: {},
+  methods: {}
+};
+</script>
+<style lang="scss" scoped>
+.item1 {
+  grid-area: a;
+}
+.item2 {
+  grid-area: b;
+}
+.item3 {
+  grid-area: c;
+}
+.item4 {
+  grid-area: d;
+}
+.item5 {
+  grid-area: e;
+}
+.item6 {
+  grid-area: f;
+}
+.item7 {
+  grid-area: g;
+}
+.container {
+  display: grid;
+  width: 100%;
+  height: 95.5vh;
+  grid-template-columns: repeat(auto-fill, 10%);
+  grid-template-rows: 140px 180px 180px 350px 140px;
+  grid-template-areas:
+    "a a a a a a a a a a"
+    "b b b b b b b b b b"
+    "c c c c c c c c c c"
+    "d d d d e e e e e e"
+    "f f f f f g g g g g";
+}
+</style>

+ 3 - 0
src/views/wel/index.vue

@@ -3,6 +3,7 @@
     <tongjiSchool v-if="billType == 1"></tongjiSchool>
     <landTransportation v-else-if="billType == 7"></landTransportation>
     <jiatongPage v-else-if="billType == 8"></jiatongPage>
+    <noctite v-else-if="billType == 9"></noctite>
     <defaultPage v-else :sysType="billType"></defaultPage>
   </div>
 </template>
@@ -12,6 +13,7 @@ import defaultPage from "@/views/wel/home/defaultPage";
 import tongjiSchool from "@/views/wel/home/tongjiSchool";
 import landTransportation from "@/views/wel/home/landTransportation/landTransportation";
 import jiatongPage from "@/views/wel/home/jiatongPage/landTransportation";
+import noctite from "@/views/wel/home/noctite/landTransportation";
 import { getUserInfo } from "@/api/system/user";
 import { setStore } from "@/util/store";
 import { areaTypeTree } from "@/api/basicData/customerInformation";
@@ -39,6 +41,7 @@ export default {
     tongjiSchool,
     defaultPage,
     jiatongPage,
+    noctite,
     landTransportation
   },
   methods: {}