Переглянути джерело

生产总览-页面开发完成

aiwenzhu 2 місяців тому
батько
коміт
56b09fc19e
58 змінених файлів з 1753 додано та 448 видалено
  1. 7 0
      src/icons/svg/SQL管理.svg
  2. 6 0
      src/icons/svg/业务管理.svg
  3. 6 0
      src/icons/svg/出差审批.svg
  4. 5 0
      src/icons/svg/出差申请.svg
  5. 5 0
      src/icons/svg/参数设置.svg
  6. 7 0
      src/icons/svg/发货记录.svg
  7. 5 0
      src/icons/svg/合同信息.svg
  8. 7 0
      src/icons/svg/合同审批.svg
  9. 6 0
      src/icons/svg/合同款项.svg
  10. 6 0
      src/icons/svg/合同申请.svg
  11. 5 0
      src/icons/svg/合同管理.svg
  12. 6 0
      src/icons/svg/后台管理.svg
  13. 6 0
      src/icons/svg/回访管理.svg
  14. 6 0
      src/icons/svg/备货通知.svg
  15. 5 0
      src/icons/svg/复核管理.svg
  16. 5 0
      src/icons/svg/字典管理.svg
  17. 7 0
      src/icons/svg/审批流程.svg
  18. 8 0
      src/icons/svg/审批管理.svg
  19. 6 0
      src/icons/svg/客户信息.svg
  20. 4 0
      src/icons/svg/客户资料.svg
  21. 6 0
      src/icons/svg/岗位管理.svg
  22. 7 0
      src/icons/svg/快递接收.svg
  23. 5 0
      src/icons/svg/投诉处理.svg
  24. 6 0
      src/icons/svg/报销审批.svg
  25. 7 0
      src/icons/svg/报销款项.svg
  26. 6 0
      src/icons/svg/报销申请.svg
  27. 8 0
      src/icons/svg/拜访记录.svg
  28. 0 0
      src/icons/svg/操作日志.svg
  29. 7 0
      src/icons/svg/流程管理.svg
  30. 5 0
      src/icons/svg/消息管理.svg
  31. 7 0
      src/icons/svg/现场服务.svg
  32. 6 0
      src/icons/svg/现场服务款项.svg
  33. 7 0
      src/icons/svg/生产工单.svg
  34. 8 0
      src/icons/svg/生产总览.svg
  35. 5 0
      src/icons/svg/电话回访.svg
  36. 8 0
      src/icons/svg/登录日志.svg
  37. 0 0
      src/icons/svg/系统管理.svg
  38. 6 0
      src/icons/svg/线索客户.svg
  39. 7 0
      src/icons/svg/维修服务.svg
  40. 7 0
      src/icons/svg/维修服务款项.svg
  41. 5 0
      src/icons/svg/菜单管理.svg
  42. 1 1
      src/icons/svg/角色管理.svg
  43. 7 0
      src/icons/svg/货品分类.svg
  44. 8 0
      src/icons/svg/货品基础信息.svg
  45. 6 0
      src/icons/svg/货品管理.svg
  46. 6 0
      src/icons/svg/远程服务.svg
  47. 7 0
      src/icons/svg/远程服务款项.svg
  48. 6 0
      src/icons/svg/通知公告.svg
  49. 7 0
      src/icons/svg/部门管理.svg
  50. 1 1
      src/icons/svg/首页.svg
  51. 68 4
      src/styles/sidebar.scss
  52. 8 8
      src/styles/variables.scss
  53. 83 19
      src/views/productManagement/productionSummary/components/BarChart.vue
  54. 465 0
      src/views/productManagement/productionSummary/components/ProductionStatusChart.vue
  55. 510 0
      src/views/productManagement/productionSummary/components/ProductionTable.vue
  56. 170 0
      src/views/productManagement/productionSummary/components/StatisticsPanel.vue
  57. 93 0
      src/views/productManagement/productionSummary/components/UnassignedDialog.vue
  58. 66 415
      src/views/productManagement/productionSummary/index.vue

+ 7 - 0
src/icons/svg/SQL管理.svg

@@ -0,0 +1,7 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32z m-40 824H232V136h560v752z" fill="#ffffff"/>
+  <path d="M320 338c0-5.5 4.5-10 10-10h120c5.5 0 10 4.5 10 10v40c0 5.5-4.5 10-10 10H330c-5.5 0-10-4.5-10-10v-40zM320 450c0-5.5 4.5-10 10-10h120c5.5 0 10 4.5 10 10v40c0 5.5-4.5 10-10 10H330c-5.5 0-10-4.5-10-10v-40z" fill="#ffffff"/>
+  <path d="M642 338h-82c-5.5 0-10-4.5-10-10v-40c0-5.5 4.5-10 10-10h82c5.5 0 10 4.5 10 10v40c0 5.5-4.5 10-10 10zM642 450h-82c-5.5 0-10-4.5-10-10v-40c0-5.5 4.5-10 10-10h82c5.5 0 10 4.5 10 10v40c0 5.5-4.5 10-10 10z" fill="#ffffff"/>
+  <path d="M320 580h322c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8zM320 720h322c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8z" fill="#ffffff"/>
+</svg> 

+ 6 - 0
src/icons/svg/业务管理.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z" fill="#ffffff"/>
+  <path d="M288 712h448c4.4 0 8-3.6 8-8V560c0-4.4-3.6-8-8-8H288c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8zm64-88c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-48zm152 88h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M288 456h448c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8H288c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8zm64-88c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-48zm152 88h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+</svg> 

+ 6 - 0
src/icons/svg/出差审批.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H372V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H192c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32z m-40 728H232V272h560v568z" fill="#ffffff"/>
+  <path d="M492.3 397.1c-3.1-3.1-8.2-3.1-11.3 0L375.7 502.4c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l94.3-94.3 94.3 94.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.1 3.1-8.2 0-11.3L492.3 397.1z" fill="#ffffff"/>
+  <path d="M678.7 640H345.3c-6.6 0-10.4 7.6-6.3 12.7l167.5 203.1c3.2 3.9 7.9 6.1 12.9 6.1s9.7-2.2 12.9-6.1l167.5-203.1c4-5.1 0.2-12.7-6.4-12.7z" fill="#ffffff"/>
+</svg> 

+ 5 - 0
src/icons/svg/出差申请.svg

@@ -0,0 +1,5 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32z m-40 656H184V460h656v380z m0-448H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136z" fill="#ffffff"/>
+  <path d="M512 611.9L652.1 782H371.9L512 611.9m-30-44.1c-1.9 0-3.8 0.8-5.2 2.5L318.5 762.2c-2.9 3.5-0.3 8.8 4.2 8.8h378.6c4.5 0 7.1-5.3 4.2-8.8L547.2 570.3c-1.4-1.7-3.3-2.5-5.2-2.5h-60z" fill="#ffffff"/>
+</svg> 

+ 5 - 0
src/icons/svg/参数设置.svg

@@ -0,0 +1,5 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56c10.1-8.6 13.8-22.6 9.3-35.2l-0.9-2.6c-18.1-50.5-44.9-96.9-79.7-137.9l-1.8-2.1c-8.6-10.1-22.5-13.9-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85c-2.4-13.1-12.7-23.3-25.8-25.7l-2.7-0.5c-52.1-9.4-106.9-9.4-159 0l-2.7 0.5c-13.1 2.4-23.4 12.6-25.8 25.7l-15.8 85.4c-35.9 13.6-69.2 32.9-99 57.4l-81.9-29.1c-12.5-4.4-26.5-0.7-35.1 9.5l-1.8 2.1c-34.8 41.1-61.6 87.5-79.7 137.9l-0.9 2.6c-4.5 12.5-0.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5c-10.1 8.6-13.8 22.6-9.3 35.2l0.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1c8.6 10.1 22.5 13.9 35.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4c2.4 13.1 12.7 23.3 25.8 25.7l2.7 0.5c26.1 4.7 52.8 7.1 79.5 7.1 26.7 0 53.5-2.4 79.5-7.1l2.7-0.5c13.1-2.4 23.4-12.6 25.8-25.7l15.7-85c36.2-13.6 69.7-32.9 99.7-57.6l81.3 28.9c12.5 4.4 26.5 0.7 35.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l0.9-2.6c4.5-12.3 0.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9c-11.3 26.1-25.6 50.7-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97c-28.1 3.2-56.8 3.2-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9z" fill="#ffffff"/>
+  <path d="M512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176z m79.2 255.2C570 602.3 541.9 614 512 614c-29.9 0-58-11.7-79.2-32.8C411.7 560 400 531.9 400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8C612.3 444 624 472.1 624 502c0 29.9-11.7 58-32.8 79.2z" fill="#ffffff"/>
+</svg> 

+ 7 - 0
src/icons/svg/发货记录.svg

@@ -0,0 +1,7 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32z m-40 824H232V136h560v752z" fill="#ffffff"/>
+  <path d="M320 338h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zM320 466h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M320 594h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M680 696H344c-17.7 0-32 14.3-32 32v48c0 17.7 14.3 32 32 32h336c17.7 0 32-14.3 32-32v-48c0-17.7-14.3-32-32-32z" fill="#ffffff"/>
+</svg> 

+ 5 - 0
src/icons/svg/合同信息.svg

@@ -0,0 +1,5 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H372V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H192c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32z m-40 728H232V272h560v568z" fill="#ffffff"/>
+  <path d="M320 400h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zM320 544h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zM320 688h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+</svg> 

+ 7 - 0
src/icons/svg/合同审批.svg

@@ -0,0 +1,7 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H372V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H192c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32z m-40 728H232V272h560v568z" fill="#ffffff"/>
+  <path d="M492.3 397.1c-3.1-3.1-8.2-3.1-11.3 0L375.7 502.4c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l94.3-94.3 94.3 94.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.1 3.1-8.2 0-11.3L492.3 397.1z" fill="#ffffff"/>
+  <path d="M320 544h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M320 688h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+</svg> 

+ 6 - 0
src/icons/svg/合同款项.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H372V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H192c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32z m-40 728H232V272h560v568z" fill="#ffffff"/>
+  <path d="M512 400c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z m0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z" fill="#ffffff"/>
+  <path d="M512 472c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8s8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM488 576h48c4.4 0 8-3.6 8-8v-8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v8c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+</svg> 

+ 6 - 0
src/icons/svg/合同申请.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H372V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H192c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32z m-40 728H232V272h560v568z" fill="#ffffff"/>
+  <path d="M492 400h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zM492 544h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zM492 688h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M348 400h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zM348 544h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zM348 688h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+</svg> 

+ 5 - 0
src/icons/svg/合同管理.svg

@@ -0,0 +1,5 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326z m1.8 562H232V136h302v216c0 23.2 18.8 42 42 42h216v494z" fill="#ffffff"/>
+  <path d="M504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z" fill="#ffffff"/>
+</svg> 

+ 6 - 0
src/icons/svg/后台管理.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32z m-40 728H184V184h656v656z" fill="#ffffff"/>
+  <path d="M232 448h80v224h-80z m170 0h80v224h-80z m170 0h80v224h-80z m170 0h80v224h-80zM232 784h560v72H232z" fill="#ffffff"/>
+  <path d="M232 168h560v72H232z m0 136h560v72H232z" fill="#ffffff"/>
+</svg> 

+ 6 - 0
src/icons/svg/回访管理.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M877.1 238.7L770.6 132.3c-13-13-30.4-20.3-48.8-20.3s-35.8 7.2-48.8 20.3L558.3 246.8c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l89.6 89.7c-20.6 47.8-49.6 90.6-86.4 127.3-36.7 36.9-79.6 66-127.2 86.6l-89.6-89.7c-13-13-30.4-20.3-48.8-20.3s-35.8 7.2-48.8 20.3L132.3 673c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l106.4 106.4c22.2 22.2 52.8 34.9 84.2 34.9 6.5 0 12.8-0.5 19.2-1.6 132.4-21.8 263.8-92.3 369.9-198.3C818 606 888.4 474.6 910.4 342.1c6.3-37.6-6.3-76.3-33.3-103.4z" fill="#ffffff"/>
+  <path d="M480 416h-60c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM620 416h-60c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z" fill="#ffffff"/>
+  <path d="M780 416h-60c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z" fill="#ffffff"/>
+</svg> 

+ 6 - 0
src/icons/svg/备货通知.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M816 768h-24V428c0-141.1-104.3-257.8-240-277.2V112c0-22.1-17.9-40-40-40s-40 17.9-40 40v38.8C336.3 170.2 232 286.9 232 428v340h-24c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM484 814h56c15.5 0 28-12.5 28-28v-4c0-15.5-12.5-28-28-28h-56c-15.5 0-28 12.5-28 28v4c0 15.5 12.5 28 28 28z" fill="#ffffff"/>
+  <path d="M680 312H344c-17.7 0-32 14.3-32 32v280c0 17.7 14.3 32 32 32h336c17.7 0 32-14.3 32-32V344c0-17.7-14.3-32-32-32z m-40 272H384V384h256v200z" fill="#ffffff"/>
+  <path d="M428 472h168c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H428c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+</svg> 

+ 5 - 0
src/icons/svg/复核管理.svg

@@ -0,0 +1,5 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M904 512h-56c-4.4 0-8 3.6-8 8v320H184V184h320c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V520c0-4.4-3.6-8-8-8z" fill="#ffffff"/>
+  <path d="M355.9 534.9L354 653.8c-0.1 3.7 1.4 7.3 4.1 10 2.7 2.7 6.3 4.2 10 4.1l118.9-1.9c3.7-0.1 7.3-1.5 9.9-4.1l404.8-404.8c3.1-3.1 3.1-8.2 0-11.3L785.4 129.5c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1 0.8-5.7 2.3L369.2 525c-2.7 2.7-4.1 6.2-4.2 9.9z m26.1 69.7l-17.3 0.3 0.3-17.3 405.3-405.3 17.1 17.1-405.4 405.2z" fill="#ffffff"/>
+</svg> 

+ 5 - 0
src/icons/svg/字典管理.svg

@@ -0,0 +1,5 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M928 161H699.2c-49.1 0-97.1 14.1-138.4 40.7L512 233l-48.8-31.3C422 175.1 373.9 161 324.8 161H96c-17.7 0-32 14.3-32 32v568c0 17.7 14.3 32 32 32h228.8c49.1 0 97.1 14.1 138.4 40.7l44.4 28.6c1.3 0.8 2.8 1.3 4.3 1.3s3-0.4 4.3-1.3l44.4-28.6C602 807.1 650.1 793 699.2 793H928c17.7 0 32-14.3 32-32V193c0-17.7-14.3-32-32-32zM324.8 721H136V233h188.8c35.4 0 69.8 10.1 99.5 29.2l48.8 31.3 6.9 4.5v462c-47.6-25.6-100.8-39-155.2-39zm563.2 0H699.2c-54.4 0-107.6 13.4-155.2 39V298l6.9-4.5 48.8-31.3c29.7-19.1 64.1-29.2 99.5-29.2H888v488z" fill="#ffffff"/>
+  <path d="M396.9 361H211.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c0.1-4.1-3.1-7.5-7-7.5zM620 368.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c0-4.1-3.2-7.5-7.1-7.5H627.1c-3.9 0-7.1 3.4-7.1 7.5zM396.9 501H211.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c0.1-4.1-3.1-7.5-7-7.5zM812.9 501H627.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c0.1-4.1-3.1-7.5-7-7.5z" fill="#ffffff"/>
+</svg> 

+ 7 - 0
src/icons/svg/审批流程.svg

@@ -0,0 +1,7 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32z m-40 728H184V184h656v656z" fill="#ffffff"/>
+  <path d="M492.3 397.1c-3.1-3.1-8.2-3.1-11.3 0L375.7 502.4c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l94.3-94.3 94.3 94.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.1 3.1-8.2 0-11.3L492.3 397.1z" fill="#ffffff"/>
+  <path d="M492.3 626.9c-3.1-3.1-8.2-3.1-11.3 0L375.7 732.2c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l94.3-94.3 94.3 94.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.1 3.1-8.2 0-11.3L492.3 626.9z" fill="#ffffff"/>
+  <path d="M732.2 375.7c3.1-3.1 3.1-8.2 0-11.3l-11.3-11.3c-3.1-3.1-8.2-3.1-11.3 0l-94.3 94.3-94.3-94.3c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l116.9 116.9c3.1 3.1 8.2 3.1 11.3 0l116.9-116.9z" fill="#ffffff"/>
+</svg> 

+ 8 - 0
src/icons/svg/审批管理.svg

@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32z m-40 728H184V184h656v656z" fill="#ffffff"/>
+  <path d="M688.5 347.5l-11.3-11.3c-3.1-3.1-8.2-3.1-11.3 0L564.7 437.4c-1.6 1.6-3.6 2.3-5.7 2.3s-4.1-0.8-5.7-2.3l-55.1-55.1c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l69.9 69.9c6.2 6.2 16.4 6.2 22.6 0l115.7-115.7c3.1-3.1 3.1-8.1 0-11.3z" fill="#ffffff"/>
+  <path d="M688.5 555.5l-11.3-11.3c-3.1-3.1-8.2-3.1-11.3 0L564.7 645.4c-1.6 1.6-3.6 2.3-5.7 2.3s-4.1-0.8-5.7-2.3l-55.1-55.1c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l69.9 69.9c6.2 6.2 16.4 6.2 22.6 0l115.7-115.7c3.1-3.1 3.1-8.1 0-11.3z" fill="#ffffff"/>
+  <path d="M408 442h-80c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8z" fill="#ffffff"/>
+  <path d="M408 650h-80c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8z" fill="#ffffff"/>
+</svg> 

+ 6 - 0
src/icons/svg/客户信息.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M858.5 763.6c-18.9-44.8-46.1-85-80.6-119.5-34.5-34.5-74.7-61.6-119.5-80.6-0.4-0.2-0.8-0.3-1.2-0.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-0.4 0.2-0.8 0.3-1.2 0.5-44.8 18.9-85 46-119.5 80.6-34.5 34.5-61.6 74.7-80.6 119.5C146.9 807.5 137 854 136 901.8c-0.1 4.5 3.5 8.2 8 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c0.1 4.4 3.6 7.8 8 7.8h60c4.5 0 8.1-3.7 8-8.2-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z" fill="#ffffff"/>
+  <path d="M264 780h60c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M700 780h60c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+</svg> 

+ 4 - 0
src/icons/svg/客户资料.svg

@@ -0,0 +1,4 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M678.3 642.4c24.2-13 51.9-20.4 81.4-20.4h0.1c3 0 4.4-3.6 2.2-5.6-30.8-27.6-65.6-49.7-103.7-65.8-0.4-0.2-0.8-0.3-1.2-0.5C719.2 505 759.6 431.7 759.6 349c0-137-110.8-248-247.5-248S264.7 212 264.7 349c0 82.7 40.4 156 102.6 201.1-0.4 0.2-0.8 0.3-1.2 0.5-44.7 18.9-84.8 44.7-119.3 76.5-34.5 31.8-61.6 69-80.4 110.5C151.1 774 142 813 142 853.5V892h698v-39.5c0-40.5-9.1-79.5-24.4-115.9-8.3-22.5-20.1-43.7-35.1-63.1-3.3-4.3-6.8-8.5-10.3-12.6-2.2-2.6-0.7-6.5 2.7-6.5h0.1c46.1 0 90.3 16.1 124.6 43.9 5.7 4.5 13.9 0.2 13.9-7.3v-106c-22.2-7.9-57.6-13.6-98.1-15.3-2.6-0.1-4.6-2.5-3.7-5C615.7 656.9 647.1 650.4 678.3 642.4zM524 463c-108.5 0-196.5-87.9-196.5-196.5 0-108.5 87.9-196.5 196.5-196.5S720.5 158 720.5 266.5C720.5 375.1 632.5 463 524 463z" fill="#ffffff"/>
+</svg> 

+ 6 - 0
src/icons/svg/岗位管理.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32z m-40 728H184V184h656v656z" fill="#ffffff"/>
+  <path d="M492 400h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zM492 544h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zM492 688h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M348 400c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zM348 544c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zM348 688c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z" fill="#ffffff"/>
+</svg> 

+ 7 - 0
src/icons/svg/快递接收.svg

@@ -0,0 +1,7 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32z m-40 824H232V136h560v752z" fill="#ffffff"/>
+  <path d="M320 288h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M512 448l-192 192c-4.4 4.4-4.4 11.5 0 15.9l11.3 11.3c4.4 4.4 11.5 4.4 15.9 0L512 502.3l165.8 164.9c4.4 4.4 11.5 4.4 15.9 0l11.3-11.3c4.4-4.4 4.4-11.5 0-15.9l-192-192z" fill="#ffffff"/>
+  <path d="M512 640c-35.3 0-64 28.7-64 64v192c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V704c0-35.3-28.7-64-64-64z" fill="#ffffff"/>
+</svg> 

+ 5 - 0
src/icons/svg/投诉处理.svg

@@ -0,0 +1,5 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64z m0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z" fill="#ffffff"/>
+  <path d="M464 688a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM488 576h48c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+</svg> 

+ 6 - 0
src/icons/svg/报销审批.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H372V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H192c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32z m-40 728H232V272h560v568z" fill="#ffffff"/>
+  <path d="M492.3 397.1c-3.1-3.1-8.2-3.1-11.3 0L375.7 502.4c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l94.3-94.3 94.3 94.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.1 3.1-8.2 0-11.3L492.3 397.1z" fill="#ffffff"/>
+  <path d="M512 611.9c-45.8 0-89.8 7.2-131.2 20.3-41.3 13.1-78.5 31.8-110.5 55.8-31.9 24-57.2 52.1-75.2 83.4-18 31.3-27.1 64.9-27.1 99.6h687c0-34.7-9.1-68.3-27.1-99.6-18-31.3-43.3-59.4-75.2-83.4-31.9-24-69.1-42.7-110.5-55.8-41.4-13.1-85.4-20.3-131.2-20.3z" fill="#ffffff"/>
+</svg> 

+ 7 - 0
src/icons/svg/报销款项.svg

@@ -0,0 +1,7 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H372V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H192c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32z m-40 728H232V272h560v568z" fill="#ffffff"/>
+  <path d="M320 400h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M512 600c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z m0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z" fill="#ffffff"/>
+  <path d="M512 672c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8s8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM488 776h48c4.4 0 8-3.6 8-8v-8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v8c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+</svg> 

+ 6 - 0
src/icons/svg/报销申请.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32z m-40 656H184V460h656v380z m0-448H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136z" fill="#ffffff"/>
+  <path d="M512 611.9c-45.8 0-89.8 7.2-131.2 20.3-41.3 13.1-78.5 31.8-110.5 55.8-31.9 24-57.2 52.1-75.2 83.4-18 31.3-27.1 64.9-27.1 99.6 0 34.7 9.1 68.3 27.1 99.6 18 31.3 43.3 59.4 75.2 83.4 31.9 24 69.1 42.7 110.5 55.8 41.3 13.1 85.4 20.3 131.2 20.3s89.8-7.2 131.2-20.3c41.3-13.1 78.5-31.8 110.5-55.8 31.9-24 57.2-52.1 75.2-83.4 18-31.3 27.1-64.9 27.1-99.6 0-34.7-9.1-68.3-27.1-99.6-18-31.3-43.3-59.4-75.2-83.4-31.9-24-69.1-42.7-110.5-55.8-41.4-13.1-85.4-20.3-131.2-20.3z m0 448c-35.3 0-69.4-5.6-101.3-15.7-31.9-10.1-60.7-24.6-85.4-43.1-24.7-18.5-44.3-40.3-58.1-64.4-13.8-24.1-20.7-50-20.7-77.1 0-27.1 6.9-53 20.7-77.1 13.8-24.1 33.4-45.9 58.1-64.4 24.7-18.5 53.4-32.9 85.4-43.1 31.9-10.1 65.9-15.7 101.3-15.7s69.4 5.6 101.3 15.7c31.9 10.1 60.7 24.6 85.4 43.1 24.7 18.5 44.3 40.3 58.1 64.4 13.8 24.1 20.7 50 20.7 77.1 0 27.1-6.9 53-20.7 77.1-13.8 24.1-33.4 45.9-58.1 64.4-24.7 18.5-53.4 32.9-85.4 43.1-31.9 10.2-66 15.7-101.3 15.7z" fill="#ffffff"/>
+  <path d="M512 611.9c-45.8 0-89.8 7.2-131.2 20.3-41.3 13.1-78.5 31.8-110.5 55.8-31.9 24-57.2 52.1-75.2 83.4-18 31.3-27.1 64.9-27.1 99.6h687c0-34.7-9.1-68.3-27.1-99.6-18-31.3-43.3-59.4-75.2-83.4-31.9-24-69.1-42.7-110.5-55.8-41.4-13.1-85.4-20.3-131.2-20.3z" fill="#ffffff"/>
+</svg> 

+ 8 - 0
src/icons/svg/拜访记录.svg

@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32z m-40 824H232V136h560v752z" fill="#ffffff"/>
+  <path d="M512 352c-88 0-160 72-160 160s160 352 160 352 160-264 160-352-72-160-160-160z m0 256c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z" fill="#ffffff"/>
+  <path d="M384 208h256c4.4 0 8-3.6 8-8v-32c0-4.4-3.6-8-8-8H384c-4.4 0-8 3.6-8 8v32c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M320 288h384c4.4 0 8-3.6 8-8v-32c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v32c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M320 368h384c4.4 0 8-3.6 8-8v-32c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v32c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+</svg> 

Різницю між файлами не показано, бо вона завелика
+ 0 - 0
src/icons/svg/操作日志.svg


+ 7 - 0
src/icons/svg/流程管理.svg

@@ -0,0 +1,7 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32z m-40 728H184V184h656v656z" fill="#ffffff"/>
+  <path d="M340 683v77c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-77c-10.1 3.3-20.8 5-32 5s-21.9-1.8-32-5z m64-198V264c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v221c10.1-3.3 20.8-5 32-5s21.9 1.8 32 5z" fill="#ffffff"/>
+  <path d="M340 485c0 32.5 40.7 63.3 66.8 73.6 26.9 10.7 89.7 10.7 116.6 0 26.1-10.3 66.8-41.1 66.8-73.6v-42.7c-10.1 3.3-20.8 5-32 5s-21.9-1.8-32-5v42.7c0 15.7-23.4 36.4-41.7 43.7-13.3 5.3-44.5 5.3-57.8 0-18.3-7.3-41.7-28-41.7-43.7V264c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v221z" fill="#ffffff"/>
+  <path d="M628 683v77c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-77c-10.1 3.3-20.8 5-32 5s-21.9-1.8-32-5z m64-198V264c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v221c10.1-3.3 20.8-5 32-5s21.9 1.8 32 5z" fill="#ffffff"/>
+</svg> 

+ 5 - 0
src/icons/svg/消息管理.svg

@@ -0,0 +1,5 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M464 512a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM200 464a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM728 464a48 48 0 1 0 96 0 48 48 0 1 0-96 0z" fill="#ffffff"/>
+  <path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64z m263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2-44.3-18.7-84.1-45.6-118.3-79.8-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8c18.7-44.3 45.6-84.1 79.8-118.3 34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2 44.3 18.7 84.1 45.6 118.3 79.8 34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8c-18.7 44.3-45.6 84.1-79.8 118.2z" fill="#ffffff"/>
+</svg> 

+ 7 - 0
src/icons/svg/现场服务.svg

@@ -0,0 +1,7 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M512 327.7L354.7 513.1c-21.9 25.8-33.9 58.6-33.9 91.9 0 80.2 65.1 145.3 145.3 145.3s145.3-65.1 145.3-145.3c0-33.3-12-66.1-33.9-91.9L512 327.7z m0 71.7l117.1 138.4c14.5 17.1 22.5 38.9 22.5 61.2 0 53.2-43.2 96.3-96.3 96.3s-96.3-43.2-96.3-96.3c0-22.3 8-44.1 22.5-61.2L512 399.4z" fill="#ffffff"/>
+  <path d="M512 64c-181.1 0-328.2 147.1-328.2 328.2 0 181.1 216.5 445.9 328.2 445.9s328.2-264.8 328.2-445.9C840.2 211.1 693.1 64 512 64z m0 724.1c-83.7 0-279.2-239.5-279.2-395.9 0-154 125.2-279.2 279.2-279.2s279.2 125.2 279.2 279.2c0 156.4-195.5 395.9-279.2 395.9z" fill="#ffffff"/>
+  <path d="M708.5 428.5l-56.6-56.6c-3.1-3.1-8.2-3.1-11.3 0L579 433.5c-3.1 3.1-3.1 8.2 0 11.3l56.6 56.6c3.1 3.1 8.2 3.1 11.3 0l61.6-61.6c3.1-3.1 3.1-8.2 0-11.3z" fill="#ffffff"/>
+  <path d="M444.5 428.5l-56.6-56.6c-3.1-3.1-8.2-3.1-11.3 0L315 433.5c-3.1 3.1-3.1 8.2 0 11.3l56.6 56.6c3.1 3.1 8.2 3.1 11.3 0l61.6-61.6c3.1-3.1 3.1-8.2 0-11.3z" fill="#ffffff"/>
+</svg> 

+ 6 - 0
src/icons/svg/现场服务款项.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M876.6 239.5c-0.5-0.9-1.2-1.8-2-2.5-5-5-13.1-5-18.1 0L684.2 409.3l-67.9-67.9L788.7 169c0.8-0.8 1.4-1.6 2-2.5 3.6-6.1 1.6-13.9-4.5-17.5-98.2-58-226.8-34.2-294.9 33.9-35.7 35.7-56 82.3-57.4 130.9-0.3 9.3 7.5 16.8 16.8 16.1 41.5-3.3 84.3 4.7 123.2 24 4.4 2.2 9.7 1.2 13.1-2.3l47.9-47.9 67.9 67.9-47.9 47.9c-3.4 3.4-4.5 8.7-2.3 13.1 19.3 38.9 27.3 81.7 24 123.2-0.7 9.3 6.9 17.1 16.1 16.8 48.6-1.3 95.2-21.7 130.9-57.4 68.1-68 91.9-196.7 33.9-294.9-1.4-2.5-3.3-4.4-5.8-5.8z" fill="#ffffff"/>
+  <path d="M512 600c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z m0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z" fill="#ffffff"/>
+  <path d="M512 672c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8s8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM488 776h48c4.4 0 8-3.6 8-8v-8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v8c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+</svg> 

+ 7 - 0
src/icons/svg/生产工单.svg

@@ -0,0 +1,7 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H372V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H192c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32z m-40 728H232V272h560v568z" fill="#ffffff"/>
+  <path d="M876.6 239.5c-0.5-0.9-1.2-1.8-2-2.5-5-5-13.1-5-18.1 0L684.2 409.3l-67.9-67.9L788.7 169c0.8-0.8 1.4-1.6 2-2.5 3.6-6.1 1.6-13.9-4.5-17.5-98.2-58-226.8-34.2-294.9 33.9-35.7 35.7-56 82.3-57.4 130.9-0.3 9.3 7.5 16.8 16.8 16.1 41.5-3.3 84.3 4.7 123.2 24 4.4 2.2 9.7 1.2 13.1-2.3l47.9-47.9 67.9 67.9-47.9 47.9c-3.4 3.4-4.5 8.7-2.3 13.1 19.3 38.9 27.3 81.7 24 123.2-0.7 9.3 6.9 17.1 16.1 16.8 48.6-1.3 95.2-21.7 130.9-57.4 68.1-68 91.9-196.7 33.9-294.9-1.4-2.5-3.3-4.4-5.8-5.8z" fill="#ffffff"/>
+  <path d="M320 544h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M320 688h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+</svg> 

+ 8 - 0
src/icons/svg/生产总览.svg

@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z" fill="#ffffff"/>
+  <path d="M288 712h56c4.4 0 8-3.6 8-8V560c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M440 712h56c4.4 0 8-3.6 8-8V384c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v320c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M592 712h56c4.4 0 8-3.6 8-8V462c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v242c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M744 712h56c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v400c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+</svg> 

+ 5 - 0
src/icons/svg/电话回访.svg

@@ -0,0 +1,5 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M877.1 238.7L770.6 132.3c-13-13-30.4-20.3-48.8-20.3s-35.8 7.2-48.8 20.3L558.3 246.8c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l89.6 89.7c-20.6 47.8-49.6 90.6-86.4 127.3-36.7 36.9-79.6 66-127.2 86.6l-89.6-89.7c-13-13-30.4-20.3-48.8-20.3s-35.8 7.2-48.8 20.3L132.3 673c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l106.4 106.4c22.2 22.2 52.8 34.9 84.2 34.9 6.5 0 12.8-0.5 19.2-1.6 132.4-21.8 263.8-92.3 369.9-198.3C818 606 888.4 474.6 910.4 342.1c6.3-37.6-6.3-76.3-33.3-103.4z m-37.6 91.5c-19.5 117.9-82.9 235.5-178.4 331s-213 158.9-330.9 178.4c-14.8 2.5-30-2.5-40.8-13.2L184.9 721.9 295.7 611l119.8 120 0.9 0.9 21.6-8c43.6-16.8 84.6-41.6 120.3-77.3 35.7-35.7 60.5-76.7 77.3-120.3l8-21.6-120.8-120.7 110.8-110.9 104.5 104.5c10.8 10.8 15.8 26 13.3 40.8z" fill="#ffffff"/>
+  <path d="M729.5 451.4c-8.9-8.9-23.3-8.9-32.2 0l-129 129c-8.9 8.9-8.9 23.3 0 32.2 4.4 4.4 10.2 6.7 16.1 6.7s11.7-2.2 16.1-6.7l129-129c8.9-8.9 8.9-23.3 0-32.2z" fill="#ffffff"/>
+</svg> 

+ 8 - 0
src/icons/svg/登录日志.svg

@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32z m-40 824H232V136h560v752z" fill="#ffffff"/>
+  <path d="M484 366h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM302 366h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM666 366h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M320 498h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zM320 658h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M320 818h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M512 240c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64z" fill="#ffffff"/>
+</svg> 

Різницю між файлами не показано, бо вона завелика
+ 0 - 0
src/icons/svg/系统管理.svg


+ 6 - 0
src/icons/svg/线索客户.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M678.3 642.4c24.2-13 51.9-20.4 81.4-20.4h0.1c3 0 4.4-3.6 2.2-5.6-30.8-27.6-65.6-49.7-103.7-65.8-0.4-0.2-0.8-0.3-1.2-0.5C719.2 505 759.6 431.7 759.6 349c0-137-110.8-248-247.5-248S264.7 212 264.7 349c0 82.7 40.4 156 102.6 201.1-0.4 0.2-0.8 0.3-1.2 0.5-44.7 18.9-84.8 44.7-119.3 76.5-34.4 31.8-62.4 68.8-82.5 109.7C153.6 752.2 147 770 147 789c0 9.2 7.4 16.6 16.6 16.6h332.4c3 0 4.4-3.6 2.2-5.6-30.8-27.6-65.6-49.7-103.7-65.8-0.4-0.2-0.8-0.3-1.2-0.5C456.4 693.4 496.8 620.1 496.8 537.4c0-137-110.8-248-247.5-248S1.8 400.4 1.8 537.4c0 82.7 40.4 156 102.6 201.1" fill="#ffffff"/>
+  <path d="M832 512c-35.3 0-64 28.7-64 64v128c0 35.3 28.7 64 64 64s64-28.7 64-64V576c0-35.3-28.7-64-64-64zM832 832c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64z" fill="#ffffff"/>
+  <path d="M512 240c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64z" fill="#ffffff"/>
+</svg> 

+ 7 - 0
src/icons/svg/维修服务.svg

@@ -0,0 +1,7 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M876.8 428.8l-118.4-118.4c-9.6-9.6-25.6-9.6-35.2 0L604.8 428.8c-9.6 9.6-9.6 25.6 0 35.2l118.4 118.4c9.6 9.6 25.6 9.6 35.2 0l118.4-118.4c9.6-9.6 9.6-25.6 0-35.2z" fill="#ffffff"/>
+  <path d="M464 368L272 176c-12.8-12.8-32-12.8-44.8 0L176 227.2c-12.8 12.8-12.8 32 0 44.8l192 192c12.8 12.8 32 12.8 44.8 0l51.2-51.2c12.8-12.8 12.8-32 0-44.8z" fill="#ffffff"/>
+  <path d="M928 736H96c-17.6 0-32 14.4-32 32v64c0 17.6 14.4 32 32 32h832c17.6 0 32-14.4 32-32v-64c0-17.6-14.4-32-32-32z" fill="#ffffff"/>
+  <path d="M736 608H288c-17.6 0-32 14.4-32 32v64c0 17.6 14.4 32 32 32h448c17.6 0 32-14.4 32-32v-64c0-17.6-14.4-32-32-32z" fill="#ffffff"/>
+</svg> 

+ 7 - 0
src/icons/svg/维修服务款项.svg

@@ -0,0 +1,7 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M876.6 239.5c-0.5-0.9-1.2-1.8-2-2.5-5-5-13.1-5-18.1 0L684.2 409.3l-67.9-67.9L788.7 169c0.8-0.8 1.4-1.6 2-2.5 3.6-6.1 1.6-13.9-4.5-17.5-98.2-58-226.8-34.2-294.9 33.9-35.7 35.7-56 82.3-57.4 130.9-0.3 9.3 7.5 16.8 16.8 16.1 41.5-3.3 84.3 4.7 123.2 24 4.4 2.2 9.7 1.2 13.1-2.3l47.9-47.9 67.9 67.9-47.9 47.9c-3.4 3.4-4.5 8.7-2.3 13.1 19.3 38.9 27.3 81.7 24 123.2-0.7 9.3 6.9 17.1 16.1 16.8 48.6-1.3 95.2-21.7 130.9-57.4 68.1-68 91.9-196.7 33.9-294.9-1.4-2.5-3.3-4.4-5.8-5.8z" fill="#ffffff"/>
+  <path d="M320 477.9v-64.7c0-5.5-4.4-10-9.9-10h-58.1c-5.5 0-9.9 4.5-9.9 10v64.7c0 5.5 4.4 10 9.9 10h58.1c5.5 0 9.9-4.5 9.9-10z" fill="#ffffff"/>
+  <path d="M512 600c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z m0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z" fill="#ffffff"/>
+  <path d="M512 672c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8s8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM488 776h48c4.4 0 8-3.6 8-8v-8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v8c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+</svg> 

+ 5 - 0
src/icons/svg/菜单管理.svg

@@ -0,0 +1,5 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM400 646h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H400c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM400 850h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H400c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M136 384h120c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H136c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM136 588h120c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H136c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM136 792h120c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H136c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+</svg> 

+ 1 - 1
src/icons/svg/角色管理.svg

@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1600828289049" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="79482" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M640.448 288H960v64h-319.552zM640 128h319.552v64H640zM640.448 448H960v64h-319.552zM470.656 588.032a162.624 162.624 0 0 0-85.888-300.928 162.816 162.816 0 0 0-162.816 162.944c0 58.304 30.784 109.12 76.864 137.92C163.904 625.728 64 748.864 64 896h66.56a254.656 254.656 0 0 1 254.08-254.592A254.784 254.784 0 0 1 639.04 896h66.56c-0.064-147.136-100.032-270.144-234.944-307.968z m-85.824-41.6a96.448 96.448 0 0 1-96.32-96.384c0-53.12 43.264-96.32 96.32-96.32a96.384 96.384 0 0 1 0 192.704z" fill="#ffffff" p-id="79483"></path></svg>
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M632 888H392c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h240c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM512 144c-141.4 0-256 114.6-256 256s114.6 256 256 256 256-114.6 256-256-114.6-256-256-256z m0 448c-106 0-192-86-192-192s86-192 192-192 192 86 192 192-86 192-192 192z" fill="#ffffff"></path><path d="M456.7 444.3c-3.1 3.1-3.1 8.2 0 11.3l95.9 95.9c3.1 3.1 8.2 3.1 11.3 0l95.9-95.9c3.1-3.1 3.1-8.2 0-11.3L564 348.4c-3.1-3.1-8.2-3.1-11.3 0l-95.9 95.9z" fill="#ffffff"></path></svg>

+ 7 - 0
src/icons/svg/货品分类.svg

@@ -0,0 +1,7 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M880 298.4H521L403.7 186.2c-1.5-1.4-3.5-2.2-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z" fill="#ffffff"/>
+  <path d="M320 544h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M320 688h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M320 400h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+</svg> 

+ 8 - 0
src/icons/svg/货品基础信息.svg

@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32z m-40 824H232V136h560v752z" fill="#ffffff"/>
+  <path d="M320 400h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M320 544h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M320 688h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M320 832h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+</svg> 

+ 6 - 0
src/icons/svg/货品管理.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32z m-40 824H232V136h560v752z" fill="#ffffff"/>
+  <path d="M312 544h400c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H312c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zM312 412h400c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H312c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zM312 676h400c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H312c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M608 788H416c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h192c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z" fill="#ffffff"/>
+</svg> 

+ 6 - 0
src/icons/svg/远程服务.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M928 140H96c-17.7 0-32 14.3-32 32v496c0 17.7 14.3 32 32 32h380v72H304c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h416c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H548v-72h380c17.7 0 32-14.3 32-32V172c0-17.7-14.3-32-32-32z m-40 488H136V212h752v416z" fill="#ffffff"/>
+  <path d="M610.2 476h123.4c5.5 0 8.8-6.2 5.6-10.6L635.7 324.5c-2.9-4-8.9-4-11.8 0L520.4 465.4c-3.2 4.4 0.1 10.6 5.6 10.6h84.2z" fill="#ffffff"/>
+  <path d="M414.8 476H291.4c-5.5 0-8.8-6.2-5.6-10.6l103.5-140.9c2.9-4 8.9-4 11.8 0l103.5 140.9c3.2 4.4-0.1 10.6-5.6 10.6h-84.2z" fill="#ffffff"/>
+</svg> 

+ 7 - 0
src/icons/svg/远程服务款项.svg

@@ -0,0 +1,7 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32z m-40 728H184V184h656v656z" fill="#ffffff"/>
+  <path d="M492.3 397.1c-3.1-3.1-8.2-3.1-11.3 0L375.7 502.4c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l94.3-94.3 94.3 94.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.1 3.1-8.2 0-11.3L492.3 397.1z" fill="#ffffff"/>
+  <path d="M512 600c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z m0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z" fill="#ffffff"/>
+  <path d="M512 672c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8s8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM488 776h48c4.4 0 8-3.6 8-8v-8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v8c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+</svg> 

+ 6 - 0
src/icons/svg/通知公告.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M880 112c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32s32-14.3 32-32V144c0-17.7-14.3-32-32-32zM768 840H144c-17.7 0-32-14.3-32-32V216c0-17.7 14.3-32 32-32h624v656zM712 184H184v576h528V184z" fill="#ffffff"/>
+  <path d="M288 352h336c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H288c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zM288 544h336c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H288c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M288 736h336c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H288c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+</svg> 

+ 7 - 0
src/icons/svg/部门管理.svg

@@ -0,0 +1,7 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path d="M880 298.4H521L403.7 186.2c-1.5-1.4-3.5-2.2-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z" fill="#ffffff"/>
+  <path d="M484 476h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM302 476h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM666 476h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z" fill="#ffffff"/>
+  <path d="M512 624H448c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM330 624H266c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM694 624H630c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z" fill="#ffffff"/>
+  <path d="M373 517l-0.9 0.9c35.3 35.3 92.5 35.3 127.8 0l-0.9-0.9c-35.3-35.3-90.7-35.3-126 0zM555 517l-0.9 0.9c35.3 35.3 92.5 35.3 127.8 0l-0.9-0.9c-35.3-35.3-90.7-35.3-126 0z" fill="#ffffff"/>
+</svg> 

+ 1 - 1
src/icons/svg/首页.svg

@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1600761038101" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5215" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M960.856566 463.515152L586.294949 88.824242c-20.428283-20.428283-47.450505-31.547475-76.282828-31.547474s-55.854545 11.248485-76.282828 31.547474L63.046465 459.636364c-9.050505 9.050505-9.050505 23.789899 0 32.969697 9.050505 9.050505 23.789899 9.050505 32.969697 0l38.141414-38.141415v369.519192c0 38.141414 14.610101 73.955556 41.115151 100.848485 26.634343 27.022222 62.319192 42.020202 100.460606 42.020202h469.333334c79.127273 0 143.515152-64.129293 143.515151-142.868687V456.921212l39.434344 39.434344c4.525253 4.525253 10.472727 6.852525 16.420202 6.852525s11.894949-2.327273 16.420202-6.852525c9.179798-9.050505 9.179798-23.789899 0-32.840404zM621.20404 920.177778h-218.50505v-250.828283c0-9.309091 7.49899-16.808081 16.808081-16.808081h184.888889c9.309091 0 16.808081 7.49899 16.80808 16.808081v250.828283z m220.832324-96.323233c0 53.139394-43.442424 96.323232-96.969697 96.323233h-77.317172v-250.828283c0-34.909091-28.444444-63.353535-63.353535-63.353535h-184.888889c-34.909091 0-63.353535 28.444444-63.353536 63.353535v250.828283h-80.549495c-52.363636 0-95.030303-43.183838-95.030303-96.323233v-415.030303H179.668687l287.030303-287.030303c11.636364-11.636364 27.022222-17.971717 43.313131-17.971717s31.806061 6.335354 43.313132 17.971717l288.581818 288.581819v413.478787z" fill="#ffffff" p-id="5216"></path></svg>
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1600764537714" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13015" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M946.5 505L560.1 118.8l-25.9-25.9c-12.3-12.2-32.1-12.2-44.4 0L77.5 505c-12.3 12.3-18.9 28.6-18.8 46 0.4 35.2 29.7 63.3 64.9 63.3h42.5V940h691.8V614.3h43.4c17.1 0 33.2-6.7 45.3-18.8 12.1-12.1 18.7-28.2 18.7-45.3 0-17-6.7-33.1-18.8-45.2zM568 868H456V664h112v204z m217.9-325.7V868H632V640c0-22.1-17.9-40-40-40H432c-22.1 0-40 17.9-40 40v228H238.1V542.3h-96l341.9-341.9L826 542.3h-40.1z" fill="#ffffff" p-id="13016"></path></svg>

+ 68 - 4
src/styles/sidebar.scss

@@ -13,12 +13,13 @@
     background-color: $menuBg;
     height: 100%;
     position: fixed;
-    font-size: 0px;
+    font-size: 14px;
     top: 0;
     bottom: 0;
     left: 0;
     z-index: 1001;
     overflow: hidden;
+    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
 
     // reset element-ui css
     .horizontal-collapse-transition {
@@ -54,7 +55,9 @@
     }
 
     .svg-icon {
-      margin-right: 16px;
+      margin-right: 12px;
+      font-size: 16px;
+      vertical-align: middle;
     }
 
     .el-menu {
@@ -63,6 +66,18 @@
       width: 100% !important;
     }
 
+    .el-menu-item, .el-submenu__title {
+      height: 50px;
+      line-height: 50px;
+      padding: 0 16px !important;
+      transition: all 0.3s ease;
+      
+      &:hover {
+        background-color: $menuHover !important;
+        color: $menuActiveText !important;
+      }
+    }
+
     // menu hover
     .submenu-title-noDropdown,
     .el-submenu__title {
@@ -75,15 +90,64 @@
       color: $subMenuActiveText !important;
     }
 
+    .el-submenu {
+      .el-menu {
+        background-color: $subMenuBg !important;
+        margin: 0;
+        padding: 5px;
+        position: relative;
+        
+        &::before {
+          content: '';
+          position: absolute;
+          left: 24px;
+          top: 0;
+          bottom: 0;
+          width: 1px;
+          background: rgba(255, 255, 255, 0.1);
+        }
+      }
+    }
+
     & .nest-menu .el-submenu>.el-submenu__title,
     & .el-submenu .el-menu-item {
       min-width: $sideBarWidth !important;
-      background-color: $subMenuBg !important;
-
+      background-color: transparent !important;
+      padding: 0 16px 0 40px !important;
+      font-size: 13px;
+      height: 44px;
+      line-height: 44px;
+      margin: 2px 0;
+      
       &:hover {
         background-color: $subMenuHover !important;
+        color: $menuActiveText !important;
+      }
+
+      &::before {
+        content: '';
+        position: absolute;
+        left: 24px;
+        top: 50%;
+        width: 6px;
+        height: 1px;
+        background-color: rgba(255, 255, 255, 0.5);
+      }
+    }
+
+    .el-menu-item.is-active {
+      background-color: $menuHover !important;
+      color: $menuActiveText !important;
+      
+      &::before {
+        background-color: $menuActiveText;
       }
     }
+
+    // 调整箭头位置
+    .el-submenu__icon-arrow {
+      right: 15px;
+    }
   }
 
   .hideSidebar {

+ 8 - 8
src/styles/variables.scss

@@ -9,17 +9,17 @@ $yellow:#FEC171;
 $panGreen: #30B08F;
 
 // sidebar
-$menuText:#bfcbd9;
-$menuActiveText:#409EFF;
-$subMenuActiveText:#f4f4f5; // https://github.com/ElemeFE/element/issues/12951
+$menuText:#a6b7d4;
+$menuActiveText:#ffffff;
+$subMenuActiveText:#ffffff;
 
-$menuBg:#304156;
-$menuHover:#263445;
+$menuBg:#1e293b;
+$menuHover:#2d4156;
 
-$subMenuBg:#1f2d3d;
-$subMenuHover:#001528;
+$subMenuBg:#283447;
+$subMenuHover:#2d4156;
 
-$sideBarWidth: 210px;
+$sideBarWidth: 180px;
 
 // the :export directive is the magic sauce for webpack
 // https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass

+ 83 - 19
src/views/productManagement/productionSummary/components/BarChart.vue

@@ -57,7 +57,7 @@ export default {
       this.setOptions(this.chartData)
     },
     setOptions({ labels, datasets } = {}) {
-      this.chart.setOption({
+      const option = {
         tooltip: {
           trigger: 'axis',
           axisPointer: {
@@ -65,36 +65,100 @@ export default {
           }
         },
         legend: {
-          data: ['计划量', '完成量'],
-          bottom: '0%'
+          data: ['计划量', '完成量', '完成率'],
+          right: '4%',
+          top: '0%'
         },
         grid: {
           left: '3%',
           right: '4%',
-          bottom: '10%',
-          top: '3%',
+          bottom: '3%',
           containLabel: true
         },
         xAxis: {
           type: 'category',
           data: labels,
-          axisTick: {
-            alignWithLabel: true
+          axisLabel: {
+            interval: 0,
+            rotate: 30
           }
         },
-        yAxis: {
-          type: 'value'
-        },
-        series: datasets.map(dataset => ({
-          name: dataset.label,
-          type: 'bar',
-          data: dataset.data,
-          itemStyle: {
-            color: dataset.backgroundColor
+        yAxis: [
+          {
+            type: 'value',
+            name: '单位/个',
+            position: 'left',
+            axisLine: {
+              show: true,
+              lineStyle: {
+                color: '#606266'
+              }
+            },
+            axisLabel: {
+              formatter: '{value}'
+            }
+          },
+          {
+            type: 'value',
+            name: '完成率',
+            position: 'right',
+            max: 100,
+            axisLine: {
+              show: true,
+              lineStyle: {
+                color: '#67C23A'
+              }
+            },
+            axisLabel: {
+              formatter: '{value}%'
+            }
+          }
+        ],
+        series: [
+          {
+            name: '计划量',
+            type: 'bar',
+            data: datasets[0].data,
+            itemStyle: {
+              color: '#409EFF'
+            },
+            barMaxWidth: 30
+          },
+          {
+            name: '完成量',
+            type: 'bar',
+            data: datasets[1].data,
+            itemStyle: {
+              color: '#FF9F43'
+            },
+            barMaxWidth: 30
+          },
+          {
+            name: '完成率',
+            type: 'line',
+            yAxisIndex: 1,
+            data: datasets[2].data,
+            itemStyle: {
+              color: '#67C23A'
+            },
+            lineStyle: {
+              width: 2
+            },
+            symbol: 'circle',
+            symbolSize: 6
           }
-        }))
-      })
+        ]
+      }
+      this.chart.setOption(option)
     }
   }
 }
-</script> 
+</script>
+
+<style lang="scss" scoped>
+.chart-container {
+  position: relative;
+  width: 100%;
+  height: 100%;
+}
+</style> 

+ 465 - 0
src/views/productManagement/productionSummary/components/ProductionStatusChart.vue

@@ -0,0 +1,465 @@
+<template>
+  <el-card class="box-card">
+    <div slot="header" class="clearfix">
+      <div class="chart-header">
+        <span>货品生产情况</span>
+        <div class="chart-filters">
+          <el-select v-model="month" placeholder="月" size="small" style="width: 100px; margin-right: 10px;">
+            <el-option label="本周" value="1"/>
+            <el-option label="当月" value="2"/>
+            <el-option label="近三月" value="3"/>
+            <el-option label="近半年" value="4"/>
+            <el-option label="全年" value="5"/>
+          </el-select>
+          <el-select 
+            v-model="product" 
+            placeholder="货品" 
+            size="small" 
+            style="width: 120px;"
+            :loading="productLoading"
+          >
+            <el-option label="全部" value="all"/>
+            <el-option 
+              v-for="item in productOptions" 
+              :key="item.value" 
+              :label="item.label" 
+              :value="item.value"
+            />
+          </el-select>
+        </div>
+      </div>
+    </div>
+    <div class="chart-wrapper">
+      <div ref="chartRef" style="width: 100%; height: 100%;"></div>
+    </div>
+  </el-card>
+</template>
+
+<script>
+import * as echarts from 'echarts'
+import _ from 'lodash'
+// import { getProductList } from '@/api/production' // 后续需要添加此API
+
+export default {
+  name: 'MonthlyChart',
+  props: {
+    chartData: {
+      type: Object,
+      required: true
+    }
+  },
+  data() {
+    return {
+      month: '1',
+      product: 'all',
+      productLoading: false,
+      productOptions: [],
+      chart: null,
+      // 示例数据
+      defaultProductOptions: [
+        { label: '智能膜环', value: '智能膜环' },
+        { label: '智能喷淋', value: '智能喷淋' },
+        { label: '佳沃评分', value: '佳沃评分' },
+        { label: '大屏', value: '大屏' },
+        { label: '耳标', value: '耳标' },
+        { label: '智能称重', value: '智能称重' }
+      ],
+      // 图表示例数据
+      localChartData: {
+        xAxis: ['智能喷淋', '智能膜环', '提拉器', '精准喷喷', '奶台识别', '体况评分', '车载控制器', '大屏'],
+        series: {
+          plan: [2000, 600, 700, 970, 680, 840, 500, 1600],
+          actual: [1600, 550, 500, 800, 430, 800, 500, 1600],
+          rate: [80, 92, 71, 82, 63, 95, 100, 100]
+        }
+      },
+      lastData: null
+    }
+  },
+  mounted() {
+    this.$nextTick(() => {
+      this.initChart()
+      this.initProductOptions()
+    })
+    window.addEventListener('resize', this.resizeHandler)
+  },
+  beforeDestroy() {
+    if (this.chart) {
+      this.chart.dispose()
+      this.chart = null
+    }
+    window.removeEventListener('resize', this.resizeHandler)
+    this.clearResizeHandler()
+  },
+  watch: {
+    month() {
+      this.$emit('filter-change', { month: this.month, product: this.product })
+    },
+    product() {
+      this.$emit('filter-change', { month: this.month, product: this.product })
+    },
+    chartData: {
+      deep: true,
+      handler(val) {
+        this.updateChart(val)
+      }
+    }
+  },
+  methods: {
+    initChart() {
+      this.chart = echarts.init(this.$refs.chartRef)
+      this.setChartOption(this.localChartData)
+    },
+    // 防抖处理resize
+    resizeHandler: _.debounce(function() {
+      if (this.chart) {
+        this.chart.resize()
+      }
+    }, 100),
+    clearResizeHandler() {
+      if (this.resizeHandler) {
+        this.resizeHandler.cancel()
+      }
+    },
+    setChartOption(data) {
+      if (!this.chart) return
+      
+      const option = {
+        animation: true,
+        animationDuration: 300,
+        animationEasing: 'cubicOut',
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            type: 'shadow'
+          },
+          formatter: function(params) {
+            let html = params[0].axisValue + '<br/>'
+            params.forEach(item => {
+              let color = item.color
+              if (item.seriesName === '计划量') {
+                color = 'rgb(0, 127, 255)'
+              } else if (item.seriesName === '完成量') {
+                color = 'rgb(255, 134, 42)'
+              } else if (item.seriesName === '完成率') {
+                color = 'rgb(68, 165, 60)'
+              }
+              const marker = '<span style="display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:' + color + '"></span>'
+              const value = item.seriesName === '完成率' ? item.value + '%' : item.value
+              html += marker + item.seriesName + ': ' + value + '<br/>'
+            })
+            return html
+          }
+        },
+        legend: {
+          data: ['计划量', '完成量', '完成率'],
+          top: '0',
+          left: 'center',
+          orient: 'horizontal',
+          itemGap: 30,
+          textStyle: {
+            fontSize: 12,
+            color: '#666'
+          }
+        },
+        grid: {
+          left: '3%',
+          right: '4%',
+          bottom: '3%',
+          top: '10%',
+          containLabel: true
+        },
+        xAxis: {
+          type: 'category',
+          data: data.xAxis || [],
+          axisLabel: {
+            interval: 0,
+            rotate: 30
+          }
+        },
+        yAxis: [
+          {
+            type: 'value',
+            name: '单位/个',
+            position: 'left',
+            interval: 200,
+            axisLine: {
+              show: true
+            },
+            splitLine: {
+              show: false
+            }
+          },
+          {
+            type: 'value',
+            name: '完成率(%)',
+            position: 'right',
+            max: 100,
+            interval: 10,
+            axisLine: {
+              show: true
+            },
+            splitLine: {
+              show: false
+            }
+          }
+        ],
+        series: [
+          {
+            name: '计划量',
+            type: 'custom',
+            barGap: '30%',
+            itemStyle: {
+              color: 'rgb(0, 127, 255)'
+            },
+            renderItem: (params, api) => {
+              const location = api.coord([api.value(0), api.value(1)]);
+              const start = api.coord([api.value(0), 0]);
+              const size = api.size([0, api.value(1)]);
+              const style = api.style();
+              const radius = 7.5;
+              const value = api.value(1);
+              
+              return {
+                type: 'group',
+                children: [{
+                  type: 'rect',
+                  shape: {
+                    x: location[0] - radius,
+                    y: location[1],
+                    width: radius * 2,
+                    height: Math.max(0, start[1] - location[1])
+                  },
+                  style: {
+                    fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                      offset: 0,
+                      color: 'rgb(0, 127, 255)'
+                    }, {
+                      offset: 1,
+                      color: 'rgb(0, 127, 255)'
+                    }])
+                  }
+                }, {
+                  type: 'circle',
+                  shape: {
+                    cx: location[0],
+                    cy: location[1],
+                    r: radius
+                  },
+                  style: {
+                    fill: 'rgb(0, 127, 255)'
+                  }
+                }, {
+                  type: 'text',
+                  style: {
+                    text: value,
+                    textFont: api.font({fontSize: 12}),
+                    textFill: 'rgb(0, 127, 255)',
+                    textAlign: 'center',
+                    textVerticalAlign: 'bottom',
+                    x: location[0],
+                    y: location[1] - 10
+                  }
+                }]
+              };
+            },
+            data: data.series.plan || [],
+            label: {
+              show: true,
+              position: 'top',
+              distance: 10,
+              fontSize: 12,
+              color: 'rgb(0, 127, 255)',
+              formatter: function(params) {
+                return params.value
+              }
+            }
+          },
+          {
+            name: '完成量',
+            type: 'custom',
+            barGap: '30%',
+            itemStyle: {
+              color: 'rgb(255, 134, 42)'
+            },
+            renderItem: (params, api) => {
+              const location = api.coord([api.value(0), api.value(1)]);
+              const start = api.coord([api.value(0), 0]);
+              const size = api.size([0, api.value(1)]);
+              const style = api.style();
+              const radius = 7.5;
+              const value = api.value(1);
+              
+              return {
+                type: 'group',
+                children: [{
+                  type: 'rect',
+                  shape: {
+                    x: location[0] - radius + 20,  // 向右偏移20个像素
+                    y: location[1],
+                    width: radius * 2,
+                    height: Math.max(0, start[1] - location[1])
+                  },
+                  style: {
+                    fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                      offset: 0,
+                      color: 'rgb(255, 134, 42)'
+                    }, {
+                      offset: 1,
+                      color: 'rgb(255, 134, 42)'
+                    }])
+                  }
+                }, {
+                  type: 'circle',
+                  shape: {
+                    cx: location[0] + 20,  // 向右偏移20个像素
+                    cy: location[1],
+                    r: radius
+                  },
+                  style: {
+                    fill: 'rgb(255, 134, 42)'
+                  }
+                }, {
+                  type: 'text',
+                  style: {
+                    text: value,
+                    textFont: api.font({fontSize: 12}),
+                    textFill: 'rgb(255, 134, 42)',
+                    textAlign: 'center',
+                    textVerticalAlign: 'bottom',
+                    x: location[0] + 20,  // 向右偏移20个像素
+                    y: location[1] - 10
+                  }
+                }]
+              };
+            },
+            data: data.series.actual || [],
+            label: {
+              show: true,
+              position: 'top',
+              distance: 10,
+              fontSize: 12,
+              color: 'rgb(255, 134, 42)',
+              formatter: function(params) {
+                return params.value
+              }
+            }
+          },
+          {
+            name: '完成率',
+            type: 'line',
+            yAxisIndex: 1,
+            data: data.series.rate || [],
+            symbolSize: 5,
+            showSymbol: true,
+            legendSymbol: 'circle',
+            lineStyle: {
+              width: 1,
+              type: 'solid',
+              color: 'rgb(68, 165, 60)'
+            },
+            itemStyle: {
+              color: 'rgb(68, 165, 60)',
+              borderColor: 'rgb(68, 165, 60)',
+              borderWidth: 1
+            },
+            // label: {
+            //   show: true,
+            //   formatter: '{c}%',
+            //   position: 'top',
+            //   distance: 10,
+            //   fontSize: 12,
+            //   color: 'rgb(68, 165, 60)'
+            // }
+          }
+        ]
+      }
+      
+      // 使用 notMerge 参数为 false,只更新数据
+      this.chart.setOption(option, false)
+    },
+    updateChart(data) {
+      if (!this.chart) return
+      
+      const chartData = data || this.localChartData
+      // 只在数据真正变化时才更新图表
+      if (JSON.stringify(this.lastData) !== JSON.stringify(chartData)) {
+        this.lastData = chartData
+        this.setChartOption(chartData)
+      }
+    },
+    async initProductOptions() {
+      try {
+        this.productLoading = true
+        await this.fetchProductList()
+      } catch (error) {
+        console.error('初始化产品列表失败:', error)
+      } finally {
+        this.productLoading = false
+      }
+    },
+    async fetchProductList() {
+      try {
+        this.productLoading = true
+        // 使用 Promise.race 添加超时处理
+        const result = await Promise.race([
+          this.getProductList(),
+          new Promise((_, reject) => 
+            setTimeout(() => reject(new Error('请求超时')), 5000)
+          )
+        ])
+        
+        this.productOptions = result || this.defaultProductOptions
+      } catch (error) {
+        console.error('获取产品列表失败:', error)
+        this.$message.error(error.message || '获取产品列表失败')
+        // 加载失败时使用默认选项
+        this.productOptions = this.defaultProductOptions
+      } finally {
+        this.productLoading = false
+      }
+    },
+    async getProductList() {
+      try {
+        // TODO: 后端接口完成后替换此处
+        // const { data } = await getProductList()
+        // this.productOptions = data.map(item => ({
+        //   label: item.name,
+        //   value: item.code
+        // }))
+        
+        // 模拟接口调用
+        await new Promise(resolve => setTimeout(resolve, 500))
+        return this.defaultProductOptions
+      } catch (error) {
+        console.error('获取产品列表失败:', error)
+        return null
+      }
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.box-card {
+  margin-top: 20px;
+}
+
+.chart-wrapper {
+  background: #fff;
+  padding: 24px;
+  height: 500px;
+  border-radius: 8px;
+}
+
+.chart-header {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  
+  .chart-filters {
+    display: flex;
+    align-items: center;
+  }
+}
+</style> 

+ 510 - 0
src/views/productManagement/productionSummary/components/ProductionTable.vue

@@ -0,0 +1,510 @@
+<template>
+  <el-card class="box-card">
+    <div slot="header" class="clearfix">
+      <div style="display: flex; justify-content: space-between; align-items: center;">
+        <div>
+          <span style="font-size: 13px;">生产概况</span>
+          <span style="margin-left: 8px; font-size: 13px; color: #666;">{{ updateTime }}</span>
+        </div>
+        <el-tag type="primary" size="small" style="cursor: pointer" @click="handleUnassignedClick">
+          未接单:{{ unassignedCount }}条
+        </el-tag>
+      </div>
+    </div>
+    <div class="table-container">
+      <el-table 
+        v-loading="loading"
+        :data="displayData" 
+        style="width: 100%" 
+        border 
+        size="small"
+      >
+        <el-table-column prop="orderNo" label="订单编号" width="110" align="center"/>
+        <el-table-column prop="productName" label="货品名称" min-width="110" align="center" sortable="custom"/>
+        <el-table-column prop="status" label="单据状态" width="100" align="center" sortable="custom">
+          <template slot-scope="scope">
+            <el-tag :type="getStatusType(scope.row.status)" size="mini" effect="plain">
+              {{ scope.row.status }}
+            </el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column prop="progress" label="进度" width="250" align="center" sortable="custom">
+          <template slot-scope="scope">
+            <div class="progress-wrapper">
+              <div class="progress-container">
+                <div class="progress-bar">
+                  <el-progress
+                    :percentage="(scope.row.progress / scope.row.total) * 100"
+                    :stroke-width="8"
+                    :show-text="false"
+                    :color="getProgressColor(scope.row.status)"/>
+                </div>
+                <div class="progress-info">
+                  <span 
+                    class="finished-number"
+                    @click="$emit('progress-click', scope.row)"
+                    style="cursor: pointer; color: #409EFF; margin-right: 2px;">
+                    {{ scope.row.progress }}
+                  </span>
+                  <span style="color: #909399;">/</span>
+                  <span class="total-number" style="color: #606266; margin-left: 2px;">{{ scope.row.total }}</span>
+                </div>
+              </div>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="total" label="计划量" width="75" align="center"/>
+        <el-table-column prop="finished" label="已完成量" width="85" align="center"/>
+        <el-table-column prop="unfinished" label="未完成量" width="85" align="center"/>
+        <el-table-column prop="yesterdayFinished" label="昨日完成量" width="95" align="center"/>
+        <el-table-column prop="todayFinished" label="今日完成量" width="95" align="center"/>
+        <el-table-column prop="rate" label="完成率" width="100" align="center" sortable="custom">
+          <template slot-scope="scope">
+            {{ (scope.row.finished / scope.row.total * 100).toFixed(1) + '%' }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="remainingDays" label="距离完成时间还剩" width="130" align="center">
+          <template slot-scope="scope">
+            <span :style="{ color: scope.row.remainingDays < 0 ? '#F56C6C' : '' }">
+              {{ scope.row.remainingDays > 0 ? scope.row.remainingDays + '天' : '超期' + Math.abs(scope.row.remainingDays) + '天' }}
+            </span>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="expand-button" v-if="tableData.length > 5">
+        <el-button type="text" @click="isExpanded = !isExpanded" class="expand-btn">
+          <div class="button-content">
+            <i :class="['el-icon-arrow-' + (isExpanded ? 'up' : 'down')]"></i>
+            <span class="expand-text">{{ isExpanded ? '收起' : '展开更多' }}</span>
+          </div>
+        </el-button>
+      </div>
+    </div>
+  </el-card>
+</template>
+
+<script>
+// import { getProductionList, getUnassignedCount } from '@/api/production' // 后续需要添加此API
+
+export default {
+  name: 'ProductionTable',
+  data() {
+    return {
+      loading: false,
+      unassignedCount: 0,
+      isExpanded: false,
+      localTableData: [], // 本地数据
+      sortConfig: {
+        prop: '', // 排序的字段
+        order: '' // 排序的方向
+      },
+      // 示例数据
+      defaultData: [
+        {
+          orderNo: 'DD20240001',
+          productName: '包装材料A型',
+          status: '进行中',
+          progress: 900,
+          total: 4000,
+          finished: 900,
+          unfinished: 3100,
+          yesterdayFinished: 100,
+          todayFinished: 50,
+          rate: '22.5%',
+          remainingDays: 7
+        },
+        {
+          orderNo: 'DD20240002',
+          productName: '塑料外壳B型',
+          status: '已超期',
+          progress: 1500,
+          total: 2000,
+          finished: 1500,
+          unfinished: 500,
+          yesterdayFinished: 200,
+          todayFinished: 150,
+          rate: '75%',
+          remainingDays: -3
+        },
+        {
+          orderNo: 'DD20240003',
+          productName: '金属零件C型',
+          status: '未开始',
+          progress: 0,
+          total: 3000,
+          finished: 0,
+          unfinished: 3000,
+          yesterdayFinished: 0,
+          todayFinished: 0,
+          rate: '0%',
+          remainingDays: 15
+        },
+        {
+          orderNo: 'DD20240004',
+          productName: '电子元件D型',
+          status: '进行中',
+          progress: 2000,
+          total: 5000,
+          finished: 2000,
+          unfinished: 3000,
+          yesterdayFinished: 300,
+          todayFinished: 200,
+          rate: '40%',
+          remainingDays: 10
+        },
+        {
+          orderNo: 'DD20240005',
+          productName: '橡胶配件E型',
+          status: '已超期',
+          progress: 800,
+          total: 1000,
+          finished: 800,
+          unfinished: 200,
+          yesterdayFinished: 80,
+          todayFinished: 40,
+          rate: '80%',
+          remainingDays: -5
+        },
+        {
+          orderNo: 'DD20240006',
+          productName: '电路板F型',
+          status: '进行中',
+          progress: 1200,
+          total: 3500,
+          finished: 1200,
+          unfinished: 2300,
+          yesterdayFinished: 150,
+          todayFinished: 100,
+          rate: '34.3%',
+          remainingDays: 8
+        },
+        {
+          orderNo: 'DD20240007',
+          productName: '传感器G型',
+          status: '未开始',
+          progress: 0,
+          total: 2500,
+          finished: 0,
+          unfinished: 2500,
+          yesterdayFinished: 0,
+          todayFinished: 0,
+          rate: '0%',
+          remainingDays: 12
+        },
+        {
+          orderNo: 'DD20240008',
+          productName: '控制器H型',
+          status: '进行中',
+          progress: 600,
+          total: 1500,
+          finished: 600,
+          unfinished: 900,
+          yesterdayFinished: 120,
+          todayFinished: 80,
+          rate: '40%',
+          remainingDays: 6
+        },
+        {
+          orderNo: 'DD20240009',
+          productName: '显示屏I型',
+          status: '已超期',
+          progress: 400,
+          total: 800,
+          finished: 400,
+          unfinished: 400,
+          yesterdayFinished: 50,
+          todayFinished: 30,
+          rate: '50%',
+          remainingDays: -2
+        },
+        {
+          orderNo: 'DD20240010',
+          productName: '机箱J型',
+          status: '进行中',
+          progress: 1800,
+          total: 4500,
+          finished: 1800,
+          unfinished: 2700,
+          yesterdayFinished: 250,
+          todayFinished: 180,
+          rate: '40%',
+          remainingDays: 9
+        },
+        {
+          orderNo: 'DD20240011',
+          productName: '散热器K型',
+          status: '未开始',
+          progress: 0,
+          total: 1200,
+          finished: 0,
+          unfinished: 1200,
+          yesterdayFinished: 0,
+          todayFinished: 0,
+          rate: '0%',
+          remainingDays: 14
+        },
+        {
+          orderNo: 'DD20240012',
+          productName: '电源L型',
+          status: '已超期',
+          progress: 300,
+          total: 600,
+          finished: 300,
+          unfinished: 300,
+          yesterdayFinished: 40,
+          todayFinished: 20,
+          rate: '50%',
+          remainingDays: -4
+        },
+        {
+          orderNo: 'DD20240013',
+          productName: '连接器M型',
+          status: '进行中',
+          progress: 700,
+          total: 2000,
+          finished: 700,
+          unfinished: 1300,
+          yesterdayFinished: 90,
+          todayFinished: 60,
+          rate: '35%',
+          remainingDays: 11
+        }
+      ]
+    }
+  },
+  props: {
+    updateTime: {
+      type: String,
+      required: true
+    }
+  },
+  computed: {
+    tableData() {
+      let data = this.localTableData.length > 0 ? this.localTableData : this.defaultData
+      
+      // 如果有排序配置,进行排序
+      if (this.sortConfig.prop && this.sortConfig.order) {
+        const { prop, order } = this.sortConfig
+        data = [...data].sort((a, b) => {
+          let aValue = a[prop]
+          let bValue = b[prop]
+
+          // 特殊处理完成率字段
+          if (prop === 'rate') {
+            aValue = (a.finished / a.total) * 100
+            bValue = (b.finished / b.total) * 100
+          }
+
+          // 根据排序方向返回比较结果
+          if (order === 'ascending') {
+            return aValue > bValue ? 1 : -1
+          } else {
+            return aValue < bValue ? 1 : -1
+          }
+        })
+      }
+      
+      return data
+    },
+    displayData() {
+      return this.isExpanded ? this.tableData : this.tableData.slice(0, 5)
+    }
+  },
+  created() {
+    this.initData()
+  },
+  methods: {
+    getStatusType(status) {
+      switch (status) {
+        case '进行中':
+          return 'primary'
+        case '已超期':
+          return 'danger'
+        case '未开始':
+          return 'info'
+        default:
+          return 'info'
+      }
+    },
+    getProgressColor(status) {
+      switch (status) {
+        case '进行中':
+          return '#409EFF'
+        case '已超期':
+          return '#F56C6C'
+        case '未开始':
+          return '#909399'
+        default:
+          return '#909399'
+      }
+    },
+    async initData() {
+      try {
+        await Promise.all([
+          this.fetchTableData(),
+          this.fetchUnassignedCount()
+        ])
+      } catch (error) {
+        console.error('初始化数据失败:', error)
+      }
+    },
+    async fetchTableData() {
+      try {
+        this.loading = true
+        // TODO: 后端接口完成后替换此处
+        // const { data } = await getProductionList()
+        // this.localTableData = data
+        
+        // 模拟接口调用
+        await new Promise(resolve => setTimeout(resolve, 1000))
+        this.localTableData = this.defaultData
+      } catch (error) {
+        console.error('获取生产列表失败:', error)
+        this.$message.error('获取生产列表失败')
+      } finally {
+        this.loading = false
+      }
+    },
+    async fetchUnassignedCount() {
+      try {
+        // TODO: 后端接口完成后替换此处
+        // const { data } = await getUnassignedCount()
+        // this.unassignedCount = data
+        
+        // 模拟接口调用
+        await new Promise(resolve => setTimeout(resolve, 500))
+        this.unassignedCount = 7
+      } catch (error) {
+        console.error('获取未接单数量失败:', error)
+      }
+    },
+    handleUnassignedClick() {
+      this.$emit('unassigned-click')
+    },
+    handleSortChange({ prop, order }) {
+      this.sortConfig = { prop, order }
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.box-card {
+  border-radius: 8px;
+  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.05);
+  transition: all 0.3s ease;
+  
+  .el-card__header {
+    padding: 16px 20px;
+    border-bottom: 1px solid #ebeef5;
+  }
+
+  :deep(.el-card__body) {
+    padding: 16px;
+    transition: all 0.3s ease;
+  }
+}
+
+.table-container {
+  position: relative;
+  padding-bottom: 0;
+}
+
+.expand-button {
+  text-align: center;
+  border-top: 1px solid #EBEEF5;
+  margin-top: -1px;
+  
+  .el-button {
+    font-size: 13px;
+    color: #909399;
+    padding: 8px;
+    
+    .button-content {
+      display: inline-flex;
+      align-items: center;
+      position: relative;
+      
+      i {
+        font-size: 12px;
+        color: #C0C4CC;
+        transition: all 0.3s;
+      }
+
+      .expand-text {
+        max-width: 0;
+        overflow: hidden;
+        white-space: nowrap;
+        transition: all 0.3s ease-in-out;
+        opacity: 0;
+      }
+    }
+    
+    &:hover {
+      color: #409EFF;
+      
+      .button-content {
+        i {
+          color: #409EFF;
+          margin-right: 4px;
+        }
+
+        .expand-text {
+          max-width: 100px;
+          opacity: 1;
+        }
+      }
+    }
+  }
+}
+
+.progress-wrapper {
+  padding: 6px 0;
+  
+  .progress-container {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    gap: 4px;
+    
+    .progress-bar {
+      width: 100%;
+      padding: 0 12px;
+    }
+    
+    .progress-info {
+      font-size: 12px;
+      font-weight: 500;
+      
+      .finished-number {
+        &:hover {
+          opacity: 0.8;
+        }
+      }
+    }
+  }
+}
+
+:deep(.el-table) {
+  font-size: 12px;
+  
+  .el-table__header th {
+    padding: 8px 0;
+    background-color: #f5f7fa;
+  }
+  
+  .el-table__body td {
+    padding: 8px 0;
+  }
+
+  // 添加表格行的hover效果
+  .el-table__body tr:hover > td {
+    background-color: #f5f7fa !important;
+  }
+}
+
+// 添加表格内容的过渡效果
+:deep(.el-table__body-wrapper) {
+  transition: max-height 0.3s cubic-bezier(0.4, 0, 0.2, 1);
+}
+</style> 

+ 170 - 0
src/views/productManagement/productionSummary/components/StatisticsPanel.vue

@@ -0,0 +1,170 @@
+<template>
+  <div class="statistics-panel">
+    <div class="stat-item" v-for="(item, index) in statisticsData" :key="index">
+      <div class="icon-wrapper">
+        <svg-icon :icon-class="item.icon" class="icon" />
+      </div>
+      <div class="stat-info">
+        <count-to :start-val="0" :end-val="item.value" :duration="2000" class="num"/>
+        <div class="text">{{ item.text }}</div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import CountTo from 'vue-count-to'
+// import { getStatisticsData } from '@/api/production' // 后续需要添加此API
+
+export default {
+  name: 'StatisticsPanel',
+  components: {
+    CountTo
+  },
+  data() {
+    return {
+      // 示例数据作为默认值
+      defaultData: [
+        { icon: 'order-total', value: 20, text: '本月总订单' },
+        { icon: 'order-produced', value: 5, text: '本月已完订单' },
+        { icon: 'order-producing', value: 8, text: '正在生产订单' },
+        { icon: 'order-unproduced', value: 7, text: '未生产订单' },
+        { icon: 'order-total-count', value: 1000, text: '订单总量' },
+        { icon: 'order-completed', value: 5000, text: '已完成量' },
+        { icon: 'order-uncompleted', value: 5000, text: '未完成量' }
+      ],
+      statisticsData: []
+    }
+  },
+  created() {
+    // 初始化时获取数据
+    this.initData()
+    // 每隔5分钟刷新一次数据
+    this.startDataRefresh()
+  },
+  beforeDestroy() {
+    // 组件销毁前清除定时器
+    if (this.refreshTimer) {
+      clearInterval(this.refreshTimer)
+    }
+  },
+  methods: {
+    async initData() {
+      try {
+        // 先使用示例数据
+        this.statisticsData = this.defaultData
+        // 获取后端数据
+        await this.fetchData()
+      } catch (error) {
+        console.error('初始化统计数据失败:', error)
+      }
+    },
+    async fetchData() {
+      try {
+        // TODO: 后端接口完成后替换此处
+        // const { data } = await getStatisticsData()
+        // this.statisticsData = data
+        
+        // 模拟接口调用
+        await new Promise(resolve => setTimeout(resolve, 1000))
+        // 这里暂时使用示例数据,后续替换为实际接口数据
+        this.statisticsData = this.defaultData
+      } catch (error) {
+        console.error('获取统计数据失败:', error)
+        this.$message.error('获取统计数据失败')
+      }
+    },
+    startDataRefresh() {
+      // 每5分钟刷新一次数据
+      this.refreshTimer = setInterval(() => {
+        this.fetchData()
+      }, 5 * 60 * 1000)
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.statistics-panel {
+  background: #fff;
+  border-radius: 8px;
+  padding: 24px;
+  margin-bottom: 16px;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  flex-wrap: nowrap;
+  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.05);
+  gap: 24px;
+
+  .stat-item {
+    display: flex;
+    align-items: center;
+    flex: 1;
+    min-width: 120px;
+    cursor: pointer;
+    transition: all 0.3s ease;
+    padding: 0 8px;
+
+    &:hover {
+      transform: translateY(-2px);
+      .icon-wrapper {
+        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
+        .icon {
+          color: #409EFF;
+        }
+      }
+      .stat-info {
+        .num {
+          color: #409EFF;
+        }
+      }
+    }
+
+    &:active {
+      transform: translateY(0);
+    }
+
+    .icon-wrapper {
+      width: 48px;
+      height: 48px;
+      min-width: 48px;
+      border-radius: 50%;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      margin-right: 12px;
+      transition: all 0.3s ease;
+      background: #f5f7fa;
+
+      .icon {
+        width: 100%;
+        height: 100%;
+        color: #333;
+        transition: all 0.3s ease;
+      }
+    }
+
+    .stat-info {
+      display: flex;
+      flex-direction: column;
+      justify-content: center;
+      min-width: 0;
+
+      .num {
+        font-size: 20px;
+        font-weight: 600;
+        color: #1f2d3d;
+        line-height: 1;
+        margin-bottom: 8px;
+      }
+
+      .text {
+        font-size: 13px;
+        color: #606266;
+        white-space: nowrap;
+      }
+    }
+  }
+}
+</style> 

+ 93 - 0
src/views/productManagement/productionSummary/components/UnassignedDialog.vue

@@ -0,0 +1,93 @@
+<template>
+  <el-dialog
+    :visible.sync="visible"
+    width="80%"
+    custom-class="unassigned-dialog"
+    :before-close="handleClose">
+    <div slot="title" class="dialog-title">
+      <div class="title-content">
+        <span>生产未接单</span>
+        <span class="dialog-update-time">{{ updateTime }}</span>
+      </div>
+    </div>
+    <el-table :data="unassignedOrders" style="width: 100%" border>
+      <el-table-column prop="orderNo" label="订单编号" width="120" align="center"/>
+      <el-table-column prop="planNum" label="计划量" width="120" align="center"/>
+      <el-table-column prop="goods" label="货品" min-width="120" align="center"/>
+      <el-table-column prop="orderPerson" label="下单人" width="120" align="center"/>
+      <el-table-column prop="orderTime" label="下单时间" width="120" align="center"/>
+      <el-table-column prop="priority" label="优先级" width="100" align="center"/>
+      <el-table-column prop="contract" label="合同" min-width="200" align="center"/>
+    </el-table>
+    <div slot="footer" class="dialog-footer">
+      <el-button type="primary" size="medium" @click="handleClose">关 闭</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+export default {
+  name: 'UnassignedDialog',
+  props: {
+    visible: {
+      type: Boolean,
+      required: true
+    },
+    updateTime: {
+      type: String,
+      required: true
+    },
+    unassignedOrders: {
+      type: Array,
+      required: true
+    }
+  },
+  methods: {
+    handleClose() {
+      this.$emit('update:visible', false)
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+:deep(.unassigned-dialog) {
+  .el-dialog__header {
+    padding: 20px 24px;
+    border-bottom: 1px solid #ebeef5;
+    margin-right: 0;
+    
+    .dialog-title {
+      .title-content {
+        display: inline-flex;
+        align-items: center;
+        font-size: 16px;
+        font-weight: 500;
+        
+        .dialog-update-time {
+          font-size: 14px;
+          color: #666;
+          font-weight: normal;
+          margin-left: 16px;
+        }
+      }
+    }
+  }
+  
+  .el-dialog__body {
+    padding: 24px;
+  }
+  
+  .el-table {
+    th {
+      background-color: #f5f7fa;
+      color: #1f2d3d;
+      font-weight: 500;
+    }
+    
+    td {
+      padding: 12px 0;
+    }
+  }
+}
+</style> 

+ 66 - 415
src/views/productManagement/productionSummary/index.vue

@@ -7,188 +7,50 @@
     </div>
 
     <!-- 顶部统计卡片 -->
-    <div class="statistics-panel">
-      <div class="stat-item">
-        <div class="icon-wrapper">
-          <svg-icon icon-class="order-total" class="icon" />
-        </div>
-        <div class="stat-info">
-          <count-to :start-val="0" :end-val="20" :duration="2000" class="num"/>
-          <div class="text">本月总订单</div>
-        </div>
-      </div>
-      <div class="stat-item">
-        <div class="icon-wrapper">
-          <svg-icon icon-class="order-produced" class="icon" />
-        </div>
-        <div class="stat-info">
-          <count-to :start-val="0" :end-val="5" :duration="2000" class="num"/>
-          <div class="text">本月已生产订单</div>
-        </div>
-      </div>
-      <div class="stat-item">
-        <div class="icon-wrapper">
-          <svg-icon icon-class="order-producing" class="icon" />
-        </div>
-        <div class="stat-info">
-          <count-to :start-val="0" :end-val="8" :duration="2000" class="num"/>
-          <div class="text">正在生产订单</div>
-        </div>
-      </div>
-      <div class="stat-item">
-        <div class="icon-wrapper">
-          <svg-icon icon-class="order-unproduced" class="icon" />
-        </div>
-        <div class="stat-info">
-          <count-to :start-val="0" :end-val="7" :duration="2000" class="num"/>
-          <div class="text">未生产</div>
-        </div>
-      </div>
-      <div class="stat-item">
-        <div class="icon-wrapper">
-          <svg-icon icon-class="order-total-count" class="icon" />
-        </div>
-        <div class="stat-info">
-          <count-to :start-val="0" :end-val="1000" :duration="2000" class="num"/>
-          <div class="text">订单总量</div>
-        </div>
-      </div>
-      <div class="stat-item">
-        <div class="icon-wrapper">
-          <svg-icon icon-class="order-completed" class="icon" />
-        </div>
-        <div class="stat-info">
-          <count-to :start-val="0" :end-val="5000" :duration="2000" class="num"/>
-          <div class="text">已完成量</div>
-        </div>
-      </div>
-      <div class="stat-item">
-        <div class="icon-wrapper">
-          <svg-icon icon-class="order-uncompleted" class="icon" />
-        </div>
-        <div class="stat-info">
-          <count-to :start-val="0" :end-val="5000" :duration="2000" class="num"/>
-          <div class="text">未完成量</div>
-        </div>
-      </div>
-    </div>
+    <statistics-panel />
 
     <!-- 生产概况表格 -->
-    <el-card class="box-card" style="margin-top: 20px;">
-      <div slot="header" class="clearfix">
-        <div style="display: flex; justify-content: space-between; align-items: center;">
-          <div>
-            <span style="font-size: 14px;">生产概况</span>
-            <span style="margin-left: 10px; font-size: 14px; color: #666;">{{ updateTime }}</span>
-          </div>
-          <el-tag type="primary" style="cursor: pointer" @click="handleUnassignedOrders">未接单:7条</el-tag>
-        </div>
-      </div>
-      <el-table :data="tableData" style="width: 100%" border>
-        <el-table-column prop="orderNo" label="订单编号" width="120" align="center"/>
-        <el-table-column prop="productName" label="货品名称" min-width="120" align="center"/>
-        <el-table-column prop="status" label="单据状态" width="100" align="center">
-          <template slot-scope="scope">
-            <el-tag :type="getStatusType(scope.row.status)" size="medium" effect="plain">
-              {{ scope.row.status }}
-            </el-tag>
-          </template>
-        </el-table-column>
-        <el-table-column prop="progress" label="进度" width="350" align="center">
-          <template slot-scope="scope">
-            <div class="progress-wrapper">
-              <div class="progress-container">
-                <div class="progress-bar">
-                  <el-progress
-                    :percentage="(scope.row.progress / scope.row.total) * 100"
-                    :stroke-width="12"
-                    :show-text="false"
-                    :color="getProgressColor(scope.row.status)"/>
-                </div>
-                <div class="progress-info">
-                  <span 
-                    class="finished-number"
-                    @click="handleProgressClick(scope.row)"
-                    style="cursor: pointer; color: #409EFF; margin-right: 4px;">
-                    {{ scope.row.progress }}
-                  </span>
-                  <span style="color: #909399;">/</span>
-                  <span class="total-number" style="color: #606266; margin-left: 4px;">{{ scope.row.total }}</span>
-                </div>
-              </div>
-            </div>
-          </template>
-        </el-table-column>
-        <el-table-column prop="total" label="计划量" width="100" align="center"/>
-        <el-table-column prop="finished" label="已完成量" width="100" align="center"/>
-        <el-table-column prop="unfinished" label="未完成量" width="100" align="center"/>
-        <el-table-column prop="rate" label="完成率" width="100" align="center">
-          <template slot-scope="scope">
-            {{ (scope.row.finished / scope.row.total * 100).toFixed(1) + '%' }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="remainingDays" label="距离完成时间还剩" width="150" align="center">
-          <template slot-scope="scope">
-            <span :style="{ color: scope.row.remainingDays < 0 ? '#F56C6C' : '' }">
-              {{ scope.row.remainingDays > 0 ? scope.row.remainingDays + '天' : '超期' + Math.abs(scope.row.remainingDays) + '天' }}
-            </span>
-          </template>
-        </el-table-column>
-      </el-table>
-    </el-card>
+    <production-table 
+      :table-data="tableData"
+      :update-time="updateTime"
+      @unassigned-click="handleUnassignedOrders"
+      @progress-click="handleProgressClick"
+    />
 
     <!-- 未接单弹窗 -->
-    <el-dialog
+    <unassigned-dialog
       :visible.sync="dialogVisible"
-      width="80%"
-      custom-class="unassigned-dialog"
-      :before-close="handleClose">
-      <div slot="title" class="dialog-title">
-        <div class="title-content">
-          <span>生产未接单</span>
-          <span class="dialog-update-time">{{ updateTime }}</span>
-        </div>
-      </div>
-      <el-table :data="unassignedOrders" style="width: 100%" border>
-        <el-table-column prop="orderNo" label="订单编号" width="120" align="center"/>
-        <el-table-column prop="planNum" label="计划量" width="120" align="center"/>
-        <el-table-column prop="goods" label="货品" min-width="120" align="center"/>
-        <el-table-column prop="orderPerson" label="下单人" width="120" align="center"/>
-        <el-table-column prop="orderTime" label="下单时间" width="120" align="center"/>
-        <el-table-column prop="priority" label="优先级" width="100" align="center"/>
-        <el-table-column prop="contract" label="合同" min-width="200" align="center"/>
-      </el-table>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" size="medium" @click="dialogVisible = false">关 闭</el-button>
-      </div>
-    </el-dialog>
+      :update-time="updateTime"
+      :unassigned-orders="unassignedOrders"
+    />
 
-    <!-- 月度生产概况图表 -->
-    <el-card class="box-card" style="margin-top: 20px;">
-      <div slot="header" class="clearfix">
-        <span>月度生产概况</span>
-      </div>
-      <div class="chart-wrapper">
-        <bar-chart :chart-data="chartData"/>
-      </div>
-    </el-card>
+    <!-- 货品生产情况 -->
+    <production-status-chart
+      :chart-data="chartData"
+      @filter-change="handleFilterChange"
+    />
   </div>
 </template>
 
 <script>
-import CountTo from 'vue-count-to'
-import BarChart from './components/BarChart'
+import StatisticsPanel from './components/StatisticsPanel'
+import ProductionTable from './components/ProductionTable'
+import UnassignedDialog from './components/UnassignedDialog'
+import ProductionStatusChart from './components/ProductionStatusChart'
 
 export default {
   name: 'ProductionSummary',
   components: {
-    CountTo,
-    BarChart
+    StatisticsPanel,
+    ProductionTable,
+    UnassignedDialog,
+    ProductionStatusChart 
   },
   data() {
     return {
       currentTime: '',
-      updateTime: '', // 后端返回的更新时间
+      updateTime: '',
+      dialogVisible: false,
       tableData: [
         {
           orderNo: 'DD20240001',
@@ -301,22 +163,6 @@ export default {
           remainingDays: 6
         }
       ],
-      chartData: {
-        labels: ['包装材料', '包装材料', '板材类', '橡胶类型', '塑料类型', '特定订单', '无规格类型'],
-        datasets: [
-          {
-            label: '计划量',
-            data: [500, 2000, 600, 1200, 600, 1400, 500, 1600],
-            backgroundColor: '#409EFF'
-          },
-          {
-            label: '完成量',
-            data: [400, 1600, 500, 900, 400, 1200, 500, 1600],
-            backgroundColor: '#67C23A'
-          }
-        ]
-      },
-      dialogVisible: false,
       unassignedOrders: [
         {
           orderNo: '00000021',
@@ -372,23 +218,44 @@ export default {
           priority: '一般',
           contract: 'HT00000007 海丰牧场'
         }
-      ]
+      ],
+      chartData: {
+        labels: ['智能喷淋', '智能膜环', '佳沃评分', '精准阉割', '奶牛称重', '车载控制器', '大屏', '耳标'],
+        datasets: [
+          {
+            label: '计划量',
+            data: [600, 2000, 700, 970, 680, 840, 500, 1600],
+            backgroundColor: '#409EFF',
+            order: 2
+          },
+          {
+            label: '完成量',
+            data: [550, 1590, 500, 800, 630, 800, 500, 1600],
+            backgroundColor: '#FF9F43',
+            order: 2
+          },
+          {
+            label: '完成率',
+            data: [91.7, 79.5, 71.4, 82.5, 92.6, 95.2, 100, 100],
+            type: 'line',
+            borderColor: '#67C23A',
+            borderWidth: 2,
+            fill: false,
+            yAxisID: 'percentage',
+            order: 1
+          }
+        ]
+      }
     }
   },
   created() {
-    // 初始化并启动生产总览时间更新
     this.updateCurrentTime()
     setInterval(this.updateCurrentTime, 1000)
-
-    // 初始化并启动生产概况更新时间获取
     this.getUpdateTime()
     setInterval(this.getUpdateTime, 60000)
-
-    // 获取表格数据
     this.getTableData()
   },
   methods: {
-    // 更新生产总览的当前时间
     updateCurrentTime() {
       const now = new Date()
       const year = now.getFullYear()
@@ -399,15 +266,8 @@ export default {
       const seconds = now.getSeconds().toString().padStart(2, '0')
       this.currentTime = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
     },
-
-    // 从后端获取生产概况更新时间
     async getUpdateTime() {
       try {
-        // TODO: 替换为实际的后端API
-        // const res = await getProductionUpdateTime()
-        // this.updateTime = res.data.updateTime
-        
-        // 临时使用本地时间模拟
         const now = new Date()
         const month = (now.getMonth() + 1).toString().padStart(2, '0')
         const day = now.getDate().toString().padStart(2, '0')
@@ -418,83 +278,40 @@ export default {
         console.error('获取更新时间失败:', error)
       }
     },
-    // 处理未接单点击事件
     handleUnassignedOrders() {
-      // 实际开发时调用获取数据的方法
       this.getUnassignedOrders()
       this.dialogVisible = true
     },
-    // 处理弹窗关闭前的回调
-    handleClose(done) {
-      done()
-    },
-    // 获取未接单数据
     async getUnassignedOrders() {
       try {
-        // TODO: 实际开发时替换为后端API
-        // const res = await this.$http.get('/api/orders/unassigned')
-        // this.unassignedOrders = res.data.list
-        
-        // 目前使用示例数据,实际开发时删除这部分
         console.log('获取未接单数据')
       } catch (error) {
         console.error('获取未接单数据失败:', error)
         this.$message.error('获取未接单数据失败')
       }
     },
-    getStatusType(status) {
-      // 根据状态返回相应的标签类型
-      switch (status) {
-        case '进行中':
-          return 'primary'
-        case '已超期':
-          return 'danger'
-        case '未开始':
-          return 'info'
-        default:
-          return 'info'
-      }
-    },
-    getProgressColor(status) {
-      // 根据状态返回相应的进度条颜色
-      switch (status) {
-        case '进行中':
-          return '#409EFF'  // 蓝色
-        case '已超期':
-          return '#F56C6C'  // 红色
-        case '未开始':
-          return '#909399'  // 灰色
-        default:
-          return '#909399'
-      }
-    },
     handleProgressClick(row) {
-      // 处理进度条点击事件
       console.log('进度条被点击:', row)
     },
-    formatRemainingDays(days) {
-      // 格式化剩余天数
-      if (days < 0) {
-        return '已逾期'
-      } else if (days === 0) {
-        return '今日完成'
-      } else {
-        return `${days}天`
-      }
-    },
-    // 获取表格数据
     async getTableData() {
       try {
-        // TODO: 实际开发时替换为后端API
-        // const res = await this.$http.get('/api/production/summary/list')
-        // this.tableData = res.data.list
-        
-        // 目前使用示例数据,实际开发时删除这部分
         console.log('获取生产概况表格数据')
       } catch (error) {
         console.error('获取表格数据失败:', error)
         this.$message.error('获取表格数据失败')
       }
+    },
+    handleFilterChange({ month, product }) {
+      console.log('筛选条件变更:', month, product)
+      this.getChartData(month, product)
+    },
+    async getChartData(month, product) {
+      try {
+        console.log('获取图表数据:', month, product)
+      } catch (error) {
+        console.error('获取图表数据失败:', error)
+        this.$message.error('获取图表数据失败')
+      }
     }
   }
 }
@@ -537,170 +354,4 @@ export default {
     font-size: 14px;
   }
 }
-
-.statistics-panel {
-  background: #fff;
-  border-radius: 8px;
-  padding: 24px;
-  margin-top: 24px;
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.05);
-
-  .stat-item {
-    display: flex;
-    align-items: center;
-    padding: 0 16px;
-    cursor: pointer;
-    transition: all 0.3s ease;
-
-    &:hover {
-      transform: translateY(-2px);
-      .icon-wrapper {
-        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
-        .icon {
-          color: #409EFF;
-        }
-      }
-      .stat-info {
-        .num {
-          color: #409EFF;
-        }
-      }
-    }
-
-    &:active {
-      transform: translateY(0);
-    }
-
-    .icon-wrapper {
-      width: 56px;
-      height: 56px;
-      border-radius: 50%;
-      display: flex;
-      justify-content: center;
-      align-items: center;
-      margin-right: 12px;
-      transition: all 0.3s ease;
-      background: #f5f7fa;
-
-      .icon {
-        width: 100%;
-        height: 100%;
-        color: #333;
-        transition: all 0.3s ease;
-      }
-    }
-
-    .stat-info {
-      display: flex;
-      flex-direction: column;
-      justify-content: center;
-
-      .num {
-        font-size: 20px;
-        font-weight: 600;
-        color: #1f2d3d;
-        line-height: 1;
-        margin-bottom: 8px;
-      }
-
-      .text {
-        font-size: 14px;
-        color: #606266;
-        white-space: nowrap;
-      }
-    }
-  }
-}
-
-.chart-wrapper {
-  background: #fff;
-  padding: 24px;
-  margin-bottom: 32px;
-  height: 400px;
-  border-radius: 8px;
-  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.05);
-}
-
-// 优化表格卡片样式
-.box-card {
-  border-radius: 8px;
-  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.05);
-  transition: all 0.3s ease;
-  
-  .el-card__header {
-    padding: 20px 24px;
-    border-bottom: 1px solid #ebeef5;
-  }
-}
-
-// 未接单弹窗样式
-:deep(.unassigned-dialog) {
-  .el-dialog__header {
-    padding: 20px 24px;
-    border-bottom: 1px solid #ebeef5;
-    margin-right: 0;
-    
-    .dialog-title {
-      .title-content {
-        display: inline-flex;
-        align-items: center;
-        font-size: 16px;
-        font-weight: 500;
-        
-        .dialog-update-time {
-          font-size: 14px;
-          color: #666;
-          font-weight: normal;
-          margin-left: 16px;
-        }
-      }
-    }
-  }
-  
-  .el-dialog__body {
-    padding: 24px;
-  }
-  
-  .el-table {
-    th {
-      background-color: #f5f7fa;
-      color: #1f2d3d;
-      font-weight: 500;
-    }
-    
-    td {
-      padding: 12px 0;
-    }
-  }
-}
-
-.progress-wrapper {
-  padding: 10px 0;
-  
-  .progress-container {
-    display: flex;
-    flex-direction: column;
-    align-items: center;
-    gap: 8px;
-    
-    .progress-bar {
-      width: 100%;
-      padding: 0 20px;
-    }
-    
-    .progress-info {
-      font-size: 13px;
-      font-weight: 500;
-      
-      .finished-number {
-        &:hover {
-          opacity: 0.8;
-        }
-      }
-    }
-  }
-}
 </style>

Деякі файли не було показано, через те що забагато файлів було змінено