wugg 2 years ago
parent
commit
e4c9b1eef3
100 changed files with 6097 additions and 272 deletions
  1. 0 1
      dist/index.html
  2. BIN
      dist/static/img/pageBg.f9f9dcd5.png
  3. 8 0
      dist/static/js/0.js
  4. 0 0
      dist/static/js/app.js
  5. 72 7
      dist/static/js/chunk-libs.js
  6. 4 0
      package.json
  7. 0 1
      public/index.html
  8. 6 2
      src/App.vue
  9. 7 0
      src/apis/components/logis-time-line.js
  10. 31 0
      src/apis/service/bigScreen/index.js
  11. 45 0
      src/apis/service/dataCorrection/cgMessage/index.js
  12. 8 0
      src/apis/service/orderEntry/source/index.js
  13. 1 1
      src/apis/service/purchaseIn/recovery/index.js
  14. 54 0
      src/apis/service/reportQuery/financeReport/index.js
  15. 49 1
      src/apis/service/reportQuery/purchaseReport/index.js
  16. 2 0
      src/apis/service/sellOut/sellOutOrder/index.js
  17. 98 0
      src/apis/testAxios.js
  18. 2 1
      src/assets/js/btnList.js
  19. 16 7
      src/assets/js/statusList.js
  20. 74 0
      src/common/echart/index.vue
  21. 490 0
      src/common/echart/theme.json
  22. 46 0
      src/common/map/fujian.js
  23. 0 78
      src/components/Breadcrumb/index.vue
  24. 1 1
      src/components/addr-add-edit-modal/index.vue
  25. 172 0
      src/components/echart/bottom/bottomLeftChart/chart.vue
  26. 55 0
      src/components/echart/bottom/bottomLeftChart/index.vue
  27. 244 0
      src/components/echart/bottom/bottomRightChart/chart.vue
  28. 89 0
      src/components/echart/bottom/bottomRightChart/index.vue
  29. 104 0
      src/components/echart/center/centerChartRate/index.vue
  30. 80 0
      src/components/echart/centerLeft/centerLeft1Chart/chart.vue
  31. 41 0
      src/components/echart/centerLeft/centerLeft1Chart/index.vue
  32. 290 0
      src/components/echart/centerLeft/centerLeft2Chart/chart.vue
  33. 67 0
      src/components/echart/centerLeft/centerLeft2Chart/index.vue
  34. 132 0
      src/components/echart/centerRight/centerRightChart/chart.vue
  35. 55 0
      src/components/echart/centerRight/centerRightChart/index.vue
  36. 34 0
      src/components/globalComponents/digital-input/main.vue
  37. 29 4
      src/components/globalComponents/ex-table/main.vue
  38. 7 3
      src/components/globalComponents/file-upload/main.vue
  39. 2 0
      src/components/globalComponents/logis-time-line/index.js
  40. 107 0
      src/components/globalComponents/logis-time-line/main.vue
  41. 0 0
      src/components/globalComponents/logis-time-line/物流进度
  42. 1 1
      src/components/globalComponents/search-stock/main.vue
  43. 4 2
      src/components/globalComponents/search-terrace/main.vue
  44. 4 1
      src/components/globalComponents/search-work-company/main.vue
  45. 1 0
      src/components/globalComponents/show-goods-data-table/ShowDataTableColumns.js
  46. 5 5
      src/components/globalComponents/show-goods-data-table/main.vue
  47. 5 5
      src/components/in-addr-model/index.vue
  48. 1 1
      src/components/show-good-data-modal/ShowDataTableColumns.js
  49. 1 1
      src/components/show-good-data-modal/columns.js
  50. 4 0
      src/config/env.development.js
  51. 14 0
      src/filters/filter.js
  52. 15 0
      src/filters/index.js
  53. 85 57
      src/layout/components/Navbar.vue
  54. 14 0
      src/main.js
  55. 3 0
      src/mixins/elPaginationHandle.js
  56. 16 3
      src/store/modules/user.js
  57. BIN
      src/views/bigScreen/assetsDv/logo.png
  58. BIN
      src/views/bigScreen/assetsDv/pageBg.png
  59. 98 0
      src/views/bigScreen/assetsDv/scss/_variables.scss
  60. 161 0
      src/views/bigScreen/assetsDv/scss/index.scss
  61. 185 0
      src/views/bigScreen/assetsDv/scss/style.scss
  62. 55 0
      src/views/bigScreen/datavScr/bottomLeft.vue
  63. 62 0
      src/views/bigScreen/datavScr/bottomRight.vue
  64. 168 0
      src/views/bigScreen/datavScr/center.vue
  65. 207 0
      src/views/bigScreen/datavScr/centerLeft1.vue
  66. 171 0
      src/views/bigScreen/datavScr/centerLeft2.vue
  67. 115 0
      src/views/bigScreen/datavScr/centerRight1.vue
  68. 77 0
      src/views/bigScreen/datavScr/centerRight2.vue
  69. 215 0
      src/views/bigScreen/datavScr/index.vue
  70. 57 0
      src/views/bigScreen/drawMixin.js
  71. 51 0
      src/views/bigScreen/index.js
  72. 404 0
      src/views/dataCorrection/cgMessage/addEdit.vue
  73. 257 0
      src/views/dataCorrection/cgMessage/columns.js
  74. 458 0
      src/views/dataCorrection/cgMessage/index.vue
  75. 0 0
      src/views/dataCorrection/cgMessage/采购单修正详情
  76. 85 0
      src/views/dataCorrection/cgMessageList/columns.js
  77. 258 0
      src/views/dataCorrection/cgMessageList/index.vue
  78. 0 0
      src/views/dataCorrection/cgMessageList/采购单信息修正
  79. 0 0
      src/views/dataCorrection/数据修正
  80. 5 0
      src/views/goodStore/active/columns.js
  81. 22 4
      src/views/goodStore/active/components/baseForm.vue
  82. 6 1
      src/views/goodStore/active/index.vue
  83. 1 0
      src/views/goodStore/activeGood/index.vue
  84. 20 0
      src/views/goodStore/brand/index.vue
  85. 1 0
      src/views/goodStore/dealGoodsPool/addEdit.vue
  86. 2 0
      src/views/goodStore/dealGoodsPool/index.vue
  87. 15 0
      src/views/goodStore/goldPrice/components/priceList.vue
  88. 33 12
      src/views/goodStore/goldPrice/components/priceRecord.vue
  89. 5 0
      src/views/goodStore/goodsCost/columns.js
  90. 1 0
      src/views/goodStore/goodsCost/components/addEdit.vue
  91. 15 10
      src/views/goodStore/goodsCost/components/baseForm.vue
  92. 6 1
      src/views/goodStore/goodsCost/index.vue
  93. 1 0
      src/views/goodStore/goodsOnline/add.vue
  94. 5 0
      src/views/goodStore/goodsOnline/columns.js
  95. 16 9
      src/views/goodStore/goodsOnline/components/fixed-price-form.vue
  96. 6 1
      src/views/goodStore/goodsOnline/detail.vue
  97. 97 50
      src/views/goodStore/goodsOnline/index.vue
  98. 20 0
      src/views/goodStore/searchSort/index.vue
  99. 21 1
      src/views/goodStore/sort/index.vue
  100. 20 0
      src/views/goodStore/specs/index.vue

+ 0 - 1
dist/index.html

@@ -58,7 +58,6 @@
       <!-- <p style="width: 100%;text-align: center;color: #606266;">努力加载中...</p> -->
     </div>
   </div>
-  <!-- built files will be auto injected -->
 <script type="text/javascript" src="/static/js/runtime.js"></script><script type="text/javascript" src="/static/js/chunk-elementUI.js"></script><script type="text/javascript" src="/static/js/chunk-libs.js"></script><script type="text/javascript" src="/static/js/app.js"></script></body>
 
 </html>

BIN
dist/static/img/pageBg.f9f9dcd5.png


File diff suppressed because it is too large
+ 8 - 0
dist/static/js/0.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/app.js


File diff suppressed because it is too large
+ 72 - 7
dist/static/js/chunk-libs.js


+ 4 - 0
package.json

@@ -20,6 +20,10 @@
     "new:page": "node ./scripts/generatePage"
   },
   "dependencies": {
+    "@jiaminghi/data-view": "^2.7.3",
+    "@types/echarts": "^4.4.3",
+    "echarts": "^4.6.0",
+    "vue-awesome": "^4.0.2",
     "babel-eslint": "^7.2.3",
     "babel-polyfill": "^6.26.0",
     "clipboard": "2.0.4",

+ 0 - 1
public/index.html

@@ -58,7 +58,6 @@
       <!-- <p style="width: 100%;text-align: center;color: #606266;">努力加载中...</p> -->
     </div>
   </div>
-  <!-- built files will be auto injected -->
 </body>
 
 </html>

+ 6 - 2
src/App.vue

@@ -53,13 +53,17 @@ export default {
         .then(async (res) => {
           if (res === "noToken") {
             await this.logout();
-          } else if (res === "success") {
+          } else if (res === "success" || res === "success-dataV") {
             if (
               this.$route.path === "/loadingPage" ||
               this.$route.path === "/" ||
               this.$route.path === "/login"
             ) {
-              window.vm.$router.replace("/welcome");
+              if (res === "success-dataV") {
+                window.vm.$router.replace("/bigScreen/datavScr");
+              } else {
+                window.vm.$router.replace("/welcome");
+              }
             }
           } else {
             await this.logout();

+ 7 - 0
src/apis/components/logis-time-line.js

@@ -0,0 +1,7 @@
+import http from "@/apis/axios";
+const api = "admin/";
+export default {
+  // 列表
+  list: (data, params) => http(api + "getlogisticsinformation", data, "post", params),
+};
+   

+ 31 - 0
src/apis/service/bigScreen/index.js

@@ -0,0 +1,31 @@
+
+// 封装页面请求
+import http from "@/apis/axios";
+const api = "admin/";
+ 
+export default {
+// 数据大屏信息
+// 今日销量
+datatodaysalesvolume : (data,params) => http(api + 'datatodaysalesvolume',data,'post',params),
+
+// 今日销冠
+datatodaysaleschampion : (data,params) => http(api + 'datatodaysaleschampion',data,'post',params),
+// 3.今日采购
+datatodaypurchase : (data,params) => http(api + 'datatodaypurchase',data,'post',params),
+// .票(暂时不做)
+// addLogin : (data,params) => http(api + 'datatodaysalesvolume',data,'post',params),
+// 5.竞价单和采购单,
+datatotalzixunpurchease : (data,params) => http(api + 'datatotalzixunpurchease',data,'post',params),
+// 6.未发货
+datawaitsendtotal : (data,params) => http(api + 'datawaitsendtotal',data,'post',params),
+// 7.今日订单
+datatodaysale : (data,params) => http(api + 'datatodaysale',data,'post',params),
+// 8.本月完成率
+datamonthfinishrate : (data,params) => http(api + 'datamonthfinishrate',data,'post',params),
+// 9.转单率-今日
+datatordertransferratetoday : (data,params) => http(api + 'datatordertransferratetoday',data,'post',params),
+// 9.转单率-本月
+datatordertransferratemonth : (data,params) => http(api + 'datatordertransferratemonth',data,'post',params),
+// 9.转单率-今年
+datatordertransferrateyear : (data,params) => http(api + 'datatordertransferrateyear',data,'post',params),
+}

+ 45 - 0
src/apis/service/dataCorrection/cgMessage/index.js

@@ -0,0 +1,45 @@
+import http from "@/apis/axios";
+const api = "admin/";
+export default {
+  // 添加
+  add: (data, params) => http(api + "add", data, "post", params),
+  // 分页查询
+  list: (data, params) => http(api + "cgdlist", data, "post", params),
+  // 删除
+  delete: (data, params) => http(api + "delete", data, "post", params),
+  // 详情
+  detail: (data, params) => http(api + "cgdinfo", data, "post", params),
+  // 更新
+  update: (data, params) => http(api + "cgdedit", data, "post", params),
+  // 修改状态
+  status: (data, params) => http(api + "cgdstatus", data, "post", params),
+  // 新建入库单
+  orderinadd: (data, params) => http(api + "orderinadd", data, "post", params),
+  // 新建入库单详情
+  orderininfo: (data, params) => http(api + "orderininfo", data, "post", params),
+  // 异常原因列表
+  resultlist: (data, params) => http(api + "resultlist", data, "post", params),
+  // 入库单验货
+  orderincheck: (data, params) => http(api + "orderincheck", data, "post", params),
+  // 入库单退货换货
+  orderinreturn: (data, params) => http(api + "orderinreturn", data, "post", params),
+  // 发货单状态修改
+  orderinstatus: (data, params) => http(api + "orderinstatus", data, "post", params),
+  // 采返商品详情
+  re_detail: (data, params) => http(api + "goodzxinfo", data, "post", params),
+  //商品成本详情
+  cost_detail: (data, params) => http(api + "goodupinfo", data, "post", params),
+
+  //采购单修改实时金价
+  cgdeditgoldprice: (data, params) => http(api + "cgdeditgoldprice", data, "post", params),
+   // 采返商品详情 订单生成前
+   cove_detail: (data, params) => http(api + "getgoodzxinfobynotzixun", data, "post", params),
+   //导出
+   exportcgdlist: (data, params) => http(api + "exportcgdlist", data, "post", params),
+
+   //修改采购单
+   cgdeditnew: (data, params) => http(api + "cgdeditnew", data, "post", params),
+
+   //获取采购单修改供应商的记录
+   cgdgetchangesupplierlist: (data, params) => http(api + "cgdgetchangesupplierlist", data, "post", params),
+}

+ 8 - 0
src/apis/service/orderEntry/source/index.js

@@ -0,0 +1,8 @@
+// c端订单录入/订单导入
+import http from "@/apis/axios";
+const api = "admin/";
+export default {
+    // 提交导入数据
+    list: (data, params) => http(api + "getsourcedata", data, "post", params),
+
+};

+ 1 - 1
src/apis/service/purchaseIn/recovery/index.js

@@ -3,7 +3,7 @@ import http from "@/apis/axios";
 const api = "admin/";
 export default {
   // 分页查询
-  list: (data, params) => http(api + "consultbidlist", data, "post", params),
+  list: (data, params) => http(api + "consultbidlistcopy", data, "post", params),
   // 采返商品详情
   good_detail: (data, params) => http(api + "consultfeadinfo", data, "post", params),
 };

+ 54 - 0
src/apis/service/reportQuery/financeReport/index.js

@@ -0,0 +1,54 @@
+// 企业客户/供应商账号相关
+import http from "@/apis/axios";
+import testHttp from "@/apis/testAxios";
+const api = "admin/";
+export default {
+  // 分页查询
+  list: (data, params) => http(api + "receiptlist", data, "post", params),
+  // 分页查询企业客户
+  clist: (data, params) => http(api + "customerlist", data, "post", params),
+  // 发票开票数据导出
+  receiptexport: (data, params) => http(api + "receiptexport", data, "post", params),
+  // 发票数据导入
+  receiptimport: (data, params) => http(api + "receiptimport", data, "post", params),
+  // 新建业务需求表
+  add: (data, params) => http(api + "execsave", data, "post", params),
+  //获取预约导出业务需求表
+  exportList: (data, params) => http(api + "execlist", data, "post", params),
+
+  // 历史数据导出列表
+  hlist: (data, params) => testHttp(api + "execnowlist", data, "post", params),
+  // 准备执行
+  download: (data, params) => testHttp(api + "execnowdown", data, "post", params),
+  //  即时下载列表接口 -新
+  realNewList: (data, params) => http(api + "nowlist", data, "post", params),
+
+
+  // // 分页查询确认单列表
+  // qrdlist: (data, params) => http(api + "qrdlist", data, "post", params),
+  // // 发票新建(金额)
+  // madd: (data, params) => http(api + "receiptadd", data, "post", params),
+  // // 发票编辑(金额)
+  // mupdate: (data, params) => http(api + "receiptedit", data, "post", params),
+  // // 发票新建(确认单)
+  // oadd: (data, params) => http(api + "receiptcreate", data, "post", params),
+  // // 发票编辑(确认单)
+  // oupdate: (data, params) => http(api + "receiptsave", data, "post", params),
+  // // 发票详情
+  // detail: (data, params) => http(api + "receiptinfo", data, "post", params),
+  // // 删除(取消申请)
+  // delete: (data, params) => http(api + 'receiptdel', data, 'post', params),
+  // // 发票状态修改
+  // status: (data, params) => http(api + 'receiptstatus', data, 'post', params),
+  // // 发票物流信息添加
+  // post: (data, params) => http(api + 'receiptpost', data, 'post', params),
+
+  // // 关联其他企业
+  // invoicelist: (data, params) => http(api + 'invoicelist', data, 'post', params),
+
+  // // 认领资金申请开票
+  // receiptbytrade: (data, params) => http(api + 'receiptbytrade', data, 'post', params),
+  // // 认领资金开票编辑
+  // editbytrade: (data, params) => http(api + 'editbytrade', data, 'post', params),
+
+};

+ 49 - 1
src/apis/service/reportQuery/purchaseReport/index.js

@@ -23,5 +23,53 @@ export default {
    reportpurcheaseordersumbyuser: (data, params) => http(api + "reportpurcheaseordersumbyuser", data, "post", params),
    //已采反报价信息
    reportconsultinfobidssum: (data, params) => http(api + "reportconsultinfobidssum", data, "post", params),
+   //已采反报价信息导出
+   reportconsultinfobidssumexport: (data, params) => http(api + "reportconsultinfobidssumexport", data, "post", params),
+   //未采反信息
+   reportconsultinfobidssumnot: (data, params) => http(api + "reportconsultinfobidssumnot", data, "post", params),
+   //未采反信息导出
+   reportconsultinfobidssumnotexport: (data, params) => http(api + "reportconsultinfobidssumnotexport", data, "post", params),
+   //订单明细
+   reportorderlistdetailed: (data, params) => http(api + "reportorderlistdetailed", data, "post", params),
+   //订单明细导出
+   reportorderlistdetailedexport: (data, params) => http(api + "reportorderlistdetailedexport", data, "post", params),
+   //售后报表
+   reportorderreturnlist: (data, params) => http(api + "reportorderreturnlist", data, "post", params),
+   //售后报表导出
+   reportorderreturnlistexport: (data, params) => http(api + "reportorderreturnlistexport", data, "post", params),
+   //供应商报表
+   reportsupplierlist: (data, params) => http(api + "reportsupplierlist", data, "post", params),
+   //供应商报表导出
+   reportsupplierlistexport: (data, params) => http(api + "reportsupplierlistexport", data, "post", params),
+   //退货流水报表
+   reportsalereturnlist: (data, params) => http(api + "reportsalereturnlist", data, "post", params),
+   //退货流水报表导出
+   reportsalereturnexport: (data, params) => http(api + "reportsalereturnexport", data, "post", params),
+   //产品上线报表
+   reportgoodonlinelist: (data, params) => http(api + "reportgoodonlinelist", data, "post", params),
+   //产品上线报表导出
+   reportgoodonlineexport: (data, params) => http(api + "reportgoodonlineexport", data, "post", params),
+   //产品下线报表
+   reportgoodofflinelist: (data, params) => http(api + "reportgoodofflinelist", data, "post", params),
+   //产品下线报表导出
+   reportgoodofflineexport: (data, params) => http(api + "reportgoodofflineexport", data, "post", params),
+
+   //产品修改报表
+   reportchangeloglist: (data, params) => http(api + "reportchangeloglist", data, "post", params),
+   //产品修改报表导出
+   reportchangelogeexport: (data, params) => http(api + "reportchangelogeexport", data, "post", params),
+
+
+
+
    
-};
+   //退货台账-业务口径导出
+   reportreturnexport: (data, params) => http(api + "reportreturnexport", data, "post", params),
+};
+
+
+
+
+
+
+

+ 2 - 0
src/apis/service/sellOut/sellOutOrder/index.js

@@ -30,4 +30,6 @@ export default {
   afterstatus: (data, params) => http(api + "afterstatus", data, "post", params),
   // 确认收货
   saleoutreceipt: (data, params) => http(api + "saleoutreceipt", data, "post", params),
+  // 库管批量发货
+  saleoutbatch: (data, params) => http(api + "saleoutbatch", data, "post", params),
 };

+ 98 - 0
src/apis/testAxios.js

@@ -0,0 +1,98 @@
+import urlConfig from '@/apis/url-config'
+import {
+  getToken, removeMenu,
+  removeBtn, removeToken
+} from '@/utils/auth'
+const header = {
+  // "X-Requested-With": "XMLHttpRequest",
+  // "X-Frame-Options": "DENY", // 告诉浏览器不要(DENY)把这个网页放在iFrame内,通常的目的就是要帮助用户对抗点击劫持。
+  // "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
+}
+window.ajaxTimeout = 20000
+export default async (
+  url = '',
+  data = {},
+  type = 'GET',
+  params = {},
+  headers = header,
+  onUploadProgress
+) => {
+  type = type.toLowerCase()
+  const obj = {
+    method: type,
+    baseURL: '',
+    url: urlConfig.testURL + url,
+    data,
+    params,
+    // // `onUploadProgress` 允许为上传处理进度事件
+    // onUploadProgress: function(progressEvent) {
+    //   // 对原生进度事件的处理
+    // },
+    // // `onDownloadProgress` 允许为下载处理进度事件
+    // onDownloadProgress: function(progressEvent) {
+    //   // 对原生进度事件的处理
+    // },
+    // `cancelToken` 指定用于取消请求的 cancel token
+    // (查看后面的 Cancellation 这节了解更多)
+    // cancelToken: new CancelToken(function (cancel) {
+    // }),
+    processData: true, // 告诉axios不要去处理发送的数据(重要参数)
+    timeout: window.ajaxTimeout,
+    headers,
+    onUploadProgress
+  }
+  if (onUploadProgress && typeof onUploadProgress === 'function') {
+    obj.onUploadProgress = onUploadProgress
+  }
+  // return await axios(obj)
+  //   .then(response => {
+  //     return response;
+  //   })
+  //   .catch(res => {
+  //     return res;
+  //   });
+  // 请求拦截器
+  axios.interceptors.request.use(
+    config => {
+      if (!config.data.token) {
+        config.data.token = getToken()
+      }
+      return config
+    },
+    error => {
+      // 错误抛到业务代码
+      return Promise.reject(new Error('服务器异常,请联系管理员!'))
+    }
+  )
+  // 添加响应拦截器
+  axios.interceptors.response.use(
+    async response => {
+      if (response.status === 200) {
+        const code = response.data.code
+        if (code >= 100 && code <= 104) {
+          removeToken()
+          removeMenu()
+          removeBtn()
+        }
+      }
+      return response
+    },
+    error => {
+      return Promise.reject(error.response.data)
+    }
+  )
+  return new Promise((resolve, reject) => {
+    axios(obj)
+      .then(response => {
+        // console.log(response)
+        resolve(response.data)
+      })
+      .catch(res => {
+        if (res.response && res.response.data) {
+          reject(res.response.data);
+        } else {
+          reject(res);
+        }
+      });
+  })
+}

+ 2 - 1
src/assets/js/btnList.js

@@ -76,7 +76,7 @@ const btnList = [
   { code: "075", name: "编辑支持品牌" },
   { code: "076", name: "启/禁用支持品牌" },
   { code: "077", name: "删除支持品牌" },
-  { code: "078", name: "再次发起审核流程" },
+  { code: "078", name: "再次发起上线" },
   { code: "079", name: "下线商品" },
   { code: "080", name: "库管发货" },
   { code: "081", name: "添加发货申请" },
@@ -88,5 +88,6 @@ const btnList = [
   { code: "087", name: "导出" },
   { code: "088", name: "确认收货" },
   { code: "089", name: "批量已与供应商确认" },
+  { code: "090", name: "批量发货" },
 ];
 export default btnList;

+ 16 - 7
src/assets/js/statusList.js

@@ -2,11 +2,20 @@ const statusList = [
   { name: "启用", code: "1" },
   { name: "禁用", code: "0" },
 ];
-const order_type_options = [
-  { id: "1", label: "线上商品销售" },
-  { id: "2", label: "项目线上商品销售" },
-  { id: "3", label: "咨询单销售" },
-  { id: "4", label: "项目咨询单销售" },
-  { id: "5", label: "平台部订单销售" },
+const cg_order_type_options = [
+  { id: "1", label: "备库单" },
+  { id: "2", label: "线上非库存品" },
+  { id: "3", label: "咨询采反" },
+  { id: "4", label: "项目采反" },
+  { id: "5", label: "平台部线上库存品" },
+  { id: "6", label: "平台部线上非库存品" },
 ]
-export { statusList, order_type_options };
+const xs_order_type_options = [
+  { id: "1", label: "线上库存品" },
+  { id: "2", label: "线上非库存品" },
+  { id: "3", label: "咨询采反" },
+  { id: "4", label: "项目采反" },
+  { id: "5", label: "平台部线上库存品" },
+  { id: "6", label: "平台部线上非库存品" },
+]
+export { statusList, cg_order_type_options, xs_order_type_options };

+ 74 - 0
src/common/echart/index.vue

@@ -0,0 +1,74 @@
+<template>
+  <div :id="id" :class="className" :style="{ height: height, width: width }" />
+</template>
+
+<script>
+import tdTheme from './theme.json' // 引入默认主题
+import '../map/fujian.js'
+
+export default {
+  name: 'echart',
+  props: {
+    className: {
+      type: String,
+      default: 'chart'
+    },
+    id: {
+      type: String,
+      default: 'chart'
+    },
+    width: {
+      type: String,
+      default: '100%'
+    },
+    height: {
+      type: String,
+      default: '2.5rem'
+    },
+    options: {
+      type: Object,
+      default: ()=>({})
+    }
+  },
+  data () {
+    return {
+      chart: null
+    }
+  },
+  watch: {
+    options: {
+      handler (options) {
+        // 设置true清空echart缓存
+        this.chart.setOption(options, true)
+      },
+      deep: true
+    }
+  },
+  mounted () {
+    this.$echarts.registerTheme('tdTheme', tdTheme); // 覆盖默认主题
+    this.initChart();
+  },
+  beforeDestroy () {
+    this.chart.dispose()
+    this.chart = null
+    window.removeEventListener('resize', this.$_handleResizeChart)
+  },
+  methods: {
+    initChart () {
+      // console.log(this.$router)
+      // 初始化echart
+      this.chart = this.$echarts.init(this.$el, 'tdTheme')
+      this.chart.setOption(this.options, true)
+    
+    window.addEventListener("resize", this.$_handleResizeChart);
+
+    },
+    $_handleResizeChart(){
+      this.chart.resize(); 
+    }
+  }
+}
+</script>
+
+<style>
+</style>

+ 490 - 0
src/common/echart/theme.json

@@ -0,0 +1,490 @@
+{
+  "color": [
+    "#2d8cf0",
+    "#19be6b",
+    "#ff9900",
+    "#E46CBB",
+    "#9A66E4",
+    "#ed3f14"
+  ],
+  "backgroundColor": "rgba(0,0,0,0)",
+  "textStyle": {},
+  "title": {
+    "textStyle": {
+      "color": "#516b91"
+    },
+    "subtextStyle": {
+      "color": "#93b7e3"
+    }
+  },
+  "line": {
+    "itemStyle": {
+      "normal": {
+        "borderWidth": "2"
+      }
+    },
+    "lineStyle": {
+      "normal": {
+        "width": "2"
+      }
+    },
+    "symbolSize": "6",
+    "symbol": "emptyCircle",
+    "smooth": true
+  },
+  "radar": {
+    "itemStyle": {
+      "normal": {
+        "borderWidth": "2"
+      }
+    },
+    "lineStyle": {
+      "normal": {
+        "width": "2"
+      }
+    },
+    "symbolSize": "6",
+    "symbol": "emptyCircle",
+    "smooth": true
+  },
+  "bar": {
+    "itemStyle": {
+      "normal": {
+        "barBorderWidth": 0,
+        "barBorderColor": "#ccc"
+      },
+      "emphasis": {
+        "barBorderWidth": 0,
+        "barBorderColor": "#ccc"
+      }
+    }
+  },
+  "pie": {
+    "itemStyle": {
+      "normal": {
+        "borderWidth": 0,
+        "borderColor": "#ccc"
+      },
+      "emphasis": {
+        "borderWidth": 0,
+        "borderColor": "#ccc"
+      }
+    }
+  },
+  "scatter": {
+    "itemStyle": {
+      "normal": {
+        "borderWidth": 0,
+        "borderColor": "#ccc"
+      },
+      "emphasis": {
+        "borderWidth": 0,
+        "borderColor": "#ccc"
+      }
+    }
+  },
+  "boxplot": {
+    "itemStyle": {
+      "normal": {
+        "borderWidth": 0,
+        "borderColor": "#ccc"
+      },
+      "emphasis": {
+        "borderWidth": 0,
+        "borderColor": "#ccc"
+      }
+    }
+  },
+  "parallel": {
+    "itemStyle": {
+      "normal": {
+        "borderWidth": 0,
+        "borderColor": "#ccc"
+      },
+      "emphasis": {
+        "borderWidth": 0,
+        "borderColor": "#ccc"
+      }
+    }
+  },
+  "sankey": {
+    "itemStyle": {
+      "normal": {
+        "borderWidth": 0,
+        "borderColor": "#ccc"
+      },
+      "emphasis": {
+        "borderWidth": 0,
+        "borderColor": "#ccc"
+      }
+    }
+  },
+  "funnel": {
+    "itemStyle": {
+      "normal": {
+        "borderWidth": 0,
+        "borderColor": "#ccc"
+      },
+      "emphasis": {
+        "borderWidth": 0,
+        "borderColor": "#ccc"
+      }
+    }
+  },
+  "gauge": {
+    "itemStyle": {
+      "normal": {
+        "borderWidth": 0,
+        "borderColor": "#ccc"
+      },
+      "emphasis": {
+        "borderWidth": 0,
+        "borderColor": "#ccc"
+      }
+    }
+  },
+  "candlestick": {
+    "itemStyle": {
+      "normal": {
+        "color": "#edafda",
+        "color0": "transparent",
+        "borderColor": "#d680bc",
+        "borderColor0": "#8fd3e8",
+        "borderWidth": "2"
+      }
+    }
+  },
+  "graph": {
+    "itemStyle": {
+      "normal": {
+        "borderWidth": 0,
+        "borderColor": "#ccc"
+      }
+    },
+    "lineStyle": {
+      "normal": {
+        "width": 1,
+        "color": "#aaa"
+      }
+    },
+    "symbolSize": "6",
+    "symbol": "emptyCircle",
+    "smooth": true,
+    "color": [
+      "#2d8cf0",
+      "#19be6b",
+      "#f5ae4a",
+      "#9189d5",
+      "#56cae2",
+      "#cbb0e3"
+    ],
+    "label": {
+      "normal": {
+        "textStyle": {
+          "color": "#eee"
+        }
+      }
+    }
+  },
+  "map": {
+    "itemStyle": {
+      "normal": {
+        "areaColor": "#f3f3f3",
+        "borderColor": "#516b91",
+        "borderWidth": 0.5
+      },
+      "emphasis": {
+        "areaColor": "rgba(165,231,240,1)",
+        "borderColor": "#516b91",
+        "borderWidth": 1
+      }
+    },
+    "label": {
+      "normal": {
+        "textStyle": {
+          "color": "#000"
+        }
+      },
+      "emphasis": {
+        "textStyle": {
+          "color": "rgb(81,107,145)"
+        }
+      }
+    }
+  },
+  "geo": {
+    "itemStyle": {
+      "normal": {
+        "areaColor": "#f3f3f3",
+        "borderColor": "#516b91",
+        "borderWidth": 0.5
+      },
+      "emphasis": {
+        "areaColor": "rgba(165,231,240,1)",
+        "borderColor": "#516b91",
+        "borderWidth": 1
+      }
+    },
+    "label": {
+      "normal": {
+        "textStyle": {
+          "color": "#000"
+        }
+      },
+      "emphasis": {
+        "textStyle": {
+          "color": "rgb(81,107,145)"
+        }
+      }
+    }
+  },
+  "categoryAxis": {
+    "axisLine": {
+      "show": true,
+      "lineStyle": {
+        "color": "#cccccc"
+      }
+    },
+    "axisTick": {
+      "show": false,
+      "lineStyle": {
+        "color": "#333"
+      }
+    },
+    "axisLabel": {
+      "show": true,
+      "textStyle": {
+        "color": "#fff"
+      }
+    },
+    "splitLine": {
+      "show": false,
+      "lineStyle": {
+        "color": [
+          "#eeeeee"
+        ]
+      }
+    },
+    "splitArea": {
+      "show": false,
+      "areaStyle": {
+        "color": [
+          "rgba(250,250,250,0.05)",
+          "rgba(200,200,200,0.02)"
+        ]
+      }
+    }
+  },
+  "valueAxis": {
+    "axisLine": {
+      "show": true,
+      "lineStyle": {
+        "color": "#cccccc"
+      }
+    },
+    "axisTick": {
+      "show": false,
+      "lineStyle": {
+        "color": "#333"
+      }
+    },
+    "axisLabel": {
+      "show": true,
+      "textStyle": {
+        "color": "#fff"
+      }
+    },
+    "splitLine": {
+      "show": false,
+      "lineStyle": {
+        "color": [
+          "#eeeeee"
+        ]
+      }
+    },
+    "splitArea": {
+      "show": false,
+      "areaStyle": {
+        "color": [
+          "rgba(250,250,250,0.05)",
+          "rgba(200,200,200,0.02)"
+        ]
+      }
+    }
+  },
+  "logAxis": {
+    "axisLine": {
+      "show": true,
+      "lineStyle": {
+        "color": "#cccccc"
+      }
+    },
+    "axisTick": {
+      "show": false,
+      "lineStyle": {
+        "color": "#333"
+      }
+    },
+    "axisLabel": {
+      "show": true,
+      "textStyle": {
+        "color": "#999999"
+      }
+    },
+    "splitLine": {
+      "show": true,
+      "lineStyle": {
+        "color": [
+          "#eeeeee"
+        ]
+      }
+    },
+    "splitArea": {
+      "show": false,
+      "areaStyle": {
+        "color": [
+          "rgba(250,250,250,0.05)",
+          "rgba(200,200,200,0.02)"
+        ]
+      }
+    }
+  },
+  "timeAxis": {
+    "axisLine": {
+      "show": true,
+      "lineStyle": {
+        "color": "#cccccc"
+      }
+    },
+    "axisTick": {
+      "show": false,
+      "lineStyle": {
+        "color": "#333"
+      }
+    },
+    "axisLabel": {
+      "show": true,
+      "textStyle": {
+        "color": "#999999"
+      }
+    },
+    "splitLine": {
+      "show": true,
+      "lineStyle": {
+        "color": [
+          "#eeeeee"
+        ]
+      }
+    },
+    "splitArea": {
+      "show": false,
+      "areaStyle": {
+        "color": [
+          "rgba(250,250,250,0.05)",
+          "rgba(200,200,200,0.02)"
+        ]
+      }
+    }
+  },
+  "toolbox": {
+    "iconStyle": {
+      "normal": {
+        "borderColor": "#999"
+      },
+      "emphasis": {
+        "borderColor": "#666"
+      }
+    }
+  },
+  "legend": {
+    "textStyle": {
+      "color": "#fff"
+    }
+  },
+  "tooltip": {
+    "axisPointer": {
+      "lineStyle": {
+        "color": "#ccc",
+        "width": 1
+      },
+      "crossStyle": {
+        "color": "#ccc",
+        "width": 1
+      }
+    }
+  },
+  "timeline": {
+    "lineStyle": {
+      "color": "#8fd3e8",
+      "width": 1
+    },
+    "itemStyle": {
+      "normal": {
+        "color": "#8fd3e8",
+        "borderWidth": 1
+      },
+      "emphasis": {
+        "color": "#8fd3e8"
+      }
+    },
+    "controlStyle": {
+      "normal": {
+        "color": "#8fd3e8",
+        "borderColor": "#8fd3e8",
+        "borderWidth": 0.5
+      },
+      "emphasis": {
+        "color": "#8fd3e8",
+        "borderColor": "#8fd3e8",
+        "borderWidth": 0.5
+      }
+    },
+    "checkpointStyle": {
+      "color": "#8fd3e8",
+      "borderColor": "rgba(138,124,168,0.37)"
+    },
+    "label": {
+      "normal": {
+        "textStyle": {
+          "color": "#8fd3e8"
+        }
+      },
+      "emphasis": {
+        "textStyle": {
+          "color": "#8fd3e8"
+        }
+      }
+    }
+  },
+  "visualMap": {
+    "color": [
+      "#516b91",
+      "#59c4e6",
+      "#a5e7f0"
+    ]
+  },
+  "dataZoom": {
+    "backgroundColor": "rgba(0,0,0,0)",
+    "dataBackgroundColor": "rgba(255,255,255,0.3)",
+    "fillerColor": "rgba(167,183,204,0.4)",
+    "handleColor": "#a7b7cc",
+    "handleSize": "100%",
+    "textStyle": {
+      "color": "#333"
+    }
+  },
+  "markPoint": {
+    "label": {
+      "normal": {
+        "textStyle": {
+          "color": "#eee"
+        }
+      },
+      "emphasis": {
+        "textStyle": {
+          "color": "#eee"
+        }
+      }
+    }
+  }
+}

File diff suppressed because it is too large
+ 46 - 0
src/common/map/fujian.js


+ 0 - 78
src/components/Breadcrumb/index.vue

@@ -1,78 +0,0 @@
-<template>
-  <el-breadcrumb class="app-breadcrumb" separator="/">
-    <transition-group name="breadcrumb">
-      <el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path">
-        <span v-if="item.redirect==='noRedirect'||index==levelList.length-1" class="no-redirect">{{ item.meta.title }}</span>
-        <a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a>
-      </el-breadcrumb-item>
-    </transition-group>
-  </el-breadcrumb>
-</template>
-
-<script>
-import pathToRegexp from 'path-to-regexp'
-
-export default {
-  data() {
-    return {
-      levelList: null
-    }
-  },
-  watch: {
-    $route() {
-      this.getBreadcrumb()
-    }
-  },
-  created() {
-    this.getBreadcrumb()
-  },
-  methods: {
-    getBreadcrumb() {
-      // only show routes with meta.title
-      let matched = this.$route.matched.filter(item => item.meta && item.meta.title)
-      const first = matched[0]
-
-      if (!this.isDashboard(first)) {
-        matched = [{ path: '/dashboard', meta: { title: 'Dashboard' }}].concat(matched)
-      }
-
-      this.levelList = matched.filter(item => item.meta && item.meta.title && item.meta.breadcrumb !== false)
-    },
-    isDashboard(route) {
-      const name = route && route.name
-      if (!name) {
-        return false
-      }
-      return name.trim().toLocaleLowerCase() === 'Dashboard'.toLocaleLowerCase()
-    },
-    pathCompile(path) {
-      // To solve this problem https://github.com/PanJiaChen/vue-element-admin/issues/561
-      const { params } = this.$route
-      var toPath = pathToRegexp.compile(path)
-      return toPath(params)
-    },
-    handleLink(item) {
-      const { redirect, path } = item
-      if (redirect) {
-        this.$router.push(redirect)
-        return
-      }
-      this.$router.push(this.pathCompile(path))
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-.app-breadcrumb.el-breadcrumb {
-  display: inline-block;
-  font-size: 14px;
-  line-height: 50px;
-  margin-left: 8px;
-
-  .no-redirect {
-    color: #97a8be;
-    cursor: text;
-  }
-}
-</style>

+ 1 - 1
src/components/addr-add-edit-modal/index.vue

@@ -156,7 +156,7 @@ export default {
         addr_code: [
           {
             type: "array",
-            required: true,
+            required: false,
             message: "收货省市区不能为空",
             trigger: "change",
           },

+ 172 - 0
src/components/echart/bottom/bottomLeftChart/chart.vue

@@ -0,0 +1,172 @@
+<template>
+  <div>
+    <Echart
+      :options="options"
+      id="bottomLeftChart"
+      height="350px"
+      width="100%"
+    ></Echart>
+  </div>
+</template>
+
+<script>
+import Echart from "@/common/echart";
+import asyncRequest from "@/apis/service/bigScreen";
+// import resToken from "@/mixins/resToken";
+export default {
+  data() {
+    return {
+      options: {
+        legend: {},
+        tooltip: {},
+        dataset: {
+          source: [
+            ["product", "今日", "本月", "今年"],
+            // ["销售一组", 20, 30, 50],
+            // ["销售二组", 15, 60, 80],
+            // ["销售三组", 10, 20, 100],
+            // ["销售6组", 1, 30, 100],
+          ],
+        },
+        xAxis: { type: "category" },
+        yAxis: {},
+        series: [
+          {
+            type: "bar",
+            label: {
+              show: true,
+              color: "#fff",
+              position: "top",
+              formatter: function (params) {
+                return params.value[1] + "%";
+              },
+            },
+            itemStyle: {
+              normal: {
+                color: "#1a8cd7",
+              },
+            },
+          },
+          {
+            type: "bar",
+            label: {
+              show: true,
+              color: "#fff",
+              position: "top",
+              formatter: function (params) {
+                return params.value[2] + "%";
+              },
+            },
+            itemStyle: {
+              normal: {
+                color: "skyblue",
+              },
+            },
+          },
+          {
+            type: "bar",
+            label: {
+              show: true,
+              color: "#fff",
+              position: "top",
+              formatter: function (params) {
+                return params.value[3] + "%";
+              },
+            },
+            itemStyle: {
+              normal: {
+                color: "orange",
+              },
+            },
+          },
+        ],
+      },
+      flag: false,
+    };
+  },
+  components: {
+    Echart,
+  },
+  props: {
+    cdata: {
+      type: Object,
+      default: () => ({}),
+    },
+  },
+  mounted() {
+    this.initHttp3();
+  },
+  methods: {
+    async initHttp() {
+      let res = await asyncRequest.datatordertransferratetoday();
+      if (res.data.length <= 0) {
+        for(let index = 0; index<this.options.dataset.source.length-1; index++){
+          this.$set(this.options.dataset.source[index + 1], 1, 0);
+        }    
+        return;
+      }
+      if (res.code == 0) {
+        //  console.log(res)
+        res.data.forEach((item, index) => {
+          this.$set(
+            this.options.dataset.source[index + 1],
+            1,
+            item.transfer_rate
+          );
+        });
+      } else {
+        this.$message.error(res.message);
+        return;
+      }
+    },
+    async initHttp2() {
+      let res = await asyncRequest.datatordertransferratemonth();
+      if (res.data.length <= 0) {
+        for(let index = 0; index<this.options.dataset.source.length-1; index++){
+          this.$set(this.options.dataset.source[index + 1], 2, 0);
+        }    
+        return;
+      }
+      if (res.code == 0) {
+        res.data.forEach((item, index) => {
+          // this.$set(this.options.dataset.source, index+1, [item.companyName])
+          this.$set(
+            this.options.dataset.source[index + 1],
+            2,
+            item.transfer_rate
+          );
+        });
+      } else {
+        this.$message.error(res.message);
+        return;
+      }
+    },
+    async initHttp3() {
+      let res = await asyncRequest.datatordertransferrateyear();
+      if (res.code == 0) {
+        res.data.forEach((item, index) => {
+          this.$set(this.options.dataset.source, index + 1, [item.companyName]);
+          this.$set(
+            this.options.dataset.source[index + 1],
+            3,
+            item.transfer_rate
+          );
+        });
+        await this.initHttp2();
+        await this.initHttp();
+      } else {
+        this.$message.error(res.message);
+        return;
+      }
+    },
+  },
+  watch: {
+    // cdata: {
+    //   handler() {
+    //   },
+    //   immediate: true,
+    //   deep: true,
+    // },
+  },
+};
+</script>

+ 55 - 0
src/components/echart/bottom/bottomLeftChart/index.vue

@@ -0,0 +1,55 @@
+<template>
+  <div>
+    <Chart :cdata="cdata" />
+  </div>
+</template>
+
+<script>
+import Chart from './chart.vue'
+export default {
+  data () {
+    return {
+      cdata: {
+        category: [
+          "销售一组",
+          "销售二组",
+          "销售三组",
+         
+        ],
+        lineData: [
+          99,
+          18092,
+          18092
+        ],
+        barData: [
+          4600,
+          4600,
+          5000,
+          5500
+
+        ],
+        rateData: [
+          40,
+          50,
+          60
+        ]
+      }
+    };
+  },
+  components: {
+    Chart,
+  },
+  mounted () {
+    // this.setData();
+  },
+  methods: {
+    // 根据自己的业务情况修改
+    setData () {
+      
+    },
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 244 - 0
src/components/echart/bottom/bottomRightChart/chart.vue

@@ -0,0 +1,244 @@
+<template>
+  <div>
+    <!-- <dv-water-level-pond :config="config" class="dv" /> -->
+
+  <div class="dv">
+    <p style="font-size:12px;">本月汇总完成率</p>
+<dv-decoration-9>{{total_finish_rate}}</dv-decoration-9>
+  </div>
+  
+
+    
+    <Echart
+      :options="options"
+      ref="e1"
+      id="centreLeft1Chart"
+      height="350px"
+      width="100%"
+    ></Echart>
+  </div>
+</template>
+
+<script>
+import Echart from '@/common/echart'
+import asyncRequest from "@/apis/service/bigScreen";
+// import resToken from "@/mixins/resToken";
+export default {
+  data() {
+    return {
+      // config:{
+      //   data: [55],
+      //   shape: 'roundRect'
+      // },
+      obj:{
+
+        total_finish_rate:11,
+      },
+      total_finish_rate:"",
+      options : {
+          legend: {},
+          tooltip: {},
+          dataset: {
+            source: [
+              ["product",  "本月完成率" ,"本月完成金额"],
+              
+            ],
+          },
+          xAxis: { type: "category" },
+          yAxis: {},
+          series: [
+            {
+              type: "bar",
+              barWidth:40,
+              label: {
+                show: true,
+                color: "#fff", 
+                position: 'top',
+                formatter:  (params)=> {
+                  return params.value[1]+"%"
+                }
+              },
+              itemStyle: {
+                normal: { 
+                  color: "#1a8cd7",
+                },
+              },
+            },
+            {
+              type: "bar",
+              barWidth:40,
+              label: {
+                show: true,
+                color: "#fff", 
+                position: 'top',
+                formatter: params=> {
+                  return this.getNum(params.value[2])
+                }
+              },
+              itemStyle: {
+                normal: { 
+                  color: "#28ffcd", 
+
+                },
+              },
+            },
+            // {
+            //   type: "bar",
+            //   barWidth:40,
+            //   label: {
+            //     show: true,
+            //     color: "#fff", 
+            //     position: 'top',
+            //     formatter: function (params) {
+            //       return params.value[3]+"%"
+            //     }
+            //   },
+            //   itemStyle: {
+            //     normal: { 
+            //       color: "#ffbc25", 
+
+            //     },
+            //   },
+            // }
+          ],
+        }
+    }
+  },
+  components: {
+    Echart
+  },
+  props: {
+    cdata: {
+      type: Object,
+      default: () => ({})
+    }
+  },
+  mounted(){
+    this.initHttp()
+    // var myChart = document.getElementById("centreLeft1Chart");
+    //  window.onresize =  (ec) => { // 监听窗口大小变化
+    //     console.log(ec)
+    //     myChart.resize()
+    //     // myChart1.resize()       // 自适应大小变化
+    // }
+
+  },
+  methods:{
+    getNum(num){
+        num = Number(num);
+        if(!num) return '0.00';
+        if(num > 10000 || num < -10000){
+          const moneys = num/10000
+          const realVal =parseFloat(moneys).toFixed(2);
+          return realVal+"万元"
+        }else{
+          return num.toFixed(2) + "元"
+        }
+      },
+    async initHttp(){
+     let res = await asyncRequest.datamonthfinishrate();
+     if(res.code == 0){
+   
+      this.total_finish_rate = res.data.total_finish_rate +"%"
+  
+      res.data.list.forEach((item,index) => {
+        this.$set(this.options.dataset.source, index+1, [item.department,Number(item.finish_rate).toFixed(2) ,Number(item.finish).toFixed(2)])
+        
+      });
+      // console.log(this.options.dataset.source)
+     }else{
+       this.$message.error(res.message)
+       return;
+     }
+   },
+  },
+  // watch: {
+  //   cdata: {
+  //     handler() {
+  //       this.options = {
+  //         legend: {},
+  //         tooltip: {},
+  //         dataset: {
+  //           source: [
+  //             ["product",  "本月完成率"],
+              
+  //           ],
+  //         },
+  //         xAxis: { type: "category" },
+  //         yAxis: {},
+  //         series: [
+  //           {
+  //             type: "bar",
+  //             barWidth:40,
+  //             label: {
+  //               show: true,
+  //               color: "#fff", 
+  //               position: 'top',
+  //               formatter:  (params)=> {
+  //                 return params.value[1]+"%"
+  //               }
+  //             },
+  //             itemStyle: {
+  //               normal: { 
+  //                 color: "#1a8cd7", 
+
+  //               },
+  //             },
+  //           },
+  //           // {
+  //           //   type: "bar",
+  //           //   barWidth:40,
+  //           //   label: {
+  //           //     show: true,
+  //           //     color: "#fff", 
+  //           //     position: 'top',
+  //           //     formatter: function (params) {
+  //           //       return params.value[2]+"元"
+  //           //     }
+  //           //   },
+  //           //   itemStyle: {
+  //           //     normal: { 
+  //           //       color: "#28ffcd", 
+
+  //           //     },
+  //           //   },
+  //           // },
+  //           // {
+  //           //   type: "bar",
+  //           //   barWidth:40,
+  //           //   label: {
+  //           //     show: true,
+  //           //     color: "#fff", 
+  //           //     position: 'top',
+  //           //     formatter: function (params) {
+  //           //       return params.value[3]+"%"
+  //           //     }
+  //           //   },
+  //           //   itemStyle: {
+  //           //     normal: { 
+  //           //       color: "#ffbc25", 
+
+  //           //     },
+  //           //   },
+  //           // }
+  //         ],
+  //       };
+  //     },
+  //     immediate: true,
+  //     deep: true,
+  //   },
+  // }
+}
+</script>
+<style scoped>
+   .dv{
+     width: 100px;
+     height: 100px;
+     position: absolute;
+     right: 15px;
+   }
+   .dv>p{
+     text-align: center;
+     padding-bottom: 5px;
+   }
+</style>

+ 89 - 0
src/components/echart/bottom/bottomRightChart/index.vue

@@ -0,0 +1,89 @@
+<template>
+  <div>
+    <Chart :cdata="cdata" />
+  </div>
+</template>
+
+<script>
+import Chart from './chart.vue'
+export default {
+  data () {
+    return {
+      drawTiming: null,
+      cdata: {
+        year: null,
+        weekCategory: [],
+        radarData: [],
+        radarDataAvg: [],
+        maxData: 12000,
+        weekMaxData: [],
+        weekLineData: []
+      }
+    }
+  },
+  components: {
+    Chart,
+  },
+  mounted () {
+    this.drawTimingFn();
+  },
+  beforeDestroy () {
+    clearInterval(this.drawTiming);
+  },
+  methods: {
+    drawTimingFn () {
+      this.setData();
+      this.drawTiming = setInterval(() => {
+        this.setData();
+      }, 6000);
+    },
+    setData () {
+      // 清空轮询数据
+      this.cdata.weekCategory = [];
+      this.cdata.weekMaxData = [];
+      this.cdata.weekLineData = [];
+      this.cdata.radarData = [];
+      this.cdata.radarDataAvg = [];
+
+      let dateBase = new Date();
+      this.cdata.year = dateBase.getFullYear();
+      // 周数据
+      for (let i = 0; i < 7; i++) {
+        // 日期
+        let date = new Date();
+        this.cdata.weekCategory.unshift([date.getMonth() + 1, date.getDate()-i].join("/"));
+
+        // 折线图数据
+        this.cdata.weekMaxData.push(this.cdata.maxData);
+        let distance = Math.round(Math.random() * 11000 + 500);
+        this.cdata.weekLineData.push(distance);
+
+        // 雷达图数据
+        // 我的指标
+        let averageSpeed = +(Math.random() * 5 + 3).toFixed(3);
+        let maxSpeed = averageSpeed + +(Math.random() * 3).toFixed(2);
+        let hour = +(distance / 1000 / averageSpeed).toFixed(1);
+        let radarDayData = [distance, averageSpeed, maxSpeed, hour];
+        this.cdata.radarData.unshift(radarDayData);
+
+        // 平均指标
+        let distanceAvg = Math.round(Math.random() * 8000 + 4000);
+        let averageSpeedAvg = +(Math.random() * 4 + 4).toFixed(3);
+        let maxSpeedAvg = averageSpeedAvg + +(Math.random() * 2).toFixed(2);
+        let hourAvg = +(distance / 1000 / averageSpeed).toFixed(1);
+        let radarDayDataAvg = [
+          distanceAvg,
+          averageSpeedAvg,
+          maxSpeedAvg,
+          hourAvg
+        ];
+        this.cdata.radarDataAvg.unshift(radarDayDataAvg);
+      }
+
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 104 - 0
src/components/echart/center/centerChartRate/index.vue

@@ -0,0 +1,104 @@
+<template>
+  <div>
+    <!-- 通过率/达标率 -->
+    <Echart
+      :options="options"
+      :id="id"
+      height="100px"
+      width="100px"
+    ></Echart>
+  </div>
+</template>
+
+<script>
+import Echart from '@/common/echart'
+export default {
+  data () {
+    return {
+      options: {},
+    };
+  },
+  components: {
+    Echart,
+  },
+  props: {
+    id: {
+      type: String,
+      required: true,
+      default: "chartRate"
+    },
+    tips: {
+      type: Number,
+      required: true,
+      default: 50
+    },
+    colorObj: {
+      type: Object,
+      default: function () {
+        return {
+          textStyle: "#3fc0fb",
+          series: {
+            color: ["#00bcd44a", "transparent"],
+            dataColor: {
+              normal: "#03a9f4",
+              shadowColor: "#97e2f5"
+            }
+          }
+        };
+      }
+    }
+  },
+  watch: {
+    // tips 是会变更的数据,所以进行监听
+    tips: {
+      handler (newData) {
+        this.options = {
+          title:{
+            text: newData * 1 + "%",
+            x: "center",
+            y: "center",
+            textStyle: {
+              color: this.colorObj.textStyle,
+              fontSize: 16
+            }
+          },
+          series: [
+            {
+              type: "pie",
+              radius: ["75%", "80%"],
+              center: ["50%", "50%"],
+              hoverAnimation: false,
+              color: this.colorObj.series.color,
+              label: {
+                normal: {
+                  show: false
+                }
+              },
+              data: [
+                {
+                  value: newData,
+                  itemStyle: {
+                    normal: {
+                      color: this.colorObj.series.dataColor.normal,
+                      shadowBlur: 10,
+                      shadowColor: this.colorObj.series.dataColor.shadowColor
+                    }
+                  }
+                },
+                {
+                  value: 100 - newData
+                }
+              ]
+            }
+          ]
+        }
+      },
+      immediate: true,
+      deep: true
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 80 - 0
src/components/echart/centerLeft/centerLeft1Chart/chart.vue

@@ -0,0 +1,80 @@
+<template>
+  <div>
+    <Echart
+      :options="options"
+      id="centreLeft1Chart"
+      height="220px"
+      width="260px"
+    ></Echart>
+  </div>
+</template>
+
+<script>
+import Echart from '@/common/echart'
+export default {
+  data () {
+    return {
+      options: {},
+    };
+  },
+  components: {
+    Echart,
+  },
+  props: {
+    cdata: {
+      type: Object,
+      default: () => ({})
+    },
+  },
+  watch: {
+    cdata: {
+      handler (newData) {
+        this.options = {
+          color: [
+            "#ffdb5c",
+            "#ff9f7f",
+            "#fb7293",
+            "#e7bcf3",
+            "#8378ea"
+          ],
+          tooltip: {
+            trigger: "item",
+            formatter: "{a} <br/>{b} : {c}%"
+          },
+          toolbox: {
+            show: true
+          },
+          calculable: true,
+
+          //部门标识
+          legend: {
+            orient: "horizontal",
+            icon: "circle",
+            bottom: 0,
+            x: "center",
+            data: newData.xData,
+            textStyle: {
+              color: "#fff"
+            }
+          },
+          series: [
+            {
+              name: "今日销量",
+              type: "pie",
+              radius: '50%',
+              roseType: "area",
+              center: ["50%", "40%"],
+              data: newData.seriesData
+            }
+          ]
+        }
+      },
+      immediate: true,
+      deep: true
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 41 - 0
src/components/echart/centerLeft/centerLeft1Chart/index.vue

@@ -0,0 +1,41 @@
+<template>
+  <div>
+    <Chart :cdata="cdata" />
+  </div>
+</template>
+
+<script>
+import Chart from './chart.vue';
+export default {
+  data () {
+    return {
+      cdata: {
+        // xData: ["data1", "data2", "data3", "data4", "data5", "data6"],
+        xData: ["单数", "金额"],
+        // seriesData: [
+        //   { value: 100, name: "data1" },
+        //   { value: 100, name: "data2" },
+        //   { value: 100, name: "data3" },
+        //   { value: 90, name: "data4" },
+        //   { value: 70, name: "data5" },
+        //   { value: 50, name: "data6" }
+        // ]
+        seriesData: [
+          { value: 10, name: "单数" },
+          { value: 1000, name: "金额" },
+        ]
+      }
+    }
+  },
+  components: {
+    Chart,
+  },
+  mounted () {
+  },
+  methods: {
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 290 - 0
src/components/echart/centerLeft/centerLeft2Chart/chart.vue

@@ -0,0 +1,290 @@
+<template>
+  <div>
+    <Echart
+      id="centreLeft2Chart"
+      ref="centreLeft2ChartRef"
+      :options="options"
+      height="360px"
+      width="330px"
+    ></Echart>
+  </div>
+</template>
+
+<script>
+import Echart from '@/common/echart';
+export default {
+  data() {
+    return {
+      options: {},
+    };
+  },
+  components: {
+    Echart,
+  },
+  props: {
+    cdata: {
+      type: Array,
+      default: () => [],
+    },
+  },
+  watch: {
+    cdata: {
+      handler(newData) {
+        // 设置点的位置(经纬度)
+        const geoCoordMap = {
+          厦门市: [118.11022, 24.490474, 20],
+          福州市: [119.206239, 26.275302, 20],
+          泉州市: [118.589421, 24.908853, 20],
+          漳州市: [117.561801, 24.510897, 20],
+          龙岩市: [116.82978, 25.391603, 20],
+          莆田市: [119.007558, 25.591011, 20],
+          三明市: [117.435001, 26.465444, 20],
+          南平市: [118.178459, 27.535627, 20],
+          宁德市: [119.527082, 27.15924, 20],
+        };
+        let seriesData = [
+          {
+            name: '厦门市',
+          },
+          {
+            name: '福州市',
+          },
+          {
+            name: '泉州市',
+          },
+          {
+            name: '漳州市',
+          },
+          {
+            name: '龙岩市',
+          },
+          {
+            name: '莆田市',
+          },
+          {
+            name: '三明市',
+          },
+          {
+            name: '南平市',
+          },
+          {
+            name: '宁德市',
+          },
+        ];
+        let convertData = function (data) {
+          let scatterData = [];
+          for (var i = 0; i < data.length; i++) {
+            var geoCoord = geoCoordMap[data[i].name];
+            if (geoCoord) {
+              scatterData.push({
+                name: data[i].name,
+                value: geoCoord.concat(data[i].value),
+              });
+            }
+          }
+          return scatterData;
+        };
+        this.options = {
+          showLegendSymbol: true,
+          tooltip: {
+            trigger: 'item',
+            textStyle: {
+              fontSize: 14,
+              lineHeight: 22,
+            },
+            position: point => {
+              // 固定在顶部
+              return [point[0] + 50, point[1] - 20];
+            },
+            // 如果需要自定义 tooltip样式,需要使用formatter
+            /*
+              formatter: params => {
+                return `<div style=""> ... </div>`
+              }
+            */
+          },
+          visualMap: {
+            min: 0,
+            max: 10,
+            show: false,
+            seriesIndex: 0,
+            // 颜色
+            inRange: {
+              color: ['rgba(41,166,206, .5)', 'rgba(69,117,245, .9)'],
+            },
+          },
+          // 底部背景
+          geo: {
+            show: true,
+            aspectScale: 0.85, //长宽比
+            zoom: 1.2,
+            top: '10%',
+            left: '16%',
+            map: '福建',
+            roam: false,
+            itemStyle: {
+              normal: {
+                areaColor: 'rgba(0,0,0,0)',
+                shadowColor: 'rgba(7,114,204, .8)',
+                shadowOffsetX: 5,
+                shadowOffsetY: 5,
+              },
+              emphasis: {
+                areaColor: '#00aeef',
+              },
+            },
+          },
+          series: [
+            {
+              name: '相关指数',
+              type: 'map',
+              aspectScale: 0.85, //长宽比
+              zoom: 1.2,
+              mapType: '福建', // 自定义扩展图表类型
+              top: '10%',
+              left: '16%',
+              itemStyle: {
+                normal: {
+                  color: 'red',
+                  areaColor: 'rgba(19,54,162, .5)',
+                  borderColor: 'rgba(0,242,252,.3)',
+                  borderWidth: 1,
+                  shadowBlur: 7,
+                  shadowColor: '#00f2fc',
+                },
+                emphasis: {
+                  areaColor: '#4f7fff',
+                  borderColor: 'rgba(0,242,252,.6)',
+                  borderWidth: 2,
+                  shadowBlur: 10,
+                  shadowColor: '#00f2fc',
+                },
+              },
+              label: {
+                formatter: params => `${params.name}`,
+                show: true,
+                position: 'insideRight',
+                textStyle: {
+                  fontSize: 14,
+                  color: '#efefef',
+                },
+                emphasis: {
+                  textStyle: {
+                    color: '#fff',
+                  },
+                },
+              },
+              data: newData,
+            },
+            {
+              type: 'effectScatter',
+              coordinateSystem: 'geo',
+              symbolSize: 7,
+              effectType: 'ripple',
+              legendHoverLink: false,
+              showEffectOn: 'render',
+              rippleEffect: {
+                period: 4,
+                scale: 2.5,
+                brushType: 'stroke',
+              },
+              zlevel: 1,
+              itemStyle: {
+                normal: {
+                  color: '#99FBFE',
+                  shadowBlur: 5,
+                  shadowColor: '#fff',
+                },
+              },
+              data: convertData(seriesData),
+            },
+          ],
+        };
+        // 重新选择区域
+        this.handleMapRandomSelect();
+      },
+      immediate: true,
+      deep: true,
+    },
+  },
+  methods: {
+    // 开启定时器
+    startInterval() {
+      const _self = this;
+      // 应通过接口获取配置时间,暂时写死5s
+      const time = 2000;
+      if (this.intervalId !== null) {
+        clearInterval(this.intervalId);
+      }
+      this.intervalId = setInterval(() => {
+        _self.reSelectMapRandomArea();
+      }, time);
+    },
+    // 重新随机选中地图区域
+    reSelectMapRandomArea() {
+      const length = 9;
+      this.$nextTick(() => {
+        try {
+          const map = this.$refs.centreLeft2ChartRef.chart;
+          let index = Math.floor(Math.random() * length);
+          while (index === this.preSelectMapIndex || index >= length) {
+            index = Math.floor(Math.random() * length);
+          }
+          map.dispatchAction({
+            type: 'mapUnSelect',
+            seriesIndex: 0,
+            dataIndex: this.preSelectMapIndex,
+          });
+          map.dispatchAction({
+            type: 'showTip',
+            seriesIndex: 0,
+            dataIndex: index,
+          });
+          map.dispatchAction({
+            type: 'mapSelect',
+            seriesIndex: 0,
+            dataIndex: index,
+          });
+          this.preSelectMapIndex = index;
+        } catch (error) {
+          console.log(error)
+        }
+      });
+    },
+    handleMapRandomSelect() {
+      this.$nextTick(() => {
+        try {
+          const map = this.$refs.centreLeft2ChartRef.chart;
+          const _self = this;
+          setTimeout(() => {
+            _self.reSelectMapRandomArea();
+          }, 0);
+          // 移入区域,清除定时器、取消之前选中并选中当前
+          map.on('mouseover', function (params) {
+            clearInterval(_self.intervalId);
+            map.dispatchAction({
+              type: 'mapUnSelect',
+              seriesIndex: 0,
+              dataIndex: _self.preSelectMapIndex,
+            });
+            map.dispatchAction({
+              type: 'mapSelect',
+              seriesIndex: 0,
+              dataIndex: params.dataIndex,
+            });
+            _self.preSelectMapIndex = params.dataIndex;
+          });
+          // 移出区域重新随机选中地图区域,并开启定时器
+          map.on('globalout', function () {
+            _self.reSelectMapRandomArea();
+            _self.startInterval();
+          });
+          this.startInterval();
+        } catch (error) {
+          console.log(error)
+        }
+      });
+    },
+  },
+};
+</script>

+ 67 - 0
src/components/echart/centerLeft/centerLeft2Chart/index.vue

@@ -0,0 +1,67 @@
+<template>
+  <div>
+    <Chart :cdata="cdata" />
+  </div>
+</template>
+
+<script>
+import Chart from './chart.vue';
+export default {
+  data () {
+    return {
+      cdata: [
+        {
+          // 名字需要与 “common/map/fujian.js” 地图数据文件里面定义的一一对应,不能是 “福州” 或者 “闽” 之类的缩写
+          name: '福州市',
+          value: 10,
+          elseData:{
+            // 这里放置地图 tooltip 里想显示的数据
+          }
+        },
+        {
+          name: '厦门市',
+          value: 9,
+        },
+        {
+          name: '漳州市',
+          value: 8,
+        },
+        {
+          name: '泉州市',
+          value: 7,
+        },
+        {
+          name: '三明市',
+          value: 6,
+        },
+        {
+          name: '莆田市',
+          value: 5,
+        },
+        {
+          name: '南平市',
+          value: 4,
+        },
+        {
+          name: '龙岩市',
+          value: 3,
+        },
+        {
+          name: '宁德市',
+          value: 2,
+        }
+      ]
+    }
+  },
+  components: {
+    Chart,
+  },
+  mounted () {
+  },
+  methods: {
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 132 - 0
src/components/echart/centerRight/centerRightChart/chart.vue

@@ -0,0 +1,132 @@
+<template>
+  <div>
+    <Echart
+      :options="options"
+      id="centreRight2Chart1"
+      height="200px"
+      width="260px"
+    ></Echart>
+  </div>
+</template>
+
+<script>
+import Echart from '@/common/echart'
+export default {
+  data () {
+    return {
+      options: {},
+    };
+  },
+  components: {
+    Echart,
+  },
+  props: {
+    cdata: {
+      type: Object,
+      default: () => ({})
+    },
+  },
+  watch: {
+    cdata: {
+      handler (newData) {
+        // 固定样式数据
+        let lineStyle = {
+          normal: {
+            width: 1,
+            opacity: 0.5
+          }
+        };
+
+        this.options = {
+          radar: {
+            indicator: newData.indicatorData,
+            shape: "circle",
+            splitNumber: 5,
+            radius: ["0%", "65%"],
+            name: {
+              textStyle: {
+                color: "rgb(238, 197, 102)"
+              }
+            },
+            splitLine: {
+              lineStyle: {
+                color: [
+                  "rgba(238, 197, 102, 0.1)",
+                  "rgba(238, 197, 102, 0.2)",
+                  "rgba(238, 197, 102, 0.4)",
+                  "rgba(238, 197, 102, 0.6)",
+                  "rgba(238, 197, 102, 0.8)",
+                  "rgba(238, 197, 102, 1)"
+                ].reverse()
+              }
+            },
+            splitArea: {
+              show: false
+            },
+            axisLine: {
+              lineStyle: {
+                color: "rgba(238, 197, 102, 0.5)"
+              }
+            }
+          },
+          series: [
+            {
+              name: "北京",
+              type: "radar",
+              lineStyle: lineStyle,
+              data: newData.dataBJ,
+              symbol: "none",
+              itemStyle: {
+                normal: {
+                  color: "#F9713C"
+                }
+              },
+              areaStyle: {
+                normal: {
+                  opacity: 0.1
+                }
+              }
+            },
+            {
+              name: "上海",
+              type: "radar",
+              lineStyle: lineStyle,
+              data: newData.dataSH,
+              symbol: "none",
+              itemStyle: {
+                normal: {
+                  color: "#B3E4A1"
+                }
+              },
+              areaStyle: {
+                normal: {
+                  opacity: 0.05
+                }
+              }
+            },
+            {
+              name: "广州",
+              type: "radar",
+              lineStyle: lineStyle,
+              data: newData.dataGZ,
+              symbol: "none",
+              itemStyle: {
+                normal: {
+                  color: "rgb(238, 197, 102)"
+                }
+              },
+              areaStyle: {
+                normal: {
+                  opacity: 0.05
+                }
+              }
+            } //end
+          ]
+        }
+      },
+      immediate: true,
+      deep: true
+    }
+  }
+};
+</script>

+ 55 - 0
src/components/echart/centerRight/centerRightChart/index.vue

@@ -0,0 +1,55 @@
+<template>
+  <div>
+    <Chart :cdata="cdata" />
+  </div>
+</template>
+
+<script>
+import Chart from './chart.vue';
+export default {
+  data () {
+    return {
+      cdata: {
+        indicatorData: [
+          { name: "data1", max: 300 },
+          { name: "data2", max: 250 },
+          { name: "data3", max: 300 },
+          { name: "data4", max: 5},
+          { name: "data5", max: 200 },
+          { name: "data6", max: 100 }
+        ],
+        dataBJ: [
+          [94, 69, 114, 2.08, 73, 39, 22],
+          [99, 73, 110, 2.43, 76, 48, 23],
+          [31, 12, 30, 0.5, 32, 16, 24],
+          [42, 27, 43, 1, 53, 22, 25],
+          [154, 117, 157, 3.05, 92, 58, 26],
+          [234, 185, 230, 4.09, 123, 69, 27],
+          [160, 120, 186, 2.77, 91, 50, 28]
+        ],
+        dataGZ: [
+          [84, 94, 140, 2.238, 68, 18, 22],
+          [93, 77, 104, 1.165, 53, 7, 23],
+          [99, 130, 227, 3.97, 55, 15, 24],
+          [146, 84, 139, 1.094, 40, 17, 25],
+          [113, 108, 137, 1.481, 48, 15, 26],
+          [81, 48, 62, 1.619, 26, 3, 27],
+          [56, 48, 68, 1.336, 37, 9, 28]
+        ],
+        dataSH: [
+          [91, 45, 125, 0.82, 34, 23, 1],
+          [65, 27, 78, 0.86, 45, 29, 2],
+          [83, 60, 84, 1.09, 73, 27, 3],
+          [109, 81, 121, 1.28, 68, 51, 4],
+          [106, 77, 114, 1.07, 55, 51, 5],
+          [109, 81, 121, 1.28, 68, 51, 6],
+          [106, 77, 114, 1.07, 55, 51, 7]
+        ]
+      }
+    }
+  },
+  components: {
+    Chart,
+  }
+}
+</script>

+ 34 - 0
src/components/globalComponents/digital-input/main.vue

@@ -56,6 +56,25 @@ export default {
     newTime: function (val) {
       // console.log(this.name + "=" + this.values);
       this.num = this.values;
+      this.$emit("reschange", this.num);
+    },
+    min: function (val) {
+      let a = this.accMul(val, "1");
+      let b = this.accMul(this.num, "1");
+      console.log(a, b);
+      if (a >= b) {
+        this.num = a + "";
+        this.$emit("reschange", this.num);
+      }
+    },
+    max: function (val) {
+      let a = this.accMul(val, "1");
+      let b = this.accMul(this.num, "1");
+      console.log(a, b);
+      if (a <= b) {
+        this.num = a + "";
+        this.$emit("reschange", this.num);
+      }
     },
   },
   data() {
@@ -69,6 +88,21 @@ export default {
       this.$emit("reschange", this.num);
       // console.log(value);
     },
+    accMul(arg1, arg2) {
+      var m = 0,
+        s1 = arg1.toString(),
+        s2 = arg2.toString();
+      try {
+        m += s1.split(".")[1].length;
+      } catch (e) {}
+      try {
+        m += s2.split(".")[1].length;
+      } catch (e) {}
+      return (
+        (Number(s1.replace(".", "")) * Number(s2.replace(".", ""))) /
+        Math.pow(10, m)
+      );
+    },
   },
 };
 </script>

+ 29 - 4
src/components/globalComponents/ex-table/main.vue

@@ -118,7 +118,7 @@
     />
   -->
     <div
-      v-if="page !== false && data && data.length > 0"
+      v-if="data && data.length > 0"
       class="Pagination"
       style="text-align: right; margin-top: 10px"
     >
@@ -164,7 +164,9 @@ export default {
     /**
      * el-table 属性集合
      * 自定义属性:
+     * 
      * @param {Array} _defaultHeader_  : 默认的表格头部,支持['setcol', 'screen'] setcol-列设置 screen-筛选
+     * 
      * 可使用插槽扩展表格头部:
      * table-header - 具名插槽
      * slotProps:selection - 表格选中的数据  alldata - 表格当前全部数据
@@ -216,8 +218,12 @@ export default {
      * page-size-change  分页大小改变
      */
     page: {
-      type: [Boolean, Object],
-      default: false,
+      type: Object,
+      default: {
+        curr: 1,
+        size: 15,
+        total: 0,
+      },
     },
     /**
      * 筛选条件集合
@@ -263,6 +269,15 @@ export default {
         return this.conditions.some((item) => item.prop === col.prop);
       };
     },
+    page_curr() {
+      return this.page.curr;
+    },
+    page_size() {
+      return this.page.size;
+    },
+    page_total() {
+      return this.page.total;
+    },
   },
   data() {
     return {
@@ -270,7 +285,17 @@ export default {
       tableSelection: [],
     };
   },
-  watch: {},
+  watch: {
+    page_curr: function (val) {
+      this.page.curr = val;
+    },
+    page_size: function (val) {
+      this.page.size = val;
+    },
+    page_total: function (val) {
+      this.page.total = val;
+    },
+  },
   mounted() {
     // 拖拽绑定
     this.rowDrop();

+ 7 - 3
src/components/globalComponents/file-upload/main.vue

@@ -16,12 +16,14 @@
 <script>
 import urlConfig from "@/apis/url-config";
 import { getToken } from "@/utils/auth";
+import resToken from "@/mixins/resToken";
 //Uploadcondition 用于判断个性化文件 //返回 false 就不会上传文件
 //UploadErrorEvent 上传成功
 //UploadErrorEvent 上传失败
 
 export default {
   name: "fileUpload",
+  mixins: [resToken],
   props: {
     //@reject 默认值
     accept: String, //上传文件类型
@@ -52,7 +54,7 @@ export default {
       let that = this;
       let inputDOM1 = that.$refs.inputer;
       const files = inputDOM1.files;
-      console.log(files)
+      console.log(files);
       let length = files.length;
       if (length === 0) return;
       that.loading = that.$loading({
@@ -67,7 +69,7 @@ export default {
           that.$refs.inputer.value = "";
         } else {
           let str = await that.httpupLoad(files, i);
-          console.log(i,str)
+          console.log(i, str);
           if (str === "error") {
             that.$emit("UploadErrorEvent");
           } else if (str === "break") {
@@ -100,11 +102,13 @@ export default {
                     url: `${that.imgAPI}storage/${url}`,
                     name: name,
                   });
-                } else {
+                } else if (code >= 100 && code <= 104) {
                   resolve({
                     url: `noToken`,
                     name: "",
                   });
+                } else {
+                  resolve("break");
                 }
               } else {
                 reject();

+ 2 - 0
src/components/globalComponents/logis-time-line/index.js

@@ -0,0 +1,2 @@
+import Main from './main.vue'
+export default Main

+ 107 - 0
src/components/globalComponents/logis-time-line/main.vue

@@ -0,0 +1,107 @@
+<template>
+  <div class="logisTimeLine" style="margin: 0 0 0 30px">
+    <el-steps
+      direction="vertical"
+      :active="options.length"
+      :space="80"
+      :finish-status="finishStatus"
+      :process-status="processStatus"
+    >
+      <div v-if="status && status !== '0'" class="show-post clear">
+        <img v-if="post_logo" :src="post_logo" alt="" class="fl"/>
+        <div v-if="post_name" class="fl">{{post_name}}</div><div class="fl" v-if="post_code">{{post_code}}</div>
+      </div>
+      <el-step
+        :icon="index === 0 ? 'el-icon-success' : 'el-icon-truck'"
+        v-for="(item, index) in options"
+        :key="item.time + index"
+        :finish-status="finishStatus"
+        :process-status="processStatus"
+      >
+        <div slot="description">
+          <p class="name">
+            {{ item.time }}
+          </p>
+          <p class="time">
+            {{ item.context }}
+          </p>
+        </div>
+      </el-step>
+    </el-steps>
+  </div>
+</template>
+
+<script>
+import asyncRequest from "@/apis/components/logis-time-line";
+import resToken from "@/mixins/resToken";
+export default {
+  name: "logisTimeLine",
+  props: ["type", "orderCode", "newTime"],
+  mixins: [resToken],
+  data() {
+    return {
+      options: [],
+      finishStatus: "",
+      processStatus: "process",
+      loading: false,
+      post_logo: "",
+      post_name: "",
+      post_code: "",
+      status: "",
+    };
+  },
+  watch: {
+    newTime: function (val) {
+      if (val) {
+        this.getList();
+      }
+    },
+  },
+  mounted() {
+    this.getList();
+  },
+
+  methods: {
+    async getList() {
+      if (!this.loading) {
+        this.loading = true;
+        this.options = [];
+        const { code, data, message } = await asyncRequest.list({
+          post_code: this.orderCode,
+        });
+        if (code === 0) {
+          const { status, post_logo, post_name, post_code, post_data } = data;
+          this.status = status + "";
+          this.post_logo = post_logo + "";
+          this.post_name = post_name + "";
+          this.post_code = post_code + "";
+          this.options = post_data;
+        } else {
+          this.options = [];
+        }
+        this.loading = false;
+      }
+    },
+  },
+};
+</script>
+<style lang="scss">
+.logisTimeLine{
+ .show-post{
+height: 36px;
+margin: 5px  0 15px 0;
+img{
+  width: 32px;
+  height: 32px;
+  border-radius: 50%;
+  margin: 3px 10px 0 0 ;
+}
+div{
+  height: 36px;
+  display: block;
+  line-height: 36px;
+  padding: 0 10px  0 0;
+}
+ } 
+}
+</style>

+ 0 - 0
src/components/globalComponents/logis-time-line/物流进度


+ 1 - 1
src/components/globalComponents/search-stock/main.vue

@@ -128,7 +128,7 @@ export default {
       this.options = [];
       this.formValue.supplierNo = this.companyCode || "";
       this.formValue.companyNo = this.companyNo || "";
-      // this.formValue.wsm_type = this.wsmtype || "";
+      this.formValue.wsm_type = this.wsmtype || "";
       const { code, data, message } = await asyncRequest.list(this.formValue);
       if (code === 0) {
         const { list } = data;

+ 4 - 2
src/components/globalComponents/search-terrace/main.vue

@@ -36,6 +36,7 @@ export default {
     "disabled",
     "type",
     "names",
+    "is_show",
   ],
   //  watch: {
   //   names: function (val, old) {
@@ -72,8 +73,9 @@ export default {
       searchName: "",
       formValue: {
         page: 1,
-        size: 100,
+        size: 10000,
         start: "",
+        is_show: "1",
         end: "",
         platform_name: "",
         creater: "",
@@ -106,7 +108,7 @@ export default {
     async remoteMethod() {
       this.selectLoading = true;
       this.options = [];
-      // this.formValue.platform_name = query;
+      this.formValue.is_show = this.is_show || "1";
       const { code, data, message } = await asyncRequest.list(this.formValue);
 
       if (code === 0) {

+ 4 - 1
src/components/globalComponents/search-work-company/main.vue

@@ -34,6 +34,7 @@ export default {
     "disabled",
     "type",
     "names",
+    "is_show",
   ],
   /**
    * 属性集合
@@ -77,7 +78,9 @@ export default {
     },
     async remoteMethod() {
       this.selectLoading = true;
-      const { code, data, message } = await asyncRequest.list({});
+      const { code, data, message } = await asyncRequest.list({
+        is_show:this.is_show?this.is_show:'1'
+      });
       if (code === 0) {
         const { list } = data;
         this.options = list || [];

+ 1 - 0
src/components/globalComponents/show-goods-data-table/ShowDataTableColumns.js

@@ -125,6 +125,7 @@ const coveColumns = [
     append: 'g',
     span: 6,
   },
+ 
   {
     prop: "creater",
     label: "反馈人",

+ 5 - 5
src/components/globalComponents/show-goods-data-table/main.vue

@@ -2,7 +2,7 @@
   <div class="showGoodsDataTable" v-loading="loading">
     <show-data-table
       v-if="
-        (type === '1' || type === '2' || type === '5') &&
+        (type === '1' || type === '2' || type === '5'|| type === '6') &&
         this.sitem &&
         this.sitem.addtime &&
         !iscgd
@@ -29,7 +29,7 @@
         <el-popover placement="top" width="300" trigger="hover">
           <ul>
             <li>
-              <span>SKU编号:</span><span>{{ sitem.skuCode }}</span>
+              <span>上线商品编号:</span><span>{{ sitem.skuCode }}</span>
             </li>
             <li
               v-if="
@@ -39,7 +39,7 @@
                 private_field.some((item) => item == '1')
               "
             >
-              <span>SPU编号:</span><span>{{ sitem.spuCode }}</span>
+              <span>商品成本编号:</span><span>{{ sitem.spuCode }}</span>
             </li>
             <li>
               <span>平台商品编码:</span
@@ -130,7 +130,7 @@
     </show-data-table>
     <show-data-table
       v-else-if="
-        (type === '1' || type === '2' || type === '5') &&
+        (type === '1' || type === '2' || type === '5'|| type === '6') &&
         this.sitem &&
         this.sitem.addtime &&
         iscgd
@@ -157,7 +157,7 @@
         <el-popover placement="top" width="300" trigger="hover">
           <ul>
             <li>
-              <span>SPU编号:</span><span>{{ sitem.spuCode }}</span>
+              <span>商品成本编号:</span><span>{{ sitem.spuCode }}</span>
             </li>
           </ul>
           <i class="el-icon-warning-outline fr" slot="reference"></i>

+ 5 - 5
src/components/in-addr-model/index.vue

@@ -163,7 +163,7 @@ export default {
         addr_code: [
           {
             type: "array",
-            required: true,
+            required: false,
             message: "收货省市区不能为空",
             trigger: "change",
           },
@@ -440,10 +440,10 @@ export default {
         model.isok = false;
         model.message = "收货联系电话格式不正确!";
       }
-      if (addr_code.length !== 3 && model.isok) {
-        model.isok = false;
-        model.message = "收货省市区不能为空!";
-      }
+      // if (addr_code.length !== 3 && model.isok) {
+      //   model.isok = false;
+      //   model.message = "收货省市区不能为空!";
+      // }
       if (addr === "" && model.isok) {
         model.isok = false;
         model.message = "详细地址不能为空!";

+ 1 - 1
src/components/show-good-data-modal/ShowDataTableColumns.js

@@ -50,7 +50,7 @@ export default [
     span: 8,
   },
   {
-    prop: "platform_code_en",
+    prop: "plat_code",
     label: "平台商品编码",
     span: 8,
   },

+ 1 - 1
src/components/show-good-data-modal/columns.js

@@ -64,7 +64,7 @@ const columns = [
     "min-width": "160px",
   },
   {
-    prop: "platform_code_en",
+    prop: "plat_code",
     label: "平台编号",
     width: "170px",
   },

+ 4 - 0
src/config/env.development.js

@@ -8,7 +8,11 @@ module.exports = {
     baseApi: 'http://www.stock1.com/',
 
     userApi: 'http://inv.test241.wanyuhengtong.com/',
+
     //baseApi: 'http://stock.test241.wanyuhengtong.com/',
+
+    baseApi: 'http://stock.test241.wanyuhengtong.com/',
+
     // userApi: 'http://inv.sitw.wanyuhengtong.com/',
     // baseApi: 'http://stock.api.wanyuhengtong.com/',
   },

+ 14 - 0
src/filters/filter.js

@@ -62,3 +62,17 @@ Vue.filter('timewd', function (value) {
     return value.replace(".000", "")
   }
 })
+
+
+/** 大额数字单位换算 */
+Vue.filter('getNum', function (num) {
+  num = Number(num);
+  if (!num) return '0.00';
+  if (num > 10000 || num < -10000) {
+    const moneys = num / 10000
+    const realVal = parseFloat(moneys).toFixed(2);
+    return realVal + "万"
+  } else {
+    return num.toFixed(2)
+  }
+})

+ 15 - 0
src/filters/index.js

@@ -87,3 +87,18 @@ Vue.filter('num', function (value) {
 export function uppercaseFirst(string) {
   return string.charAt(0).toUpperCase() + string.slice(1)
 }
+
+
+
+/** 大额数字单位换算 */
+ export function getNum(num) {
+  num = Number(num);
+  if (!num) return '0.00';
+  if (num > 10000 || num < -10000) {
+    const moneys = num / 10000
+    const realVal = parseFloat(moneys).toFixed(2);
+    return realVal + "万"
+  } else {
+    return num.toFixed(2)
+  }
+}

+ 85 - 57
src/layout/components/Navbar.vue

@@ -1,6 +1,11 @@
 <template>
   <div class="navbar">
-     <hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
+    <hamburger
+      id="hamburger-container"
+      :is-active="sidebar.opened"
+      class="hamburger-container"
+      @toggleClick="toggleSideBar"
+    />
 
     <breadcrumb id="breadcrumb-container" class="breadcrumb-container" />
 
@@ -9,7 +14,7 @@
         <i
           v-if="isShow"
           class="el-icon-message-solid right-menu-item hover-effect shake"
-          @click="openNotice"
+          @click="openNotice()"
           style="height: 50px; width: 40px; line-height: 52px; font-size: 22px"
         />
         <screenfull id="screenfull" class="right-menu-item hover-effect" />
@@ -142,90 +147,107 @@ export default {
       statsTime: 0,
       endTime: 0,
       checked: false,
-      lastNotice: null,
+      lastNotice: null, //最后一次提示时间
       parmValue: {
         type: "",
         page: 1, // 页码
         size: 15, // 每页显示条数
       },
-      activeMsg: null,
+      activeMsg: null, //消息展示对象
     };
   },
   mounted() {
-    this.openNotice(1);
+    this.openNotice(true);
   },
   methods: {
-    async openNotice(type) {
+    async openNotice(is) {
       if (getNotice() && getNotice().length > 0) {
         this.lastNotice = JSON.parse(getNotice());
       } else {
         this.lastNotice = null;
       }
-      this.loading = true;
-      const res = await asyncRequest.list(this.parmValue);
-      if (
-        res &&
-        res.code === 0 &&
-        res.data &&
-        res.data.list &&
-        res.data.list.length > 0
-      ) {
-        this.activeMsg = res.data.list[0];
-        this.isShow = true;
-        if (this.lastNotice + "" !== "null") {
-          if (this.activeMsg.addtime === this.lastNotice.addtime) {
-            if (this.lastNotice.type === "1") {
-              this.checked = true;
+      const { code, count, item, message } = await this.initData();
+      if (code === 0) {
+        if (count != 0) {
+          this.activeMsg = item;
+          if (this.lastNotice + "" === "null") {
+            this.showModel = true;
+          } else {
+            if (is) {
+              this.typeShow();
             } else {
-              this.checked = false;
+              this.showModel = true;
             }
-          } else {
-            this.checked = false;
           }
         } else {
-          let model = {
-            type: this.checked ? "1" : "0",
-            addtime: this.activeMsg.addtime,
-          };
-          setNotice(JSON.stringify(model));
-          this.checked = false;
+          this.$message.warning("暂无系统消息!");
         }
-        if (type === 1) {
-          this.typeShow();
-        } else {
-          this.showModel = true;
-        }
-
-      } else if (res && res.code >= 100 && res.code <= 104) {
+      } else if (code >= 100 && code <= 104) {
         await this.logout();
       } else {
-        this.activeMsg = null;
-        this.isShow = false;
+        this.$message.warning(message);
       }
+    },
+
+    async initData() {
+      let res = {
+        code: 0,
+        count: 0,
+        item: {},
+        message: "",
+      };
+
+      this.loading = true;
+      const { code, data, message } = await asyncRequest.list(this.parmValue);
       this.loading = false;
+      res.code = code;
+      res.message = message;
+      if (code === 0) {
+        const { list, count } = data;
+        res.count = count;
+        if (count !== 0) {
+          res.item = JSON.parse(JSON.stringify(list[0]));
+        }
+      }
+      return res;
     },
     typeShow() {
+      const {
+        addtime: laddtime,
+        type: ltype,
+        sys_type: lsys_type,
+      } = this.lastNotice;
+      const { sys_type, addtime } = this.activeMsg;
+      if (laddtime === addtime && lsys_type === sys_type) {
+        if (ltype === "1") {
+          this.showModel = this.is_Tips();
+        } else {
+          this.showModel = true;
+        }
+      } else {
+        this.showModel = true;
+      }
+    },
+    is_Tips() {
       let nowtime = new Date().valueOf();
-      if (this.activeMsg.sys_type === "VER") {
-        this.statsTime = new Date(this.activeMsg.addtime).valueOf();
+      console.log(this.lastNotice);
+      const { sys_type, addtime } = this.activeMsg;
+      let timeV = new Date(addtime).valueOf();
+      if (sys_type === "VER") {
+        this.statsTime = timeV;
         this.endTime = this.statsTime + 1000 * 60 * 60 * 24 * 7;
-
-        if (
-          nowtime > this.statsTime &&
-          nowtime < this.endTime &&
-          !this.checked
-        ) {
-          this.showModel = true;
+        if (nowtime >= this.statsTime && nowtime <= this.endTime) {
+          return false;
         } else {
-          this.showModel = false;
+          return true;
         }
       } else {
         this.statsTime = 0;
-        this.endTime = new Date(this.activeMsg.addtime).valueOf();
-        if (nowtime < this.endTime && !this.checked) {
-          this.showModel = true;
+        this.endTime = timeV;
+        if (nowtime <= this.endTime) {
+          return false;
         } else {
-          this.showModel = false;
+          return true;
         }
       }
     },
@@ -237,12 +259,18 @@ export default {
       this.$router.push(`/login?redirect=${this.$route.fullPath}`);
     },
     submit() {
+      this.page_set_notice();
+      this.showModel = false;
+    },
+    //保存提交结果
+    page_set_notice() {
+      const { sys_type, addtime } = this.activeMsg;
       let model = {
         type: this.checked ? "1" : "0",
-        addtime: this.activeMsg.addtime,
+        sys_type: sys_type,
+        addtime: addtime,
       };
       setNotice(JSON.stringify(model));
-      this.showModel = false;
     },
   },
 };
@@ -297,8 +325,8 @@ export default {
 
   .breadcrumb-container {
     float: left;
-   width: 500px;
-   //min-width: calc(1200px - 200px - 150px);
+    width: 500px;
+    //min-width: calc(1200px - 200px - 150px);
   }
 
   .errLog-container {

+ 14 - 0
src/main.js

@@ -18,7 +18,21 @@ import App from './App'
 import store from './store'
 import base from './assets/utils/prototype/index'
 
+import dataV from '@jiaminghi/data-view';
+// 按需引入vue-awesome图标
+import Icon from 'vue-awesome/components/Icon';
+import 'vue-awesome/icons/chart-bar.js';
+import 'vue-awesome/icons/chart-area.js';
+import 'vue-awesome/icons/chart-pie.js';
+import 'vue-awesome/icons/chart-line.js';
+import 'vue-awesome/icons/align-left.js';
+import echarts from 'echarts'
 import * as filters from './filters' // global filters
+Vue.component('icon', Icon);
+Vue.use(dataV);
+
+Vue.prototype.$echarts = echarts
+
 
 Array.prototype.remove = function (val) {
   var index = this.indexOf(val);

+ 3 - 0
src/mixins/elPaginationHandle.js

@@ -2,10 +2,13 @@ export default {
   methods: {
     async handlePageChange(val) {
       this.parmValue.page = val
+      this.pageInfo.curr = val
       await this.searchList()
     },
     async handleSizeChange(val) {
       this.parmValue.page = 1
+      this.pageInfo.curr = 1
+      this.pageInfo.size = val
       this.parmValue.size = val
       await this.searchList()
     }

+ 16 - 3
src/store/modules/user.js

@@ -157,8 +157,13 @@ const actions = {
             list = list.filter((item) => item.child && item.child.length > 0)
             let arrag = []
             let btnList = []
-            console.log(list)
+            // console.log(list)
+            let isok = false;
             list.forEach(v1 => {
+              const {menu_route,child}=v1
+              if (menu_route==='bigScreen'&&child.length) {
+                isok = true
+              }
               let pItem = {
                 name: v1.menu_route,
                 path: `/${v1.menu_route}`,
@@ -188,7 +193,15 @@ const actions = {
               })
               arrag.push(pItem)
             })
-            console.log(arrag);
+            // console.log(arrag);
+
+            list.forEach(asd => {
+              // console.log(asd);
+              const {menu_route,child}=asd
+              if (menu_route==='bigScreen'&&child.length) {
+                isok = true
+              }
+            })
             // 生成页面权限
             commit("navListFn", arrag);
             // 生成按钮权限
@@ -196,7 +209,7 @@ const actions = {
             // 生成路由
             initRouter(arrag, that);
             // state.commit("loginInfoCommit", res.data);
-            resolve("success")
+            resolve(isok ? "success-dataV" : 'success')
           } else if (res.code >= 100 && res.code <= 104) {
             resolve("noToken")
           } else {

BIN
src/views/bigScreen/assetsDv/logo.png


BIN
src/views/bigScreen/assetsDv/pageBg.png


+ 98 - 0
src/views/bigScreen/assetsDv/scss/_variables.scss

@@ -0,0 +1,98 @@
+// 颜色
+$colors: (
+  "primary": #1A5CD7,
+  "info-1": #4394e4,
+  "info": #4b67af,
+  "white": #ffffff,
+  "light": #f9f9f9,
+  "grey-1": #999999,
+  "grey": #666666,
+  "dark-1": #5f5f5f,
+  "dark": #222222,
+  "black-1": #171823,
+  "black": #000000,
+  "icon": #5cd9e8
+);
+
+// 字体大小
+$base-font-size: 0.2rem;
+$font-sizes: (
+  xxs: 0.1,
+  //8px
+    xs: 0.125,
+  //10px
+    sm: 0.2875,
+  //12px
+    md: 0.1625,
+  //13px
+    lg: 0.175,
+  //14px
+    xl: 0.2,
+  //16px
+    xxl: 0.225,
+  //18px
+    xxxl: 0.25 //20px,,,,
+);
+
+// 宽高
+.w-100 {
+  width: 100%;
+}
+.h-100 {
+  height: 100%;
+}
+
+//flex
+.d-flex {
+  display: flex;
+}
+.flex-column {
+  flex-direction: column;
+}
+.flex-wrap {
+  flex-wrap: wrap;
+}
+.flex-nowrap {
+  flex-wrap: nowrap;
+}
+$flex-jc: (
+  start: flex-start,
+  end: flex-end,
+  center: center,
+  between: space-between,
+  around: space-around,
+  evenly: space-evenly,
+);
+
+$flex-ai: (
+  start: flex-start,
+  end: flex-end,
+  center: center,
+  stretch: stretch,
+);
+
+.flex-1 {
+  flex: 1;
+}
+
+//.mt-1 => margin top
+//spacing
+$spacing-types: (
+  m: margin,
+  p: padding,
+);
+$spacing-directions: (
+  t: top,
+  r: right,
+  b: bottom,
+  l: left,
+);
+$spacing-base-size: 0.5rem;
+$spacing-sizes: (
+  0: 0,
+  1: 0.5,
+  2: 1,
+  3: 1.5,
+  4: 2,
+  5: 2.5,
+);

+ 161 - 0
src/views/bigScreen/assetsDv/scss/index.scss

@@ -0,0 +1,161 @@
+#index {
+  color: #d3d6dd;
+  width: 100%;
+  height: 100%;
+  // position: absolute;
+  // top: 50%;
+  // left: 50%;
+  // transform: translate(-50%, -50%);
+  // transform-origin: left top;
+  overflow: hidden;
+  // padding-top: 40px;
+  // transform: scale(0.9);
+
+  // color: #d3d6dd;
+  // width: 1920px;
+  // height: 1080px;
+  // position: absolute;
+  // top: 50%;
+  // left: 50%;
+  // transform: translate(-50%, -50%);
+  // transform-origin: left top;
+  // // overflow: hidden;
+  // padding-top: 40px;
+  // overflow: hidden;
+  
+  .bg {
+    width: 100%;
+    height: 100%;
+    // padding: 16px 16px 0 16px;
+    background-image: url("../assetsDv/pageBg.png");
+    background-size: cover;
+    background-position: center center;
+  }
+
+  .host-body {
+    .dv-dec-10,
+    .dv-dec-10-s {
+      width: 33.3%;
+      height: 5px;
+    }
+    .dv-dec-10-s {
+      transform: rotateY(180deg);
+    }
+    .dv-dec-8 {
+      width: 200px;
+      height: 50px;
+    }
+    .title {
+      position: relative;
+      width: 500px;
+      text-align: center;
+      background-size: cover;
+      background-repeat: no-repeat;
+
+      .title-text {
+        font-size: 24px;
+        position: absolute;
+        bottom: 0;
+        left: 50%;
+        transform: translate(-50%);
+      }
+
+      .dv-dec-6 {
+        position: absolute;
+        bottom: -30px;
+        left: 50%;
+        width: 250px;
+        height: 8px;
+        transform: translate(-50%);
+      }
+    }
+
+    // 第二行
+    .aside-width {
+      width: 40%;
+    }
+    .react-r-s,
+    .react-l-s {
+      background-color: #0f1325;
+    }
+
+    // 平行四边形
+    .react-right {
+      &.react-l-s {
+        text-align: right;
+        width: 500px;
+      }
+      font-size: 18px;
+      width: 300px;
+      line-height: 50px;
+      text-align: center;
+      transform: skewX(-45deg);
+
+      .react-after {
+        position: absolute;
+        right: -25px;
+        top: 0;
+        height: 50px;
+        width: 50px;
+        background-color: #0f1325;
+        transform: skewX(45deg);
+      }
+
+      .text {
+        display: inline-block;
+        transform: skewX(45deg);
+      }
+    }
+
+    .react-left {
+      &.react-l-s {
+        width: 500px;
+        text-align: left;
+      }
+      font-size: 18px;
+      width: 300px;
+      height: 50px;
+      line-height: 50px;
+      text-align: center;
+      transform: skewX(45deg);
+      background-color: #0f1325;
+
+      .react-left {
+        position: absolute;
+        left: -25px;
+        top: 0;
+        height: 50px;
+        width: 50px;
+        background-color: #0f1325;
+        transform: skewX(-45deg);
+      }
+
+      .text {
+        display: inline-block;
+        
+        transform: skewX(-45deg);
+      }
+    }
+
+    .body-box {
+      margin-top: 16px;
+      display: flex;
+      flex-direction: column;
+
+      //下方区域的布局
+      .content-box {
+        display: grid;
+        // grid-template-columns: 2fr 3fr 5fr 3fr 2fr;
+        grid-template-columns: 3fr 2fr 5fr 5fr;
+        grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
+      }
+
+      // 底部数据
+      .bototm-box {
+        margin-top: 10px;
+        display: grid;
+        grid-template-columns: repeat(2, 50%);
+      }
+    }
+  }
+}

+ 185 - 0
src/views/bigScreen/assetsDv/scss/style.scss

@@ -0,0 +1,185 @@
+@import "./variables";
+
+//  全局样式
+* {
+  margin: 0;
+  padding: 0;
+  list-style-type: none;
+  outline: none;
+  box-sizing: border-box;
+}
+
+html {
+  margin: 0;
+  padding: 0;
+}
+
+body {
+  font-family: Arial, Helvetica, sans-serif;
+  line-height: 1.2em;
+  background-color: #f1f1f1;
+  margin: 0;
+  padding: 0;
+}
+
+a {
+  color: #343440;
+  text-decoration: none;
+}
+
+.clearfix {
+  &::after {
+    content: "";
+    display: table;
+    height: 0;
+    line-height: 0;
+    visibility: hidden;
+    clear: both;
+  }
+}
+
+//浮动
+.float-r {
+  float: right;
+}
+
+//浮动
+.float-l {
+  float: left;
+}
+
+// 字体加粗
+.fw-b {
+  font-weight: bold;
+}
+
+//文章一行显示,多余省略号显示
+.title-item {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+.bg-color-black {
+  background-color: rgba(19, 25, 47, 0.6);
+}
+
+.bg-color-blue {
+  background-color: #1a5cd7;
+}
+
+.colorBlack {
+  color: #272727 !important;
+
+  &:hover {
+    color: #272727 !important;
+  }
+}
+
+.colorGrass {
+  color: #33cea0;
+
+  &:hover {
+    color: #33cea0 !important;
+  }
+}
+
+.colorRed {
+  color: #ff5722;
+
+  &:hover {
+    color: #ff5722 !important;
+  }
+}
+
+.colorText {
+  color: #d3d6dd !important;
+
+  &:hover {
+    color: #d3d6dd !important;
+  }
+}
+
+.colorBlue {
+  color: #257dff !important;
+
+  &:hover {
+    color: #257dff !important;
+  }
+}
+
+//颜色
+@each $colorkey, $color in $colors {
+  .text-#{$colorkey} {
+    color: $color;
+  }
+
+  .bg-#{$colorkey} {
+    background-color: $color;
+  }
+}
+
+//对齐
+@each $var in (left, center, right) {
+  .text-#{$var} {
+    text-align: $var !important;
+  }
+}
+
+//flex
+@each $key, $value in $flex-jc {
+  .jc-#{$key} {
+    justify-content: $value;
+  }
+}
+
+@each $key, $value in $flex-ai {
+  .ai-#{$key} {
+    align-items: $value;
+  }
+}
+
+//字体
+@each $fontkey, $fontvalue in $font-sizes {
+  .fs-#{$fontkey} {
+    font-size: $fontvalue * $base-font-size;
+  }
+}
+
+//.mt-1 => margin top
+//spacing
+
+@each $typekey, $type in $spacing-types {
+  //.m-1
+  @each $sizekey, $size in $spacing-sizes {
+    .#{$typekey}-#{$sizekey} {
+      #{$type}: $size * $spacing-base-size;
+    }
+  }
+
+  //.mx-1
+  @each $sizekey, $size in $spacing-sizes {
+    .#{$typekey}x-#{$sizekey} {
+      #{$type}-left: $size * $spacing-base-size;
+      #{$type}-right: $size * $spacing-base-size;
+    }
+
+    .#{$typekey}y-#{$sizekey} {
+      #{$type}-top: $size * $spacing-base-size;
+      #{$type}-bottom: $size * $spacing-base-size;
+    }
+  }
+
+  //.mt-1
+  @each $directionkey, $direction in $spacing-directions {
+    @each $sizekey, $size in $spacing-sizes {
+      .#{$typekey}#{$directionkey}-#{$sizekey} {
+        #{$type}-#{$direction}: $size * $spacing-base-size;
+      }
+    }
+  }
+
+  .#{$typekey} {
+    #{$type}: 0;
+  }
+}

+ 55 - 0
src/views/bigScreen/datavScr/bottomLeft.vue

@@ -0,0 +1,55 @@
+<template>
+  <div id="bottomLeft">
+    <div class="bg-color-black">
+      <div class="d-flex pt-2 pl-2">
+        <!-- <span>
+          <icon name="chart-bar" class="text-icon"></icon>
+        </span> -->
+        <div class="d-flex">
+          <span class="fs-xl text mx-2">转单率</span>
+        </div>
+      </div>
+      <div>
+        <BottomLeftChart />
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import BottomLeftChart from '@/components/echart/bottom/bottomLeftChart'
+export default {
+  components: {
+    BottomLeftChart
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+$box-height: 400px;
+$box-width: 100%;
+#bottomLeft {
+  padding: 20px 16px;
+  height: $box-height;
+  box-sizing: border-box;
+
+  width: $box-width;
+  border-radius: 5px;
+  .bg-color-black {
+    height: $box-height - 35px;
+    border-radius: 10px;
+  }
+  .text {
+    color: #c3cbde;
+    font-size: 12px;
+  }
+  .chart-box {
+    margin-top: 16px;
+    width: 170px;
+    height: 170px;
+    .active-ring-name {
+      padding-top: 10px;
+    }
+  }
+}
+</style>

+ 62 - 0
src/views/bigScreen/datavScr/bottomRight.vue

@@ -0,0 +1,62 @@
+<template>
+  <div id="bottomRight">
+    <div class="bg-color-black">
+      <div class="d-flex pt-2 pl-2">
+        <!-- <span>
+          <icon name="chart-area" class="text-icon"></icon>
+        </span> -->
+        <div class="d-flex">
+          <span class="fs-xl text mx-2">本月完成率</span>
+          <div class="decoration2">
+            <dv-decoration-2 :reverse="true" style="width:5px;height:6rem;" />
+          </div>
+        </div>
+      </div>
+      <div>
+        <BottomRightChart />
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import BottomRightChart from "@/components/echart/bottom/bottomRightChart";
+export default {
+  components: {
+    BottomRightChart
+  }
+};
+</script>
+
+<style lang="scss" class>
+$box-height: 400px;
+$box-width: 100%;
+#bottomRight {
+  padding: 14px 16px;
+  height: $box-height;
+  width: $box-width;
+  border-radius: 5px;
+  box-sizing: border-box;
+  .bg-color-black {
+    height: $box-height - 30px;
+    border-radius: 10px;
+  }
+  .text {
+    font-size: 12px;
+    color: #c3cbde;
+  }
+  //下滑线动态
+  .decoration2 {
+    position: absolute;
+    right: 0.125rem;
+  }
+  .chart-box {
+    margin-top: 16px;
+    width: 170px;
+    height: 170px;
+    .active-ring-name {
+      padding-top: 10px;
+    }
+  }
+}
+</style>

+ 168 - 0
src/views/bigScreen/datavScr/center.vue

@@ -0,0 +1,168 @@
+<template>
+  <div id="center">
+    <div class="up">
+      <div class="bg-color-black item">
+        <p class="ml-3 fw-b fs-xl cec"><span style="color:#ffbc25;">(竞价单)</span> 招标单数</p>
+        <div class="ml-3 cex">{{datatotalzixunpurchease.zixun_total}}</div>    
+      </div>
+      <div class="bg-color-black item">
+        <p class="ml-3 fw-b fs-xl cec"><span style="color:#ffbc25;">(竞价单)</span> 未竞标单数</p>
+        <div class="ml-3 cex">{{datatotalzixunpurchease.not_feedback}}</div>    
+      </div>
+      <div class="bg-color-black item">
+        <p class="ml-3 fw-b fs-xl cec"><span style="color:#ffbc25;">(采购单)</span> 采购单数</p>
+        <div class="ml-3 cex">{{datatotalzixunpurchease.purchease_total}}</div>    
+      </div>
+      <div class="bg-color-black item">
+        <p class="ml-3 fw-b fs-xl cec"><span style="color:#ffbc25;">(采购单)</span> 未下单数</p>
+        <div class="ml-3 cex">{{datatotalzixunpurchease.purchease_wait_confirm}}</div>    
+      </div>
+      <!-- <div class="bg-color-black item">
+        <p class="ml-3 fw-b fs-xl cec"><span style="color:#ffbc25;">(采购单)</span> 采购下单数</p>
+        <div class="ml-3 cex">{{datatotalzixunpurchease.zixun_total}}</div>    
+      </div>
+      <div class="bg-color-black item">
+        <p class="ml-3 fw-b fs-xl cec"><span style="color:#ffbc25;">(采购单)</span> 未生产单数</p>
+        <div class="ml-3 cex">{{datatotalzixunpurchease.zixun_total}}</div>    
+      </div> -->
+      <div class="bg-color-black item" style="margin-bottom:0;">
+        <p class="ml-3 fw-b fs-xl cec"><span style="color:#ffbc25;">(未发货)</span> 单数</p>
+        <div class="ml-3 cex">{{datawaitsendtotal.order_num}}</div>    
+      </div>
+      <div class="bg-color-black item" style="margin-bottom:0;">
+        <p class="ml-3 fw-b fs-xl cec"><span style="color:#ffbc25;">(未发货)</span> 商品数</p>
+        <div class="ml-3 cex">{{datawaitsendtotal.wsend_num}}</div>    
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+// import CenterChart from '@/components/echart/center/centerChartRate'
+import asyncRequest from "@/apis/service/bigScreen";
+// import resToken from "@/mixins/resToken";
+export default {
+  data() {
+    return {
+
+      datatotalzixunpurchease:{},
+     
+      datawaitsendtotal:{},
+    }
+  },
+  mounted() {
+   this.initHttp()
+  },
+  methods: {
+  async initHttp(){
+    
+     let res = await asyncRequest.datatotalzixunpurchease();
+     if(res.code == 0){
+       this.datatotalzixunpurchease = res.data;
+      //  console.log(this.datatotalzixunpurchease)
+     }else{
+       this.$message.error(res.message)
+       return;
+     }
+
+    
+     let res_1 = await asyncRequest.datawaitsendtotal();
+     if(res_1.code == 0){
+      //  console.log(res_1)
+       this.datawaitsendtotal = res_1.data;
+      //  console.log(this.datawaitsendtotal)
+     }else{
+       this.$message.error(res_1.message)
+       return;
+     }
+   },
+
+
+   
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+#center {
+  display: flex;
+  flex-direction: column;
+  .up {
+    width: 100%;
+    display: flex;
+    flex-wrap: wrap;
+    justify-content: space-around;
+    .item {
+      border-radius: 6px;
+      padding-top: 8px;
+      margin-top: 8px;
+      margin-bottom: 82px;
+      width: 46%;
+      background: rgb(23, 28, 51);
+      height: 70px;
+      .dv-dig-flop {
+        width: 150px;
+        height: 30px;
+      }
+    }
+  }
+  .down {
+    padding: 6px 4px;
+    padding-bottom: 0;
+    width: 100%;
+    display: flex;
+    height: 255px;
+    justify-content: space-between;
+    .bg-color-black {
+      border-radius: 5px;
+    }
+    .ranking {
+      padding: 10px;
+      width: 59%;
+      .dv-scr-rank-board {
+        height: 225px;
+      }
+    }
+    .percent {
+      width: 40%;
+      display: flex;
+      flex-wrap: wrap;
+      .item {
+        width: 50%;
+        height: 120px;
+        
+        span {
+          margin-top: 8px;
+          font-size: 14px;
+          display: flex;
+          justify-content: center;
+        }
+      }
+      .water {
+        width: 100%;
+        .dv-wa-le-po {
+          height: 120px;
+        }
+      }
+    }
+  }
+
+  .cex{
+    color: #28ffcd;
+    width: 100%;
+    font-size: 22px;
+    // text-align: center;
+    font-weight: 500;
+    display: inline-block;
+    margin-top: 10px;
+  }
+  .cec{
+    color: #c3cbde;
+    width: 100%;
+    font-size: 16px;
+    // text-align: center;
+    font-weight: 500;
+    display: inline-block;
+  }
+}
+</style>

+ 207 - 0
src/views/bigScreen/datavScr/centerLeft1.vue

@@ -0,0 +1,207 @@
+<template>
+  <div id="centerLeft1">
+    <div class="bg-color-black">
+      <div class="d-flex pt-2 pl-2">
+        <div class="d-flex" style="display:flex;">
+          <span class="fs-xl text mx-2" style="margin-right:8px;">今日销量与采购</span>
+          <dv-decoration-3 class="dv-dec-3" />
+        </div>
+      </div>
+      <div class="d-flex jc-center">
+      </div>
+
+      <div class="bottom-data">
+        <h3 class="title">今日销量</h3>
+        <div class="item-box mt-2">
+            <div class="d-flex">
+              <span class="cex">{{datatodaysalesvolume.orders_number}}</span>
+            </div>
+            <p class="text" style="text-align: center;">
+              今日销售单数
+              <span class="colorYellow">(单)</span>
+            </p>
+        </div>
+
+        <div class="item-box mt-2">
+            <div class="d-flex">
+              <span class="cex">{{datatodaysalesvolume.money | getNum}}</span>
+            </div>
+            <p class="text" style="text-align: center;">
+              今日销售金额
+              <span class="colorYellow">(元)</span>
+            </p>
+        </div>
+        <h3 class="title">今日采购</h3>
+        <div class="item-box mt-2">
+            <div class="d-flex">
+              <span class="cex">{{datatodaypurchase.orders_number}}</span>
+            </div>
+            <p class="text" style="text-align: center;">
+              采购订单数量
+              <span class="colorYellow">(单)</span>
+            </p>
+        </div>
+        <div class="item-box mt-2">
+            <div class="d-flex">
+              <span class="cex">{{datatodaypurchase.good_num}}</span>
+            </div>
+            <p class="text" style="text-align: center;">
+              商品数量
+              <span class="colorYellow">(件)</span>
+            </p>
+        </div>
+        <div class="item-box mt-2">
+            <div class="d-flex">
+              <span class="cex">{{datatodaypurchase.consult_info_total}}</span>
+            </div>
+            <p class="text" style="text-align: center;">
+              竞价单数
+              <span class="colorYellow">(单)</span>
+            </p>
+        </div>
+        <div class="item-box mt-2">
+            <div class="d-flex">
+              <span class="cex">{{datatodaypurchase.consult_bids_total}}</span>
+            </div>
+            <p class="text" style="text-align: center;">
+              反馈商品数
+              <span class="colorYellow">(件)</span>
+            </p>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import asyncRequest from "@/apis/service/bigScreen";
+// import resToken from "@/mixins/resToken";
+export default {
+  data() {
+    return {
+   
+      datatodaysalesvolume:{},
+  
+      datatodaypurchase:{},
+    }
+  },
+  mounted() {
+   this.initHttp()
+  //  console.log(this.getNum(18990.230))
+  },
+  methods: {
+  async initHttp(){
+    
+     let res = await asyncRequest.datatodaysalesvolume();
+     console.log(res)
+     if(res.code == 0){
+       this.datatodaysalesvolume = res.data;
+      //  console.log(this.datatodaysalesvolume)
+     }else{
+       this.$message.error(res.message)
+       return;
+     }
+
+     let res_1 = await asyncRequest.datatodaypurchase();
+     if(res_1.code == 0){
+      //  console.log(res_1)
+       this.datatodaypurchase = res_1.data;
+      //  console.log(this.datatodaypurchase)
+     }else{
+       this.$message.error(res_1.message)
+       return;
+     }
+   },
+  getNum(num){
+    num = Number(num);
+    if(!num) return '0.00';
+    if(num > 10000 || num < -10000){
+      const moneys = num/10000
+      const realVal =parseFloat(moneys).toFixed(2);
+      return realVal+"万"
+    }else{
+      return num.toFixed(2)
+    }
+  }
+
+   
+  },
+
+}
+</script>
+
+<style lang="scss" scoped>
+$box-width: 300px;
+$box-height: 410px;
+
+#centerLeft1 {
+  padding: 16px;
+  height: $box-height;
+  width: 100%;
+  border-radius: 10px;
+  .bg-color-black {
+    height: $box-height - 30px;
+    border-radius: 10px;
+  }
+  .text {
+    font-size: 12px;
+
+    color: #c3cbde;
+  }
+  .dv-dec-3 {
+    position: relative;
+    width: 100px;
+    height: 20px;
+    top: -3px;
+  }
+
+  .bottom-data {
+    .item-box {
+      & > div {
+        padding-right: 5px;
+      }
+      font-size: 14px;
+      float: right;
+      position: relative;
+      width: 50%;
+      color: #d3d6dd;
+      margin-bottom: 20px;
+      .dv-digital-flop {
+        width: 120px;
+        height: 30px;
+      }
+      // 金币
+      .coin {
+        position: relative;
+        top: 6px;
+        font-size: 20px;
+        color: #ffc107;
+      }
+      .colorYellow {
+        color: yellowgreen;
+      }
+      p {
+        text-align: center;
+      }
+    }
+  }
+  .cex{
+    color: #28ffcd;
+    width: 100%;
+    font-size: 18px;
+    text-align: center;
+    font-weight: 800;
+    display: inline-block;
+    margin: 5px 10px;
+  }
+  .title{
+    width: 100%;
+    float: left;
+    font-size: 16px;
+    margin-top: 40px;
+    margin-bottom: 15px;
+    text-indent: 10px;
+    color: #ffbc25;
+  }
+}
+</style>

+ 171 - 0
src/views/bigScreen/datavScr/centerLeft2.vue

@@ -0,0 +1,171 @@
+<template>
+  <div id="centerLeft1">
+    <div class="bg-color-black">
+      <div class="d-flex pt-2 pl-2">
+        <div class="d-flex"  style="display:flex;">
+          <span class="fs-xl text mx-2" style="margin-right:8px;">今日销冠</span>
+          <dv-decoration-1 class="dv-dec-1" />
+        </div>
+      </div>
+      <div class="cc">
+        <div class="bottom-data">
+          <h3 class="title">今日销冠</h3>
+          <div class="item-box mt-2">
+            <div class="d-flex">
+              <span class="cex">{{datatodaysaleschampion.orders}}</span>
+            </div>
+            <p class="text" style="text-align: center">
+              今日销售单数
+              <span class="colorYellow">(单)</span>
+            </p>
+          </div>
+          <div class="item-box mt-2">
+            <div class="d-flex">
+              <span class="cex">{{datatodaysaleschampion.money | getNum}}</span>
+            </div>
+            <p class="text" style="text-align: center">
+              今日销售金额
+              <span class="colorYellow">(元)</span>
+            </p>
+          </div>
+        </div>
+
+
+        <div class="nameImg">
+          <!-- <img src="../assets/logo.png" alt=""> -->
+          <p>{{datatodaysaleschampion.company}}<br>{{datatodaysaleschampion.nickname}}</p>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import asyncRequest from "@/apis/service/bigScreen";
+// import resToken from "@/mixins/resToken";
+export default {
+   data() {
+    return {
+      
+      datatodaysaleschampion:{},
+    }
+  },
+  mounted() {
+   this.initHttp()
+  },
+  methods: {
+  async initHttp(){
+    
+     let res = await asyncRequest.datatodaysaleschampion();
+     if(res.code == 0){
+       this.datatodaysaleschampion = res.data;
+      //  console.log(this.datatodaysaleschampion)
+     }else{
+       this.$message.error(res.message)
+     }
+     
+   }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+#centerLeft1 {
+  $box-width: 300px;
+  $box-height: 410px;
+  padding: 16px;
+  height: $box-height;
+  min-width: $box-width;
+  border-radius: 5px;
+  .bg-color-black {
+    height: $box-height - 30px;
+    border-radius: 10px;
+  }
+  .text {
+    font-size: 12px;
+
+    color: #c3cbde;
+  }
+  .dv-dec-1 {
+    position: relative;
+    width: 100px;
+    height: 20px;
+    top: -3px;
+  }
+  .chart-box {
+    margin-top: 16px;
+    width: 170px;
+    height: 170px;
+    .active-ring-name {
+      padding-top: 10px;
+    }
+  }
+  .bottom-data {
+    .item-box {
+      & > div {
+        padding-right: 5px;
+      }
+      font-size: 14px;
+      float: right;
+      position: relative;
+      width: 50%;
+      color: #d3d6dd;
+      .dv-digital-flop {
+        width: 120px;
+        height: 30px;
+      }
+      // 金币
+      .coin {
+        position: relative;
+        top: 6px;
+        font-size: 20px;
+        color: #ffc107;
+      }
+      .colorYellow {
+        color: yellowgreen;
+      }
+      p {
+        text-align: center;
+      }
+    }
+  }
+  .cex {
+    color: #28ffcd;
+    width: 100%;
+    font-size: 18px;
+    text-align: center;
+    font-weight: 800;
+    display: inline-block;
+    margin: 5px 10px;
+  }
+  .title {
+    width: 100%;
+    float: left;
+    font-size: 16px;
+    margin-top: 40px;
+    margin-bottom: 15px;
+    text-indent: 10px;
+    color: #ffbc25;
+  }
+  .nameImg{
+    width: 100%;
+    margin: 70px 0 0 0;
+    float: left;
+    // img{
+    //   width: 50%;
+    //   height: 90px;
+    //   display: block;
+    //   margin: 30px auto 5px;
+
+    // }
+    p{
+      width: 100%;
+      text-align: center;
+      font-size: 20px;
+      line-height: 40px;
+      font-weight: 600;
+      color: #ffbc25;
+    }
+  }
+}
+</style>

+ 115 - 0
src/views/bigScreen/datavScr/centerRight1.vue

@@ -0,0 +1,115 @@
+<template>
+  <div id="centerRight1">
+    <div class="bg-color-black">
+      <div class="d-flex pt-2 pl-2">
+        <!-- <span>
+          <icon name="chart-line" class="text-icon"></icon>
+        </span> -->
+        <div class="d-flex">
+          <span class="fs-xl text mx-2">今日订单</span>
+        </div>
+      </div>
+      <div class="d-flex jc-center body-box">
+        <dv-scroll-board class="dv-scr-board" :config="config" v-if="config.data.length>0"  />
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import asyncRequest from "@/apis/service/bigScreen";
+// import resToken from "@/mixins/resToken";
+export default {
+  data() {
+    return {
+      config: {
+        header: ['部门', '单数', '金额'],
+        data: [
+          
+
+        ],
+        // rowNum: 5, //表格行数
+        headerHeight: 35,
+        headerBGC: '#0f1325', //表头
+        oddRowBGC: '#0f1325', //奇数行
+        evenRowBGC: '#171c33', //偶数行
+        index: true,
+        columnWidth: [50],
+        align: ['center'],
+
+        datatodaysale:[],
+      }
+    }
+  },
+  mounted() {
+    // this.rowNum = this.config.data.length
+
+    this.initHttp()
+  },
+  methods:{
+    async initHttp(){
+     let res = await asyncRequest.datatodaysale();
+     if(res.code == 0){
+       res.data.forEach((item,index) => {
+        item.total_price = this.getNum(item.total_price)
+        this.$set(this.config.data, index, [item.companyName,item.total_order,item.total_price])
+        
+      });
+     }else{
+       this.$message.error(res.message)
+       return;
+     }
+   },
+   getNum(num){
+        num = Number(num);
+        if(!num) return '0.00';
+        if(num > 10000 || num < -10000){
+          const moneys = num/10000
+          const realVal =parseFloat(moneys).toFixed(2);
+          return realVal+"万"
+        }else{
+          return num.toFixed(2)
+        }
+      }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+$box-height: 410px;
+$box-width: 400px;
+#centerRight1 {
+  padding: 16px;
+  padding-top: 20px;
+  height: $box-height;
+  width: 100%;
+  // background: orange;
+  border-radius: 5px;
+  .bg-color-black {
+    height: $box-height - 30px;
+    border-radius: 10px;
+  }
+  .text {
+    font-size: 12px;
+    // margin-bottom: 8px;
+    color: #c3cbde;
+    display: inline-block;
+  }
+  .body-box {
+    border-radius: 10px;
+    overflow: hidden;
+    .dv-scr-board {
+      width: 100%;
+      height: 340px;
+      /deep/ .rows{
+    height: 320px !important;
+  }
+      /deep/ .row-item{
+    height: 75px !important;
+    line-height: 75px !important;
+  }
+    }
+  }
+ 
+}
+</style>

+ 77 - 0
src/views/bigScreen/datavScr/centerRight2.vue

@@ -0,0 +1,77 @@
+<template>
+  <div id="centerRight2">
+    <div class="bg-color-black">
+      <div class="d-flex pt-2 pl-2">
+        <span>
+          <icon name="align-left" class="text-icon"></icon>
+        </span>
+        <span class="fs-xl text mx-2">待处理</span>
+      </div>
+      <div class="d-flex jc-center body-box">
+        <dv-scroll-board class="dv-scr-board" :config="config" />
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+// import centerRight2Chart1 from '@/components/echart/centerRight/centerRightChart'
+
+export default {
+  data() {
+    return {
+      config: {
+        header: ['待处理', '单数', '金额'],
+        data: [
+          ['待开票', '123124', "150000000"],
+          ['待回款', '123124-2', "100"],
+          ['待回票', 'dev-123124', "100"],
+          ['待付款', 'dev-123124', "100"]
+
+        ],
+        // rowNum: 5, //表格行数
+        headerHeight: 35,
+        headerBGC: '#0f1325', //表头
+        oddRowBGC: '#0f1325', //奇数行
+        evenRowBGC: '#171c33', //偶数行
+        index: true,
+        columnWidth: [50],
+        align: ['center']
+      }
+    }
+  },
+  // components: { centerRight2Chart1 }
+}
+</script>
+
+<style lang="scss" scoped>
+#centerRight2 {
+  $box-height: 401px;
+  $box-width: 380px;
+  padding: 5px;
+  height: $box-height;
+  width: $box-width;
+  border-radius: 5px;
+  display: flex;
+  // padding-top: 10px;
+  .bg-color-black {
+    padding: 5px;
+    height: $box-height;
+    width: $box-width;
+    border-radius: 10px;
+  }
+  .text {
+    font-size: 12px;
+
+    color: #c3cbde;
+  }
+  .body-box {
+    border-radius: 10px;
+    overflow: hidden;
+    .dv-scr-board {
+      width: 360px;
+      height: 340px;
+    }
+  }
+}
+</style>

+ 215 - 0
src/views/bigScreen/datavScr/index.vue

@@ -0,0 +1,215 @@
+<template>
+  <div class="pagePadding box">
+    <div id="index" ref="appRef" v-if="powers && powers.length > 0 && powers.some((item) => item == '001')">
+      <div class="bg">
+        <dv-loading v-if="loading">Loading...</dv-loading>
+        <div v-else class="host-body">
+          <div class="d-flex jc-center">
+            <dv-decoration-10 class="dv-dec-10" />
+            <div class="d-flex jc-center">
+              <dv-decoration-8 class="dv-dec-8" :color="decorationColor" />
+              <div class="title">
+                <span class="title-text">数据可视化面板</span>
+                <dv-decoration-6
+                  class="dv-dec-6"
+                  :reverse="true"
+                  :color="['#50e3c2', '#67a1e5']"
+                />
+                
+              </div>
+              <dv-decoration-8
+                class="dv-dec-8"
+                :reverse="true"
+                :color="decorationColor"
+              />
+            </div>
+            <dv-decoration-10 class="dv-dec-10-s" />
+          </div>
+
+          <!-- 第二行 -->
+          <div class="d-flex jc-between px-2">
+            <div class="d-flex aside-width">
+              <div class="react-left ml-4 react-l-s">
+                <span class="react-left"></span>
+                <span class="text">今日相关</span>
+              </div>
+              <div class="react-left ml-3">
+                <span class="text">数据概览</span>
+              </div>
+            </div>
+            <div class="d-flex aside-width">
+              <div class="react-right bg-color-blue mr-3">
+                <span class="text fw-b">待处理</span>
+              </div>
+              <div class="react-right mr-4 react-l-s">
+                <span class="react-after"></span>
+                <span class="text" style="white-space: nowrap;"
+                  >{{ dateYear }} {{ dateWeek }} {{ dateDay }}</span
+                >
+              </div>
+            </div>
+          </div>
+
+          <div class="body-box" v-if="initFlag">
+            <!-- 第三行数据 -->
+            <div class="content-box">
+              <div>
+                <dv-border-box-12>
+                  <centerLeft1 />
+                </dv-border-box-12>
+              </div>
+              <div>
+                <dv-border-box-12>
+                  <centerLeft2 />
+                </dv-border-box-12>
+              </div>
+              <!-- 中间 -->
+              <div>
+                <center />
+              </div>
+              <!-- 中间 -->
+              <!-- <div>
+              
+              <dv-border-box-13>
+                <centerRight2 />
+              </dv-border-box-13>
+            </div> -->
+              <div>
+                <dv-border-box-13>
+                  <centerRight1 />
+                </dv-border-box-13>
+              </div>
+            </div>
+
+            <!-- 第四行数据 -->
+            <div class="bototm-box">
+              <dv-border-box-13>
+                <bottomLeft />
+              </dv-border-box-13>
+              <dv-border-box-12>
+                <bottomRight />
+              </dv-border-box-12>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div v-else>
+      <no-auth></no-auth>
+    </div>
+  </div>
+</template>
+
+<script>
+// import drawMixin from "../drawMixin";
+import { mapGetters } from "vuex";
+import resToken from "@/mixins/resToken";
+import { formatTime } from "../index.js";
+import centerLeft1 from "./centerLeft1";
+import centerLeft2 from "./centerLeft2";
+import centerRight1 from "./centerRight1";
+import centerRight2 from "./centerRight2";
+import center from "./center";
+import bottomLeft from "./bottomLeft";
+import bottomRight from "./bottomRight";
+
+export default {
+  mixins: [ resToken ],
+  computed: {
+    ...mapGetters(["tablebtnSize", "searchSize", "size"]),
+    powers() {
+      let tran =
+        this.$store.getters.btnList.find(
+          (item) => item.menu_route == "datavScr"
+        ) || {};
+      if (tran && tran.action && tran.action.length > 0) {
+        return tran.action;
+      } else {
+        return [];
+      }
+    },
+  },
+  data() {
+    return {
+      timing: null,
+      loading: true,
+      dateDay: null,
+      dateYear: null,
+      dateWeek: null,
+      weekday: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"],
+      decorationColor: ["#568aea", "#000000"],
+      initFlag:true,
+      time:null,
+    };
+  },
+  components: {
+    centerLeft1,
+    centerLeft2,
+    centerRight1,
+    centerRight2,
+    center,
+    bottomLeft,
+    bottomRight,
+  },
+  mounted() {
+    this.timeFn();
+    this.cancelLoading();
+    this.timeInit()
+  },
+  beforeDestroy() {
+    clearInterval(this.timing);
+    clearInterval(this.time);
+    this.timing = null;
+    this.time = null;
+  },
+  methods: {
+    timeFn() {
+      this.timing = setInterval(() => {
+        this.dateDay = formatTime(new Date(), "HH: mm: ss");
+        this.dateYear = formatTime(new Date(), "yyyy-MM-dd");
+        this.dateWeek = this.weekday[new Date().getDay()];
+      }, 1000);
+    },
+    cancelLoading() {
+      setTimeout(() => {
+        this.loading = false;
+      }, 500);
+    },
+
+    //一分钟更新一次数据
+    timeInit(){
+      this.time = null;
+      this.time = setInterval(()=>{
+        console.log(111)
+        this.initFlag = false;
+        setTimeout(()=>{
+          this.$message({
+            message: '更新数据成功',
+            type: 'success'
+          });
+          this.initFlag = true;
+        },500)
+      },60000)
+    }
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+@import "../assetsDv/scss/index.scss";
+@import "../assetsDv/scss/style.scss";
+
+.box {
+  width: 100%;
+  height: 100%;
+  background: #000;
+  position: relative;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  margin: auto;
+  
+  
+}
+</style>

+ 57 - 0
src/views/bigScreen/drawMixin.js

@@ -0,0 +1,57 @@
+// 屏幕适配 mixin 函数
+
+// * 默认缩放值
+const scale = {
+  width: '1',
+  height: '1',
+}
+
+// * 设计稿尺寸(px)
+const baseWidth = 1920
+const baseHeight = 1080
+
+// * 需保持的比例(默认1.77778)
+const baseProportion = parseFloat((baseWidth / baseHeight).toFixed(5))
+
+export default {
+  data() {
+    return {
+      // * 定时函数
+      drawTiming: null
+    }
+  },
+  mounted () {
+    this.calcRate()
+    window.addEventListener('resize', this.resize)
+  },
+  beforeDestroy () {
+    window.removeEventListener('resize', this.resize)
+  },
+  methods: {
+    calcRate () {
+      const appRef = this.$refs["appRef"]
+      if (!appRef) return 
+      // 当前宽高比
+      const currentRate = parseFloat((window.innerWidth / window.innerHeight).toFixed(5))
+      if (appRef) {
+        if (currentRate > baseProportion) {
+          // 表示更宽
+          scale.width = ((window.innerHeight * baseProportion) / baseWidth).toFixed(5)
+          scale.height = (window.innerHeight / baseHeight).toFixed(5)
+          appRef.style.transform = `scale(${scale.width}, ${scale.height}) translate(-50%, -50%)`
+        } else {
+          // 表示更高
+          scale.height = ((window.innerWidth / baseProportion) / baseHeight).toFixed(5)
+          scale.width = (window.innerWidth / baseWidth).toFixed(5)
+          appRef.style.transform = `scale(${scale.width}, ${scale.height}) translate(-50%, -50%)`
+        }
+      }
+    },
+    resize () {
+      clearTimeout(this.drawTiming)
+      this.drawTiming = setTimeout(() => {
+        this.calcRate()
+      }, 200)
+    }
+  },
+}

+ 51 - 0
src/views/bigScreen/index.js

@@ -0,0 +1,51 @@
+/**
+ * @param {Function} fn 防抖函数
+ * @param {Number} delay 延迟时间
+ */
+export function debounce(fn, delay) {
+  var timer;
+  return function () {
+    var context = this;
+    var args = arguments;
+    clearTimeout(timer);
+    timer = setTimeout(function () {
+      fn.apply(context, args);
+    }, delay);
+  };
+}
+
+/**
+ * @param {date} time 需要转换的时间
+ * @param {String} fmt 需要转换的格式 如 yyyy-MM-dd、yyyy-MM-dd HH:mm:ss
+ */
+export function formatTime(time, fmt) {
+  if (!time) return '';
+  else {
+    const date = new Date(time);
+    const o = {
+      'M+': date.getMonth() + 1,
+      'd+': date.getDate(),
+      'H+': date.getHours(),
+      'm+': date.getMinutes(),
+      's+': date.getSeconds(),
+      'q+': Math.floor((date.getMonth() + 3) / 3),
+      S: date.getMilliseconds(),
+    };
+    if (/(y+)/.test(fmt))
+      fmt = fmt.replace(
+        RegExp.$1,
+        (date.getFullYear() + '').substr(4 - RegExp.$1.length)
+      );
+    for (const k in o) {
+      if (new RegExp('(' + k + ')').test(fmt)) {
+        fmt = fmt.replace(
+          RegExp.$1,
+          RegExp.$1.length === 1
+            ? o[k]
+            : ('00' + o[k]).substr(('' + o[k]).length)
+        );
+      }
+    }
+    return fmt;
+  }
+}

+ 404 - 0
src/views/dataCorrection/cgMessage/addEdit.vue

@@ -0,0 +1,404 @@
+<template>
+  <el-dialog
+    title="采购单详情"
+    v-loading="loading"
+    :center="true"
+    align="left"
+    top="2vh"
+    width="1040px"
+    :close-on-click-modal="false"
+    :visible.sync="showModelThis"
+    element-loading-text="拼命加载中"
+    element-loading-spinner="el-icon-loading"
+    element-loading-background="rgba(0, 0, 0, 0.8)"
+    @close="showModelThis = false"
+  >
+    <el-card style="margin-top: -20px">
+      <ex-table
+        v-loading="loading"
+        :table="table"
+        :data="tableData"
+        :columns="columns"
+        :page="pageInfo"
+        :size="size"
+        @page-curr-change="handlePageChange"
+        @page-size-change="handleSizeChange"
+        @screen-reset="
+          pageInfo.curr = 1;
+          parmValue.page = 1;
+          searchList();
+        "
+        @screen-submit="
+          pageInfo.curr = 1;
+          parmValue.page = 1;
+          searchList();
+        "
+      >
+        <template #table-header="{ selection }">
+          <div style="width: 100%">
+            <el-row style="padding: 0 0 0 80px">
+              <el-col :span="4" style="width: 150px">
+                <el-select
+                  :size="searchSize"
+                  v-model="parmValue.status"
+                  filterable
+                  clearable
+                  disabled
+                  placeholder="采购单状态"
+                  style="width: 100%"
+                  @change="
+                    pageInfo.curr = 1;
+                    parmValue.page = 1;
+                    searchList();
+                  "
+                >
+                  <el-option
+                    v-for="item in statusOptions"
+                    :key="'status' + item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  />
+                </el-select>
+              </el-col>
+
+              <el-col :span="4" style="width: 130px; padding: 0 0 0 10px">
+                <el-dropdown @command="handleClick($event)" :size="searchSize">
+                  <el-button :size="searchSize" style="width: 120px">
+                    {{ sselect }}
+                    <i
+                      class="el-icon-arrow-down el-icon--right"
+                      :size="searchSize"
+                    ></i>
+                  </el-button>
+                  <el-dropdown-menu slot="dropdown">
+                    <el-dropdown-item
+                      v-for="item in options"
+                      :key="item"
+                      :command="item"
+                      >{{ item }}</el-dropdown-item
+                    >
+                  </el-dropdown-menu>
+                </el-dropdown>
+              </el-col>
+              <el-col :span="4" style="width: 303px; padding: 0 0 0 10px">
+                <period-date-picker
+                  :type="1"
+                  :width="'135px'"
+                  :size="searchSize"
+                  :start="timeOBJ.start"
+                  :end="timeOBJ.end"
+                  @timeReturned="handleTime"
+                />
+              </el-col>
+              <el-col :span="3" style="width: 66px; float: right">
+                <el-button
+                  :size="searchSize"
+                  type="primary"
+                  style="float: right; margin-left: 5px"
+                  @click="searchList"
+                >
+                  刷新
+                </el-button>
+              </el-col>
+            </el-row>
+            <el-row style="padding: 10px 0 0 0">
+              <el-col :span="6" style="width: 500px; padding: 0 0 0 0px">
+                <el-input
+                  clearable
+                  placeholder="关键字"
+                  v-model="input"
+                  maxlength="40"
+                  :size="searchSize"
+                  class="input-with-select"
+                  @blur="
+                    pageInfo.curr = 1;
+                    parmValue.page = 1;
+                    searchList();
+                  "
+                >
+                  <el-select
+                    v-model="select"
+                    style="width: 125px"
+                    slot="prepend"
+                    placeholder="关键字类型"
+                    @change="
+                      pageInfo.curr = 1;
+                      parmValue.page = 1;
+                      searchList();
+                    "
+                  >
+                    <el-option label="采购单编号" value="1"></el-option>
+                    <!-- <el-option label="入库单编号" value="2"></el-option> -->
+                    <!-- 列表未渲染备库编号,注释 -->
+                    <!-- <el-option label="备库编号" value="3"></el-option> -->
+                    <el-option label="商品成本编号" value="4"></el-option>
+                    <el-option label="商品名称" value="5"></el-option>
+                    <el-option label="采购员" value="6"></el-option>
+                    <el-option label="采购供应商编号" value="7"></el-option>
+                    <el-option label="订单编号" value="8"></el-option>
+                  </el-select>
+                </el-input>
+              </el-col>
+              <el-col :span="4" style="width: 66px; float: right">
+                <el-button
+                  type="warning"
+                  class="fr"
+                  :size="searchSize"
+                  @click="restSearch"
+                >
+                  重置
+                </el-button>
+              </el-col>
+              <!-- 暂时注释,下版需要导出 -->
+              <el-col :span="4" style="width: 66px; float: right">
+                <el-button
+                  type="primary"
+                  style="margin-left: 30px"
+                  @click="submit(selection)"
+                  :size="searchSize"
+                  class="fr"
+                >
+                  提交
+                </el-button>
+              </el-col>
+            </el-row>
+          </div>
+        </template>
+        <template #good_name="{ scope }">
+          <span>{{ scope.row.good_name }}</span>
+          <span v-for="(si, i) in scope.row.speclist" :key="si.spec_id + i">
+            {{ i === 0 ? "__" : "--" }}{{ si.spec_name }}[{{ si.spec_value }}]
+          </span>
+        </template>
+        <template #status="{ scope }">
+          <el-tag
+            :size="tablebtnSize"
+            v-text="
+              (
+                statusOptions.find((item) => item.value == scope.row.status) ||
+                {}
+              ).label || '--'
+            "
+          ></el-tag>
+        </template>
+        <template #order_type="{ scope }">
+          <el-tag
+            :size="tablebtnSize"
+            v-text="
+              (
+                cg_order_type_options.find(
+                  (item) => item.value == scope.row.order_type
+                ) || {}
+              ).label || '--'
+            "
+          ></el-tag>
+        </template>
+      </ex-table>
+    </el-card>
+  </el-dialog>
+</template>
+
+<script>
+import asyncRequest from "@/apis/service/dataCorrection/cgMessage";
+import mixinPage from "@/mixins/elPaginationHandle";
+import { mapGetters } from "vuex";
+import resToken from "@/mixins/resToken";
+
+import { columns, statusOptions } from "./columns";
+import { cg_order_type_options } from "@/assets/js/statusList";
+export default {
+  mixins: [mixinPage, resToken],
+  props: ["showModel"],
+  computed: {
+    ...mapGetters(["tablebtnSize", "searchSize", "size"]),
+  },
+  watch: {
+    showModel: function (val) {
+      this.showModelThis = val;
+      if (val) {
+        this.restSearch();
+      }
+    },
+    showModelThis(val) {
+      if (!val) {
+        this.$emit("cancel");
+      }
+    },
+  },
+  data() {
+    return {
+      showModelThis: this.showModel,
+      select: "1",
+      input: "",
+      timeOBJ: {
+        start: "", //起始时间
+        end: "", // 结束时间
+      },
+      options: ["创建时间", "最晚入库时间"],
+      sselect: "创建时间",
+      // 状态
+      statusOptions: statusOptions,
+      cg_order_type_options,
+
+      loading: false,
+      showModel: false,
+      parmValue: {
+        bk_code: "", // 备库编码
+        orderCode: "", // 订单编号
+        wsm_in_code: "", // 入库单号
+        cgdNo: "", // 采购单编码
+        apply_name: "", // 申请人
+        good_name: "", // 产品名称
+        good_code: "", // 产品属性编号
+        status: "0", //状态
+        wsm_code: "", //入货仓库编码
+        start: "", //新建起始时间
+        end: "", // 新建结束时间
+        last_start: "", //最后入库时间开始
+        last_end: "", //最后入库时间结束
+        page: 1, // 页码
+        size: 15, // 每页显示条数
+        supplierNo: "",
+        wsm_supplierNo: "",
+      },
+      tableData: [],
+      // 表格 - 数据
+      tableData: [],
+      // 表格 - 参数
+      table: {
+        stripe: true,
+        border: true,
+        _defaultHeader_: ["setcol"],
+      },
+      // 表格 - 分页
+      pageInfo: {
+        size: 15,
+        curr: 1,
+        total: 0,
+      },
+      // 表格 - 列参数
+      columns: columns,
+    };
+  },
+
+  methods: {
+    //提交
+    async submit(selection) {
+      if (selection.length === 0) {
+        this.$message.warning("至少选择一条采购单!");
+        return;
+      }
+
+      if (selection.length != 1) {
+        this.$message.warning("只能选中一条数据!");
+        return;
+      }
+
+      const { cgdNo } = selection[0];
+      this.showModelThis = false;
+      // 刷新
+      this.$emit("refresh", cgdNo || "");
+    },
+
+    restSearch() {
+      this.sselect = "创建时间";
+      this.select = "1";
+      this.input = "";
+      this.timeOBJ = {
+        start: "", //起始时间
+        end: "", // 结束时间
+      };
+      this.parmValue = {
+        bk_code: "", // 备库编码
+        orderCode: "", // 订单编号
+        wsm_in_code: "", // 入库单号
+        cgdNo: "", // 采购单编码
+        apply_name: "", // 申请人
+        good_name: "", // 产品名称
+        good_code: "", // 产品属性编号
+        status: "0", //状态
+        wsm_code: "", //入货仓库编码
+        start: "", //新建起始时间
+        end: "", // 新建结束时间
+        last_start: "", //最后入库时间开始
+        last_end: "", //最后入库时间结束
+        page: 1, // 页码
+        size: 15, // 每页显示条数
+      };
+      // 表格 - 分页
+      this.pageInfo = {
+        size: 15,
+        curr: 1,
+        total: 0,
+      };
+      this.searchList();
+    },
+    async handleClick(e) {
+      this.sselect = e;
+      this.parmValue.start = e === "创建时间" ? this.timeOBJ.start : "";
+      this.parmValue.end = e === "创建时间" ? this.timeOBJ.end : "";
+      this.parmValue.last_start = e !== "创建时间" ? this.timeOBJ.start : "";
+      this.parmValue.last_end = e !== "创建时间" ? this.timeOBJ.end : "";
+      if (
+        !(
+          (this.timeOBJ.start !== "" && this.timeOBJ.end === "") ||
+          (this.timeOBJ.start === "" && this.timeOBJ.end !== "")
+        )
+      ) {
+        this.parmValue.page = 1;
+        this.pageInfo.curr = 1;
+        await this.searchList();
+      }
+    },
+
+    async searchList() {
+      if (
+        (this.timeOBJ.start !== "" && this.timeOBJ.end === "") ||
+        (this.timeOBJ.start === "" && this.timeOBJ.end !== "")
+      ) {
+        this.$message.warning("时间区间不完整!");
+        return;
+      }
+
+      this.loading = true;
+      this.parmValue.cgdNo = this.select === "1" ? this.input : ""; // 采购单编码
+      this.parmValue.wsm_in_code = this.select === "2" ? this.input : ""; // 入库单号
+      this.parmValue.bk_code = this.select === "3" ? this.input : ""; // 备库编码
+      this.parmValue.good_code = this.select === "4" ? this.input : ""; // 产品属性编号
+      this.parmValue.good_name = this.select === "5" ? this.input : ""; // 产品名称
+      this.parmValue.apply_name = this.select === "6" ? this.input : ""; // 申请人
+      this.parmValue.supplierNo = this.select === "7" ? this.input : ""; // 采购供应商编号
+      this.parmValue.orderCode = this.select === "8" ? this.input : ""; // 订单编号
+      // this.wsm_supplierNo = [];
+      const res = await asyncRequest.list(this.parmValue);
+      if (res && res.code === 0 && res.data) {
+        this.tableData = res.data.list;
+        this.pageInfo.total = Number(res.data.count);
+      } else if (res && res.code >= 100 && res.code <= 104) {
+        await this.logout();
+      } else {
+        this.tableData = [];
+        this.pageInfo.total = 0;
+      }
+      this.loading = false;
+    },
+    // 时间
+    async handleTime(e) {
+      if (e.startTime !== "") {
+        this.timeOBJ.start = e.startTime;
+      } else {
+        this.timeOBJ.start = "";
+      }
+      if (e.endTime !== "") {
+        this.timeOBJ.end = e.endTime;
+      } else {
+        this.timeOBJ.end = "";
+      }
+      await this.handleClick(this.sselect);
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 257 - 0
src/views/dataCorrection/cgMessage/columns.js

@@ -0,0 +1,257 @@
+const columns = [
+  // {
+  //   type: "expand",
+  //   _slot_: "expand",
+  //   fixed: "left",
+  //   _noset_: true,
+  // },
+  {
+    type: "selection",
+    fixed: "left",
+    _noset_: true
+  },
+  {
+    prop: "cgdNo",
+    label: "采购单编号",
+    width: "155px",
+  },
+  {
+    prop: "orderCode",
+    label: "订单编号",
+    width: "155px",
+  },
+  // {
+  //   prop: "bkcode",
+  //   label: "备库单编号",
+  //   width: "155px",
+  // },
+
+
+  // {
+  //   prop: "wsm_supplierNo",
+  //   label: "仓库公司编号",
+  //   width: "145px",
+  // },
+  // {
+  //   prop: "wsm_supplier",
+  //   label: "仓库公司名称",
+  //   width: "155px",
+  // },
+  // {
+  //   prop: "wsm_code",
+  //   label: "仓库编号",
+  //   width: "172px",
+  // },
+  // {
+  //   prop: "wsm_name",
+  //   label: "仓库名称",
+  //   width: "80px",
+  // },
+  {
+    prop: "spuCode",
+    label: "商品成本编号",
+    width: "158px",
+  },
+  {
+    prop: "good_name",
+    label: "商品名称",
+    _slot_: "good_name",
+    'min-width': "145px",
+  },
+
+
+  // 
+  // {
+  //   prop: "apply_name",
+  //   label: "申请人",
+  //   width: "60px",
+  // },
+  // {
+  //   prop: "sendtime",
+  //   label: "发货时间",
+  //   width: "60px",
+  // },
+  // {
+  //   prop: "send_num",
+  //   label: "发货数量",
+  //   width: "60px",
+  // },
+  // {
+  //   prop: "post_company",
+  //   label: "物流公司",
+  //   width: "60px",
+  // },
+  // {
+  //   prop: "post_code",
+  //   label: "物流单号",
+  //   width: "60px",
+  // },
+  // {
+  //   prop: "post_fee",
+  //   label: "物流费用",
+  //   width: "60px",
+  // },
+  // {
+  //   prop: "wsm_num",
+  //   label: "入库数量",
+  //   width: "60px",
+  // },
+  //  {
+  //   prop: "error_num",
+  //   label: "异常数量",
+  //   width: "60px",
+  // },
+  // {
+  //   prop: "check_name",
+  //   label: "验货人",
+  //   width: "60px",
+  // },
+  // 
+  {
+    prop: "good_price",
+    label: "单价",
+    width: "110px",
+  },
+  {
+    prop: "good_num",
+    label: "数量",
+    width: "110px",
+  },
+  {
+    prop: "total_fee",
+    label: "总货款",
+    width: "110px",
+  },
+  // {
+  //   prop: "send_num",
+  //   label: "已发货数量",
+  //   width: "110px",
+  // },
+  // {
+  //   prop: "wsend_num",
+  //   label: "未发货数量",
+  //   width: "105px",
+  // },
+  {
+    prop: "status",
+    label: "状态",
+    _slot_: "status",
+    width: "120px",
+  },
+  {
+    prop: "order_type",
+    label: "采购单来源",
+    _slot_: "order_type",
+    width: "110px",
+  },
+  
+  {
+    prop: "lasttime",
+    label: "预计最晚入库时间",
+    width: "145px",
+  },
+  {
+    prop: "supplierNo",
+    label: "采购供应商编号",
+    width: "145px",
+  },
+  {
+    prop: "supplier_name",
+    label: "采购供应商名称",
+    width: "155px",
+  },
+  {
+    prop: "cgder",
+    label: "采购员",
+    width: "60px",
+  },
+  {
+    prop: "addtime",
+    label: "创建时间",
+    width: "145px",
+  }
+
+]
+const ShowDataTableColumns=[
+  {
+    prop: "cgdNo",
+    label: "采购单编号",
+    span: 6
+  },
+  {
+    prop: "status",
+    label: "采购单状态",
+    _slot_: "status",
+    span: 6
+  },
+  {
+    prop: "order_type",
+    label: "采购单来源",
+    _slot_: "order_type",
+    span: 6
+  },
+  {
+    prop: "lasttime",
+    label: "要求入库时间",
+    span: 6
+  },
+ 
+  {
+    prop: "supplier_name",
+    label: "销售方公司",
+    _slot_: "supplier_name",
+  },
+  {
+    prop: "company",
+    label: "购买方公司",
+    _slot_: "company",
+  },
+
+  {
+    prop: "wsm",
+    label: "仓库信息",
+    _slot_: "wsm",
+  },
+ 
+ 
+ 
+  {
+    prop: "total_fee",
+    label: "采购总成本",
+    span: 6
+  },
+  {
+    prop: "good_price",
+    label: "采购单价",
+    span: 6
+  },
+  {
+    prop: "good_num",
+    label: "采购总数量",
+    span: 6
+  },
+  {
+    prop: "send_num",
+    label: "已发货数量",
+    span: 6
+  },
+  {
+    prop: "wsend_num",
+    label: "未发货数量",
+    span: 6
+  },
+  {
+    prop: "addtime",
+    label: "创建时间",
+    span: 6
+  },
+]
+const statusOptions = [
+  { value: "0", label: "待与供应商确认" },
+  { value: "1", label: "待入库" },
+  { value: "2", label: "部分入库" },
+  { value: "3", label: "入库完成" },
+  { value: "4", label: "已取消订单" },
+];
+
+export { columns, statusOptions, ShowDataTableColumns }

+ 458 - 0
src/views/dataCorrection/cgMessage/index.vue

@@ -0,0 +1,458 @@
+<template>
+  <div class="cgMessage pagePadding">
+    <div
+      class="box"
+      v-if="powers && powers.length > 0 && powers.some((item) => item == '001')"
+    >
+      <el-collapse v-model="activeNames" style="margin: -18px 0 0 0">
+        <el-collapse-item title="采购单信息" name="1" v-if="sitem">
+          <show-data-table
+            :newTime="newTime"
+            v-if="newTime !== ''"
+            :sitem="sitem"
+            :columns="ShowDataTableColumns"
+          >
+            <template slot="supplier_name">
+              <span>{{ sitem.supplier_name }}</span>
+              <el-popover placement="top" width="300" trigger="hover">
+                <ul>
+                  <li>
+                    <span>销售方公司编号:</span
+                    ><span>{{ sitem.supplierNo }}</span>
+                  </li>
+                </ul>
+                <i class="el-icon-warning-outline fr" slot="reference"></i>
+              </el-popover>
+            </template>
+            <template slot="company">
+              <span>{{ sitem.company }}</span>
+              <el-popover placement="top" width="300" trigger="hover">
+                <ul>
+                  <li>
+                    <span>购买方公司编号:</span
+                    ><span>{{ sitem.companyNo }}</span>
+                  </li>
+                </ul>
+                <i class="el-icon-warning-outline fr" slot="reference"></i>
+              </el-popover>
+            </template>
+
+            <template slot="status">
+              <el-tag
+                :size="'mini'"
+                :type="sitem.status == '0' ? 'warning' : ''"
+                v-text="
+                  (
+                    statusOptions.find((item) => item.value == sitem.status) ||
+                    {}
+                  ).label || '--'
+                "
+              ></el-tag>
+            </template>
+            <template slot="order_type">
+              <el-tag
+                :size="'mini'"
+                v-text="
+                  (
+                    cg_order_type_options.find(
+                      (item) => item.value == sitem.order_type
+                    ) || {}
+                  ).label || '--'
+                "
+              ></el-tag>
+              <el-popover
+                placement="top"
+                width="300"
+                v-if="sitem.order_type === '1'"
+                trigger="hover"
+              >
+                <ul>
+                  <li>
+                    <span>备库单编号:</span><span>{{ sitem.bkcode }}</span>
+                  </li>
+                </ul>
+                <i class="el-icon-warning-outline fr" slot="reference"></i>
+              </el-popover>
+            </template>
+
+            <template slot="wsm">
+              <span>{{ sitem.wsm_supplier }}/{{ sitem.wsm_name }}</span>
+              <el-popover placement="top" width="300" trigger="hover">
+                <ul>
+                  <li>
+                    <span>仓库公司编号:</span
+                    ><span>{{ sitem.wsm_supplierNo }}</span>
+                  </li>
+                  <li>
+                    <span>仓库名称编号:</span><span>{{ sitem.wsm_code }}</span>
+                  </li>
+                </ul>
+                <i class="el-icon-warning-outline fr" slot="reference"></i>
+              </el-popover>
+            </template>
+          </show-data-table>
+        </el-collapse-item>
+        <el-collapse-item title="商品信息" name="2" v-if="sitem">
+          <show-goods-data-table
+            :newTime="newTime"
+            v-if="newTime !== ''"
+            :type="sitem.order_type"
+            :skucode="sitem.skuCode"
+            :spucode="sitem.spuCode"
+            :iscgd="true"
+          />
+        </el-collapse-item>
+        <el-collapse-item title="修改信息" name="3">
+          <el-row>
+            <el-col :span="19">
+              <el-form
+                ref="ruleForm"
+                :model="ruleForm"
+                status-icon
+                :size="'mini'"
+                :rules="rulesThis"
+                label-width="130px"
+                class="demo-ruleForm"
+              >
+                <el-row>
+                  <el-col :span="10">
+                    <el-form-item label="采购单编号: " prop="cgdNo">
+                      <el-input
+                        v-model="ruleForm.cgdNo"
+                        readonly
+                        placeholder="请选择采购单"
+                        @click.native="centerDialogVisible = true"
+                      ></el-input>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="14">
+                    <el-form-item
+                      label="采购单销售方公司: "
+                      prop="supplierNo"
+                      label-width="150px"
+                    >
+                      <search-supplier
+                        :size="searchSize"
+                        :value="ruleForm.supplierNo"
+                        :placeholder="'采购单销售方公司'"
+                        :disabled="ruleForm.cgdNo === ''"
+                        :names="supplier_name"
+                        :isDetail="true"
+                        @searchChange="supplierChange"
+                      />
+                    </el-form-item>
+                  </el-col>
+
+                  <el-col :span="14" v-show="order_type + '' == '1'">
+                    <el-form-item
+                      label="采购单仓库信息: "
+                      prop="wsm_supplierNo"
+                    >
+                      <search-supplier
+                        :size="searchSize"
+                        :value="ruleForm.wsm_supplierNo"
+                        :placeholder="'仓库供应商公司'"
+                        :disabled="false"
+                        :names="wsm_supplier"
+                        :isDetail="true"
+                        @searchChange="wsm_supplierChange"
+                      />
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="10" v-show="order_type + '' == '1'">
+                    <el-form-item prop="wsm_code" label-width="10px">
+                      <search-stock
+                        :size="'mini'"
+                        :disabled="ruleForm.wsm_supplierNo.length === 0"
+                        :value="ruleForm.wsm_code"
+                        :placeholder="'仓库名称'"
+                        :isRelation="true"
+                        :isDetail="true"
+                        :wsmtype="'5'"
+                        :companyNo="
+                          sitem && sitem.companyNo ? sitem.companyNo : ''
+                        "
+                        :companyCode="wsm_supplierNo"
+                        :names="wsm_name"
+                        @searchChange="stockChange"
+                      />
+                    </el-form-item>
+                  </el-col>
+                </el-row>
+              </el-form>
+            </el-col>
+            <el-col :span="5" class="tr">
+              <el-button
+                type="primary"
+                size="mini"
+                class="fr"
+                style="margin: 0 0 0 15px"
+                @click="editSubmit"
+                >提交修改</el-button
+              >
+            </el-col>
+          </el-row>
+        </el-collapse-item>
+      </el-collapse>
+      <add-edit
+        :showModel="centerDialogVisible"
+        @refresh="refresh"
+        @cancel="centerDialogVisible = false"
+      />
+    </div>
+    <div v-else>
+      <no-auth></no-auth>
+    </div>
+  </div>
+</template>
+
+<script>
+import asyncRequest from "@/apis/service/dataCorrection/cgMessage";
+import { mapGetters } from "vuex";
+import resToken from "@/mixins/resToken";
+import addEdit from "./addEdit.vue";
+import { statusOptions, ShowDataTableColumns } from "./columns";
+import { cg_order_type_options } from "@/assets/js/statusList";
+export default {
+  mixins: [resToken],
+  components: {
+    addEdit,
+  },
+  computed: {
+    ...mapGetters(["tablebtnSize", "searchSize", "size"]),
+    powers() {
+      let tran =
+        this.$store.getters.btnList.find(
+          (item) => item.menu_route == "cgMessage"
+        ) || {};
+      if (tran && tran.action && tran.action.length > 0) {
+        return tran.action;
+      } else {
+        return [];
+      }
+    },
+  },
+  data() {
+    return {
+      //弹窗显隐
+      centerDialogVisible: false,
+      ruleForm: {
+        cgdNo: "",
+        supplierNo: [],
+        wsm_supplierNo: [],
+        wsm_code: [],
+      },
+      rules: {
+        cgdNo: [{ required: true, message: "请选择采购单", trigger: "blur" }],
+        supplierNo: [
+          {
+            message: "请选择采购单销售方公司",
+            required: true,
+            type: "array",
+            trigger: "blur",
+          },
+        ],
+        wsm_supplierNo: [
+          {
+            message: "请选择仓库供应商公司",
+            required: true,
+            type: "array",
+            trigger: "blur",
+          },
+        ],
+        wsm_code: [
+          {
+            message: "请选择仓库",
+            required: true,
+            type: "array",
+            trigger: "blur",
+          },
+        ],
+      },
+      rulesThis: this.rules,
+
+      wsm_supplier: "",
+      wsm_supplierNo: "",
+      wsm_name: "",
+      wsm_code: "",
+      supplierNo: "",
+      supplier_name: "",
+      order_type: "",
+      activeNames: ["0", "1", "2", "3", "4", "5", "10"],
+      sitem: null,
+      select: "1",
+      input: "",
+      timeOBJ: {
+        start: "", //起始时间
+        end: "", // 结束时间
+      },
+      options: ["创建时间", "最晚入库时间"],
+      sselect: "创建时间",
+      // 状态
+      statusOptions: statusOptions,
+      ShowDataTableColumns: ShowDataTableColumns,
+      cg_order_type_options,
+
+      loading: false,
+      showModel: false,
+    };
+  },
+  mounted() {
+    this.initForm();
+  },
+
+  methods: {
+    async initForm() {
+      this.loading = true;
+      this.rulesThis = this.rules;
+      await this.resetForm();
+      this.loading = false;
+    },
+    async resetForm() {
+      // 重置
+      await this.$nextTick(() => {
+        if (this.$refs.ruleForm) {
+          this.$refs.ruleForm.resetFields();
+          this.$refs.ruleForm.clearValidate();
+          this.sitem = null;
+          this.order_type = "";
+          this.ruleForm = {
+            cgdNo: "",
+            supplierNo: [],
+            wsm_supplierNo: [],
+            wsm_code: [],
+          };
+        }
+      });
+    },
+
+    //确认修改提交
+    async editSubmit() {
+      await this.$refs.ruleForm.validate(async (valid) => {
+        if (valid) {
+          if (!this.loading) {
+            this.loading = true;
+            let model = JSON.parse(JSON.stringify(this.ruleForm));
+            model.supplierNo = model.supplierNo.toString();
+            model.wsm_supplierNo = model.wsm_supplierNo.toString();
+            model.wsm_code = model.wsm_code.toString();
+            const { code, data, message } = await asyncRequest.cgdeditnew(
+              model
+            );
+
+            if (code === 0) {
+              this.$notify.success({
+                title: "提交成功!",
+                message: "",
+              });
+              this.loading = false;
+              await this.routeReGoto("cgMessageList", {});
+            } else if (code >= 100 && code <= 104) {
+              await this.logout();
+            } else {
+              this.$message.warning(message);
+            }
+            this.loading = false;
+          }
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+
+    async supplierChange(e) {
+      const { code, label } = e;
+      this.supplier_name = label || "";
+      this.supplierNo = code || "";
+      this.ruleForm.supplierNo = code ? [code] : [];
+      this.$refs.ruleForm.validateField("supplierNo");
+    },
+    async wsm_supplierChange(e) {
+      const { code, label } = e;
+      this.wsm_supplier = label || "";
+      this.wsm_supplierNo = code || "";
+      this.ruleForm.wsm_supplierNo = code ? [code] : [];
+      this.$refs.ruleForm.validateField("wsm_supplierNo");
+      this.wsm_name = "";
+      this.wsm_code = "";
+      this.ruleForm.wsm_code = [];
+      this.$refs.ruleForm.validateField("wsm_code");
+    },
+    async stockChange(e) {
+      const { code, label } = e;
+      this.wsm_name = label || "";
+      this.wsm_code = code || "";
+      this.ruleForm.wsm_code = code ? [code] : [];
+      this.$refs.ruleForm.validateField("wsm_code");
+    },
+
+    async initData() {
+      const { cgdNo } = this.ruleForm;
+      if (cgdNo) {
+        this.loading = true;
+
+        const { code, data, message } = await asyncRequest.detail({
+          cgdNo: cgdNo,
+        });
+        if (code === 0) {
+          this.sitem = data;
+          const { can } = this.sitem;
+          if (can && can.length > 0) {
+            this.sitem.class_cat = "";
+            can.forEach((x, i) => {
+              this.sitem.class_cat += i === 0 ? x.name : "/" + x.name;
+            });
+          }
+          const {
+            wsm_supplier,
+            wsm_supplierNo,
+            wsm_name,
+            wsm_code,
+            supplierNo,
+            supplier_name,
+            order_type,
+          } = this.sitem;
+          this.order_type = order_type || "";
+
+          this.supplierNo = supplierNo || "";
+          this.supplier_name = supplier_name || "";
+          this.ruleForm.supplierNo = supplierNo ? [supplierNo] : [];
+          if (this.order_type === "1" || this.order_type === "5") {
+            this.wsm_supplier = wsm_supplier || "";
+            this.wsm_supplierNo = wsm_supplierNo || "";
+            this.ruleForm.wsm_supplierNo = wsm_supplierNo
+              ? [wsm_supplierNo]
+              : [];
+            this.wsm_name = wsm_name || "";
+            this.wsm_code = wsm_code || "";
+            this.ruleForm.wsm_code = wsm_code ? [wsm_code] : [];
+          }
+          this.rulesThis.wsm_supplierNo[0].required =
+            this.order_type + "" === "1" || this.order_type === "5";
+          this.rulesThis.wsm_code[0].required =
+            this.order_type + "" === "1" || this.order_type === "5";
+          this.getNewTime();
+        } else if (code >= 100 && code <= 104) {
+          await this.logout();
+        } else {
+          this.$message.warning(message);
+        }
+        this.loading = false;
+      }
+    },
+    refresh(e) {
+      this.centerDialogVisible = false;
+      this.ruleForm.cgdNo = e;
+      this.$refs.ruleForm.validateField("cgdNo");
+      this.initData();
+    },
+    getNewTime() {
+      this.newTime = new Date().valueOf();
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 0 - 0
src/views/dataCorrection/cgMessage/采购单修正详情


+ 85 - 0
src/views/dataCorrection/cgMessageList/columns.js

@@ -0,0 +1,85 @@
+const columns = [
+  {
+    prop: "cgdNo",
+    label: "采购单编号",
+    minWidth: "155"
+  },
+  {
+    prop: "cgder_old",
+    label: "采购员(修改前)",
+    minWidth: "105"
+  },
+  {
+    prop: "cgder",
+    label: "采购员(修改后)",
+    minWidth: "105"
+  },
+  {
+    prop: "supplierNo_old",
+    label: "供应商编码(修改前)",
+    minWidth: "155"
+  },
+  {
+    prop: "supplierNo",
+    label: "供应商编码(修改后)",
+    minWidth: "155"
+  },
+  {
+    prop: "supplier_name_old",
+    label: "供应商名称(修改前)",
+    minWidth: "155"
+  },
+  {
+    prop: "supplier_name",
+    label: "供应商名称(修改后)",
+    minWidth: "155"
+  },
+
+  {
+    prop: "wsm_code_old",
+    label: "仓库编码(修改前)",
+    minWidth: "155"
+  },
+  {
+    prop: "wsm_code",
+    label: "仓库编码(修改后)",
+    minWidth: "155"
+  },
+  {
+    prop: "wsm_name_old",
+    label: "仓库名称(修改前)",
+    minWidth: "155"
+  },
+  {
+    prop: "wsm_name",
+    label: "仓库名称(修改后)",
+    minWidth: "155"
+  },
+
+  // {
+  //   prop: "addtime",
+  //   label: "添加时间",
+  //   minWidth: "155"
+  // },
+  {
+    prop: "updatetime",
+    label: "修改时间",
+    minWidth: "145"
+  },
+
+  {
+    prop: "company_name",
+    label: "创建人部门",
+    minWidth: "150px",
+  },
+  {
+    prop: "creater",
+    label: "创建人",
+    minWidth: "65"
+  },
+
+
+]
+export {
+  columns
+}

+ 258 - 0
src/views/dataCorrection/cgMessageList/index.vue

@@ -0,0 +1,258 @@
+<template>
+  <div class="pagePadding">
+    <div
+      class="box"
+      v-if="powers && powers.length > 0 && powers.some((item) => item == '001')"
+    >
+      <ex-table
+        v-loading="loading"
+        :table="table"
+        :data="tableData"
+        :columns="columns"
+        :page="pageInfo"
+        :size="size"
+        @page-curr-change="handlePageChange"
+        @page-size-change="handleSizeChange"
+        @screen-reset="
+          pageInfo.curr = 1;
+          parmValue.page = 1;
+          searchList();
+        "
+        @screen-submit="
+          pageInfo.curr = 1;
+          parmValue.page = 1;
+          searchList();
+        "
+      >
+        <template #table-header="{}">
+          <div style="width: 100%; height: 70px">
+            <el-row style="padding-left: 80px">
+              <el-col :span="7" style="width: 293px">
+                <period-date-picker
+                  :type="1"
+                  :width="'135px'"
+                  :size="searchSize"
+                  :start="parmValue.start"
+                  :end="parmValue.end"
+                  @timeReturned="handleTime"
+                />
+              </el-col>
+              <el-col
+                :span="5"
+                style="width: 230px; float: left; margin-left: 10px"
+              >
+                <el-input
+                  v-model="parmValue.cgdNo"
+                  :size="'mini'"
+                  style="width: 100%"
+                  placeholder="采购单编号"
+                  @blur="
+                    pageInfo.curr = 1;
+                    parmValue.page = 1;
+                    searchList();
+                  "
+                ></el-input>
+              </el-col>
+
+              <el-col :span="3" style="width: 66px; float: right">
+                <el-button
+                  type="primary"
+                  :size="searchSize"
+                  style="float: right"
+                  @click="searchList"
+                >
+                  刷新
+                </el-button>
+              </el-col>
+              <el-col
+                :span="3"
+                class="fr"
+                style="width: 66px; padding: 0 0 0 10px"
+                v-if="powers.some((item) => item == '003')"
+              >
+                <el-button
+                  :size="searchSize"
+                  type="success"
+                  style="float: right"
+                  @click="routeGoto('cgMessage', {})"
+                >
+                  添加
+                </el-button>
+              </el-col>
+            </el-row>
+            <el-row style="padding-top: 10px">
+          
+              <el-col
+                :span="5"
+                style="width: 155px; float: left; margin-left: 0px"
+              >
+                <el-input
+                  v-model="parmValue.creater"
+                  :size="'mini'"
+                   style="width: 100%"
+                  placeholder="创建人"
+                  @blur="
+                    pageInfo.curr = 1;
+                    parmValue.page = 1;
+                    searchList();
+                  "
+                ></el-input>
+              </el-col>
+              <el-col
+                :span="5"
+                style="width: 155px; float: left; margin-left: 10px"
+              >
+                <el-input
+                  v-model="parmValue.company_name"
+                  :size="'mini'"
+                   style="width: 100%"
+                  placeholder="创建人部门"
+                  @blur="
+                    pageInfo.curr = 1;
+                    parmValue.page = 1;
+                    searchList();
+                  "
+                ></el-input>
+              </el-col>
+              <el-col :span="3" style="width: 66px; float: right">
+                <el-button
+                  type="warning"
+                  :size="searchSize"
+                  style="float: right"
+                  @click="restSearch"
+                >
+                  重置
+                </el-button>
+              </el-col>
+             
+            </el-row>
+          </div>
+        </template>
+      </ex-table>
+    </div>
+    <div v-else>
+      <no-auth></no-auth>
+    </div>
+  </div>
+</template>
+
+<script>
+import asyncRequest from "@/apis/service/dataCorrection/cgMessage";
+
+import mixinPage from "@/mixins/elPaginationHandle";
+import { mapGetters } from "vuex";
+import resToken from "@/mixins/resToken";
+import { columns } from "./columns";
+export default {
+  mixins: [mixinPage, resToken],
+  computed: {
+    ...mapGetters(["tablebtnSize", "searchSize", "size"]),
+    powers() {
+      let tran =
+        this.$store.getters.btnList.find(
+          (item) => item.menu_route == "cgMessageList"
+        ) || {};
+      if (tran && tran.action && tran.action.length > 0) {
+        return tran.action;
+      } else {
+        return [];
+      }
+    },
+  },
+  data() {
+    return {
+      loading: false,
+      parmValue: {
+        cgdNo: "",
+        creater: "",
+        start: "",
+        end: "",
+        company_name: "", //创建人部门
+        page: 1, // 页码
+        size: 15, // 每页显示条数
+      },
+      // 表格 - 数据
+      tableData: [],
+      // 表格 - 参数
+      table: {
+        stripe: true,
+        border: true,
+        _defaultHeader_: ["setcol"],
+      },
+      // 表格 - 分页
+      pageInfo: {
+        size: 15,
+        curr: 1,
+        total: 0,
+      },
+      // 表格 - 列参数
+      columns: columns,
+    };
+  },
+  mounted() {
+    // const { back } = this.$route.query;
+    // if (back) {
+    //   this.parmValue = JSON.parse(back);
+    //   const {page,size}=this.parmValue
+    //    this.pageInfo= {
+    //     size: size,
+    //     curr: page,
+    //     total: 0,
+    //   }
+    // }
+    this.searchList();
+  },
+  methods: {
+    async searchList() {
+      this.loading = true;
+      const res = await asyncRequest.cgdgetchangesupplierlist(this.parmValue);
+      if (res && res.code === 0 && res.data) {
+        console.log("aaaaaaaa", res);
+        this.tableData = res.data.list;
+
+        this.pageInfo.total = Number(res.data.count);
+      } else if (res && res.code >= 100 && res.code <= 104) {
+        await this.logout();
+      } else {
+        this.tableData = [];
+        this.pageInfo.total = 0;
+      }
+      this.loading = false;
+    },
+    //重置
+    restSearch() {
+      // 表格 - 分页
+      this.pageInfo = {
+        size: 15,
+        curr: 1,
+        total: 0,
+      };
+      this.parmValue = {
+        cgdNo: "",
+        company_name: "", //创建人部门
+        creater: "",
+        start: "",
+        end: "",
+        page: 1, // 页码
+        size: 15, // 每页显示条数
+      };
+      this.searchList();
+    },
+    async handleTime(e) {
+      this.parmValue.start = e.startTime || "";
+      this.parmValue.end = e.endTime || "";
+      if (
+        (this.parmValue.start !== "" && this.parmValue.end !== "") ||
+        (this.parmValue.start === "" && this.parmValue.end === "")
+      ) {
+        this.pageInfo.curr = 1;
+        this.parmValue.page = 1;
+        await this.searchList();
+      }
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 0 - 0
src/views/dataCorrection/cgMessageList/采购单信息修正


+ 0 - 0
src/views/dataCorrection/数据修正


+ 5 - 0
src/views/goodStore/active/columns.js

@@ -62,6 +62,11 @@ const listCol = [
     prop: "platform_name",
     label: "平台名称",
   },
+  {
+    prop: "company_name",
+    label: "创建人部门",
+    minWidth: "150px",
+  },
   {
     prop: "creater",
     label: "创建人",

+ 22 - 4
src/views/goodStore/active/components/baseForm.vue

@@ -39,6 +39,7 @@
               :disabled="status !== ''"
               :size="'mini'"
               :isDetail="false"
+              :is_show="start !== '' ? '1' : '0'"
               :placeholder="'所属平台'"
               @searchChange="platform_codesearchChange"
             />
@@ -324,7 +325,7 @@ export default {
     },
   },
   computed: {
-    ...mapGetters(["tablebtnSize", "searchSize", "size"]),
+    ...mapGetters(["tablebtnSize", "searchSize", "size", "business_companyNo"]),
     powers() {
       let tran =
         this.$store.getters.btnList.find(
@@ -529,7 +530,7 @@ export default {
       let list = JSON.parse(JSON.stringify(e));
       let oldList = JSON.parse(JSON.stringify(this.ruleForm.good_list));
       list.forEach((e, ei) => {
-        let index = oldList.findIndex((a) => e.skucode === a.skucode);
+        let index = oldList.findIndex((a) => e.skuCode === a.skuCode);
         if (index === -1) {
           let item = JSON.parse(JSON.stringify(list[ei]));
           item.activity_stock = "1";
@@ -555,7 +556,7 @@ export default {
       this.ruleForm = {
         activity_name: activity_name || "",
         platform_code: platform_code || "",
-        company_id: company_id || "",
+        company_id: company_id || this.business_companyNo || "",
         activity_start: start || "",
         activity_end: end || "",
         activity_desc: activity_desc || "",
@@ -620,7 +621,8 @@ export default {
           }
           console.log(res);
           this.loading = false;
-          if (res && res.code === 0) {
+          const { code, data, message } = res;
+          if (code === 0) {
             const title = this.type === "add" ? "新建成功!" : "库存修改成功!";
             this.$notify.success({
               title: title,
@@ -629,6 +631,22 @@ export default {
             this.showModelThis = false;
             // 刷新
             this.$emit("refresh", true);
+          } else if (code >= 100 && code <= 104) {
+            await this.logout();
+          } else if (code == 1005) {
+            let resList = JSON.parse(JSON.stringify(data));
+            let htmlList = "<ul>";
+            resList.forEach((v) => {
+              htmlList += `<li>${v.outCode}</li>`;
+            });
+            htmlList += "</ul>";
+            this.$notify({
+              title: message,
+              dangerouslyUseHTMLString: true,
+              message: htmlList,
+            });
+          } else {
+            this.$message.warning(message);
           }
         } else {
           console.log("error submit!!");

+ 6 - 1
src/views/goodStore/active/index.vue

@@ -30,6 +30,7 @@
                 :disabled="false"
                 :size="'mini'"
                 :isDetail="false"
+                :is_show="'0'"
                 :placeholder="'所属平台'"
                 @searchChange="platform_codesearchChange"
             /></el-col>
@@ -122,7 +123,8 @@
                 >
                   <el-option label="活动名称" value="1" />
                   <el-option label="活动编码" value="2" />
-                  <el-option label="创建人" value="3" /> </el-select
+                  <el-option label="创建人" value="3" /> 
+                  <el-option label="创建人部门"  value="4"></el-option></el-select
               ></el-input>
             </el-col>
             <el-col
@@ -230,6 +232,7 @@ export default {
         size: 15, // 每页显示条数
         company_id: "",
         creater: "",
+        company_name: "", //创建人部门
       },
       // 状态
       statusOptions: [
@@ -334,6 +337,7 @@ export default {
         size: 15, // 每页显示条数
         company_id: "",
         creater: "",
+        company_name: "", //创建人部门
       };
       this.searchList();
     },
@@ -448,6 +452,7 @@ export default {
       model.activity_name = this.select === "1" ? this.sinput : "";
       model.activity_code = this.select === "2" ? this.sinput : "";
       model.creater = this.select === "3" ? this.sinput : "";
+      model.company_name = this.select === "4" ? this.sinput : ""; // 部门
       const res = await asyncRequest.list(model);
       if (res && res.code === 0 && res.data) {
         this.tableData = res.data.list;

+ 1 - 0
src/views/goodStore/activeGood/index.vue

@@ -98,6 +98,7 @@
                   :disabled="false"
                   :size="'mini'"
                   :isDetail="false"
+                  :is_show="'0'"
                   :placeholder="'所属平台'"
                   @searchChange="platform_codesearchChange"
                 />

+ 20 - 0
src/views/goodStore/brand/index.vue

@@ -103,6 +103,19 @@
                 placeholder="创建人"
               ></el-input>
             </el-col>
+            <el-col :span="4" style="width: 170px; padding: 0 0 0 10px">
+              <el-input
+                :size="searchSize"
+                v-model="parmValue.company_name"
+                :maxlength="40"
+                @change="
+                  pageInfo.curr = 1;
+                  parmValue.page = 1;
+                  searchList();
+                "
+                placeholder="创建人部门"
+              ></el-input>
+            </el-col>
             <el-col
               :span="3"
               class="fr"
@@ -248,6 +261,7 @@ export default {
         start: "",
         end: "",
         brand_name: "",
+        company_name: "", //创建人部门
         status: "",
         creater: "",
       },
@@ -286,6 +300,11 @@ export default {
           sortable: true,
           _slot_: "status",
         },
+        {
+          prop: "company_name",
+          label: "申请人部门",
+          minWidth: "150px",
+        },
         {
           prop: "creater",
           label: "创建人",
@@ -320,6 +339,7 @@ export default {
         page: 1, // 页码
         size: 15, // 每页显示条数
         start: "",
+        company_name: "", //创建人部门
         end: "",
         brand_name: "",
         status: "",

+ 1 - 0
src/views/goodStore/dealGoodsPool/addEdit.vue

@@ -127,6 +127,7 @@
                     :value="ruleForm.platform"
                     :disabled="false"
                     :isDetail="false"
+                    :is_show="'1'"
                     :placeholder="'所属平台'"
                     @searchChange="platform_codesearchChange"
                   />

+ 2 - 0
src/views/goodStore/dealGoodsPool/index.vue

@@ -41,6 +41,7 @@
                 style="100%"
                 v-model="parmValue.spuCode"
                 :maxlength="40"
+                clearable
                 placeholder="商品编码"
                 @blur="
                   pageInfo.curr = 1;
@@ -55,6 +56,7 @@
                 style="100%"
                 v-model="parmValue.good_name"
                 :maxlength="40"
+                clearable
                 placeholder="商品名称"
                 @blur="
                   pageInfo.curr = 1;

+ 15 - 0
src/views/goodStore/goldPrice/components/priceList.vue

@@ -11,7 +11,18 @@
           @searchChange="noble_metalsearchChange"
         />
       </el-col>
+      <el-col :span="4" style="width: 170px; padding: 0 0 0 10px">
+        <el-input
+          :size="searchSize"
+          v-model="parmValue.company_name"
+          :maxlength="40"
+          @blur="
 
+            searchList
+          "
+          placeholder="创建人部门"
+        ></el-input>
+      </el-col>
       <el-col :span="3" class="fr" style="width: 66px; padding: 0 0 0 10px">
         <el-button type="primary" :size="searchSize" @click="searchList">
           刷新
@@ -61,6 +72,8 @@
               ></el-tag
             ></template>
           </el-table-column>
+          <el-table-column prop="company_name" label="创建人部门" />
+
           <el-table-column prop="action_name" label="创建人" />
           <el-table-column prop="addtime" label="创建时间" />
           <el-table-column label="操作">
@@ -175,6 +188,7 @@ export default {
       modelId: "000",
       sitem: {},
       parmValue: {
+        company_name: "", //创建人部门
         type: "",
       },
       // 状态
@@ -192,6 +206,7 @@ export default {
   methods: {
     async restSearch() {
       this.parmValue = {
+        company_name: "", //创建人部门
         type: "",
       };
       await this.searchList();

+ 33 - 12
src/views/goodStore/goldPrice/components/priceRecord.vue

@@ -43,7 +43,19 @@
                 @searchChange="noble_metalsearchChange"
               />
             </el-col>
-            <el-col :span="4" style="width: 170px; padding: 0 0 0 10px">
+
+            <el-col
+              :span="3"
+              class="fr"
+              style="width: 66px; padding: 0 0 0 10px"
+            >
+              <el-button type="warning" :size="searchSize" @click="restSearch">
+                重置
+              </el-button>
+            </el-col>
+          </el-row>
+          <el-row style="padding: 10px 0 0 0px">
+            <el-col :span="4" style="width: 170px; padding: 0 0 0 0px">
               <el-input
                 :size="searchSize"
                 v-model="parmValue.action_name"
@@ -56,7 +68,19 @@
                 placeholder="创建人"
               ></el-input>
             </el-col>
-
+            <el-col :span="4" style="width: 170px; padding: 0 0 0 10px">
+              <el-input
+                :size="searchSize"
+                v-model="parmValue.company_name"
+                :maxlength="40"
+                @blur="
+                  pageInfo.curr = 1;
+                  parmValue.page = 1;
+                  searchList();
+                "
+                placeholder="创建人部门"
+              ></el-input>
+            </el-col>
             <el-col
               :span="3"
               class="fr"
@@ -66,15 +90,6 @@
                 刷新
               </el-button>
             </el-col>
-            <el-col
-              :span="3"
-              class="fr"
-              style="width: 66px; padding: 0 0 0 10px"
-            >
-              <el-button type="warning" :size="searchSize" @click="restSearch">
-                重置
-              </el-button>
-            </el-col>
           </el-row>
         </div></template
       >
@@ -101,6 +116,7 @@ export default {
         size: 15, // 每页显示条数
         start: "",
         end: "",
+        company_name: "", //创建人部门
         type: "",
         action_name: "",
       },
@@ -134,7 +150,11 @@ export default {
           prop: "price",
           label: "当前金价(元/g)",
         },
-
+        {
+          prop: "company_name",
+          label: "创建人部门",
+          minWidth: "150px",
+        },
         {
           prop: "action_name",
           label: "创建人",
@@ -159,6 +179,7 @@ export default {
       };
       this.parmValue = {
         page: 1, // 页码
+        company_name: "", //创建人部门
         size: 15, // 每页显示条数
         start: "",
         end: "",

+ 5 - 0
src/views/goodStore/goodsCost/columns.js

@@ -101,6 +101,11 @@ const listCol = [
     label: "业务公司名称",
     width: "110px",
   },
+  {
+    prop: "company_name",
+    label: "创建人部门",
+    minWidth: "150px",
+  },
   {
     prop: "creater",
     label: "创建人",

+ 1 - 0
src/views/goodStore/goodsCost/components/addEdit.vue

@@ -127,6 +127,7 @@
                     :value="ruleForm.platform"
                     :disabled="false"
                     :isDetail="false"
+                    :is_show="'1'"
                     :placeholder="'所属平台'"
                     @searchChange="platform_codesearchChange"
                   />

+ 15 - 10
src/views/goodStore/goodsCost/components/baseForm.vue

@@ -1102,7 +1102,7 @@ import {
 export default {
   name: "goodsCostAdd",
   mixins: [resToken],
-  props: ["showModel", "id", "type", "sitem"],
+  props: ["showModel", "id", "type", "sitem", "business_companyNo"],
   components: {
     baseFormAddEdit,
     costFormAddEdit,
@@ -1329,8 +1329,8 @@ export default {
           }
           console.log(res);
           this.loading = false;
-          if (res && res.code === 0) {
-            const { spuCode } = res.data;
+          const { code, data, message } = res;
+          if (code === 0) {
             const title =
               this.type === "add"
                 ? "新建成功!"
@@ -1345,7 +1345,11 @@ export default {
             });
             this.showModelThis = false;
             // 刷新
-            this.$emit("refresh", { spuCode: spuCode });
+            this.$emit("refresh");
+          } else if (code >= 100 && code <= 104) {
+            await this.logout();
+          } else {
+            this.$message.warning(message);
           }
         } else {
           console.log(valid);
@@ -1669,7 +1673,7 @@ export default {
         good_type: "0",
         is_stock: "0",
         supplierNo: [],
-        company_id: "",
+        company_id: this.business_companyNo || "",
         is_auth: "",
         tax: "",
         good_name: "",
@@ -1880,10 +1884,11 @@ export default {
             lead_time: lead_time || "",
             sample_day: sample_day || "",
             good_thumb_img: good_thumb_img || "",
-            good_img: good_img ? Object.prototype.toString.call(good_img) ===
-                "[object Array]"
-                  ? []
-                  :(good_img || "").split(",") : [],
+            good_img: good_img
+              ? Object.prototype.toString.call(good_img) === "[object Array]"
+                ? []
+                : (good_img || "").split(",")
+              : [],
             good_info_img: good_info_img
               ? (Object.prototype.toString.call(good_info_img) ===
                 "[object Array]"
@@ -2113,7 +2118,7 @@ export default {
         if (key === "good_thumb_img") {
           this.ruleForm[key] = url;
         } else {
-          if(this.ruleForm[key].length<10){
+          if (this.ruleForm[key].length < 10) {
             this.ruleForm[key].push(url);
           }
         }

+ 6 - 1
src/views/goodStore/goodsCost/index.vue

@@ -146,7 +146,9 @@
                   <el-option label="商品编号" value="1" />
                   <el-option label="商品名称" value="2" />
                   <el-option label="业务企业编号" value="3" />
-                  <el-option label="供应商编号" value="4" /> </el-select
+                  <el-option label="供应商编号" value="4" /> 
+                  <el-option label="创建人部门" value="5" /> 
+                  </el-select
               ></el-input>
             </el-col>
 
@@ -446,6 +448,7 @@ export default {
         companyNo: "",
         supplierNo: "",
         isonline: "",
+        company_name: "", //创建人部门
         // creater: "",
       },
       sinput: "",
@@ -544,6 +547,7 @@ export default {
         end: "",
         status: "",
         good_name: "",
+        company_name: "", //创建人部门
         spucode: "",
         cat_id: [],
         brandid: "",
@@ -737,6 +741,7 @@ export default {
       item.good_name = this.select === "2" ? this.sinput : "";
       item.companyNo = this.select === "3" ? this.sinput : "";
       item.supplierNo = this.select === "4" ? this.sinput : "";
+      item.company_name = this.select === "5" ? this.sinput : ""; // 部门
       item.cat_id =
         item.cat_id.length > 0 ? item.cat_id[item.cat_id.length - 1] : "";
       const res = await asyncRequest.list(item);

+ 1 - 0
src/views/goodStore/goodsOnline/add.vue

@@ -21,6 +21,7 @@
                 :value="ruleForm.platform"
                 :disabled="false"
                 :size="'mini'"
+                :is_show="'1'"
                 :isDetail="false"
                 :placeholder="'所属平台'"
                 @searchChange="platform_codesearchChange"

+ 5 - 0
src/views/goodStore/goodsOnline/columns.js

@@ -121,6 +121,11 @@ const listCol = [
     label: "采购员",
     width: "70px",
   },
+  {
+    prop: "company_name",
+    label: "创建人部门",
+    minWidth: "150px",
+  },
   {
     prop: "creater",
     label: "创建人",

+ 16 - 9
src/views/goodStore/goodsOnline/components/fixed-price-form.vue

@@ -111,7 +111,7 @@
           prop="sale_price"
           label="售价"
           show-overflow-tooltip
-          v-if="!(sitem && sitem.is_gold_price === '1'&&is_noble)"
+          v-if="!(sitem && sitem.is_gold_price === '1' && is_noble)"
         >
           <template slot-scope="scope">
             <el-form-item
@@ -142,7 +142,7 @@
         <el-table-column
           prop="new_cost_fee"
           show-overflow-
-          v-if="sitem && sitem.is_gold_price === '1'&&is_noble"
+          v-if="sitem && sitem.is_gold_price === '1' && is_noble"
           label="系统工艺费"
         >
           <template slot-scope="scope">
@@ -169,7 +169,7 @@
           prop="cost_fee"
           label="工艺费"
           show-overflow-tooltip
-          v-if="sitem && sitem.is_gold_price === '1'&&is_noble"
+          v-if="sitem && sitem.is_gold_price === '1' && is_noble"
         >
           <template slot-scope="scope">
             <el-form-item
@@ -355,11 +355,18 @@
             <ul class="shangchuan-ul">
               <li v-if="ruleForm.proof_type === '1'" class="shiping">
                 <div v-if="video_url" class="clearfix">
-                  <video width="250" controls class="fl">
-                    <source :src="video_url" type="video/mp4" />
-                    <source :src="video_url" type="video/avi" />
-                    您的浏览器不支持Video标签。
-                  </video>
+                  <el-popover placement="top" width="300" trigger="hover">
+                    <video width="275" controls class="fl">
+                      <source :src="video_url" type="video/mp4" />
+                      <source :src="video_url" type="video/avi" />
+                      您的浏览器不支持Video标签。
+                    </video>
+                    <i
+                      class="el-icon-video-camera-solid hover"
+                      style="font-size: 18px"
+                      slot="reference"
+                    ></i>
+                  </el-popover>
                   <el-link
                     :underline="false"
                     @click="deleteUrl('1')"
@@ -583,7 +590,7 @@ export default {
         proof_type: [
           {
             required: true,
-            message: "请选择审核状态",
+            message: "请选择凭证类型",
             trigger: "change",
           },
         ],

+ 6 - 1
src/views/goodStore/goodsOnline/detail.vue

@@ -356,6 +356,7 @@ import {
   options7,
   options8,
 } from "./columns";
+import { isArray } from '@/utils/validate';
 export default {
   name: "goodsOnlineDetail",
   mixins: [resToken],
@@ -519,7 +520,11 @@ export default {
           });
         }
         this.sitem.cat = cat;
-        this.sitem.good_info_img = this.sitem.good_info_img.split(",");
+        
+        if(!isArray(this.sitem.good_info_img)){
+          this.sitem.good_info_img = this.sitem.good_info_img.split(",");
+        }
+        
         this.status = exam_status;
         this.getNewTime();
       } else if (code >= 100 && code <= 104) {

+ 97 - 50
src/views/goodStore/goodsOnline/index.vue

@@ -24,7 +24,29 @@
       <template #table-header="{}">
         <div style="width: 100%">
           <el-row style="padding: 0 0 10px 80px">
-            <el-col :span="4" style="width: 120px">
+            <el-col :span="4" style="width: 150px">
+              <el-select
+                v-model="parmValue.exam_status"
+                filterable
+                clearable
+                :size="searchSize"
+                placeholder="状态"
+                style="width: 100%"
+                @change="
+                  pageInfo.curr = 1;
+                  parmValue.page = 1;
+                  searchList();
+                "
+              >
+                <el-option
+                  v-for="item in options8"
+                  :key="'status' + item.id"
+                  :label="item.name"
+                  :value="item.id"
+                />
+              </el-select>
+            </el-col>
+            <el-col :span="4" style="width: 130px; padding: 0 0 0 10px">
               <el-select
                 v-model="parmValue.good_type"
                 filterable
@@ -57,26 +79,6 @@
               />
             </el-col>
 
-            <el-col :span="6" style="width: 310px; padding: 0 0 0 10px">
-              <good-class
-                :value="parmValue.cat_id"
-                @handleChange="goods_class_change"
-                :disabled="false"
-                :size="searchSize"
-                :isDetail="false"
-                :placeholder="'分类'"
-              />
-            </el-col>
-
-            <el-col
-              :span="3"
-              class="fr"
-              style="width: 66px; padding: 0 0 0 10px"
-            >
-              <el-button type="primary" :size="searchSize" @click="searchList">
-                刷新
-              </el-button>
-            </el-col>
             <el-col
               :span="3"
               class="fr"
@@ -89,28 +91,27 @@
           </el-row>
 
           <el-row>
-            <el-col :span="4" style="width: 150px">
-              <el-select
-                v-model="parmValue.exam_status"
-                filterable
-                clearable
+            <el-col :span="6" style="width: 310px">
+              <good-class
+                :value="parmValue.cat_id"
+                @handleChange="goods_class_change"
+                :disabled="false"
                 :size="searchSize"
-                placeholder="状态"
-                style="width: 100%"
-                @change="
-                  pageInfo.curr = 1;
-                  parmValue.page = 1;
-                  searchList();
-                "
-              >
-                <el-option
-                  v-for="item in options8"
-                  :key="'status' + item.id"
-                  :label="item.name"
-                  :value="item.id"
-                />
-              </el-select>
+                :isDetail="false"
+                :placeholder="'分类'"
+              />
             </el-col>
+
+            <el-col :span="6" style="width: 240px; padding: 0 0 0 10px">
+              <search-terrace
+                :value="parmValue.platform_code"
+                :disabled="false"
+                :size="'mini'"
+                :isDetail="false"
+                :is_show="'0'"
+                :placeholder="'所属平台'"
+                @searchChange="platform_codeChange"
+            /></el-col>
             <el-col :span="4" style="width: 210px; padding: 0 0 0 10px">
               <search-brand
                 :value="brandid"
@@ -122,8 +123,18 @@
                 @searchChange="brandidsearchChange"
               />
             </el-col>
-
-            <el-col :span="4" style="width: 430px; padding: 0 0 0 10px">
+            <el-col
+              :span="3"
+              class="fr"
+              style="width: 66px; padding: 0 0 0 10px"
+            >
+              <el-button type="primary" :size="searchSize" @click="searchList">
+                刷新
+              </el-button>
+            </el-col>
+          </el-row>
+          <el-row style="padding: 10px 0 0 0">
+            <el-col :span="4" style="width: 450px">
               <el-input
                 :size="searchSize"
                 v-model="sinput"
@@ -153,7 +164,9 @@
                   <!-- <el-option label="供应商编号" value="4" /> -->
                   <el-option label="业务企业编号" value="5" />
                   <el-option label="平台商品编号" value="6" />
-                  <el-option label="创建人" value="7" /> </el-select
+                  <el-option label="创建人" value="7" /> 
+                  <el-option label="创建人部门" value="8" /> 
+                  </el-select
               ></el-input>
             </el-col>
             <el-col
@@ -286,14 +299,22 @@
         class="demo-ruleForm"
         label-width="80px"
       >
-        <el-form-item prop="date" label="日期: ">
-          <el-date-picker
+        <el-form-item prop="start_date" label="日期: ">
+          <!-- <el-date-picker
             value-format="yyyy-MM-dd"
             v-model="ruleForm.date"
             type="date"
             placeholder="请选择"
           >
-          </el-date-picker>
+          </el-date-picker> -->
+
+          <periodDatePicker
+                      :start="ruleForm.start_date"
+                      :end="ruleForm.end_date"
+                      :width="'165px'"
+
+                      @timeReturned="time"
+                    />
         </el-form-item>
         <el-form-item label="状态: " prop="status">
           <el-select v-model="ruleForm.status" placeholder="请选择">
@@ -313,6 +334,7 @@
             :value="ruleForm.platform_id"
             :disabled="false"
             :isDetail="false"
+            :is_show="'0'"
             :placeholder="'所属平台'"
             @searchChange="platform_codesearchChange"
           />
@@ -369,12 +391,14 @@ export default {
     return {
       fileUrl: urlConfig.baseURL,
       ruleForm: {
-        date: "",
+        // date: "",
         platform_id: "",
         status: "",
+        start_date:"",
+        end_date:"",
       },
       rules: {
-        date: [
+        start_date: [
           {
             validator: validate,
             type: "date",
@@ -409,6 +433,7 @@ export default {
         exam_status: "", //审核状态
         plat_code: "", //平台商品编号
         creater: "", //
+        company_name: "", //创建人部门
       },
 
       // 表格 - 数据
@@ -463,13 +488,33 @@ export default {
     this.searchList();
   },
   methods: {
+    // 时间函数
+    async time(e) {
+      this.ruleForm.start_date = e.startTime || "";
+      this.ruleForm.end_date = e.endTime || "";
+      
+    },
     platform_codesearchChange(e) {
-      const { id, code, label } = e;
+      const { id } = e;
       this.ruleForm.platform_id = id || "";
       this.$refs.ruleForm.validateField("platform_id");
     },
+    async platform_codeChange(e) {
+      const { id } = e;
+      this.parmValue.platform_code = id || "";
+      this.pageInfo.curr = 1;
+      this.parmValue.page = 1;
+      await this.searchList();
+    },
     //导出
     async goodsExport() {
+      if (
+        (this.ruleForm.start_date !== "" && this.ruleForm.end_date === "") ||
+        (this.ruleForm.start_date === "" && this.ruleForm.end_date !== "")
+      ) {
+        this.$message.warning("时间区间不完整!");
+        return;
+      }
       // console.log(this.$refs.ruleForm)
       // return;
       await this.$refs.ruleForm.validate(async (valid) => {
@@ -591,6 +636,7 @@ export default {
         exam_status: "", //审核状态
         plat_code: "", //平台商品编号
         creater: "", //
+        company_name: "", //创建人部门
       };
       this.searchList();
     },
@@ -778,6 +824,7 @@ export default {
       // model.exam_status = this.select === "1" ? this.sinput : ""; //审核状态
       model.plat_code = this.select === "6" ? this.sinput : ""; //平台商品编号
       model.creater = this.select === "7" ? this.sinput : ""; //
+      model.company_name = this.select === "8" ? this.sinput : ""; // 部门
       const res = await asyncRequest.list(model);
       if (res && res.code === 0 && res.data) {
         this.tableData = res.data.list;

+ 20 - 0
src/views/goodStore/searchSort/index.vue

@@ -113,6 +113,19 @@
                   placeholder="创建人"
                 ></el-input>
               </el-col>
+              <el-col :span="4" style="width: 170px; padding: 0 0 0 10px">
+                <el-input
+                  :size="searchSize"
+                  v-model="parmValue.company_name"
+                  :maxlength="40"
+                  @change="
+                    pageInfo.curr = 1;
+                    parmValue.page = 1;
+                    searchList();
+                  "
+                  placeholder="创建人部门"
+                ></el-input>
+              </el-col>
             </el-row></div
         ></template>
         <template #status="{ scope }">
@@ -192,6 +205,7 @@ export default {
         end: "",
         status: "",
         creater: "",
+        company_name: "", //创建人部门
         cat_name: "",
       },
       // 状态
@@ -250,6 +264,11 @@ export default {
           prop: "cat_desc",
           label: "售后说明",
         },
+        {
+          prop: "company_name",
+          label: "创建人部门",
+          minWidth: "150px",
+        },
         {
           prop: "creater",
           label: "创建人",
@@ -290,6 +309,7 @@ export default {
         start: "",
         end: "",
         status: "",
+        company_name: "", //创建人部门
         creater: "",
         cat_name: "",
       };

+ 21 - 1
src/views/goodStore/sort/index.vue

@@ -39,6 +39,7 @@
                 </div>
               </div>
             </el-col>
+            
             <el-col
               :span="3"
               class="fr"
@@ -94,7 +95,19 @@
                 placeholder="分类名称"
               ></el-input>
             </el-col>
-
+            <el-col :span="4" style="width: 170px; padding: 0 0 0 10px">
+              <el-input
+                :size="searchSize"
+                v-model="parmValue.company_name"
+                :maxlength="40"
+                @blur="
+                  pageInfo.curr = 1;
+                  parmValue.page = 1;
+                  searchList();
+                "
+                placeholder="创建人部门"
+              ></el-input>
+            </el-col>
             <el-col
               :span="3"
               class="fr"
@@ -271,6 +284,7 @@ export default {
       parmValue: {
         page: 1, // 页码
         size: 15, // 每页显示条数
+        company_name: "", //创建人部门
         status: "",
         cat_name: "",
         pid: "0",
@@ -332,6 +346,11 @@ export default {
           prop: "cat_desc",
           label: "售后说明",
         },
+        {
+          prop: "company_name",
+          label: "创建人部门",
+          minWidth: "150px",
+        },
         {
           prop: "creater",
           label: "创建人",
@@ -370,6 +389,7 @@ export default {
         page: 1, // 页码
         size: 15, // 每页显示条数
         status: "",
+        company_name: "", //创建人部门
         pid: "0",
         cat_name: "",
       };

+ 20 - 0
src/views/goodStore/specs/index.vue

@@ -103,6 +103,19 @@
                 placeholder="创建人"
               ></el-input>
             </el-col>
+            <el-col :span="4" style="width: 170px; padding: 0 0 0 10px">
+              <el-input
+                :size="searchSize"
+                v-model="parmValue.company_name"
+                :maxlength="40"
+                @change="
+                  pageInfo.curr = 1;
+                  parmValue.page = 1;
+                  searchList();
+                "
+                placeholder="创建人部门"
+              ></el-input>
+            </el-col>
             <el-col
               :span="3"
               class="fr"
@@ -249,6 +262,7 @@ export default {
         end: "",
         status: "",
         creater: "",
+        company_name: "", //创建人部门
         spec_name: "",
       },
       // 状态
@@ -286,6 +300,11 @@ export default {
           sortable: true,
           _slot_: "status",
         },
+        {
+          prop: "company_name",
+          label: "创建人部门",
+          // minWidth: "150px",
+        },
         {
           prop: "creater",
           label: "创建人",
@@ -320,6 +339,7 @@ export default {
         page: 1, // 页码
         size: 15, // 每页显示条数
         start: "",
+        company_name: "", //创建人部门
         end: "",
         status: "",
         creater: "",

Some files were not shown because too many files changed in this diff