Ver Fonte

Merge remote-tracking branch 'origin/master'

LIVE_YE há 1 mês atrás
pai
commit
0221e86e8f
89 ficheiros alterados com 12764 adições e 1375 exclusões
  1. 2 2
      ruoyi-ui-gongdan/.env.development
  2. 2 2
      ruoyi-ui-gongdan/.env.production
  3. 2 2
      ruoyi-ui-gongdan/.env.staging
  4. 4 1
      ruoyi-ui-gongdan/package.json
  5. 44 0
      ruoyi-ui-gongdan/src/api/index.js
  6. 61 0
      ruoyi-ui-gongdan/src/api/system/info.js
  7. 44 0
      ruoyi-ui-gongdan/src/api/system/staffManage.js
  8. BIN
      ruoyi-ui-gongdan/src/assets/images/code.png
  9. BIN
      ruoyi-ui-gongdan/src/assets/images/down.png
  10. BIN
      ruoyi-ui-gongdan/src/assets/images/gdicoa.png
  11. BIN
      ruoyi-ui-gongdan/src/assets/images/gdicob.png
  12. BIN
      ruoyi-ui-gongdan/src/assets/images/gdicoc.png
  13. BIN
      ruoyi-ui-gongdan/src/assets/images/icn_htgl_rl_dz.png
  14. BIN
      ruoyi-ui-gongdan/src/assets/images/icn_htgl_rl_jr.png
  15. BIN
      ruoyi-ui-gongdan/src/assets/images/icn_htgl_rl_sj.png
  16. BIN
      ruoyi-ui-gongdan/src/assets/images/icn_htgl_rl_xm.png
  17. BIN
      ruoyi-ui-gongdan/src/assets/images/icon_dl_logo.png
  18. BIN
      ruoyi-ui-gongdan/src/assets/images/icon_gdlb_gdh.png
  19. BIN
      ruoyi-ui-gongdan/src/assets/images/icon_gdlb_lx.png
  20. BIN
      ruoyi-ui-gongdan/src/assets/images/icon_gdlb_sj.png
  21. BIN
      ruoyi-ui-gongdan/src/assets/images/icon_htgl_bj.png
  22. BIN
      ruoyi-ui-gongdan/src/assets/images/icon_htgl_btzs.png
  23. BIN
      ruoyi-ui-gongdan/src/assets/images/icon_htgl_lc_selected.png
  24. BIN
      ruoyi-ui-gongdan/src/assets/images/icon_htgl_rylb_mrtx.png
  25. BIN
      ruoyi-ui-gongdan/src/assets/images/icon_htgl_tz.png
  26. BIN
      ruoyi-ui-gongdan/src/assets/images/icon_kcgl_ht_add.png
  27. BIN
      ruoyi-ui-gongdan/src/assets/images/icon_ndtj_jp_jp.png
  28. BIN
      ruoyi-ui-gongdan/src/assets/images/icon_ndtj_jp_tp.png
  29. BIN
      ruoyi-ui-gongdan/src/assets/images/icon_ndtj_jp_yp.png
  30. BIN
      ruoyi-ui-gongdan/src/assets/images/icon_qjlb_del.png
  31. BIN
      ruoyi-ui-gongdan/src/assets/images/icon_xq_fj.png
  32. BIN
      ruoyi-ui-gongdan/src/assets/images/icon_xq_xz.png
  33. BIN
      ruoyi-ui-gongdan/src/assets/images/icon_xq_yl.png
  34. BIN
      ruoyi-ui-gongdan/src/assets/images/phone.png
  35. BIN
      ruoyi-ui-gongdan/src/assets/images/pic_dl_bg.png
  36. BIN
      ruoyi-ui-gongdan/src/assets/images/pic_gddl_dlkbg.png
  37. BIN
      ruoyi-ui-gongdan/src/assets/images/pic_gddl_tp.png
  38. BIN
      ruoyi-ui-gongdan/src/assets/images/pic_htgl_bg.png
  39. BIN
      ruoyi-ui-gongdan/src/assets/images/pic_htgl_dl_logo.png
  40. BIN
      ruoyi-ui-gongdan/src/assets/images/pic_htgl_dlk_bg.png
  41. BIN
      ruoyi-ui-gongdan/src/assets/images/pic_htgl_gdtj.png
  42. BIN
      ruoyi-ui-gongdan/src/assets/images/pic_htgl_gn_gd.png
  43. BIN
      ruoyi-ui-gongdan/src/assets/images/pic_htgl_gn_kh.png
  44. BIN
      ruoyi-ui-gongdan/src/assets/images/pic_htgl_gn_pj.png
  45. BIN
      ruoyi-ui-gongdan/src/assets/images/pic_htgl_gn_yg.png
  46. BIN
      ruoyi-ui-gongdan/src/assets/images/pic_htgl_gn_zj.png
  47. BIN
      ruoyi-ui-gongdan/src/assets/images/pic_htgl_tj_djd.png
  48. BIN
      ruoyi-ui-gongdan/src/assets/images/pic_htgl_tj_dpj.png
  49. BIN
      ruoyi-ui-gongdan/src/assets/images/pic_htgl_tj_jxz.png
  50. BIN
      ruoyi-ui-gongdan/src/assets/images/pic_htgl_tj_ywc.png
  51. BIN
      ruoyi-ui-gongdan/src/assets/images/pic_htgl_zhzs.png
  52. BIN
      ruoyi-ui-gongdan/src/assets/images/pic_htlc_line.png
  53. BIN
      ruoyi-ui-gongdan/src/assets/images/pic_jhtgl_logo.png
  54. BIN
      ruoyi-ui-gongdan/src/assets/images/pic_ndzj_bt_blue.png
  55. BIN
      ruoyi-ui-gongdan/src/assets/images/pic_ndzj_bt_green.png
  56. BIN
      ruoyi-ui-gongdan/src/assets/images/pic_ndzj_bt_orang.png
  57. BIN
      ruoyi-ui-gongdan/src/assets/images/pic_ndzj_tbbg.png
  58. BIN
      ruoyi-ui-gongdan/src/assets/images/up.png
  59. BIN
      ruoyi-ui-gongdan/src/assets/images/wenjian.png
  60. BIN
      ruoyi-ui-gongdan/src/assets/images/wicoa.png
  61. BIN
      ruoyi-ui-gongdan/src/assets/images/wicob.png
  62. BIN
      ruoyi-ui-gongdan/src/assets/images/wicoc.png
  63. BIN
      ruoyi-ui-gongdan/src/assets/images/zwshjbig.png
  64. 1 0
      ruoyi-ui-gongdan/src/assets/styles/index.scss
  65. 13 4
      ruoyi-ui-gongdan/src/assets/styles/sidebar.scss
  66. 6 6
      ruoyi-ui-gongdan/src/assets/styles/variables.scss
  67. 56 15
      ruoyi-ui-gongdan/src/components/Pagination/index.vue
  68. 295 18
      ruoyi-ui-gongdan/src/layout/components/Navbar.vue
  69. 7 7
      ruoyi-ui-gongdan/src/layout/components/Sidebar/Logo.vue
  70. 1 1
      ruoyi-ui-gongdan/src/layout/index.vue
  71. 9 0
      ruoyi-ui-gongdan/src/main.js
  72. 3 2
      ruoyi-ui-gongdan/src/settings.js
  73. 3 0
      ruoyi-ui-gongdan/src/store/getters.js
  74. 13 2
      ruoyi-ui-gongdan/src/store/modules/user.js
  75. 3 0
      ruoyi-ui-gongdan/src/utils/ruoyi.js
  76. 137 42
      ruoyi-ui-gongdan/src/views/dashboard/BarChart.vue
  77. 24 24
      ruoyi-ui-gongdan/src/views/dashboard/LineChart.vue
  78. 186 57
      ruoyi-ui-gongdan/src/views/dashboard/PieChart.vue
  79. 193 0
      ruoyi-ui-gongdan/src/views/dashboard/PieChartone.vue
  80. 965 0
      ruoyi-ui-gongdan/src/views/gongdan/baoxiuguanli/index.vue
  81. 845 0
      ruoyi-ui-gongdan/src/views/gongdan/gongdanxq/index.vue
  82. 1268 0
      ruoyi-ui-gongdan/src/views/gongdan/gongdanzhipai/index.vue
  83. 1271 0
      ruoyi-ui-gongdan/src/views/gongdan/gongdanzhipaime/index.vue
  84. 1240 0
      ruoyi-ui-gongdan/src/views/gongdan/gongdanzhipaipj/index.vue
  85. 927 0
      ruoyi-ui-gongdan/src/views/gongdan/kehurenyuan/index.vue
  86. 4537 1076
      ruoyi-ui-gongdan/src/views/index.vue
  87. 588 106
      ruoyi-ui-gongdan/src/views/login.vue
  88. 11 5
      ruoyi-ui-gongdan/src/views/system/user/index.vue
  89. 3 3
      ruoyi-ui-gongdan/vue.config.js

+ 2 - 2
ruoyi-ui-gongdan/.env.development

@@ -1,10 +1,10 @@
 # 页面标题
-VUE_APP_TITLE = 若依管理系统
+VUE_APP_TITLE = 中心云客户服务工单系统管理平台
 
 # 开发环境配置
 ENV = 'development'
 
-# 若依管理系统/开发环境
+# 中心云客户服务工单系统管理平台/开发环境
 VUE_APP_BASE_API = '/dev-api'
 
 # 路由懒加载

+ 2 - 2
ruoyi-ui-gongdan/.env.production

@@ -1,8 +1,8 @@
 # 页面标题
-VUE_APP_TITLE = 若依管理系统
+VUE_APP_TITLE = 中心云客户服务工单系统管理平台
 
 # 生产环境配置
 ENV = 'production'
 
-# 若依管理系统/生产环境
+# 中心云客户服务工单系统管理平台/生产环境
 VUE_APP_BASE_API = '/prod-api'

+ 2 - 2
ruoyi-ui-gongdan/.env.staging

@@ -1,5 +1,5 @@
 # 页面标题
-VUE_APP_TITLE = 若依管理系统
+VUE_APP_TITLE = 中心云客户服务工单系统管理平台
 
 BABEL_ENV = production
 
@@ -8,5 +8,5 @@ NODE_ENV = production
 # 测试环境配置
 ENV = 'staging'
 
-# 若依管理系统/测试环境
+# 中心云客户服务工单系统管理平台/测试环境
 VUE_APP_BASE_API = '/stage-api'

+ 4 - 1
ruoyi-ui-gongdan/package.json

@@ -1,7 +1,7 @@
 {
   "name": "ruoyi",
   "version": "3.8.9",
-  "description": "若依管理系统",
+  "description": "中心云客户服务工单系统管理平台",
   "author": "若依",
   "license": "MIT",
   "scripts": {
@@ -40,6 +40,8 @@
     "axios": "0.28.1",
     "clipboard": "2.0.8",
     "core-js": "3.37.1",
+    "decimal.js": "^10.5.0",
+    "downloadjs": "^1.4.7",
     "echarts": "5.4.0",
     "element-ui": "2.15.14",
     "file-saver": "2.0.5",
@@ -54,6 +56,7 @@
     "sortablejs": "1.10.2",
     "splitpanes": "2.4.1",
     "vue": "2.6.12",
+    "vue-calendar-component": "^2.8.2",
     "vue-count-to": "1.0.13",
     "vue-cropper": "0.5.5",
     "vue-meta": "2.4.0",

+ 44 - 0
ruoyi-ui-gongdan/src/api/index.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 获取用户详细信息
+export function lc() {
+  return request({
+    url: '/work/info/statistics/lc',
+    method: 'get'
+  })
+}
+export function fw() {
+  return request({
+    url: '/work/info/statistics/fw',
+    method: 'get'
+  })
+}
+export function bj() {
+  return request({
+    url: '/work/info/statistics/bj',
+    method: 'get'
+  })
+}
+export function num() {
+  return request({
+    url: '/work/info/db/num',
+    method: 'get'
+  })
+}
+export function recordlist(query) {
+  return request({
+    url: '/operation/record/list',
+    method: 'get',
+    params: query
+  })
+}
+export function px(query) {
+  return request({
+    url: '/work/info/month/px',
+    method: 'get',
+    params: query
+  })
+}
+
+
+

+ 61 - 0
ruoyi-ui-gongdan/src/api/system/info.js

@@ -0,0 +1,61 @@
+import request from '@/utils/request'
+
+// 查询工单信息列表
+export function listInfo(query) {
+  return request({
+    url: '/work/info/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 接单人员列表(不分页)
+export function listStaffManageNoPage(query) {
+  return request({
+    url: '/system/user/noPage/list',
+    method: 'get',
+    params: query
+  })
+}
+
+
+// 查询工单信息详细
+export function getInfo(orderId) {
+  return request({
+    url: '/work/info/' + orderId,
+    method: 'get'
+  })
+}
+
+// 新增工单信息
+export function addInfo(data) {
+  return request({
+    url: '/work/info',
+    method: 'post',
+    data: data
+  })
+}
+export function jd(data) {
+  return request({
+    url: '/work/info/jd',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改工单信息
+export function updateInfo(data) {
+  return request({
+    url: '/work/info/put',
+    method: 'post',
+    data: data
+  })
+}
+
+// 删除工单信息
+export function delInfo(orderId) {
+  return request({
+    url: '/work/info/delete/' + orderId,
+    method: 'get'
+  })
+}

+ 44 - 0
ruoyi-ui-gongdan/src/api/system/staffManage.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询基本信息列表
+export function listStaffManage(query) {
+  return request({
+    url: '/basic/info/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询基本信息详细
+export function getStaffManage(id) {
+  return request({
+    url: '/basic/info/' + id,
+    method: 'get'
+  })
+}
+
+// 新增基本信息
+export function addStaffManage(data) {
+  return request({
+    url: '/basic/info',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改基本信息
+export function updateStaffManage(data) {
+  return request({
+    url: '/basic/info/put',
+    method: 'post',
+    data: data
+  })
+}
+
+// 删除基本信息
+export function delStaffManage(id) {
+  return request({
+    url: '/basic/info/delete/' + id,
+    method: 'get'
+  })
+}

BIN
ruoyi-ui-gongdan/src/assets/images/code.png


BIN
ruoyi-ui-gongdan/src/assets/images/down.png


BIN
ruoyi-ui-gongdan/src/assets/images/gdicoa.png


BIN
ruoyi-ui-gongdan/src/assets/images/gdicob.png


BIN
ruoyi-ui-gongdan/src/assets/images/gdicoc.png


BIN
ruoyi-ui-gongdan/src/assets/images/icn_htgl_rl_dz.png


BIN
ruoyi-ui-gongdan/src/assets/images/icn_htgl_rl_jr.png


BIN
ruoyi-ui-gongdan/src/assets/images/icn_htgl_rl_sj.png


BIN
ruoyi-ui-gongdan/src/assets/images/icn_htgl_rl_xm.png


BIN
ruoyi-ui-gongdan/src/assets/images/icon_dl_logo.png


BIN
ruoyi-ui-gongdan/src/assets/images/icon_gdlb_gdh.png


BIN
ruoyi-ui-gongdan/src/assets/images/icon_gdlb_lx.png


BIN
ruoyi-ui-gongdan/src/assets/images/icon_gdlb_sj.png


BIN
ruoyi-ui-gongdan/src/assets/images/icon_htgl_bj.png


BIN
ruoyi-ui-gongdan/src/assets/images/icon_htgl_btzs.png


BIN
ruoyi-ui-gongdan/src/assets/images/icon_htgl_lc_selected.png


BIN
ruoyi-ui-gongdan/src/assets/images/icon_htgl_rylb_mrtx.png


BIN
ruoyi-ui-gongdan/src/assets/images/icon_htgl_tz.png


BIN
ruoyi-ui-gongdan/src/assets/images/icon_kcgl_ht_add.png


BIN
ruoyi-ui-gongdan/src/assets/images/icon_ndtj_jp_jp.png


BIN
ruoyi-ui-gongdan/src/assets/images/icon_ndtj_jp_tp.png


BIN
ruoyi-ui-gongdan/src/assets/images/icon_ndtj_jp_yp.png


BIN
ruoyi-ui-gongdan/src/assets/images/icon_qjlb_del.png


BIN
ruoyi-ui-gongdan/src/assets/images/icon_xq_fj.png


BIN
ruoyi-ui-gongdan/src/assets/images/icon_xq_xz.png


BIN
ruoyi-ui-gongdan/src/assets/images/icon_xq_yl.png


BIN
ruoyi-ui-gongdan/src/assets/images/phone.png


BIN
ruoyi-ui-gongdan/src/assets/images/pic_dl_bg.png


BIN
ruoyi-ui-gongdan/src/assets/images/pic_gddl_dlkbg.png


BIN
ruoyi-ui-gongdan/src/assets/images/pic_gddl_tp.png


BIN
ruoyi-ui-gongdan/src/assets/images/pic_htgl_bg.png


BIN
ruoyi-ui-gongdan/src/assets/images/pic_htgl_dl_logo.png


BIN
ruoyi-ui-gongdan/src/assets/images/pic_htgl_dlk_bg.png


BIN
ruoyi-ui-gongdan/src/assets/images/pic_htgl_gdtj.png


BIN
ruoyi-ui-gongdan/src/assets/images/pic_htgl_gn_gd.png


BIN
ruoyi-ui-gongdan/src/assets/images/pic_htgl_gn_kh.png


BIN
ruoyi-ui-gongdan/src/assets/images/pic_htgl_gn_pj.png


BIN
ruoyi-ui-gongdan/src/assets/images/pic_htgl_gn_yg.png


BIN
ruoyi-ui-gongdan/src/assets/images/pic_htgl_gn_zj.png


BIN
ruoyi-ui-gongdan/src/assets/images/pic_htgl_tj_djd.png


BIN
ruoyi-ui-gongdan/src/assets/images/pic_htgl_tj_dpj.png


BIN
ruoyi-ui-gongdan/src/assets/images/pic_htgl_tj_jxz.png


BIN
ruoyi-ui-gongdan/src/assets/images/pic_htgl_tj_ywc.png


BIN
ruoyi-ui-gongdan/src/assets/images/pic_htgl_zhzs.png


BIN
ruoyi-ui-gongdan/src/assets/images/pic_htlc_line.png


BIN
ruoyi-ui-gongdan/src/assets/images/pic_jhtgl_logo.png


BIN
ruoyi-ui-gongdan/src/assets/images/pic_ndzj_bt_blue.png


BIN
ruoyi-ui-gongdan/src/assets/images/pic_ndzj_bt_green.png


BIN
ruoyi-ui-gongdan/src/assets/images/pic_ndzj_bt_orang.png


BIN
ruoyi-ui-gongdan/src/assets/images/pic_ndzj_tbbg.png


BIN
ruoyi-ui-gongdan/src/assets/images/up.png


BIN
ruoyi-ui-gongdan/src/assets/images/wenjian.png


BIN
ruoyi-ui-gongdan/src/assets/images/wicoa.png


BIN
ruoyi-ui-gongdan/src/assets/images/wicob.png


BIN
ruoyi-ui-gongdan/src/assets/images/wicoc.png


BIN
ruoyi-ui-gongdan/src/assets/images/zwshjbig.png


+ 1 - 0
ruoyi-ui-gongdan/src/assets/styles/index.scss

@@ -122,6 +122,7 @@ aside {
 //main-container全局样式
 .app-container {
   padding: 20px;
+  background-color: #f8f8f8 !important;
 }
 
 .components-container {

+ 13 - 4
ruoyi-ui-gongdan/src/assets/styles/sidebar.scss

@@ -24,8 +24,9 @@
     left: 0;
     z-index: 1001;
     overflow: hidden;
-    -webkit-box-shadow: 2px 0 6px rgba(0,21,41,.35);
-    box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.1);
+    border-bottom: 1px solid #EAEAEA;
+    // -webkit-box-shadow: 2px 0 6px rgba(0,21,41,.35);
+    // box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.1);
 
     // reset element-ui css
     .horizontal-collapse-transition {
@@ -85,7 +86,8 @@
     }
 
     & .theme-dark .is-active > .el-submenu__title {
-      color: $base-menu-color-active !important;
+      color: #00A06E!important;
+
     }
 
     & .nest-menu .el-submenu>.el-submenu__title,
@@ -99,7 +101,7 @@
 
     & .theme-dark .nest-menu .el-submenu>.el-submenu__title,
     & .theme-dark .el-submenu .el-menu-item {
-      background-color: $base-sub-menu-background !important;
+      // background-color: $base-sub-menu-background !important;
 
       &:hover {
         background-color: $base-sub-menu-hover !important;
@@ -107,6 +109,7 @@
     }
   }
 
+
   .hideSidebar {
     .sidebar-container {
       width: 54px !important;
@@ -225,3 +228,9 @@
     }
   }
 }
+ .el-menu-item.is-active{
+    background: #F3F8F7 !important;
+    border-radius: 6px;
+    color: #00A06E !important;
+    font-weight: 800;
+  }

+ 6 - 6
ruoyi-ui-gongdan/src/assets/styles/variables.scss

@@ -9,17 +9,17 @@ $yellow:#FEC171;
 $panGreen: #30B08F;
 
 // 默认菜单主题风格
-$base-menu-color:#bfcbd9;
+$base-menu-color:#161616;
 $base-menu-color-active:#f4f4f5;
-$base-menu-background:#304156;
-$base-logo-title-color: #ffffff;
+$base-menu-background:#FFFFFF;
+$base-logo-title-color: #333;
 
 $base-menu-light-color:rgba(0,0,0,.70);
-$base-menu-light-background:#ffffff;
+$base-menu-light-background:#F3F8F7;
 $base-logo-light-title-color: #001529;
 
-$base-sub-menu-background:#1f2d3d;
-$base-sub-menu-hover:#001528;
+$base-sub-menu-background:#FFFFFF;
+$base-sub-menu-hover:#F3F8F7;
 
 // 自定义暗色菜单风格
 /**

+ 56 - 15
ruoyi-ui-gongdan/src/components/Pagination/index.vue

@@ -1,17 +1,19 @@
 <template>
-  <div :class="{'hidden':hidden}" class="pagination-container">
-    <el-pagination
-      :background="background"
-      :current-page.sync="currentPage"
-      :page-size.sync="pageSize"
-      :layout="layout"
-      :page-sizes="pageSizes"
-      :pager-count="pagerCount"
-      :total="total"
-      v-bind="$attrs"
-      @size-change="handleSizeChange"
-      @current-change="handleCurrentChange"
-    />
+  <div class="daba">
+    <div :class="{'hidden':hidden}" class="pagination-container ike">
+      <el-pagination
+        :background="background"
+        :current-page.sync="currentPage"
+        :page-size.sync="pageSize"
+        :layout="layout"
+        :page-sizes="pageSizes"
+        :pager-count="pagerCount"
+        :total="total"
+        v-bind="$attrs"
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+      />
+    </div>
   </div>
 </template>
 
@@ -104,9 +106,48 @@ export default {
 </script>
 
 <style scoped>
-.pagination-container {
-  background: #fff;
+.ike {
+  /* background: #fff; */
+  text-align: center;
+  height: 50px;
 }
+.daba{
+  .pagination-container .el-pagination{
+    left: 50%;
+    transform: translateX(-50%);
+  }
+  .el-input__inner{
+    border: 0;
+    background: #DDEBE7;
+  }
+  .el-pagination button:disabled{
+    background-color:#DDEBE7;
+    color: #4B5A6D;
+
+
+  }
+  .el-pagination .btn-prev, .el-pagination .btn-next{
+    background-color:#DDEBE7;
+    color: #4B5A6D;
+  }
+  .el-pager li{
+    /* margin-right: 5px; */
+    background-color:#DDEBE7;
+    color: #4B5A6D;
+  }
+  .el-pagination.is-background .el-pager li:not(.disabled).active{
+    background-color:#03BF8A;
+    color: #fff;
+  }
+  .el-pager li.active{
+    background-color:#DDEBE7;
+    color: #4B5A6D;
+  }
+  .el-pager li:nth-child(1){
+    /* margin-left: 5px; */
+  }
+}
+
 .pagination-container.hidden {
   display: none;
 }

+ 295 - 18
ruoyi-ui-gongdan/src/layout/components/Navbar.vue

@@ -1,12 +1,45 @@
 <template>
   <div class="navbar">
     <hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
-
-    <breadcrumb v-if="!topNav" id="breadcrumb-container" class="breadcrumb-container" />
-    <top-nav v-if="topNav" id="topmenu-container" class="topmenu-container" />
-
-    <div class="right-menu">
-      <template v-if="device!=='mobile'">
+    <!-- <breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav"/> -->
+    <!-- <top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/> -->
+    <!-- <div class="sign_box">
+      <div class="sign_item" :class="{active: activeMenu.includes((item.path||item.redirect))}"  v-for="(item,index) in this.sidebarRouters.filter(res => {
+            return res.hidden == false || res.redirect == 'index'
+          })" :key="index"
+        @click="tabBtn(item)">
+        <item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" />
+        <item v-if="!item.meta" :icon="item.meta && item.meta.icon" :title="'首页'" />
+      </div>
+    </div> -->
+    <div class="right-menu" style="display: flex;align-items: center;">
+			<!-- <el-select
+			  v-model="companyName"
+			  clearable
+			  filterable
+			  reserve-keyword
+			  placeholder="选择小区"
+			  v-if="userId === 1 && tenantEnabled"
+			  @change="dynamicTenantEvent"
+			  @clear="dynamicClearEvent"
+			>
+			  <el-option v-for="item in tenantList" :key="item.tenantId" :label="item.companyName" :value="item.tenantId"> </el-option>
+			  <template ><svg-icon icon-class="company" class="el-input__icon input-icon" /></template>
+			</el-select>
+      <el-select
+        v-model="companyName"
+        clearable
+        filterable
+        reserve-keyword
+        placeholder="选择小区"
+        v-if="userId != 1 && (tenantListtw.length !=0 && tenantListtw.length !=1)"
+        @change="dynamicTenantEventg"
+        @clear="dynamicClearEvent"
+      >
+        <el-option v-for="item in tenantListtw" :key="item.tenantId" :label="item.companyName" :value="item.tenantId"> </el-option>
+        <template ><svg-icon icon-class="company" class="el-input__icon input-icon" /></template>
+      </el-select> -->
+      <!-- <template v-if="device!=='mobile'">
         <search id="header-search" class="right-menu-item" />
 
         <el-tooltip content="源码地址" effect="dark" placement="bottom">
@@ -23,13 +56,28 @@
           <size-select id="size-select" class="right-menu-item hover-effect" />
         </el-tooltip>
 
-      </template>
+      </template> -->
 
-      <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
-        <div class="avatar-wrapper">
+      <el-dropdown  class="avatar-container right-menu-item hover-effect nhdes"  trigger="hover" >
+		  <!-- <img src="../../assets/images/pic_htgl_grxx_bg.png" class="imgse" > -->
+		  <div class="nhse ">
+        <div class="avatar-wrapper  el-dropdown-link">
           <img :src="avatar" class="user-avatar">
-          <i class="el-icon-caret-bottom" />
+
         </div>
+			<div class="acnes ">
+						  <p>
+							  <!-- <img src="../../assets/images/icon_htgl_hzh.png" > -->
+						  			  <span >
+						  			  	{{name}}
+						  			  </span>
+						  </p>
+
+			</div>
+      <i style="color: #333; opacity: 0.7;display: flex;align-items: center;" class="el-icon-caret-bottom " />
+      <!-- <i class="el-icon-caret-bottom" /> -->
+
+		  </div>
         <el-dropdown-menu slot="dropdown">
           <router-link to="/user/profile">
             <el-dropdown-item>个人中心</el-dropdown-item>
@@ -42,6 +90,14 @@
           </el-dropdown-item>
         </el-dropdown-menu>
       </el-dropdown>
+
+      <template>
+
+        <p style="display: flex;align-items: center;width:80px; cursor:pointer; " @click="logouth">
+             <!-- <img src="../../assets/images/icon_htdh_tc.png" class="user-avatar" style="width:13px;height:16px;margin-right: 10px;"> -->
+             <span style="font-weight: bold;font-size: 16px;color: #343434;">退出</span>
+          </p>
+      </template>
     </div>
   </div>
 </template>
@@ -56,6 +112,9 @@ import SizeSelect from '@/components/SizeSelect'
 import Search from '@/components/HeaderSearch'
 import RuoYiGit from '@/components/RuoYi/Git'
 import RuoYiDoc from '@/components/RuoYi/Doc'
+import { getCodeImg,register,getTenantList,getInfo } from "@/api/login";
+// import { dynamicClear, dynamicTenant,userNamet,dynamicTenantgw } from "@/api/zhihuixy/tenant";
+import { getToken, setToken, removeToken } from '@/utils/auth'
 
 export default {
   components: {
@@ -68,12 +127,21 @@ export default {
     RuoYiGit,
     RuoYiDoc
   },
+
   computed: {
     ...mapGetters([
       'sidebar',
       'avatar',
-      'device'
+      'device',
+	    'name',
+			'userId',
+      'dept',
+      'rolesName',
+	  "sidebarRouters", "sidebar", "tabIndex"
     ]),
+	activeMenu() {
+	  return this.tabIndex;
+	},
     setting: {
       get() {
         return this.$store.state.settings.showSettings
@@ -91,31 +159,203 @@ export default {
       }
     }
   },
+	data() {
+	  return {
+	    tenantEnabled:true,
+			tenantList:[],
+		  companyName:null,
+      tenantListtw:[],
+      usename:'',
+      timer:null,
+	  };
+	},
+
+  created() {
+  	console.log(this.$store.state.user)
+    this.usename = this.$store.state.user.name
+    // this.avatar = this.$store.state.user.avatar
+    // if(this.$store.getters.authenticationUser =='4' || this.$store.getters.authenticationUser =='3'){
+    //   if(this.usename =='admin'){
+    //     console.log(5)
+    //     this.getnhgw()
+    //   }else{
+    //     if(sessionStorage.getItem('companyName') != null ){
+    //       if(sessionStorage.getItem('companyName') != undefined ){
+    //         this.companyName = sessionStorage.getItem('companyName')
+    //       }
+    //     }
+    //     console.log(3)
+    //     this.getnhgwon()
+    //   }
+    // }
+
+  },
+  mouted(){
+    // this.$nextTick(()=>{
+                   let router_path = this.$route.path
+                   console.log(router_path)    // 输出当前页面的路由,如:/home
+               // })
+
+  },
+
   methods: {
+		getnhgw(){
+		  // this.loading = true;
+		  getTenantList().then(response => {
+			  // this.tenantEnabled = response.data.tenantEnabled
+		    this.tenantList = response.data.voList;
+		    // this.loading = false;
+		  });
+		},
+    getnhgwon(){
+      // this.loading = true;
+      let ngse={'userName': this.usename}
+      userNamet(ngse).then(response => {
+    	  // this.tenantEnabled = response.data.tenantEnabled
+        this.tenantListtw = response.data;
+        if(response.data.length !=0 || response.data.length !=1){
+          this.tenantEnabled = false
+        }
+
+
+        // this.loading = false;
+      });
+    },
+		dynamicTenantEvent(){
+			if (this.companyName != null && this.companyName !== '') {
+			  dynamicTenant(this.companyName).then(response => {
+			  	this.dynamic = true;
+			  	this.$tab.closeAllPage();
+			  	this.$router.push('/');
+			  });
+			}
+		},
+
+    dynamicTenantEventg(){
+    	if (this.companyName != null && this.companyName !== '') {
+        sessionStorage.setItem('companyName', this.companyName)
+        let ngpw={'tenantId':this.companyName,'clientId':'e5cd7e4891bf95d1d19206ce24a7b32e','grantType':'password'}
+    	  // dynamicTenantgw ngpw
+        dynamicTenantgw(ngpw).then(response => {
+    	  	this.dynamic = true;
+           setToken(response.msg)
+           let ngse={'userName': this.usename}
+           getInfo().then(response => {
+             // this.loading = false;
+             this.$router.push('/');
+             this.$tab.closeAllPage();
+             setTimeout(() => {
+               location.reload(true)
+                             }, 1000)
+             //
+             // location.reload(true)
+
+             this.companyName = response.data.user.tenantId
+           });
+    	  	// this.$tab.closeAllPage();
+    	  	// this.$router.push('/');
+    	  });
+    	}
+    },
+		dynamicClearEvent(){
+			dynamicClear().then(response => {
+				this.dynamic = false;
+				this.$tab.closeAllPage();
+				this.$router.push('/');
+			});
+		},
     toggleSideBar() {
       this.$store.dispatch('app/toggleSideBar')
     },
-    logout() {
+	tabBtn(item) {
+	  console.log(item)
+	  if(this.activeMenu.includes((item.path||item.redirect))){
+	    return
+	  }
+	  this.$store.dispatch('app/toggleSideBartwo')
+	  if (item.redirect == 'index') {
+	    if(this.$route.path!=='/index'){
+	      this.$router.push({
+	        path: '/index'
+	      })
+	    }
+	    this.$store.dispatch('TabFn', item.redirect)
+	    return
+	  }
+	  this.$store.dispatch('TabFn', item.path)
+	  this.showde = true
+
+	},
+	init() {
+	  const route = this.$route;
+	  const {
+	    meta,
+	    path
+	  } = route;
+	  // if set path, the sidebar will highlight the path you set
+	  console.log(route,13)
+	  if (meta.activeMenu) {
+	    this.$store.dispatch('TabFn', meta.activeMenu)
+	  }
+	  this.$store.dispatch('TabFn', path)
+	},
+    async logout() {
       this.$confirm('确定注销并退出系统吗?', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'
       }).then(() => {
+         sessionStorage.removeItem('companyName')
         this.$store.dispatch('LogOut').then(() => {
-          location.href = '/index'
+          location.href = '/index';
         })
-      }).catch(() => {})
+      }).catch(() => {});
+    },
+    async logouth() {
+      this.$confirm('确定注销并退出系统吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        sessionStorage.removeItem('companyName')
+        this.$store.dispatch('LogOut').then(() => {
+          location.href = '/index';
+        })
+      }).catch(() => {});
     }
   }
 }
 </script>
+<style lang="scss">
+	.nhdes{
+		position: relative;
+		z-index: 99;
+		.el-button-group>.el-button{
+			border: none;
+			padding: 0;
+		}
+		.el-button-group>.el-button:hover{
+		  background-color: #fff;
+		}
+	}
+</style>
 
 <style lang="scss" scoped>
+	.navbar .right-menu .avatar-container{
+		margin-right: 20px;
+	}
+	.right-menu{
+		.el-select{
+			// top:-17px;
+      margin-right: 60px;
+		}
+	}
 .navbar {
   height: 50px;
   overflow: hidden;
   position: relative;
   background: #fff;
+  // background-color: #E7F5F1;
   box-shadow: 0 1px 4px rgba(0,21,41,.08);
 
   .hamburger-container {
@@ -125,7 +365,6 @@ export default {
     cursor: pointer;
     transition: background .3s;
     -webkit-tap-highlight-color:transparent;
-
     &:hover {
       background: rgba(0, 0, 0, .025)
     }
@@ -173,17 +412,18 @@ export default {
     }
 
     .avatar-container {
-      margin-right: 30px;
+      // margin-right: 30px;
+	  position: relative;
 
       .avatar-wrapper {
         margin-top: 5px;
         position: relative;
-
+        z-index: 33;
         .user-avatar {
           cursor: pointer;
           width: 40px;
           height: 40px;
-          border-radius: 10px;
+          border-radius: 50%;
         }
 
         .el-icon-caret-bottom {
@@ -192,9 +432,46 @@ export default {
           right: -20px;
           top: 25px;
           font-size: 12px;
+		  z-index: 33;
         }
       }
     }
   }
 }
+.nhse{
+	display: flex;
+	height: 50px !important;
+	// background-image: url("../../assets/images/pic_htgl_grxx_bg.png") !important;
+   //    background-size: 100% 70px;
+	.acnes{
+		display: flex;
+		height: 100%;
+		position: relative;
+		z-index: 2;
+		align-items: center;
+		p{
+			font-size: 13px;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #333;
+			margin-right: 10px;
+      opacity: 0.7;
+      margin-left: 10px;
+		}
+		img{
+			width: 16px;
+			height: 16px;
+			margin-right: 6px;
+
+		}
+	}
+}
+.imgse{
+	position: absolute;
+	right: -30px;
+	top: 0;
+	// filter: drop-shadow(0 0.5px 0.5px black);
+	// height: 50px;
+}
+
 </style>

+ 7 - 7
ruoyi-ui-gongdan/src/layout/components/Sidebar/Logo.vue

@@ -2,19 +2,19 @@
   <div class="sidebar-logo-container" :class="{'collapse':collapse}" :style="{ backgroundColor: sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }">
     <transition name="sidebarLogoFade">
       <router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
-        <img v-if="logo" :src="logo" class="sidebar-logo" />
-        <h1 v-else class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }} </h1>
+        <!-- <img  :src="logo" class="sidebar-logo" /> -->
+        <h1 class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">中新云客户服务工单系统平台 </h1>
       </router-link>
-      <router-link v-else key="expand" class="sidebar-logo-link" to="/">
-        <img v-if="logo" :src="logo" class="sidebar-logo" />
-        <h1 class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }} </h1>
+      <router-link  key="expand" class="sidebar-logo-link" to="/">
+        <!-- <img  :src="logo" class="sidebar-logo" /> -->
+        <h1 class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">中新云客户服务工单系统平台 </h1>
       </router-link>
     </transition>
   </div>
 </template>
 
 <script>
-import logoImg from '@/assets/logo/logo.png'
+import logoImg from '@/assets/images/pic_jhtgl_logo.png'
 import variables from '@/assets/styles/variables.scss'
 
 export default {
@@ -66,7 +66,7 @@ export default {
     width: 100%;
 
     & .sidebar-logo {
-      width: 32px;
+      width: 238px;
       height: 32px;
       vertical-align: middle;
       margin-right: 12px;

+ 1 - 1
ruoyi-ui-gongdan/src/layout/index.vue

@@ -5,7 +5,7 @@
     <div :class="{hasTagsView:needTagsView,sidebarHide:sidebar.hide}" class="main-container">
       <div :class="{'fixed-header':fixedHeader}">
         <navbar/>
-        <tags-view v-if="needTagsView"/>
+        <!-- <tags-view v-if="needTagsView"/> -->
       </div>
       <app-main/>
       <right-panel>

+ 9 - 0
ruoyi-ui-gongdan/src/main.js

@@ -78,6 +78,15 @@ Vue.use(Element, {
 
 Vue.config.productionTip = false
 
+Vue.directive('integer', {
+  bind: function (el) {
+    el.addEventListener('input', function (e) {
+      let value = e.target.value;
+      if (/^\d+$/.test(value)) return; // 如果已经是整数,直接返回
+      e.target.value = value.replace(/\D/, '-'); // 移除非数字字符
+    });
+  }
+});
 new Vue({
   el: '#app',
   router,

+ 3 - 2
ruoyi-ui-gongdan/src/settings.js

@@ -1,8 +1,9 @@
 module.exports = {
+  urls: `http://192.168.101.86:8077`,
   /**
    * 侧边栏主题 深色主题theme-dark,浅色主题theme-light
    */
-  sideTheme: 'theme-dark',
+  sideTheme: 'theme-light',
 
   /**
    * 是否系统布局配置
@@ -17,7 +18,7 @@ module.exports = {
   /**
    * 是否显示 tagsView
    */
-  tagsView: true,
+  tagsView: false,
 
   /**
    * 是否固定头部

+ 3 - 0
ruoyi-ui-gongdan/src/store/getters.js

@@ -8,6 +8,9 @@ const getters = {
   token: state => state.user.token,
   avatar: state => state.user.avatar,
   name: state => state.user.name,
+  id: state => state.user.id,
+  nickName: state => state.user.nickName,
+  phonenumber: state => state.user.phonenumber,
   introduction: state => state.user.introduction,
   roles: state => state.user.roles,
   permissions: state => state.user.permissions,

+ 13 - 2
ruoyi-ui-gongdan/src/store/modules/user.js

@@ -8,9 +8,11 @@ const user = {
     token: getToken(),
     id: '',
     name: '',
+    nickName:'',
     avatar: '',
     roles: [],
-    permissions: []
+    permissions: [],
+    phonenumber:''
   },
 
   mutations: {
@@ -31,7 +33,13 @@ const user = {
     },
     SET_PERMISSIONS: (state, permissions) => {
       state.permissions = permissions
-    }
+    },
+    SET_NIKE_NAME: (state, nickName) => {
+      state.nickName = nickName
+    },
+    SET_PHONENUMBER: (state, phonenumber) => {
+      state.phonenumber = phonenumber
+    },
   },
 
   actions: {
@@ -69,7 +77,10 @@ const user = {
           }
           commit('SET_ID', user.userId)
           commit('SET_NAME', user.userName)
+          commit('SET_NIKE_NAME', user.nickName)
           commit('SET_AVATAR', avatar)
+          commit('SET_PHONENUMBER', user.phonenumber)
+
           resolve(res)
         }).catch(error => {
           reject(error)

+ 3 - 0
ruoyi-ui-gongdan/src/utils/ruoyi.js

@@ -66,13 +66,16 @@ export function addDateRange(params, dateRange, propName) {
   return search
 }
 
+
 // 回显数据字典
 export function selectDictLabel(datas, value) {
   if (value === undefined) {
     return ""
   }
   var actions = []
+  console.log(datas,value)
   Object.keys(datas).some((key) => {
+    console.log(datas,value)
     if (datas[key].value == ('' + value)) {
       actions.push(datas[key].label)
       return true

+ 137 - 42
ruoyi-ui-gongdan/src/views/dashboard/BarChart.vue

@@ -3,12 +3,10 @@
 </template>
 
 <script>
-import * as echarts from 'echarts'
+import * as echarts from 'echarts';
 require('echarts/theme/macarons') // echarts theme
 import resize from './mixins/resize'
 
-const animationDuration = 6000
-
 export default {
   mixins: [resize],
   props: {
@@ -22,7 +20,15 @@ export default {
     },
     height: {
       type: String,
-      default: '300px'
+      default: '210px'
+    },
+    autoResize: {
+      type: Boolean,
+      default: true
+    },
+    chartData: {
+      type: Object,
+      required: true
     }
   },
   data() {
@@ -30,6 +36,14 @@ export default {
       chart: null
     }
   },
+  watch: {
+    chartData: {
+      deep: true,
+      handler(val) {
+        this.setOptions(val)
+      }
+    }
+  },
   mounted() {
     this.$nextTick(() => {
       this.initChart()
@@ -45,56 +59,137 @@ export default {
   methods: {
     initChart() {
       this.chart = echarts.init(this.$el, 'macarons')
+      console.log(this.chartData)
+      this.setOptions(this.chartData)
+    },
 
+    setOptions({y,x1, x2, } = {}) {
+      console.log(y)
       this.chart.setOption({
-        tooltip: {
-          trigger: 'axis',
-          axisPointer: { // 坐标轴指示器,坐标轴触发有效
-            type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
-          }
+        title:{text: "",
+          left: "center",
+          top: 0,
+          textStyle: {
+            color: "#161616",
+            fontWeight: 'bold',
+            fontSize: '15px',
+            }
+          },
+        color:['#04BFA1', '#4875E8','#FFB132'],
+        xAxis: {
+          data: y,
+          axisLabel:{
+            color:'#AAAAAA'
+          },
+          axisLine: {
+          	lineStyle: {
+          		color: '#DADADA',
+          		width: 1
+          	}
+          },
+          splitLine: {
+                show: false,
+              },
         },
         grid: {
+          left: 10,
+          right: 10,
+          bottom: 10,
           top: 10,
-          left: '2%',
-          right: '2%',
-          bottom: '3%',
+          show:false,
           containLabel: true
         },
-        xAxis: [{
-          type: 'category',
-          data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
-          axisTick: {
-            alignWithLabel: true
-          }
-        }],
-        yAxis: [{
-          type: 'value',
-          axisTick: {
+        toolbox: {
+          show:false,
+        },
+        tooltip: {
+          trigger: 'axis',
+          backgroundColor: "#FFF",
+          color: "#161616",
+          textStyle: {
+                color: "#161616",
+                // fontWeight:'bold'
+              },
+          axisPointer: {
+            type: 'cross',
+          },
+          padding: [5, 10]
+        },
+        yAxis: {
+          splitArea: {
             show: false
+          },
+          axisLabel:{
+            color:'#AAAAAA'
+          },
+          axisLine: {
+            show:true,
+          	lineStyle: {
+          		color: '#DADADA',
+          		width: 1
+          	}
+          },
+          splitLine:{  //决定是否显示坐标中网格
+            show:false
           }
-        }],
+        },
+        legend: {
+          x:'center',
+          y:'bottom',
+          textStyle: {
+            color: "#161616",
+            padding:[0,3]//文字与图形之间的左右间距
+          },
+          itemWidth: 38,//图例标记的图形宽度。
+          itemHeight: 12,
+          itemGap: 20,
+          data: y
+        },
         series: [{
-          name: 'pageA',
-          type: 'bar',
-          stack: 'vistors',
-          barWidth: '60%',
-          data: [79, 52, 200, 334, 390, 330, 220],
-          animationDuration
-        }, {
-          name: 'pageB',
+          name: '上月',
+          itemStyle: {
+			   normal: {
+			                          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+			                              offset: 0,
+			                              color: '#FB9C67'
+			                          }, {
+			                              offset: 1,
+			                              color: '#FFC6A9'
+			                          }]),
+                    barBorderRadius:[10, 10, 0, 0]
+			           }
+
+		  },
           type: 'bar',
-          stack: 'vistors',
-          barWidth: '60%',
-          data: [80, 52, 200, 334, 390, 330, 220],
-          animationDuration
-        }, {
-          name: 'pageC',
+          barGap:"90%",
+          barCategoryGap:'50%',
+          data: x2,
+          // animationDuration: 2800,
+          // animationEasing: 'cubicInOut'
+        },
+        {
+          name: '本月',
+		  itemStyle: {
+		  			   normal: {
+		  			                          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+		  			                              offset: 0,
+		  			                              color: '#59CAA7'
+		  			                          }, {
+		  			                              offset: 1,
+		  			                              color: '#B1EAD8'
+		  			                          }]),
+                              barBorderRadius:[10, 10, 0, 0]
+		  			           }
+		  },
           type: 'bar',
-          stack: 'vistors',
-          barWidth: '60%',
-          data: [30, 52, 200, 334, 390, 330, 220],
-          animationDuration
-        }]
+          barGap:"90%",
+          barCategoryGap:'50%',
+          data: x1,
+          // animationDuration: 2800,
+          // animationEasing: 'quadraticOut'
+        },
+
+        ]
       })
     }
   }

+ 24 - 24
ruoyi-ui-gongdan/src/views/dashboard/LineChart.vue

@@ -20,7 +20,7 @@ export default {
     },
     height: {
       type: String,
-      default: '350px'
+      default: '300px'
     },
     autoResize: {
       type: Boolean,
@@ -68,7 +68,13 @@ export default {
           boundaryGap: false,
           axisTick: {
             show: false
-          }
+          },
+          axisLine: {
+                                  lineStyle: {
+                                      color: '#666666',
+                                      width: 1, //这里是为了突出显示加上的
+                                  }
+                              },
         },
         grid: {
           left: 10,
@@ -86,37 +92,31 @@ export default {
         },
         yAxis: {
           axisTick: {
-            show: false
-          }
+            show: true
+          },
+          lineStyle: {
+                          type: 'dotted' // 或者'dotted'
+                      },
+          axisLine: {
+                                  lineStyle: {
+                                      color: '#666666',
+                                      width: 1, //这里是为了突出显示加上的
+                                  }
+                              },
         },
         legend: {
-          data: ['expected', 'actual']
-        },
-        series: [{
-          name: 'expected', itemStyle: {
-            normal: {
-              color: '#FF005A',
-              lineStyle: {
-                color: '#FF005A',
-                width: 2
-              }
-            }
-          },
-          smooth: true,
-          type: 'line',
-          data: expectedData,
-          animationDuration: 2800,
-          animationEasing: 'cubicInOut'
+          data: []
         },
+        series: [
         {
           name: 'actual',
           smooth: true,
           type: 'line',
           itemStyle: {
             normal: {
-              color: '#3888fa',
+              color: '##03BF8A',
               lineStyle: {
-                color: '#3888fa',
+                color: '#03BF8A',
                 width: 2
               },
               areaStyle: {
@@ -124,7 +124,7 @@ export default {
               }
             }
           },
-          data: actualData,
+          data: [12,13,19,39,45,78,13],
           animationDuration: 2800,
           animationEasing: 'quadraticOut'
         }]

+ 186 - 57
ruoyi-ui-gongdan/src/views/dashboard/PieChart.vue

@@ -1,11 +1,11 @@
 <template>
-  <div :class="className" :style="{height:height,width:width}" />
+  <div :class="className" :style="{ height: height, width: width }" />
 </template>
 
 <script>
-import * as echarts from 'echarts'
-require('echarts/theme/macarons') // echarts theme
-import resize from './mixins/resize'
+import * as echarts from 'echarts';
+require('echarts/theme/macarons'); // echarts theme
+import resize from './mixins/resize';
 
 export default {
   mixins: [resize],
@@ -20,60 +20,189 @@ export default {
     },
     height: {
       type: String,
-      default: '300px'
-    }
-  },
-  data() {
-    return {
-      chart: null
-    }
-  },
-  mounted() {
-    this.$nextTick(() => {
-      this.initChart()
-    })
-  },
-  beforeDestroy() {
-    if (!this.chart) {
-      return
+      default: '200px'
+    },
+    chartData: {
+      type: Object,
+      required: true
     }
-    this.chart.dispose()
-    this.chart = null
   },
-  methods: {
-    initChart() {
-      this.chart = echarts.init(this.$el, 'macarons')
+watch: {
+     chartData: {
+       deep: true,
+       handler(val) {
+         this.setOptions(val)
+       }
+     }
+   },
+   data() {
+     return {
+       chart: null
+     }
+   },
+   mounted() {
+     this.$nextTick(() => {
+       this.initChart()
+     })
+   },
+   beforeDestroy() {
+     if (!this.chart) {
+       return
+     }
+     this.chart.dispose()
+     this.chart = null
+   },
+   methods: {
+     initChart() {
+       this.chart = echarts.init(this.$el, 'macarons');
+       this.chart = echarts.init(this.$el, 'macarons')
+       this.setOptions(this.chartData)
+     },
+       setOptions(row) {
+         console.log(row,56)
+          var colors = ["#00B278","#91CC75","#FAC858", "#EE6666","#73C0DE","#5470C6"];
+        this.chart.setOption({
+          graphic:{       //图形中间文字
+                      type:"text",
+                      left:"32%",
+                      top:"50%",
+                      style:{
+                          text: ' {total|' + row.zs+ '}'  + '\n\r' +  '{active|工单总数}' ,
+                          textAlign:"center",
+                          fill:"#333",
+                          fontSize:14,
+                          formatter:  ' {total|' + row.zs + '}'  + '\n\r' +  '{active|工单总数}' ,
+                              rich: {
+                                  total:{
 
-      this.chart.setOption({
-        tooltip: {
-          trigger: 'item',
-          formatter: '{a} <br/>{b} : {c} ({d}%)'
-        },
-        legend: {
-          left: 'center',
-          bottom: '10',
-          data: ['Industries', 'Technology', 'Forex', 'Gold', 'Forecasts']
-        },
-        series: [
-          {
-            name: 'WEEKLY WRITE ARTICLES',
-            type: 'pie',
-            roseType: 'radius',
-            radius: [15, 95],
-            center: ['50%', '38%'],
-            data: [
-              { value: 320, name: 'Industries' },
-              { value: 240, name: 'Technology' },
-              { value: 149, name: 'Forex' },
-              { value: 100, name: 'Gold' },
-              { value: 59, name: 'Forecasts' }
-            ],
-            animationEasing: 'cubicInOut',
-            animationDuration: 2600
-          }
-        ]
-      })
-    }
-  }
-}
+                                      fontSize: 26,
+                                      fontWight:700,
+                                      fontFamily : "微软雅黑",
+                                      color:'#000'
+                                  },
+                                  active: {
+                                      fontFamily : "微软雅黑",
+                                      fontSize: 16,
+                                      color:'#6c7a89',
+                                      lineHeight:30,
+                                  },
+                                  activen: {
+                                      fontFamily : "微软雅黑",
+                                      fontSize: 16,
+                                      color:'#666666',
+                                      lineHeight:30,
+                                  },
+                          },
+                      }
+                  },
+              series: [{
+                     name: '',
+                     type: 'pie',
+                     radius: ['50%', '80%'],
+                     center: ['47%', '59%'],
+                     labelLine:{
+                          normal:{
+                               length:8,   	// 指示线长度
+                               lineStyle: {
+                                  // color: "#595959"  // 指示线颜色
+                               }
+                          },
+                     },
+                     label: {
+                          normal: {
+                               textStyle: {
+                                     // color: '#595959',	// 提示文字颜色
+                                     color:(params)=> {
+                                                 var index = params.dataIndex;
+                                                 return colors[index];
+                                             },
+                                     fontSize: 12		// 提示文字大小
+                               }
+                         },
+                         emphasis: {//中间文字显示
+                             show: true,
+                         }
+                     },
+
+
+                             data:[
+                               {value:row.wlfw,
+                                   name:'网络服务',
+                                   hoverAnimation: false,
+                                   itemStyle: {
+                                       normal: {
+                                           borderWidth: 5, // 为两个颜色之间那个宽度
+                                           borderColor: '#fff',  // 边框颜色白色
+                                           color: colors[0]
+                                       }
+                                   }
+                               },
+                               {
+                                   value:row.sbfw,
+                                   name:'设备服务',
+                                   hoverAnimation: false,
+                                   itemStyle: {
+                                       normal: {
+                                           borderWidth: 5,
+                                           borderColor: '#fff',
+                                           color: colors[1]
+                                       }
+                                   }
+                               },
+                               {
+                                   value:row.rjfw,
+                                   name:'软件服务',
+                                   hoverAnimation: false,
+                                   itemStyle: {
+                                       normal: {
+                                           borderWidth: 5,
+                                           borderColor: '#fff',
+                                           color: colors[2]
+                                       }
+                                   }
+                               },
+                               {
+                                   value:row.kffw,
+                                   name:'开发服务',
+                                   hoverAnimation: false,
+                                   itemStyle: {
+                                       normal: {
+                                           borderWidth: 5,
+                                           borderColor: '#fff',
+                                           color: colors[3]
+                                       }
+                                   }
+                               },
+                               {
+                                   value:row.sjfw,
+                                   name:'设计服务',
+                                   hoverAnimation: false,
+                                   itemStyle: {
+                                       normal: {
+                                           borderWidth: 5,
+                                           borderColor: '#fff',
+                                           color: colors[4]
+                                       }
+                                   }
+                               },
+                               {
+                                   value:row.qtfw,
+                                   name:'其他服务',
+                                   hoverAnimation: false,
+                                   itemStyle: {
+                                       normal: {
+                                           borderWidth: 5,
+                                           borderColor: '#fff',
+                                           color: colors[5],
+                                       }
+                                   }
+                               },
+
+                                ]
+                              }
+                               ]
+              });
+       }
+   }
+};
 </script>

+ 193 - 0
ruoyi-ui-gongdan/src/views/dashboard/PieChartone.vue

@@ -0,0 +1,193 @@
+<template>
+  <div :class="className" :style="{ height: height, width: width }" />
+</template>
+
+<script>
+import * as echarts from 'echarts';
+require('echarts/theme/macarons'); // echarts theme
+import resize from './mixins/resize';
+
+export default {
+  mixins: [resize],
+  props: {
+    className: {
+      type: String,
+      default: 'chart'
+    },
+    width: {
+      type: String,
+      default: '100%'
+    },
+    height: {
+      type: String,
+      default: '200px'
+    },
+    chartData: {
+      type: Object,
+      required: true
+    }
+  },
+watch: {
+     chartData: {
+       deep: true,
+       handler(val) {
+         this.setOptions(val)
+       }
+     }
+   },
+   data() {
+     return {
+       chart: null
+     }
+   },
+   mounted() {
+     this.$nextTick(() => {
+       this.initChart()
+     })
+   },
+   beforeDestroy() {
+     if (!this.chart) {
+       return
+     }
+     this.chart.dispose()
+     this.chart = null
+   },
+   methods: {
+     initChart() {
+       this.chart = echarts.init(this.$el, 'macarons');
+       this.chart = echarts.init(this.$el, 'macarons')
+       this.setOptions(this.chartData)
+     },
+       setOptions(row) {
+         console.log(row,56)
+          var colors = ["#00B278","#91CC75","#FAC858", "#EE6666","#73C0DE","#5470C6"];
+        this.chart.setOption({
+
+              series: [{
+                     name: '',
+                     type: 'pie',
+                     radius: ['40%', '80%'],
+                     center: ['50%', '59%'],
+                     labelLine:{
+                          normal:{
+                               length:8,   	// 指示线长度
+                               lineStyle: {
+                                  // color: "#595959"  // 指示线颜色
+                               }
+                          },
+                     },
+                     label: {
+                                                     normal: {
+                                                                    show: true,
+                                                                    position: 'center',
+                                                                    color:'#4c4a4a',
+                                                                    formatter:  '{active|总告警数}' + '\n\r' +  ' {total|' + 200 + '}' + '{activen|/次}' ,
+                                                                    rich: {
+                                                                        total:{
+
+                                                                            fontSize: 20,
+                                                                            fontWight:700,
+                                                                            fontFamily : "微软雅黑",
+                                                                            color:'#454c5c'
+                                                                        },
+                                                                        active: {
+                                                                            fontFamily : "微软雅黑",
+                                                                            fontSize: 16,
+                                                                            color:'#6c7a89',
+                                                                            lineHeight:30,
+                                                                        },
+                                                                        activen: {
+                                                                            fontFamily : "微软雅黑",
+                                                                            fontSize: 16,
+                                                                            color:'#666666',
+                                                                            lineHeight:30,
+                                                                        },
+                                                                    }
+                                                                },
+                                                                emphasis: {//中间文字显示
+                                                                    show: true,
+                                                                }
+                                                  },
+
+
+                             data:[
+                               {value:4,
+                                   name:'120%',
+                                   hoverAnimation: false,
+                                   itemStyle: {
+                                       normal: {
+                                           borderWidth: 5, // 为两个颜色之间那个宽度
+                                           borderColor: '#fff',  // 边框颜色白色
+                                           color: colors[0]
+                                       }
+                                   }
+                               },
+                               {
+                                   value:4,
+                                   name:'12%',
+                                   hoverAnimation: false,
+                                   itemStyle: {
+                                       normal: {
+                                           borderWidth: 5,
+                                           borderColor: '#fff',
+                                           color: colors[1]
+                                       }
+                                   }
+                               },
+                               {
+                                   value:2,
+                                   name:'12%',
+                                   hoverAnimation: false,
+                                   itemStyle: {
+                                       normal: {
+                                           borderWidth: 5,
+                                           borderColor: '#fff',
+                                           color: colors[2]
+                                       }
+                                   }
+                               },
+                               {
+                                   value:10,
+                                   name:'12%',
+                                   hoverAnimation: false,
+                                   itemStyle: {
+                                       normal: {
+                                           borderWidth: 5,
+                                           borderColor: '#fff',
+                                           color: colors[3]
+                                       }
+                                   }
+                               },
+                               {
+                                   value:15,
+                                   name:'12%',
+                                   hoverAnimation: false,
+                                   itemStyle: {
+                                       normal: {
+                                           borderWidth: 5,
+                                           borderColor: '#fff',
+                                           color: colors[4]
+                                       }
+                                   }
+                               },
+                               {
+                                   value:8,
+                                   name:'12%',
+                                   hoverAnimation: false,
+                                   itemStyle: {
+                                       normal: {
+                                           borderWidth: 5,
+                                           borderColor: '#fff',
+                                           color: colors[5],
+                                       }
+                                   }
+                               },
+
+                                ]
+                              }
+                               ]
+              });
+       }
+   }
+};
+</script>

+ 965 - 0
ruoyi-ui-gongdan/src/views/gongdan/baoxiuguanli/index.vue

@@ -0,0 +1,965 @@
+<template>
+  <div class="app-container">
+    <div style="background-color: #fff;padding: 20px;border-radius: 10px;">
+      <p style="margin: 0; font-weight: 800;font-size: 16px;color: #343434;display: flex;align-items: center;margin-bottom: 20px;">
+        <img src="../../../assets/images/icon_htgl_btzs.png" alt="" style="width: 16px;height: 20px;">
+       <span style="margin-left: 10px;">报修管理</span>
+      </p>
+      <div style="background: #F3F3F3;padding: 20px 15px; padding-bottom: 0;margin-bottom: 20px;">
+        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="88px">
+          <el-row>
+              <el-col :span="8">
+                <el-form-item label="手机号码" prop="phoneNumber">
+                        <el-input
+                          v-model="queryParams.phoneNumber"
+                          placeholder="请输入报修用户手机号码"
+                          clearable
+                          @keyup.enter.native="handleQuery"
+                        />
+                      </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="报修类别" prop="maintenanceCategory">
+                        <el-select v-model="queryParams.maintenanceCategory" placeholder="请选择报修类别" clearable>
+                          <el-option
+                            v-for="dict in dict.type.baoxiutype"
+                            :key="dict.value"
+                            :label="dict.label"
+                            :value="dict.value"
+                          />
+                        </el-select>
+                      </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="报修状态" prop="repairStatus">
+                        <el-select v-model="queryParams.repairStatus" placeholder="请选择报修状态" clearable>
+                          <el-option
+                            v-for="dict in dict.type.repair_status"
+                            :key="dict.value"
+                            :label="dict.label"
+                            :value="dict.value"
+                          />
+                        </el-select>
+                      </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item class="butt bnjle">
+                  <el-button size="mini" type="primary"   @click="handleQuery">搜索</el-button>
+                  <el-button size="mini"  @click="resetQuery">重置</el-button>
+                </el-form-item>
+              </el-col>
+          </el-row>
+
+        </el-form>
+      </div>
+
+
+      <div class="casr">
+              <el-row :gutter="10" class="mb8">
+                <!-- <el-col :span="1.5">
+                  <div style="font-weight: bold;font-size: 14px;color: #343434; display: flex;align-items: center;">
+                    当夜全选
+                  </div>
+                </el-col> -->
+                <el-col :span="1.5">
+                  <el-button
+                    type="primary"
+                    plain
+                    size="mini"
+                    @click="handleAdd"
+                    v-hasPermi="['wuYe:repair:add']"
+                  >添加</el-button>
+                </el-col>
+                <!-- <el-col :span="1.5">
+                  <el-button
+                    type="success"
+                    plain
+                    size="mini"
+                    :disabled="single"
+                    @click="handleUpdate"
+                    v-hasPermi="['system:post:edit']"
+                  >修改</el-button>
+                </el-col>
+                <el-col :span="1.5">
+                  <el-button
+                    type="danger"
+                    plain
+                    size="mini"
+                    :disabled="multiple"
+                    @click="handleDelete"
+                    v-hasPermi="['system:post:remove']"
+                  >删除</el-button>
+                </el-col> -->
+                <el-col :span="1.5">
+                  <el-button
+                    type="warning"
+                    plain
+                    size="mini"
+                    @click="handleExport"
+                    v-hasPermi="['wuYe:repair:export']"
+                  >导出</el-button>
+                </el-col>
+                <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+              </el-row>
+              <div class=" infinite-list" :style="dynamicStyle">
+                <el-row :gutter="10" v-if="repairList.length != 0" style="width: 100%;margin-left: 0;">
+                  <el-col :span="6" v-for="(ite,idx) in list" :key="idx">
+                    <div class="worklist"  >
+                    	<div class="listtop">
+                    		<div class="name" :class="{'bga':ite.type==2,'bgb':ite.type==3,'bgc':ite.type==4,}">嘉欣</div>
+                    		<div class="flex1">
+                    			<div class="namea">嘉欣医疗用品有限公司</div>
+                    			<div class="adrlist">
+                    				<div class="noico"><img :src="gdicob" class="imga"></img></div>
+                    				<div class="notit">王女士</div>
+                    			</div>
+                    			<div class="adrlist">
+                    				<div class="noico"><img :src="gdicoa" class="imgc"></img></div>
+                            <el-tooltip class="item" effect="dark" content="潜山经济开发区八一路与三合路…" placement="top-start">
+                    				<div class="notit over co9B">潜山经济开发区八一路与三合路…</div>
+                            </el-tooltip>
+                    			</div>
+                    		</div>
+                    		<img :src='phone' class="phone"  @click.stop="getPhone()"></img>
+                    	</div>
+                    	<div class="collapse" @click.stop="" style="background-color: #F4F7FF;">
+                        <el-tooltip class="item" effect="dark" content="2025-04-08  16:14:57 王浩明 接下了该客户的工单" placement="top-start">
+                    						<div class="chtop flexc" >
+                    							<div style="width: 40%;" class="over">2025-04-08  16:14:57</div>
+                    							<div style="width: 60%;" class="over">王浩明 接下了该客户的工单</div>
+                    						</div>
+                        </el-tooltip>
+                    					<div class="chstep">
+                    						<div class="flexc mb8">
+                    							<div class="imgs"><img :src="wicoa" class="imga"></img></div>
+                    							<div class="tit">工单编号:</div>
+                    							<div class="txt">15234984113689748</div>
+                    							<img :src="code" class="code"></img>
+                    						</div>
+                    						<div class="flexc mb8">
+                    							<div class="imgs"><img :src="wicob" class="imga"></img></div>
+                    							<div class="tit">创建时间:</div>
+                    							<div class="txt">2025-04-08 15:53:28</div>
+                    						</div>
+                    						<div class="flexc mb8">
+                    							<div class="imgs"><img :src="wicoc" class="imgb"></img></div>
+                    							<div class="tit">服务类型:</div>
+                    							<div class="txt" :class="{'co77':ite.type==1,'co06':ite.type==2,'cofb':ite.type==3,'coaf':ite.type==4,}">网络服务</div>
+
+                    						</div>
+                    					</div>
+
+                    	</div>
+                      <div class="bortt tongty" style="justify-content: space-between; margin-top: 0;">
+                         <p v-hasPermi="['wuYe:repair:assign']"   style="cursor: pointer;color: #28C529;" @click="daifeng(item)" ><span  >指派</span></span>  </p>
+                        <p style="cursor: pointer;" @click="handleUpdatef(item)"><span  >查看</span></span>  </p>
+                        <!-- <span @click="handleUpdatef(item)">查看</span> -->
+                        <p  v-hasPermi="['wuYe:repair:remove']" style="color:red;cursor: pointer;" @click="handleDelete(item)">删除  </p>
+                      </div>
+
+
+                    </div>
+                  </el-col>
+                </el-row>
+                <div style="margin-top: 20px;display: flex;justify-content: center;align-items: center;" v-if="repairList.length ==0">
+                   <img   src="../../../assets/images/zwshjbig.png" alt="" style="">
+                </div>
+              </div>
+      </div>
+
+
+      <pagination
+        v-show="total>0"
+        :total="total"
+        :page.sync="queryParams.pageNum"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
+      />
+    </div>
+
+    <!-- 添加或修改岗位对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="640px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-row>
+          <!-- <el-col :span="24" v-if="isnusle == 0">
+            <el-form-item label="报修标题" prop="repairTitle">
+                      <el-input v-model="form.repairTitle" placeholder="请输入报修标题,简要描述报修内容" />
+            </el-form-item>
+
+          </el-col> -->
+          <el-col :span="12" v-if="isnusle == 0">
+             <el-form-item label="手机号码" prop="phoneNumber">
+                      <el-input v-model="form.phoneNumber" placeholder="请输入报修用户手机号码" />
+             </el-form-item>
+          </el-col>
+          <el-col :span="12" v-if="isnusle == 0">
+            <el-form-item label="门牌号" prop="houseAddress">
+                 <el-select filterable  v-model="form.houseAddress" placeholder="请选择门牌号" clearable>
+                   <el-option
+                    @click.native="itnegadd(dict)"
+                     v-for="dict in houseInfoLise"
+                     :key="dict.houseId"
+                     :label="dict.detailedAddress"
+                     :value="dict.houseId"
+                   />
+                 </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24" v-if="isnusle == 0">
+             <el-form-item label="报修详情" prop="repairDetails">
+                      <el-input v-model="form.repairDetails" type="textarea" placeholder="请输入内容" />
+                    </el-form-item>
+          </el-col>
+          <el-col :span="12" v-if="isnusle == 0">
+           <el-form-item label="报修类别" prop="maintenanceCategory">
+                     <el-select v-model="form.maintenanceCategory" placeholder="请选择报修类别">
+                       <el-option
+                         v-for="dict in dict.type.baoxiutype"
+                         :key="dict.value"
+                         :label="dict.label"
+                         :value="dict.value"
+                       ></el-option>
+                     </el-select>
+                   </el-form-item>
+          </el-col>
+          <el-col :span="12" v-if="isnusle == 0">
+            <el-form-item label="报修时间" prop="repairTime">
+                      <el-date-picker
+                      style="width:100%"
+                        v-model="form.repairTime"
+                        type="datetime"
+                        value-format="yyyy-MM-dd HH:mm:ss"
+                        placeholder="请选择报修时间">
+                      </el-date-picker>
+                    </el-form-item>
+          </el-col>
+          <el-col :span="24" v-if="isnusle == 0">
+            <el-form-item label="备注" prop="remark">
+              <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="24" v-if="isnusle == 2">
+             <el-form-item label="维修详情" prop="repairCompletionDetails">
+                      <el-input v-model="form.repairCompletionDetails" type="textarea" placeholder="请输入内容" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="24" class="unimg" v-if="isnusle == 1" >
+            <el-form-item label="上门拍照" prop="visitPhoto">
+              <image-upload v-model="form.visitPhoto"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24" class="unimg" v-if="isnusle == 2">
+            <el-form-item label="结束拍照" prop="completionPhoto">
+              <image-upload v-model="form.completionPhoto"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+
+
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog title="指派" :visible.sync="openz" width="640px" append-to-body>
+      <el-form ref="formz" :model="formz" :rules="rulesz" label-width="80px">
+        <el-row>
+          <el-col :span="24" >
+            <el-form-item label="选择人员" prop="staffName">
+                      <el-select style="width: 100%;" v-model="formz.staffName" placeholder="请选择维修人员">
+                        <el-option
+                        @click.native="xuanse(dict)"
+                          v-for="dict in staffManageList"
+                          :key="dict.staffId"
+                          :label="dict.staffName + '('+ (dict.status == null?'' : dict.status == 1?'空闲中' : '指派中') + ')'"
+                          :value="dict.staffId"
+                        ></el-option>
+                      </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFormz">确 定</el-button>
+        <el-button @click="cancelz">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+// import 'videojs-flash'
+const defaultSettings = require("@/settings.js");
+export default {
+  name: "Repair",
+    dicts: ['baoxiutype', 'repair_status'],
+  data() {
+    return {
+      list:[{name:'嘉欣医疗用品有限公司',type:'1'},{name:'嘉欣医疗用品有限公司',type:'2'},{name:'嘉欣医疗用品有限公司',type:'3'},{name:'嘉欣医疗用品有限公司',type:'4'}],
+      gdicoa:require('../../../assets/images/gdicoa.png'),
+      gdicob:require('../../../assets/images/gdicob.png'),
+      gdicoc:require('../../../assets/images/gdicoc.png'),
+      phone:require('../../../assets/images/phone.png'),
+      wicoa:require('../../../assets/images/wicoa.png'),
+      wicob:require('../../../assets/images/wicob.png'),
+      wicoc:require('../../../assets/images/wicoc.png'),
+      code:require('../../../assets/images/code.png'),
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 物业报修表格数据
+       repairList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      openz:false,
+      houseInfoLise:[],
+      defaultSettings:defaultSettings,
+      baseUrl: process.env.VUE_APP_BASE_API,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+                pageSize: 4,
+                houseId: null,
+                houseAddress: null,
+                repairTime: null,
+                phoneNumber: null,
+                repairTitle: null,
+                maintenanceCategory: null,
+                repairDetails: null,
+                repairImages: null,
+                repairStatus: null,
+                staffName: null,
+                staffId: null,
+                staffPhone: null,
+                visitTime: null,
+                visitPhoto: null,
+                completionTime: null,
+                completionPhoto: null,
+                repairCompletionDetails: null,
+      },
+      // 表单参数
+      form: {},
+      formz: {},
+      // 表单校验
+      rules: {
+        repairTime: [
+                  { required: true, message: "不能为空", trigger: "blur" }
+                ],
+        repairDetails: [
+                  { required: true, message: "不能为空", trigger: "blur" }
+                ],
+        maintenanceCategory: [
+                  { required: true, message: "不能为空", trigger: "blur" }
+                ],
+
+        phoneNumber: [
+                 { required: true, message: "不能为空", trigger: "blur" },
+                 {
+                   pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+                   message: "请输入正确的手机号码",
+                    trigger: "blur"
+                   }
+               ],
+
+      },
+      rulesz: {
+        staffName: [
+                  { required: true, message: "不能为空", trigger: "blur" }
+                ],
+
+      },
+      activeName:'first',
+      videoState: false, // 视频播放状态
+      poster:true,
+      controls:true,
+      videoData:{},
+       player: null,
+       isshoe:true,
+       isnusle:1,
+       staffManageList: [],
+       tableMaxHeight:'200',
+       isryr:true
+
+    };
+  },
+  computed: {
+    dynamicStyle() {
+      return {
+        overflow:'auto',
+        height:  this.tableMaxHeight + 'px',
+        paddingTop:'10px'
+      }
+    }
+    },
+  created() {
+  window.onresize = () => {
+  	      this.changeTableMaxHeight()
+  	    }
+  	    this.changeTableMaxHeight()
+  },
+  mounted() {
+  	window.onresize = () => {
+  	          this.changeTableMaxHeight()
+  	        }
+  	        this.changeTableMaxHeight()
+  },
+  beforeDestroy() {
+      if (this.player) {
+        this.player.dispose()
+      }
+    },
+  methods: {
+    icthg(row){
+      // console.log(row)
+      this.isryr = false
+     row.isryr = !row.isryr
+     this.isryr = true
+     console.log(row.isryr,this.isryr)
+    },
+    getListhouvr() {
+       listNoPage().then(response => {
+         this.houseInfoLise  = response.data;
+       });
+     },
+    /** 查询岗位列表 */
+    getList() {
+      this.loading = true;
+
+      listRepair(this.queryParams).then(response => {
+        this.repairList  = response.rows;
+        this.repairList .filter(rou=>{
+          rou.imges = []
+          if(rou.repairImages != null && rou.repairImages != ''){
+            rou.imges = rou.repairImages.split(',')
+          }
+          rou.isnum = false
+          rou.isryr = true
+        })
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    getstaffManageList(row){
+      let bsdf={'staffCategory':2}
+      listStaffManageNoPage().then(response => {
+        this.staffManageList  = response.rows;
+        // this.staffManageList.filrter(rout=>{
+        //   rout.lable = rout.staffName + '<p>'
+        // })
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 获取当前时间
+    gettime(){
+      let nowDate = new Date()
+      				  let date = {
+      				    year: nowDate.getFullYear(),
+      				    month: nowDate.getMonth() + 1,
+      				    date: nowDate.getDate()
+      				  }
+
+      				   if (parseInt(date.date) < 10) {
+      				      date.date = '0' + date.date
+      				    }
+                  let nghe = date.year + '-' + date.month + '-' + date.date
+      				  return nghe
+
+    },
+    cancelz() {
+      this.openz = false;
+    },
+    gettimeg(){
+      let nowDate = new Date()
+                //获取当前时间并打印
+                        var _this = this;
+                        let sgse=''
+                      let yy = new Date().getFullYear();
+                      let mm = new Date().getMonth()+1;
+                      let dd = new Date().getDate();
+                      let hh = new Date().getHours();
+                      let mf = new Date().getMinutes()<10 ? '0'+new Date().getMinutes() : new Date().getMinutes();
+                      let ss = new Date().getSeconds()<10 ? '0'+new Date().getSeconds() : new Date().getSeconds();
+                       sgse = yy+'-'+mm+'-'+dd+' '+hh+':'+mf+':'+ss;
+                    return  sgse
+
+
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+              repairId: null,
+              houseId: null,
+              houseAddress: null,
+              repairTime: null,
+              phoneNumber: null,
+              repairTitle: null,
+              maintenanceCategory: null,
+              repairDetails: null,
+              repairTime:this.gettimeg() + ' ' + '00:00:00',
+              repairImages: null,
+              repairStatus: null,
+              staffName: null,
+              staffId: null,
+              staffPhone: null,
+              visitTime: null,
+              visitPhoto: null,
+              completionTime: null,
+              completionPhoto: null,
+              repairCompletionDetails: null,
+              createBy: null,
+              createTime: null,
+              updateBy: null,
+              updateTime: null,
+              remark: null
+            };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.repairId)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.isnusle = 0
+      this.title = "添加物业报修";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row,val) {
+      this.reset();
+            const repairId = row.repairId || this.ids
+            getRepair(repairId).then(response => {
+              this.form = response.data;
+              this.open = true;
+              this.title = "报修信息";
+              this.isnusle = val
+            });
+    },
+    handleUpdatef(row){
+      this.$router.push({
+        path: '/wuguan/baoxiuxq',
+        query: {
+        	'id':row.repairId,
+        }
+      })
+    },
+    // 待分配
+    daifeng(row){
+     if(row.repairStatus ==1){
+       // 待分配
+       // this.formz.maintenanceCategory = row.maintenanceCategory
+       this.openz = true
+       this.formz.repairId = row.repairId
+
+
+     }
+    },
+    // 待分配提交
+    submitFormz(){
+      this.$refs["formz"].validate(valid => {
+        if (valid) {
+          assign(this.formz).then(response => {
+            this.$modal.msgSuccess("操作成功");
+            this.openz = false;
+            this.getList();
+          });
+        }
+        })
+
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+                  if (this.form.repairId != null) {
+                    updateRepair(this.form).then(response => {
+                      this.$modal.msgSuccess("修改成功");
+                      this.open = false;
+                      this.getList();
+                    });
+                  } else {
+                    this.form.userId = this.$store.getters.userId
+                    addRepair(this.form).then(response => {
+                      this.$modal.msgSuccess("新增成功");
+                      this.open = false;
+                      this.getList();
+                    });
+                  }
+                  }
+      });
+    },
+    /** 删除按钮操作 */
+        handleDelete(row) {
+          const repairIds = row.repairId || this.ids;
+          delRepair(repairIds).then(response => {
+            this.$modal.msgSuccess("删除成功");
+            this.getList();
+          });
+        },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('wuYe/repair/export', {
+        ...this.queryParams
+      }, `repair_${new Date().getTime()}.xlsx`)
+    },
+
+      handleClick(){
+
+      },
+    isac(val){
+      console.log(5,val)
+      val.isnum = !val.isnum
+      this.isshoe = false
+      this.isshoe = true
+    },
+    xuanse(val){
+      console.log(val)
+     this.formz.staffName = val.staffName
+     this.formz.staffId = val.staffId
+     this.formz.staffUserId = val.userId
+     this.formz.staffPhone = val.phoneNumber
+    },
+    itnegadd(item){
+      this.form.houseId = item.houseId
+      this.form.houseAddress = item.detailedAddress
+      console.log(item)
+    },
+    // 获取屏幕高度
+    showFilterForm () {
+          this.filterActive = !this.filterActive
+          this.changeTableMaxHeight()
+        },
+
+        changeTableMaxHeight () {
+          let height = document.body.offsetHeight // 网页可视区域高度
+          // if (this.filterActive) {
+          //   this.tableMaxHeight = height - 320
+          // } else {
+            this.tableMaxHeight = height - 150
+          // }
+          console.log(height)
+        }
+
+  }
+};
+</script>
+<style  lang="scss">
+  .ingsek{
+   .el-carousel__container{
+  	 height: 150px;
+   }
+   .el-carousel--horizontal{
+     width: 100%;
+   }
+  }
+  .unimg{
+    .el-upload--picture-card{
+      width:102px;
+      height: 102px;
+      line-height: 102px;
+    }
+  }
+
+  .bnjle{
+    margin-left: 20px;
+  }
+  .butt{
+    .el-button--small{
+      padding: 9px 23px !important;
+      font-size: 14px;
+    }
+  }
+  .casr{
+    .el-tabs__item.is-active{
+      color: #196CFF;
+    }
+    .el-tabs--card > .el-tabs__header .el-tabs__item{
+      padding: 0  30px !important;
+    }
+  }
+  .el-table .el-table__header-wrapper th{
+    background-color:#F5F6F8;
+    color:#343434;
+  }
+  .el-table{
+    color:#343434;
+  }
+ // ::-webkit-scrollbar {
+ //   width: 7px; /* 滚动条宽度 */
+ // }
+ // ::-webkit-scrollbar-track {
+ //   background: #f1f1f1; /* 滚动条轨道背景色 */
+ // }
+ // ::-webkit-scrollbar-thumb {
+ //  background: #999; /* 滚动条滑块背景色 */
+ //   border-radius: 10px; /* 滚动条滑块圆角 */
+ // }
+ // ::-webkit-scrollbar-thumb:hover {
+ //   // background: red; /* 滚动条滑块悬停时的背景色 */
+ // }
+</style>
+<style scoped lang="scss">
+  .flexc{
+    display: flex;
+    justify-content: space-between;
+  }
+  	.carlist{background: #FFFFFF;border-radius: 10px;margin-bottom: 14px;
+  		.ctop{border-bottom: 1px solid #E5E5E5;padding:13px 12px;
+  			.imgs{width: 20px;height: 21px;margin-right: 15px;}
+  			.tit{font-size: 16px;color: #272727;font-weight: bold;margin-right: 7px;overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;}
+  			.txt{font-weight: 500;font-size: 14px;
+  				&.ca{color: #3565ED;}
+  				&.cb{color: #FE5A0E;}
+  				&.cc{color: #28C529;}
+  			}
+  			.txta{font-weight: 500;font-size: 14px;color: #AAAAAA;}
+  			.num{font-size: 14px;color: #AAAAAA;}
+  		}
+  		.btn{height: 17px;border-radius: 9px;display: flex;align-items: center;justify-content: center;padding: 0 5px;font-size:12px;margin-right: 12px;
+  			&.btna{border: 1px solid #06C770;color: #06C770;}
+  			&.btnb{border: 1px solid #3565ED;color: #3565ED;}
+  			&.btnc{border: 1px solid #FE5A0E;color: #FE5A0E;}
+  			&.btnbga{border: 1px solid #0156FE;color: #3565ED;background: #DFEAFF;height: 18px;}
+  			&.btnbgb{border: 1px solid #C1C1C1;color: #666666;background: #F1F1F1;height: 18px;}
+  			&.btnbgc{border: 1px solid #FE5A0E;color:#FE5A0E;background:#FFEEE6;height: 18px;}
+  		}
+  		.clists{padding: 12px 12px 4px;
+  			.clist{font-weight: 500;margin-bottom: 8px;
+  	font-size: 13px;color: #272727;display: flex;line-height: 17px;
+  				.tit{font-size: 14px;color: #AAAAAA;flex: 0 0 auto;margin-right: 8px;text-align-last: justify;}
+  				.imgas{display: flex;align-items: center;flex-wrap: wrap;
+  					image{width: 71px;height: 71px;margin-right: 15px;margin-top:4px;}
+  				}
+  			}
+  			.w50{
+  				.clist{width: 50%;}
+  			}
+  		}
+  	}
+  	.houselist{
+  		.clists{padding-bottom: 1px !important;}
+  		.clist{margin-bottom: 11px !important;}
+  	}
+  .goe{
+    p{
+      margin: 0;
+      font-weight: 800;
+      font-size: 16px;
+      color: #161616;
+      margin-top: 10px;
+      margin-bottom: 3px;
+      padding: 0 10px;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      display:-webkit-box; //作为弹性伸缩盒子模型显示。
+      -webkit-box-orient:vertical; //设置伸缩盒子的子元素排列方式--从上到下垂直排列
+      -webkit-line-clamp:1; //显示的行
+    }
+    p:nth-child(2){
+
+    }
+  }
+  .ingwe{
+    border: 2px solid #196CFF;
+  }
+  .renyuangs{
+    p{
+      font-weight: 500;
+      font-size: 14px;
+      color: #161616;
+      padding: 0;
+    }
+  }
+  .tongty{
+    display: flex;
+    align-items: center;
+  }
+  .bortt{
+    border-top: 1px solid #DADADA;
+    margin-top: 15px;
+
+    p{
+      margin: 0;
+      font-weight: bold;
+      font-size: 14px;
+      color: #5F8BF4;
+      width:50%;
+      padding: 10px;
+      text-align: center;
+    }
+  }
+  .xiangque{
+    overflow: hidden;
+    text-overflow: ellipsis;
+    display:-webkit-box; //作为弹性伸缩盒子模型显示。
+    -webkit-box-orient:vertical; //设置伸缩盒子的子元素排列方式--从上到下垂直排列
+    -webkit-line-clamp:2; //显示的行
+    height: 46px;
+  }
+  .buzhout{
+    margin-top: 20px;
+    p{
+      margin: 0;
+      font-weight: bold;
+      font-size: 16px;
+      color: #666666;
+      span{
+        font-size: 14px;
+        font-weight: 400;
+      }
+    }
+    .p{
+      font-weight: 500;
+      font-size: 14px;
+      color: #666666;
+      margin-top: 10px;
+      padding-left: 22px;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      display:-webkit-box; //作为弹性伸缩盒子模型显示。
+      -webkit-box-orient:vertical; //设置伸缩盒子的子元素排列方式--从上到下垂直排列
+      -webkit-line-clamp:1; //显示的行
+      position: relative;
+
+    }
+    .p:before{
+      position: absolute;
+      display: inline-block;
+      content: "";
+      width: 1px;
+      height: 30px;
+      background-color: #C1C1C1;
+      top:0;
+      left:6px;
+    }
+    .ph{
+      font-weight: 500;
+      font-size: 14px;
+      color: #666666;
+      margin-top: 10px;
+      padding-left: 22px;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      display:-webkit-box; //作为弹性伸缩盒子模型显示。
+      -webkit-box-orient:vertical; //设置伸缩盒子的子元素排列方式--从上到下垂直排列
+      -webkit-line-clamp:1; //显示的行
+      position: relative;
+
+    }
+    .pb:before{
+      			display: inline-block;
+      			content: "";
+      			width: 12px;
+      			height: 12px;
+      			border-radius: 50%;
+            background-color: #C1C1C1;
+            margin-right: 10px;
+    }
+    .jisdei{
+      position: relative;
+    }
+    .jisdei:before{
+      position: absolute;
+      display: inline-block;
+      content: "";
+      width: 1px;
+      height: 98px;
+      background-color: #C1C1C1;
+      top:0;
+      left:6px;
+      // margin-right: 10px;
+    }
+    .acft{
+      color: #0156FE ;
+    }
+    .acft:before{
+      display: inline-block;
+        content: "";
+                  background:url("../../../assets/images/icon_htgl_lc_selected.png") no-repeat;
+                  background-size: 12px 12px;
+            			width: 12px;
+            			height: 12px;
+                  margin-right: 10px;
+    }
+
+  }
+  .het{
+    height: 450px;
+  }
+.work{}
+.flex1{flex: 1;}
+.over{overflow: hidden;white-space: nowrap;text-overflow: ellipsis;}
+.flexc{display: flex;align-items: center;}
+.co9B{color: #9B9B9B !important;}
+.mb8{margin-bottom: 18px;}
+	.worklist{background: #FFFFFF;border-radius: 10px;overflow: hidden;margin-bottom: 12px;
+		.listtop{display: flex;padding: 12px 12px 8px;
+			.name{width: 35px;height: 35px;border-radius: 50%;font-weight: bold;text-align: center;line-height: 35px;flex: 0 0 auto;margin-right: 11px;font-size: 13px;background: #E4F2FA;color: #009FE8;
+				&.bga{background: #ECF9F3;color: #00B278;}
+				&.bgb{background: #FFF4E1;color: #FFB132;}
+				&.bgc{background: #E0E0F1;color: #AF88B8;}
+
+			}
+			.namea{font-weight: bold;font-size: 15px;color: #222327;margin-bottom: 5px;}
+			.phone{width: 30px;height: 30px;margin-left: 11px;flex: 0 0 auto;}
+		}
+		.chtop{font-weight: 500;font-size: 12px;min-height: 40px;padding-left: 13px;box-sizing: border-box;padding: 8px 13px 8px 13px;color: #999999;
+			text{margin-right: 18rpx;color: #161616;}
+		}
+		.chstep{padding: 0 12px 6px;
+			.imgs{width: 13px;height: 14px;display: flex;align-items: center;justify-content: center;margin-right: 6px;flex:0 0 auto;
+				.imga{width: 13px;height: 13px;}
+				.imgb{width: 13px;height: 14px;}
+			}
+			.tit{font-weight: 500;font-size: 13px;color: #B5B5B5;flex: 0 0 auto;}
+			.txt{font-weight: 500;font-size: 13px;color: #222327;}
+			.code{width: 18rpx;height: 11px;margin-left: 7px;}
+		}
+	}
+	.worklist  .uni-collapse{background: #F4F7FF;border-top: 1px solid #E6E6E6;}
+	.worklist .uni-collapse-item__wrap{background: #F4F7FF;}
+	.notit{font-weight: 500;font-size: 13px;color: #222327;}
+	.adrlist{margin-right: 36rpx;min-width: 70px;display: flex;align-items: center;margin-bottom: 5px;}
+		.noico{width: 10px;height: 13px;margin-right: 6px;display: flex;align-items: center;justify-content: center;
+			.imga{width: 10px;height: 11px;}
+			.imgb{width: 10px;height: 12px;}
+			.imgc{width: 9px;height: 14px;}
+		}
+  .co77{
+   color: #779AF9 !important;
+  }
+  </style>
+
+

+ 845 - 0
ruoyi-ui-gongdan/src/views/gongdan/gongdanxq/index.vue

@@ -0,0 +1,845 @@
+<template>
+  <div class="app-container">
+    <!-- <el-row :gutter="10" class="mb8" style=" border-top-left-radius: 12px; border-top-right-radius: 12px; background-color: #fff;margin: 0;margin-top: 20px;padding: 10px 5px; "> -->
+
+      <!-- <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          @click="handleDelete"
+
+        >清空</el-button>
+      </el-col> -->
+       <!-- v-hasPermi="['course:time:remove']" -->
+     <!-- <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['course:time:export']"
+        >导出</el-button>
+      </el-col> -->
+      <!-- <el-col :span="19" style="text-align: right;">
+          <el-button
+            type="primary"
+            plain
+            icon="el-icon-check"
+            size="mini"
+            @click="submitForm"
+            v-hasPermi="['course:time:add']"
+          >确定修改</el-button>
+        </el-col> -->
+      <!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> -->
+    <!-- </el-row> -->
+
+    <el-form ref="form" :model="form" :rules="rules" label-width="120px" style="">
+      <el-row style='border-radius: 12px;  background-color: #fff;padding-top: 20px;'>
+        <p class="bgtan" style="margin-top: 0;">基本信息</p>
+        <el-col :span="12">
+          <el-form-item label="客户名称" prop="unitName">
+                   <el-input
+                   style="width: 80%;"
+                     v-model="form.unitName"
+                     placeholder="请输入客户名称"
+                     clearable
+                   />
+            </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="联系方式" prop="phonenumber">
+                   <el-input
+                   style="width: 80%;"
+                     v-model="form.phoneNumber"
+                     placeholder="请输入联系方式"
+                     clearable
+                   />
+            </el-form-item>
+        </el-col>
+        <el-col :span="12">
+         <el-form-item label="保质期(选填)" prop="shelfLife">
+                 	      <el-select style="width: 80%;" v-model="form.shelfLife" placeholder="请选择报产品单位" clearable>
+                 	                           <el-option
+                 	                             v-for="dict in dict.type.shelf_life"
+                 	                             :key="dict.value"
+                 	                             :label="dict.label"
+                 	                             :value="dict.value"
+                 	                           />
+                 	       </el-select>
+                 	  </el-form-item>
+        </el-col>
+        <el-col :span="12">
+         <el-form-item label="是否收费(选填)" prop="isCharge">
+                 	      <el-select style="width: 80%;" v-model="form.isCharge" placeholder="请选择报产品单位" clearable>
+                 	                           <el-option
+                 	                             v-for="dict in dict.type.sys_yes_no"
+                 	                             :key="dict.value"
+                 	                             :label="dict.label"
+                 	                             :value="dict.value"
+                 	                           />
+                 	       </el-select>
+                 	  </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="项目名称(选填)" prop="projectName">
+                   <el-input
+                   style="width: 95%;"
+                     v-model="form.projectName"
+                     placeholder="请输入项目名称(选填)"
+                     clearable
+                   />
+            </el-form-item>
+        </el-col>
+      </el-row>
+    <el-row style='border-radius: 12px;  background-color: #fff;margin-top: 20px;padding-top: 20px;'>
+      <el-col :span="24" style="padding-left: 5px; display: flex;justify-content: flex-end;padding-right: 10px;">
+       <!-- <p class="bgtan" style="margin-top: 0;font-weight: bold;font-size: 15px;color: #00B278;display: flex;justify-content: space-between;align-items: center;padding-right: 30px;"><span>上午上课时间配置<span style="color: red;">*</span></span> -->
+         <span style="color: #00B278;margin-left: 20px;display: flex;align-items: center;" @click="shangwuxin">
+            <img style="width: 16px; height: 16px;margin-right: 5px;" src="../../../assets/images/icon_kcgl_ht_add.png" alt="" >
+           新增收费
+          </span>
+       <!-- </p> -->
+      </el-col>
+      <el-col :span="24" v-for="(item,index) in shangwu" :key="index">
+        <el-col :span="24">
+          <div class="bgtan" style="margin-top: 0;font-weight: bold;font-size: 15px;color: #00B278;display: flex;justify-content: space-between;align-items: center;padding-right: 30px;"><span>{{'收费详情' + (index +1)}}<span style="color: red;">*</span></span></div>
+        </el-col>
+        <el-col :span="12">
+        	<el-form-item label="产品名称" prop="productName">
+        	         <el-input
+                   style="width: 80%;"
+        	           v-model="item.productName"
+        	           placeholder="请输入产品名称"
+        	           clearable
+        	         />
+        	  </el-form-item>
+        </el-col>
+        <el-col :span="12">
+        	<el-form-item label="产品数量" prop="productNum">
+        	        	         <el-input
+                             style="width: 80%;"
+        	        	           v-model="item.productNum"
+        	        	           placeholder="请输入产品数量"
+        	        	           clearable
+                               type="number"
+                               v-integer
+        	        	         />
+        	        	  </el-form-item>
+        </el-col>
+        <el-col :span="12">
+        	<el-form-item label="产品单位" prop="productUnit">
+        	      <el-select style="width: 80%;" v-model="item.productUnit" placeholder="请选择报产品单位" clearable>
+        	                           <el-option
+        	                             v-for="dict in dict.type.product_unit"
+        	                             :key="dict.value"
+        	                             :label="dict.label"
+        	                             :value="dict.label"
+        	                           />
+        	       </el-select>
+        	  </el-form-item>
+        </el-col>
+        <el-col :span="12">
+        	<el-form-item label="含税单价(元)" prop="unitPrice">
+        	        	         <el-input
+                             @blur="hansheu(item)"
+                             style="width: 80%;"
+        	        	           v-model="item.unitPrice"
+        	        	           placeholder="请输入含税单价"
+        	        	           clearable
+                               min="0"
+                               type="number"
+
+        	        	         />
+        	</el-form-item>
+        </el-col>
+        <el-col :span="24" style="position: relative;" >
+        	<el-form-item label="含税合价" prop="totalPrice">
+        	  <el-input style="width:95%;" v-model="item.totalPrice"  placeholder="请输入含税合价" />
+        	</el-form-item>
+         <img @click="shangwudel(index)" style="width: 16px; height: 16px;position: absolute;right: 25px;top:10px;" src="../../../assets/images/icon_qjlb_del.png" alt="" >
+        </el-col>
+      </el-col>
+
+    </el-row>
+    <el-row  style='border-radius: 12px;  background-color: #fff;margin-top: 20px;padding-top: 20px;'>
+       <p class="bgtan" style="margin-top: 0;">含税总计</p>
+     <el-col :span="12">
+       <el-form-item label="人民币大写" prop="totalCostDx">
+                <el-input
+                style="width: 80%;"
+                  v-model="form.totalCostDx"
+                  placeholder="请输入人民币大写"
+                  clearable
+                />
+         </el-form-item>
+     </el-col>
+     <el-col :span="12">
+       <el-form-item label="人民币小写(元)" prop="totalCost">
+                <el-input
+                style="width: 80%;"
+                  v-model="form.totalCost"
+                  placeholder="请输入人民币小写"
+                  clearable
+                  type="number"
+                  v-integer
+                />
+         </el-form-item>
+     </el-col>
+      <el-col :span="24">
+        <el-form-item label="备注信息" prop="remark">
+                 <el-input
+                 style="width: 95%;"
+                   v-model="form.remark"
+                   placeholder="请输入备注信息"
+                   clearable
+                 />
+          </el-form-item>
+      </el-col>
+    </el-row>
+    </el-form>
+    <div slot="footer" class="dialog-footer" style="text-align: center;margin-top:10px;">
+      <el-button style="background-color: #1BDD96; border: #1BDD96;" type="primary" @click="submitForm">确 定</el-button>
+      <el-button @click="cancel">取 消</el-button>
+    </div>
+
+    <!-- 添加或修改课程-时间对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="1300px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+		  <el-row>
+			  <el-col :span="6">
+				  <el-form-item label="学校名称" prop="schoolId">
+				  					    <!-- <treeselect v-model="form.parentId" :options="deptOptions" :normalizer="normalizer" placeholder="选择上级部门" /> -->
+				  					  <el-select    v-model="form.schoolId" placeholder="请选择学校名称">
+				  					    <el-option
+				  					      v-for="dict in deptOptions"
+				  					      :key="dict.deptId"
+				  					      :label="dict.deptName"
+				  					      :value="dict.deptId"
+				  						  @click.native="mjyhes(dict)"
+				  					    ></el-option>
+				  					  </el-select>
+				 </el-form-item>
+			  </el-col>
+			  <el-col :span="6">
+			  	<el-form-item label="第一节课" prop="oneStartTime">
+			  	  <el-time-picker
+			  	      v-model="form.oneStartTime"
+					  @change="nhyesefr"
+					  value-format="HH:mm"
+			  	      placeholder="选择第一节课开始时间">
+			  	    </el-time-picker>
+			  	</el-form-item>
+			  </el-col>
+			  <el-col :span="6">
+			  	<el-form-item label="第一节课" prop="oneEndTime">
+			  	  <el-time-picker clearable
+			  	    v-model="form.oneEndTime"
+			  	    value-format="HH:mm"
+			  	    placeholder="请选择第一节课结束时间">
+			  	  </el-time-picker>
+			  	</el-form-item>
+			  </el-col>
+			  <el-col :span="6">
+			  	<el-form-item label="第二节课" prop="twoStartTime">
+			  	  <el-time-picker clearable
+			  	    v-model="form.twoStartTime"
+			  	    value-format="HH:mm"
+			  	    placeholder="请选择第二节课开始时间">
+			  	  </el-time-picker>
+			  	</el-form-item>
+			  </el-col>
+			  <el-col :span="6">
+			  	<el-form-item label="第二节课" prop="twoEndTime">
+			  	  <el-time-picker clearable
+			  	    v-model="form.twoEndTime"
+			  	    el-time-picker
+			  	    value-format="HH:mm"
+			  	    placeholder="请选择第二节课结束时间">
+			  	  </el-time-picker>
+			  	</el-form-item>
+			  </el-col>
+			  <el-col :span="6">
+			  	<el-form-item label="第三节课" prop="threeStartTime">
+			  	  <el-time-picker clearable
+			  	    v-model="form.threeStartTime"
+			  	    value-format="HH:mm"
+			  	    placeholder="请选择第三节课开始时间">
+			  	  </el-time-picker>
+			  	</el-form-item>
+			  </el-col>
+			  <el-col :span="6">
+				  <el-form-item label="第三节课" prop="threeEndTime">
+				   <el-time-picker clearable
+				     v-model="form.threeEndTime"
+				     value-format="HH:mm"
+				     placeholder="请选择第三节课结束时间">
+				   </el-time-picker>
+				  </el-form-item>
+
+			  </el-col>
+			  <el-col :span="6">
+			  	<el-form-item label="第四节课" prop="fourStartTime">
+			  	  <el-time-picker clearable
+			  	    v-model="form.fourStartTime"
+
+			  	    value-format="HH:mm"
+			  	    placeholder="请选择第四节课开始时间">
+			  	  </el-time-picker>
+			  	</el-form-item>
+			  </el-col>
+			  <el-col :span="6">
+			  	<el-form-item label="第四节课" prop="fourEndTime">
+			  	  <el-time-picker clearable
+			  	    v-model="form.fourEndTime"
+
+			  	    value-format="HH:mm"
+			  	    placeholder="请选择第四节课结束时间">
+			  	  </el-time-picker>
+			  	</el-form-item>
+			  </el-col>
+			  <el-col :span="6">
+			  	<el-form-item label="第五节课" prop="fiveStartTime">
+			  	  <el-time-picker clearable
+			  	    v-model="form.fiveStartTime"
+
+			  	    value-format="HH:mm"
+			  	    placeholder="请选择第五节课开始时间">
+			  	  </el-time-picker>
+			  	</el-form-item>
+			  </el-col>
+			  <el-col :span="6">
+			  	<el-form-item label="第五节课" prop="fiveEndTime">
+			  	  <el-time-picker clearable
+			  	    v-model="form.fiveEndTime"
+
+			  	    value-format="HH:mm"
+			  	    placeholder="请选择第五节课结束时间">
+			  	  </el-time-picker>
+			  	</el-form-item>
+			  </el-col>
+			  <el-col :span="6">
+			  	<el-form-item label="第六节课" prop="sixStartTime">
+			  	  <el-time-picker clearable
+			  	    v-model="form.sixStartTime"
+
+			  	    value-format="HH:mm"
+			  	    placeholder="请选择第六节课开始时间">
+			  	  </el-time-picker>
+			  	</el-form-item>
+			  </el-col>
+			  <el-col :span="6">
+			  	<el-form-item label="第六节课" prop="sixEndTime">
+			  	  <el-time-picker clearable
+			  	    v-model="form.sixEndTime"
+
+			  	    value-format="HH:mm"
+			  	    placeholder="请选择第六节课结束时间">
+			  	  </el-time-picker>
+			  	</el-form-item>
+			  </el-col>
+			  <el-col :span="6">
+			  	<el-form-item label="第七节课" prop="sevenStartTime">
+			  	  <el-time-picker clearable
+			  	    v-model="form.sevenStartTime"
+
+			  	    value-format="HH:mm"
+			  	    placeholder="请选择第七节课开始时间">
+			  	  </el-time-picker>
+			  	</el-form-item>
+			  </el-col>
+			  <el-col :span="6">
+			  	<el-form-item label="第七节课" prop="sevenEndTime">
+			  	  <el-time-picker clearable
+			  	    v-model="form.sevenEndTime"
+
+			  	    value-format="HH:mm"
+			  	    placeholder="请选择第七节课结束时间">
+			  	  </el-time-picker>
+			  	</el-form-item>
+			  </el-col>
+			  <el-col :span="6">
+			  	<el-form-item label="第八节课" prop="eightStartTime">
+			  	  <el-time-picker clearable
+			  	    v-model="form.eightStartTime"
+			  	    value-format="HH:mm"
+			  	    placeholder="请选择第八节课开始时间">
+			  	  </el-time-picker>
+			  	</el-form-item>
+			  </el-col>
+			  <el-col :span="6">
+			  	<el-form-item label="第八节课" prop="eightEndTime">
+			  	  <el-time-picker clearable
+			  	    v-model="form.eightEndTime"
+
+			  	    value-format="HH:mm"
+			  	    placeholder="请选择第八节课结束时间">
+			  	  </el-time-picker>
+			  	</el-form-item>
+			  </el-col>
+			  <el-col :span="6">
+			  	<el-form-item label="备注" prop="remark">
+			  	  <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+			  	</el-form-item>
+			  </el-col>
+		  </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+// import { listTime, getTime, delTime, addTime, updateTime } from "@/api/system/time";
+// import { listDept} from "@/api/system/dept";
+// import { listCheckPointManage, getCheckPointManage, delCheckPointManage, addCheckPointManage, updateCheckPointManage,addCheckPointManageadd } from "@/api/wuguan/checkPointManage";
+import { listInfo, getInfo, delInfo, addInfo, updateInfo } from "@/api/system/info"
+import Decimal from 'decimal.js';
+export default {
+  name: "Time",
+  dicts: ['sys_yes_no','baoxiutype','shelf_life','product_unit'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 课程-时间表格数据
+      timeList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 8,
+        schoolName: null,
+        oneStartTime: null,
+        oneEndTime: null,
+        twoStartTime: null,
+        twoEndTime: null,
+        threeStartTime: null,
+        threeEndTime: null,
+        fourStartTime: null,
+        fourEndTime: null,
+        fiveStartTime: null,
+        fiveEndTime: null,
+        sixStartTime: null,
+        sixEndTime: null,
+        sevenStartTime: null,
+        sevenEndTime: null,
+        eightStartTime: null,
+        eightEndTime: null,
+		schoolId:null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+         unitName: [
+                   { required: true, message: "不能为空", trigger: "blur" }
+                 ],
+          phonenumber: [
+                    { required: true, message: "不能为空", trigger: "blur" }
+                  ],
+        totalCost: [
+                  { required: true, message: "不能为空", trigger: "blur" }
+                ],
+        totalCostDx: [
+                  { required: true, message: "不能为空", trigger: "blur" }
+                ]
+      },
+      shangwu:[
+        {productName:null,productNum:null,productUnit:null,orderId:this.$route.query.id,unitPrice:null,totalPrice:null},
+
+        ],
+      xiawu:[
+        {classNumber:null,timeFrame:'PM',endTime:null,startTime:null},
+        {classNumber:null,timeFrame:'PM',endTime:null,startTime:null},
+        {classNumber:null,timeFrame:'PM',endTime:null,startTime:null},
+        ],
+      wanzixi:[
+        {classNumber:null,timeFrame:'TM',endTime:null,startTime:null},
+        {classNumber:null,timeFrame:'TM',endTime:null,startTime:null},
+        {classNumber:null,timeFrame:'TM',endTime:null,startTime:null},
+        ],
+	  deptOptions:[],
+    ishge:false,
+    bngszneg:0
+    };
+  },
+  created() {
+	  // this.queryParams.orderId = this.$store.state.user.orderId - 0
+	  // console.log(this.roleqh(),28)
+   this.handleUpdate(this.$route.query.id)
+    // this.getList();
+
+  },
+
+  methods: {
+
+	  getdept(){
+	  		  let kuesf={'parentId':0}
+	  		  // this.kiuesegh = []
+	  		listDept(kuesf).then(response => {
+	  		  this.deptOptions = this.handleTree(response.data, "deptId");
+          if(this.deptOptions.length !=0){
+            this.form.schoolId = this.deptOptions[0].deptId
+            this.form.schoolName = this.deptOptions[0].deptName
+          }
+	  		});
+	  },
+    /** 查询课程-时间列表 */
+    getList() {
+      this.loading = true;
+      listTime(this.queryParams).then(response => {
+        this.timeList = response.rows;
+        if(response.rows.length != 0){
+          let nhd=[]
+          let xis=[]
+          let wan=[]
+          this.ishge = true
+          for(var i = 0; i < response.rows.length; i++){
+            this.form.schoolId = response.rows[i].schoolId
+            this.form.schoolName = response.rows[i].schoolName
+            if(response.rows[i].timeFrame == 'AM'){
+              response.rows[i].id = undefined
+             nhd.push(response.rows[i])
+            }
+            if(response.rows[i].timeFrame == 'PM'){
+              response.rows[i].id = undefined
+              xis.push(response.rows[i])
+            }
+            if(response.rows[i].timeFrame == 'TM'){
+              response.rows[i].id = undefined
+              wan.push(response.rows[i])
+            }
+            // console.log(response.rows[i])
+          }
+          if(nhd.length != 0){
+            this.shangwu = nhd
+          }
+          if(xis.length != 0){
+            this.xiawu = xis
+          }
+          if(wan.length != 0){
+            this.wanzixi = wan
+          }
+          // console.log(response.rows,nhd)
+          // this.shangwu
+          // this.form = response.rows[0]
+        }else{
+           this.ishge = false
+        }
+        // console.log(this.shangwu)
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      // this.open = false;
+      this.reset();
+      this.$router.go(-1)
+
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+                           unitName: null,
+                           provinceId: null,
+                           province: null,
+                           cityId: null,
+                           city: null,
+                           regionId: null,
+                           region: null,
+                           detailedAddress: null,
+                           lon: null,
+                           lat: null,
+                           personName: null,
+                           phonenumber: null,
+                           sex: null,
+                           type: null,
+                           demand: null,
+                           isSignature: null,
+                           evaluation: null,
+                           evaluationContent: null,
+                           serviceProgress: null,
+                           orderPlacement: null,
+                           responsibleId: null,
+                           responsibleName: null,
+                           projectName: null,
+                           shelfLife: null,
+                           isCharge: null,
+                           totalCost: null,
+                           totalCostDx: null,
+                           loginIp: null,
+                           loginDate: null,
+                  };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加课程-时间";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row
+      getInfo(id).then(response => {
+        this.form = response.data;
+        if(this.form.totalCost != null && this.form.totalCost != ''){
+          this.form.totalCost  = this.form.totalCost - 0
+        }
+        if(this.form.chargeDetailsList != null && this.form.chargeDetailsList.length !=0){
+          this.shangwu = this.form.chargeDetailsList
+        }
+        // this.open = true;
+        // this.title = "修改课程-时间";
+      });
+    },
+    slls(){
+      for(var l=0; l < this.shangwu.length; l++){
+        if(this.shangwu[l].productName == null &&  this.shangwu[l].productNum == null){
+          if(this.shangwu[l].productUnit == null){
+            this.shangwu.splice(l,1)
+            this.slls()
+          }
+        }
+      }
+    },
+    accMul(arg1, arg2) {
+       arg1 = parseFloat(arg1);
+       		arg2 = parseFloat(arg2);
+       		var m = 0,
+       			s1 = arg1.toString(),
+       			s2 = arg2.toString();
+       		try {
+       			m += s1.split(".")[1].length
+       		} catch (e) {}
+       		try {
+       			m += s2.split(".")[1].length
+       		} catch (e) {}
+       		return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
+      },
+    hansheu(row){
+      if(row.unitPrice !=null && row.unitPrice !=''){
+        if(row.productNum !=null && row.productNum !=''){
+
+          let sgs = row.unitPrice
+          let bgs = row.productNum
+          sgs = row.unitPrice-0
+           bgs=  row.productNum -0
+           row.totalPrice = this.accMul(sgs,bgs)
+           // row.totalPrice = row.totalPrice.d[0]
+           this.bngszneg = 0
+          this.shangwu.filter(rot=>{
+            this.bngszneg += (rot.totalPrice - 0)
+          })
+           this.form.totalCost = this.bngszneg
+           this.form.totalCostDx = this.convertCurrency(this.bngszneg)
+        }else{
+          row.unitPrice = null
+          this.$message.error('请填写数量');
+        }
+      }else{
+        this.$message.error('请填写含税单价');
+      }
+      console.log(row.totalPrice)
+    },
+    // 转换大写
+    convertCurrency(money) {
+          var cnNums = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
+          var cnIntRadice = ['', '拾', '佰', '仟']
+          var cnIntUnits = ['', '万', '亿', '兆']
+          var cnDecUnits = ['角', '分', '毫', '厘']
+          var cnInteger = '整'
+          var cnIntLast = '元'
+          var maxNum = 999999999999999.9999
+          var integerNum
+          var decimalNum
+          var chineseStr = ''
+          var parts
+          if (money === '') {
+            return ''
+          }
+          money = parseFloat(money)
+          if (money >= maxNum) {
+            return ''
+          }
+          if (money === 0) {
+            chineseStr = cnNums[0] + cnIntLast + cnInteger
+            return chineseStr
+          }
+          money = money.toString()
+          if (money.indexOf('.') === -1) {
+            integerNum = money
+            decimalNum = ''
+          } else {
+            parts = money.split('.')
+            integerNum = parts[0]
+            decimalNum = parts[1].substr(0, 4)
+          }
+          if (parseInt(integerNum, 10) > 0) {
+            var zeroCount = 0
+            var IntLen = integerNum.length
+            for (var i = 0; i < IntLen; i++) {
+              var n = integerNum.substr(i, 1)
+              var p = IntLen - i - 1
+              var q = p / 4
+              var m = p % 4
+              if (n === '0') {
+                zeroCount++
+              } else {
+                if (zeroCount > 0) {
+                  chineseStr += cnNums[0]
+                }
+                zeroCount = 0
+                chineseStr += cnNums[parseInt(n)] + cnIntRadice[m]
+              }
+              if (m === 0 && zeroCount < 4) {
+                chineseStr += cnIntUnits[q]
+              }
+            }
+            chineseStr += cnIntLast
+          }
+          if (decimalNum !== '') {
+            var decLen = decimalNum.length
+            for (i = 0; i < decLen; i++) {
+              n = decimalNum.substr(i, 1)
+              if (n !== '0') {
+                chineseStr += cnNums[Number(n)] + cnDecUnits[i]
+              }
+            }
+          }
+          if (chineseStr === '') {
+            chineseStr += cnNums[0] + cnIntLast + cnInteger
+          } else if (decimalNum === '') {
+            chineseStr += cnInteger
+          }
+          return chineseStr
+        },
+
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        // console.log(this.form,34)
+        if (valid) {
+           this.form.chargeDetailsList= []
+           this.slls()
+            this.form.chargeDetailsList = this.shangwu
+            console.log(this.form,this.shangwu,7)
+            // return
+            updateInfo(this.form).then(response => {
+              this.$modal.msgSuccess("操作成功");
+              this.$router.go(-1)
+              // this.open = false;
+              // this.getList();
+            });
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      if(this.timeList.length !=0){
+        const ids = this.timeList[0].id
+      }else{
+        this.$modal.msgSuccess("数据已清空");
+      }
+      // const ids = row.id || this.ids;
+      let gew={'schoolId':this.form.schoolId}
+	   delTime(gew).then(response => {
+	   this.getList();
+	   this.$modal.msgSuccess("删除成功");
+	  });
+      // this.$modal.confirm('是否确认删除课程-时间编号为"' + ids + '"的数据项?').then(function() {
+      //   return delTime(ids);
+      // }).then(() => {
+      //   this.getList();
+      //   this.$modal.msgSuccess("删除成功");
+      // }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('course/time/export', {
+        ...this.queryParams
+      }, `time_${new Date().getTime()}.xlsx`)
+    },
+	nhyesefr(val){
+	  console.log(val)
+	},
+	mjyhes(val){
+		console.log(val,this.form.schoolName)
+		this.form.schoolName = val.deptName
+	},
+  shangwuxin(){
+    this.shangwu.push({productName:null,productNum:null,productUnit:null,orderId:this.$route.query.id,unitPrice:null,totalPrice:null})
+  },
+  xiawuxin(){
+    this.xiawu.push({classNumber:null,timeFrame:'PM',endTime:null,startTime:null},)
+  },
+  wanzixixin(){
+   this.wanzixi.push({classNumber:null,timeFrame:'TM',endTime:null,startTime:null},)
+  },
+  shangwudel(index){
+   this.shangwu.splice(index,1)
+   this.bngszneg = 0
+   this.shangwu.filter(rot=>{
+     this.bngszneg += (rot.totalPrice - 0)
+   })
+    this.form.totalCost = this.bngszneg
+    this.form.totalCostDx = this.convertCurrency(this.bngszneg)
+  },
+  xiawudel(index){
+    this.xiawu.splice(index,1)
+  },
+  wanzixidel(index){
+   this.wanzixi.splice(index,1)
+   console.log(this.wanzixi)
+  }
+  }
+};
+</script>
+<style scoped lang="scss">
+	.bgtan{
+		border-left: 3px solid #00B278;
+		padding-left: 10px;
+	}
+
+	.app-container{
+		background-color: #f6f6f6;
+		// height: 180vh;
+	}
+</style>

+ 1268 - 0
ruoyi-ui-gongdan/src/views/gongdan/gongdanzhipai/index.vue

@@ -0,0 +1,1268 @@
+<template>
+  <div class="app-container">
+    <div >
+          <div style="background-color: #fff;padding: 20px;border-radius: 10px; padding-bottom: 0;">
+                  <p style="margin: 0; font-weight: 800;font-size: 16px;color: #343434;display: flex;align-items: center;margin-bottom: 20px;border-left: 6px solid #03BF8A;margin-left: -20px;">
+                    <!-- <img src="../../../assets/images/icon_htgl_btzs.png" alt="" style="width: 16px;height: 20px;"> -->
+                   <span style="margin-left: 10px;">搜索条件</span>
+                  </p>
+                  <div style="padding-bottom: 0;margin-bottom: 20px;">
+        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="88px">
+          <el-row>
+              <el-col :span="8">
+                <el-form-item label="联系人" prop="personName">
+                        <el-input
+                          v-model="queryParams.personName"
+                          placeholder="请输入联系人"
+                          clearable
+                          @keyup.enter.native="handleQuery"
+                        />
+                      </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="联系电话" prop="phonenumber">
+                        <el-input
+                          v-model="queryParams.phonenumber"
+                          placeholder="请输入联系电话"
+                          clearable
+                          @keyup.enter.native="handleQuery"
+                        />
+                      </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="工单类型" prop="type">
+                        <el-select v-model="queryParams.type" placeholder="请选择工单类型" clearable>
+                          <el-option
+                            v-for="dict in dict.type.work_order_type"
+                            :key="dict.value"
+                            :label="dict.label"
+                            :value="dict.value"
+                          />
+                        </el-select>
+                      </el-form-item>
+              </el-col>
+              <el-col :span="8">
+               <el-form-item label="服务进展" prop="serviceProgress">
+                       <el-select v-model="queryParams.serviceProgress" placeholder="请选择服务进展" clearable>
+                         <el-option
+                           v-for="dict in dict.type.service_progress"
+                           :key="dict.value"
+                           :label="dict.label"
+                           :value="dict.value"
+                         />
+                       </el-select>
+                     </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item class="butt bnjle">
+                  <el-button size="mini" type="primary" style="background-color: #1BDD96; border: #1BDD96;"   @click="handleQuery">搜索</el-button>
+                  <el-button size="mini"  @click="resetQuery">重置</el-button>
+                </el-form-item>
+              </el-col>
+          </el-row>
+
+        </el-form>
+      </div>
+      </div>
+
+
+      <div class="casr">
+              <el-row :gutter="10" class="mb8">
+                <!-- <el-col :span="1.5">
+                  <div style="font-weight: bold;font-size: 14px;color: #343434; display: flex;align-items: center;">
+                    当夜全选
+                  </div>
+                </el-col> -->
+               <el-col :span="1.5">
+                  <el-button
+                    type="primary"
+                    plain
+                    size="mini"
+                    @click="handleAdd"
+                    v-hasPermi="['wuYe:repair:add']"
+                  >添加</el-button>
+                </el-col>
+                <!-- <el-col :span="1.5">
+                  <el-button
+                    type="success"
+                    plain
+                    size="mini"
+                    :disabled="single"
+                    @click="handleUpdate"
+                    v-hasPermi="['system:post:edit']"
+                  >修改</el-button>
+                </el-col>
+                <el-col :span="1.5">
+                  <el-button
+                    type="danger"
+                    plain
+                    size="mini"
+                    :disabled="multiple"
+                    @click="handleDelete"
+                    v-hasPermi="['system:post:remove']"
+                  >删除</el-button>
+                </el-col> -->
+                <el-col :span="1.5">
+                  <el-button
+                    type="warning"
+                    plain
+                    size="mini"
+                    @click="handleExport"
+                    v-hasPermi="['wuYe:repair:export']"
+                  >导出</el-button>
+                </el-col>
+                <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+              </el-row>
+              <div class=" infinite-list" :style="dynamicStyle">
+                <el-row :gutter="10" v-if="infoList.length != 0" style="width: 100%;margin-left: 0;">
+                  <el-col :span="6" v-for="(item,idx) in infoList" :key="idx">
+                    <div class="worklist" style="background-color: #fff;box-shadow: 0px 0px 10px 0px #CDCDCD;border-radius: 4px;margin-bottom: 10px;" >
+                    	<div class="listtop" style="position: relative;">
+                    		<div class="name" :class="{'bga':item.type==2,'bgb':item.type==3,'bgc':item.type==4,}">{{item.rttie}}</div>
+                    		<div class="flex1">
+                    			<div class="namea">{{item.unitName == null ? '暂无数据' : item.unitName}}</div>
+                    			<div class="adrlist">
+                    				<div class="noico"><img :src="gdicob" class="imga"></img></div>
+                    				<div class="notit">{{item.personName == null ? '暂无数据' : item.personName}}
+                            <span style="margin-left: 10px;">{{item.phonenumber == null ? '暂无数据' : item.phonenumber}}</span></div>
+                    			</div>
+                    			<div class="adrlist">
+                    				<div class="noico"><img :src="gdicoa" class="imgc"></img></div>
+                            <el-tooltip class="item" effect="dark" :content="item.detailedAddress == null ? '暂无数据' : (item.city + item.region +item.detailedAddress)" placement="top-start">
+                    				<div class="notit over co9B" >{{item.detailedAddress == null ? '暂无数据' : (item.city + item.region +item.detailedAddress)}}</div>
+                            </el-tooltip>
+                    			</div>
+                    		</div>
+                    		<!-- <img :src='phone' class="phone"  @click.stop="getPhone()"></img> -->
+                        <div style="width: 90% ;height: 1px; background-color: #f1f1f1;position: absolute;bottom: 0;">
+
+                        </div>
+                    	</div>
+
+                    	<div class="collapse" @click.stop=""  >
+                        <el-tooltip class="item" effect="dark" content="暂无数据" placement="top-start">
+                    						<div class="chtop flexc" v-if="item.serviceProgress ==0">
+                    							<div style="width: 40%;" class="over">暂无数据</div>
+                    							<div style="width: 60%;" class="over">暂无数据接下了该客户的工单</div>
+                    						</div>
+                                <div class="chtop flexc" v-if="item.serviceProgress !=0">
+                                	<div style="width: 40%;" class="over">{{item.takeTime}}</div>
+                                	<div style="width: 60%;" class="over">{{item.responsibleName + item.responsiblePhone}} 接下了该客户的工单</div>
+                                </div>
+                        </el-tooltip>
+                    					<div class="chstep">
+                    						<div class="flexc mb8">
+                    							<div class="imgs"><img :src="wicoa" class="imga"></img></div>
+                    							<div class="tit">工单编号:</div>
+                    							<div class="txt">{{item.orderId == null ? '暂无数据' : item.orderId}}</div>
+                    							<img :src="code" class="code"></img>
+                    						</div>
+                    						<div class="flexc mb8">
+                    							<div class="imgs"><img :src="wicob" class="imga"></img></div>
+                    							<div class="tit">创建时间:</div>
+                    							<div class="txt">{{item.createTime == null ? '暂无数据' : item.createTime}}</div>
+                    						</div>
+                    						<div class="flexc mb8">
+                    							<div class="imgs"><img :src="wicoc" class="imgb"></img></div>
+                    							<div class="tit">服务类型:</div>
+                    							<div class="txt" :class="{'co77':item.type==1,'co06':item.type==2,'cofb':item.type==3,'coaf':item.type==4,'coafs':item.type==5,'coafss':item.type==6,}">
+                                    <dict-tag :options="dict.type.work_order_type" :value="item.type"/></div>
+                    						</div>
+                                <div class="flexc mb8">
+                                	<div class="imgs"><img :src="wicoc" class="imgb"></img></div>
+                                	<div class="tit">工单状态:</div>
+                                	<div class="txt" >
+                                    <dict-tag :options="dict.type.service_progress" :value="item.serviceProgress"/></div>
+                                </div>
+                    					</div>
+                    	</div>
+                      <div class="bortt tongty" style="justify-content: space-between; margin-top: 0;">
+                         <p  v-if="item.serviceProgress == 0" v-hasPermi="['work:info:jdq']"   style="cursor: pointer;color: #28C529;" @click="daifeng(item)" ><span  >派单</span></span>  </p>
+                        <p  v-if="item.serviceProgress == 0" v-hasPermi="['work:info:jd']" style="cursor: pointer;" @click="jiedan(item)"><span  >接单</span></span>  </p>
+                         <p  v-if="item.serviceProgress == 1" v-hasPermi="['work:info:add']"   style="cursor: pointer;color: #28C529;" @click="tianxie(item)" ><span>填写工单</span></span>  </p>
+                         <p style="cursor: pointer;" @click="handleUpdatef(item)"><span  >查看</span></span>  </p>
+                        <!-- <span @click="handleUpdatef(item)">查看</span> -->
+                        <p  v-hasPermi="['work:info:remove']" style="color:red;cursor: pointer;" @click="handleDelete(item)">删除  </p>
+                      </div>
+
+                    </div>
+                  </el-col>
+                </el-row>
+                <div style="margin-top: 20px;display: flex;justify-content: center;align-items: center;" v-if="infoList.length ==0">
+                   <img   src="../../../assets/images/zwshjbig.png" alt="" style="">
+                </div>
+              </div>
+      </div>
+
+
+      <pagination
+        v-show="total>0"
+        :total="total"
+        :page.sync="queryParams.pageNum"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
+      />
+    </div>
+
+    <!-- 添加或修改岗位对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="640px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-row>
+          <!-- <el-col :span="24" v-if="isnusle == 0">
+            <el-form-item label="报修标题" prop="repairTitle">
+                      <el-input v-model="form.repairTitle" placeholder="请输入报修标题,简要描述报修内容" />
+            </el-form-item>
+
+          </el-col> -->
+          <el-col :span="12" v-if="isnusle == 0">
+             <el-form-item label="手机号码" prop="phoneNumber">
+                      <el-input v-model="form.phoneNumber" placeholder="请输入报修用户手机号码" />
+             </el-form-item>
+          </el-col>
+          <el-col :span="12" v-if="isnusle == 0">
+            <el-form-item label="门牌号" prop="houseAddress">
+                 <el-select filterable  v-model="form.houseAddress" placeholder="请选择门牌号" clearable>
+                   <el-option
+                    @click.native="itnegadd(dict)"
+                     v-for="dict in houseInfoLise"
+                     :key="dict.houseId"
+                     :label="dict.detailedAddress"
+                     :value="dict.houseId"
+                   />
+                 </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24" v-if="isnusle == 0">
+             <el-form-item label="报修详情" prop="repairDetails">
+                      <el-input v-model="form.repairDetails" type="textarea" placeholder="请输入内容" />
+                    </el-form-item>
+          </el-col>
+          <el-col :span="12" v-if="isnusle == 0">
+           <el-form-item label="报修类别" prop="maintenanceCategory">
+                     <el-select v-model="form.maintenanceCategory" placeholder="请选择报修类别">
+                       <el-option
+                         v-for="dict in dict.type.baoxiutype"
+                         :key="dict.value"
+                         :label="dict.label"
+                         :value="dict.value"
+                       ></el-option>
+                     </el-select>
+                   </el-form-item>
+          </el-col>
+          <el-col :span="12" v-if="isnusle == 0">
+            <el-form-item label="报修时间" prop="repairTime">
+                      <el-date-picker
+                      style="width:100%"
+                        v-model="form.repairTime"
+                        type="datetime"
+                        value-format="yyyy-MM-dd HH:mm:ss"
+                        placeholder="请选择报修时间">
+                      </el-date-picker>
+                    </el-form-item>
+          </el-col>
+          <el-col :span="24" v-if="isnusle == 0">
+            <el-form-item label="备注" prop="remark">
+              <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="24" v-if="isnusle == 2">
+             <el-form-item label="维修详情" prop="repairCompletionDetails">
+                      <el-input v-model="form.repairCompletionDetails" type="textarea" placeholder="请输入内容" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="24" class="unimg" v-if="isnusle == 1" >
+            <el-form-item label="上门拍照" prop="visitPhoto">
+              <image-upload v-model="form.visitPhoto"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24" class="unimg" v-if="isnusle == 2">
+            <el-form-item label="结束拍照" prop="completionPhoto">
+              <image-upload v-model="form.completionPhoto"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+
+
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog title="指派" :visible.sync="openz" width="640px" append-to-body>
+      <el-form ref="formz" :model="formz" :rules="rulesz" label-width="80px">
+        <el-row>
+          <el-col :span="24" >
+            <el-form-item label="选择人员" prop="responsibleName">
+                      <el-select style="width: 100%;" v-model="formz.responsibleName" placeholder="请选择选择人员">
+                        <el-option
+                        @click.native="xuanse(dict)"
+                          v-for="dict in staffManageList"
+                          :key="dict.userId"
+                          :label="dict.nickName "
+                          :value="dict.userId"
+                        ></el-option>
+                      </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFormz">确 定</el-button>
+        <el-button @click="cancelz">取 消</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog title="查看详情" :visible.sync="openzx" width="640px" append-to-body class="boet">
+      <div  class="worklist" style="" >
+        <div>
+          <div style="margin-top: 15px; padding: 20px;" class="xiahgw">
+            <el-steps :active="actjse" simple>
+              <el-step title="待接单" icon="el-icon-upload2"></el-step>
+              <el-step title="进行中" icon="el-icon-refresh"></el-step>
+              <el-step title="已完成" icon="el-icon-check"></el-step>
+              <el-step title="已评价" icon="el-icon-check"></el-step>
+            </el-steps>
+          </div>
+        </div>
+      	<div class="listtop">
+      		<div class="name" style="border-radius: 5px;" :class="{'bga':chakn.type==2,'bgb':chakn.type==3,'bgc':chakn.type==4,}">{{chakn.titke}}</div>
+      		<div class="flex1">
+            <div class="adrlist">
+            	<div class="notit" style="font-weight: bold;font-size: 16px;color: #222327;">{{chakn.personName ==null? '暂无数据' : chakn.personName}}
+              <span style="font-size: 14px; font-weight: 400;">{{chakn.phonenumber ==null? '暂无数据' : chakn.phonenumber}}</span></div>
+            </div>
+      			<div class="namea" style="color: #666666; font-size: 15px;">{{chakn.unitName ==null? '暂无数据' : chakn.unitName}}</div>
+      		</div>
+      		<!-- <img :src='phone' class="phone"  @click.stop="getPhone()"></img> -->
+      	</div>
+      	<div class="collapse" @click.stop="" style="border-top: 1px  solid #E6E6E6;">
+      					<div class="chstep" style="padding-top: 20px;">
+      						<div class="flexc mb8">
+      							<div class="imgs"><img :src="wicoa" class="imga"></img></div>
+      							<div class="tit" style="font-size: 14px;color: #AAAAAA;">工单编号:</div>
+      							<div class="txt" style="font-size: 14px;color: #666666;">{{chakn.orderId ==null? '暂无数据' : chakn.orderId}}</div>
+      							<img :src="code" class="code"></img>
+      						</div>
+      						<div class="flexc mb8">
+      							<div class="imgs"><img :src="wicob" class="imga"></img></div>
+      							<div class="tit" style="font-size: 14px;color: #AAAAAA;">创建时间:</div>
+      							<div class="txt" style="font-size: 14px;color: #666666;">{{chakn.createTime ==null? '暂无数据' : chakn.createTime}}</div>
+      						</div>
+                  <div class="flexc mb8">
+                  	<div class="imgs"><img :src="wicob" class="imga"></img></div>
+                  	<div class="tit" style="font-size: 14px;color: #AAAAAA;">客户地址:</div>
+                  	<div class="txt" style="font-size: 14px;color: #666666;">{{chakn.detailedAddress ==null? '暂无数据' : chakn.detailedAddress}}</div>
+                  </div>
+                  <div class="flexc mb8">
+                  	<div class="imgs"><img :src="wicoc" class="imgb"></img></div>
+                  	<div class="tit">服务类型:</div>
+                  	<div class="txt" :class="{'co77':chakn.type==1,'co06':chakn.type==2,'cofb':chakn.type==3,'coaf':chakn.type==4,'coafs':chakn.type==5,'coafss':chakn.type==6,}">
+                      <dict-tag :options="dict.type.work_order_type" :value="chakn.type"/></div>
+                  </div>
+      					</div>
+      	</div>
+        <div class="collapse" @click.stop="" style="border-top: 1px  solid #E6E6E6;" v-if="chakn.workOrderFjgd!=null">
+        			<div class="bsers" style="padding-top: 20px;" >
+        			 <div>
+        			   <p> <img src="../../../assets/images/wenjian.png" alt="" style="width: 20px;height: 20px;"></p>
+        			   <p>{{chakn.workOrderFjgd.name}}</p>
+        			 </div>
+        			  <div>
+        			              <!-- + baseUrl -->
+        			              <p @click="yuangl(defaultSettings.urls  + item.url)" style="color: #658CF8;margin-right: 10px;font-size: 14px;"><img src="../../../assets/images/icon_xq_yl.png" alt="" style="width: 15px;height: 10px;">预览</p>
+        			              <p @click="downloadFileg(defaultSettings.urls  + item.url,item.name)" style="color: #658CF8; font-size: 14px;"><img src="../../../assets/images/icon_xq_xz.png" alt=""  style="width: 15px;height: 15px;">下载</p>
+        			            </div>
+        			</div>
+
+        </div>
+
+
+      </div>
+      <div style="background: #FFFFFF;border-radius: 10px;">
+        <div class="baae">
+          <p :class="isshoe == 0?'activeq' : ''" @click="iskeh(0)">客户需求</p>
+          <p v-if="chakn.serviceProgress == 3" :class="isshoe == 1?'activeq' : ''" @click="iskeh(1)">客户评价</p>
+        </div>
+        <div style="padding: 20px;font-size: 14px;color: #161616;line-height: 30px;" v-if="isshoe == 0">
+         {{chakn.demand ==null? '暂无数据' : chakn.demand}}
+
+        </div>
+        <div class="bsers" v-for = "(item,index) in  chakn.workOrderFjXqList" :key="index" v-if="isshoe == 0">
+         <div>
+           <p> <img src="../../../assets/images/wenjian.png" alt="" style="width: 20px;height: 20px;"></p>
+           <p>{{item.name}}</p>
+         </div>
+          <div>
+            <!-- + baseUrl -->
+            <p @click="yuangl(defaultSettings.urls  + item.url)" style="color: #658CF8;margin-right: 10px;font-size: 14px;"><img src="../../../assets/images/icon_xq_yl.png" alt="" style="width: 15px;height: 10px;">预览</p>
+            <p @click="downloadFile(defaultSettings.urls  + item.url,item.name)" style="color: #658CF8; font-size: 14px;"><img src="../../../assets/images/icon_xq_xz.png" alt=""  style="width: 15px;height: 15px;">下载</p>
+          </div>
+        </div>
+        <div style="padding: 20px;font-size: 14px;color: #161616;line-height: 30px;" v-if="isshoe == 1">
+          <div style="display: flex; ">服务评价  <div style="color: #00B278;margin-left: 10px;"><dict-tag :options="dict.type.work_order_type" :value="chakn.type"/></div></div>
+          <div style="padding: 20px;font-size: 14px;color: #161616;line-height: 30px;" v-if="isshoe == 1">
+           {{chakn.evaluationContent ==null? '暂无数据' : chakn.evaluationContent}}
+          </div>
+          <div style="border-top:  1px solid #E6E6E6;font-size: 14px;color: #AAAAAA;" v-if="isshoe == 1">
+                评价于 {{chakn.updateTime}}
+          </div>
+        </div>
+
+        <div class="bortt tongty" style="justify-content: space-between; margin-top: 0;" >
+           <p  v-if="chakn.serviceProgress == 0" v-hasPermi="['work:info:jdq']"   style="cursor: pointer;color: #28C529;" @click="daifeng(chakn)" ><span  >派单</span></span>  </p>
+           <p  v-if="chakn.serviceProgress == 0" v-hasPermi="['work:info:jd']" style="cursor: pointer;" @click="jiedan(chakn)"><span  >接单</span></span>  </p>
+            <p  v-if="chakn.serviceProgress == 1" v-hasPermi="['work:info:add']"   style="cursor: pointer;color: #28C529;" @click="tianxie(chakn)" ><span  >填写</span></span>  </p>
+            <!-- <p style="cursor: pointer;" @click="handleUpdatef(chakn)"><span  >查看</span></span>  </p> -->
+           <!-- <span @click="handleUpdatef(item)">查看</span> -->
+           <p  v-hasPermi="['work:info:remove']" style="color:red;cursor: pointer;" @click="handleDelete(chakn)">删除  </p>
+        </div>
+
+
+      </div>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+// import 'videojs-flash'
+import { listInfo, getInfo, delInfo, addInfo, updateInfo,jd,listStaffManageNoPage } from "@/api/system/info"
+const defaultSettings = require("@/settings.js");
+import download from 'downloadjs'
+export default {
+  name: "Repair",
+    dicts: ['baoxiutype', 'work_order_evaluation', 'shelf_life', 'work_order_type', 'sys_yes_no', 'service_progress', 'order_placement'],
+  data() {
+    return {
+      list:[{},{name:'嘉欣医疗用品有限公司',type:'2'},{name:'嘉欣医疗用品有限公司',type:'3'},{name:'嘉欣医疗用品有限公司',type:'4'}],
+      gdicoa:require('../../../assets/images/gdicoa.png'),
+      gdicob:require('../../../assets/images/gdicob.png'),
+      gdicoc:require('../../../assets/images/gdicoc.png'),
+      phone:require('../../../assets/images/phone.png'),
+      wicoa:require('../../../assets/images/wicoa.png'),
+      wicob:require('../../../assets/images/wicob.png'),
+      wicoc:require('../../../assets/images/wicoc.png'),
+      code:require('../../../assets/images/code.png'),
+      openzx:false,
+      actjse:1,
+      ite:{
+        name:'嘉欣医疗用品有限公司',type:'1'
+      },
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 物业报修表格数据
+       infoList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      openz:false,
+      houseInfoLise:[],
+      defaultSettings:defaultSettings,
+      baseUrl: process.env.VUE_APP_BASE_API,
+      // 查询参数
+      queryParams: {
+                pageNum: 1,
+                       pageSize: 10,
+                       unitName: null,
+                       provinceId: null,
+                       province: null,
+                       cityId: null,
+                       city: null,
+                       regionId: null,
+                       region: null,
+                       detailedAddress: null,
+                       lon: null,
+                       lat: null,
+                       personName: null,
+                       phonenumber: null,
+                       sex: null,
+                       type: null,
+                       demand: null,
+                       isSignature: null,
+                       evaluation: null,
+                       evaluationContent: null,
+                       serviceProgress: null,
+                       orderPlacement: null,
+                       responsibleId: null,
+                       responsibleName: null,
+                       projectName: null,
+                       shelfLife: null,
+                       isCharge: null,
+                       totalCost: null,
+                       totalCostDx: null,
+                       loginIp: null,
+                       loginDate: null,
+                       delFlag:'N'
+      },
+      // 表单参数
+      form: {},
+      formz: {},
+      // 表单校验
+      rules: {
+        repairTime: [
+                  { required: true, message: "不能为空", trigger: "blur" }
+                ],
+        repairDetails: [
+                  { required: true, message: "不能为空", trigger: "blur" }
+                ],
+        maintenanceCategory: [
+                  { required: true, message: "不能为空", trigger: "blur" }
+                ],
+
+        phoneNumber: [
+                 { required: true, message: "不能为空", trigger: "blur" },
+                 {
+                   pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+                   message: "请输入正确的手机号码",
+                    trigger: "blur"
+                   }
+               ],
+
+      },
+      rulesz: {
+        responsibleName: [
+                  { required: true, message: "不能为空", trigger: "blur" }
+                ],
+
+      },
+      activeName:'first',
+      videoState: false, // 视频播放状态
+      poster:true,
+      controls:true,
+      videoData:{},
+       player: null,
+       isshoe:0,
+       isnusle:1,
+       staffManageList: [],
+       tableMaxHeight:'200',
+       isryr:true,
+       chakn:{},
+       buyTypeOptions:[]
+
+    };
+  },
+  computed: {
+    dynamicStyle() {
+      return {
+        overflow:'auto',
+        height:  this.tableMaxHeight + 'px',
+        paddingTop:'10px'
+      }
+    }
+    },
+  created() {
+
+    this.getList()
+    this.getstaffManageList()
+
+    console.log(this.$store.getters)
+  window.onresize = () => {
+  	      this.changeTableMaxHeight()
+  	    }
+  	    this.changeTableMaxHeight()
+  },
+  mounted() {
+  	window.onresize = () => {
+  	          this.changeTableMaxHeight()
+  	        }
+  	        this.changeTableMaxHeight()
+  },
+  beforeDestroy() {
+      if (this.player) {
+        this.player.dispose()
+      }
+    },
+  methods: {
+    iskeh(row){
+     this.isshoe = row
+    },
+    getListhouvr() {
+       listNoPage().then(response => {
+         this.houseInfoLise  = response.data;
+         this.houseInfoLise.filter(rou=>{
+           this.selectDictLabel(this.buyTypeOptions ,rou.orderId)
+          console.log(this.selectDictLabel(this.buyTypeOptions ,rou.orderId))
+         })
+       });
+     },
+    /** 查询岗位列表 */
+    getList() {
+      this.loading = true;
+      listInfo(this.queryParams).then(response => {
+        this.infoList  = response.rows;
+        this.getDicts("work_order_type").then(response => {
+          this.buyTypeOptions = response.data;
+           this.buyTypeOptions.filter(rou=>{
+                  rou.value = rou.dictValue
+                  rou.label = rou.dictLabel
+                })
+          this.infoList.filter(rou=>{
+            rou.isnum = false
+            rou.isryr = true
+            rou.rttie=rou.unitName.substr(0,2)
+            this.selectDictLabel(this.buyTypeOptions ,rou.type)
+            console.log(this.selectDictLabel(this.buyTypeOptions ,rou.type))
+          })
+        });
+
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    getstaffManageList(row){
+      let bsdf={'staffCategory':2}
+      listStaffManageNoPage().then(response => {
+        this.staffManageList  = response.rows;
+        // this.staffManageList.filrter(rout=>{
+        //   rout.lable = rout.staffName + '<p>'
+        // })
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 获取当前时间
+    gettime(){
+      let nowDate = new Date()
+      				  let date = {
+      				    year: nowDate.getFullYear(),
+      				    month: nowDate.getMonth() + 1,
+      				    date: nowDate.getDate()
+      				  }
+
+      				   if (parseInt(date.date) < 10) {
+      				      date.date = '0' + date.date
+      				    }
+                  let nghe = date.year + '-' + date.month + '-' + date.date
+      				  return nghe
+
+    },
+    cancelz() {
+      this.openz = false;
+    },
+    gettimeg(){
+      let nowDate = new Date()
+                //获取当前时间并打印
+                        var _this = this;
+                        let sgse=''
+                      let yy = new Date().getFullYear();
+                      let mm = new Date().getMonth()+1;
+                      let dd = new Date().getDate();
+                      let hh = new Date().getHours();
+                      let mf = new Date().getMinutes()<10 ? '0'+new Date().getMinutes() : new Date().getMinutes();
+                      let ss = new Date().getSeconds()<10 ? '0'+new Date().getSeconds() : new Date().getSeconds();
+                       sgse = yy+'-'+mm+'-'+dd+' '+hh+':'+mf+':'+ss;
+                    return  sgse
+
+
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+                     unitName: null,
+                     provinceId: null,
+                     province: null,
+                     cityId: null,
+                     city: null,
+                     regionId: null,
+                     region: null,
+                     detailedAddress: null,
+                     lon: null,
+                     lat: null,
+                     personName: null,
+                     phonenumber: null,
+                     sex: null,
+                     type: null,
+                     demand: null,
+                     isSignature: null,
+                     evaluation: null,
+                     evaluationContent: null,
+                     serviceProgress: null,
+                     orderPlacement: null,
+                     responsibleId: null,
+                     responsibleName: null,
+                     projectName: null,
+                     shelfLife: null,
+                     isCharge: null,
+                     totalCost: null,
+                     totalCostDx: null,
+                     loginIp: null,
+                     loginDate: null,
+            };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+          this.ids = selection.map(item => item.orderId)
+          this.single = selection.length!==1
+          this.multiple = !selection.length
+        },
+     /** 新增按钮操作 */
+        handleAdd() {
+          this.reset()
+          this.open = true
+          this.title = "添加工单信息"
+        },
+        /** 修改按钮操作 */
+        handleUpdate(row) {
+          this.reset()
+          const orderId = row.orderId || this.ids
+          getInfo(orderId).then(response => {
+            this.form = response.data
+            this.open = true
+            this.title = "查看工单信息"
+          })
+        },
+    handleUpdatef(row){
+      this.reset()
+      const orderId = row.orderId || this.ids
+      getInfo(orderId).then(response => {
+        this.chakn = response.data
+        if(response.data.personName != null && response.data.personName !=''){
+          this.chakn.titke = response.data.personName.substr(0,1)
+        }else{
+          this.chakn.titke = '无'
+        }
+        this.actjse = this.chakn.serviceProgress - 0
+        this.openzx = true
+        // this.title = "查看工单信息"
+      })
+
+    },
+    // 填写工单价格
+    tianxie(row){
+      this.$router.push({
+        path: '/gongdanxq',
+        query: {
+        	'id':row.orderId,
+        }
+      })
+    },
+    // 接单
+    jiedan(row){
+      let snge={'orderId':row.orderId,'orderPlacement':2,'responsibleId':this.$store.getters.id,'responsibleName':this.$store.getters.nickName,'responsiblePhone':this.$store.getters.phonenumber}
+      jd(snge).then(response => {
+        this.$modal.msgSuccess("操作成功");
+        this.openz = false;
+        this.getList();
+      });
+    },
+    // 待分配
+    daifeng(row){
+       // 待分配
+       // this.formz.maintenanceCategory = row.maintenanceCategory
+       this.openz = true
+       this.formz.orderId = row.orderId
+       this.formz.orderPlacement = 1
+    },
+    // 待分配提交
+    submitFormz(){
+      this.$refs["formz"].validate(valid => {
+        if (valid) {
+          jd(this.formz).then(response => {
+            this.$modal.msgSuccess("操作成功");
+            this.openz = false;
+            this.getList();
+          });
+        }
+        })
+
+    },
+    // 下载文件
+    downloadFile(row,item){
+      // window.open(row, );
+      if (!/\.(pdf|PDF|png|PNG|jpg|JPG)$/.test(row)) {
+              // 不是pdf格式
+               window.location.href = row;
+              } else  {
+              download(row)
+              }
+
+
+    },
+    // 下载工单
+    downloadFileg(row,item){
+      // window.open(row, );
+      // download(row)
+     window.location.href = row;
+    },
+    // 预览文件
+    yuangl(row){
+      if (!/\.(pdf|PDF|png|PNG|jpg|JPG)$/.test(row)) {
+              // 不是pdf格式
+                window.open(
+                  " https://view.officeapps.live.com/op/view.aspx?src=" + row,
+                  "_blank"
+                );
+              } else  {
+              // pdf 格式
+               window.open(row, '_blank');
+              }
+
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+                  if (this.form.repairId != null) {
+                    updateInfo(this.form).then(response => {
+                      this.$modal.msgSuccess("修改成功");
+                      this.open = false;
+                      this.getList();
+                    });
+                  } else {
+                    this.form.userId = this.$store.getters.userId
+                    addInfo(this.form).then(response => {
+                      this.$modal.msgSuccess("新增成功");
+                      this.open = false;
+                      this.getList();
+                    });
+                  }
+                  }
+      });
+    },
+    /** 删除按钮操作 */
+        handleDelete(row) {
+          const repairIds = row.orderId  || this.ids;
+          delInfo(repairIds).then(response => {
+            this.$modal.msgSuccess("删除成功");
+            this.getList();
+          });
+        },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/info/export', {
+        ...this.queryParams
+      }, `info_${new Date().getTime()}.xlsx`)
+    },
+
+      handleClick(){
+
+      },
+
+    xuanse(val){
+      console.log(val)
+     this.formz.responsibleName = val.nickName
+     this.formz.responsibleId = val.userId
+     this.formz.responsiblePhone = val.phonenumber
+
+    },
+    itnegadd(item){
+      this.form.houseId = item.houseId
+      this.form.houseAddress = item.detailedAddress
+      console.log(item)
+    },
+    // 获取屏幕高度
+    showFilterForm () {
+          this.filterActive = !this.filterActive
+          this.changeTableMaxHeight()
+        },
+
+        changeTableMaxHeight () {
+          let height = document.body.offsetHeight // 网页可视区域高度
+          // if (this.filterActive) {
+          //   this.tableMaxHeight = height - 320
+          // } else {
+            this.tableMaxHeight = height - 150
+          // }
+          console.log(height)
+        }
+
+  }
+};
+</script>
+<style  lang="scss">
+  .boet{
+    .el-dialog__body{
+      background-color: #f8f8f8;
+    }
+  }
+  .xiahgw{
+    .el-step__head.is-process{
+      color:#00B278;
+      border-color:#00B278;
+    }
+    .el-step__title.is-process{
+      color:#00B278;
+    }
+    .el-step__head.is-finish{
+      color:#00B278;
+      border-color:#00B278;
+    }
+    .el-step__title.is-finish{
+       color:#00B278;
+    }
+  }
+  .ingsek{
+   .el-carousel__container{
+  	 height: 150px;
+   }
+   .el-carousel--horizontal{
+     width: 100%;
+   }
+  }
+  .unimg{
+    .el-upload--picture-card{
+      width:102px;
+      height: 102px;
+      line-height: 102px;
+    }
+  }
+
+  .bnjle{
+    margin-left: 20px;
+  }
+  .butt{
+    .el-button--small{
+      padding: 9px 23px !important;
+      font-size: 14px;
+    }
+  }
+  .casr{
+    .el-tabs__item.is-active{
+      color: #196CFF;
+    }
+    .el-tabs--card > .el-tabs__header .el-tabs__item{
+      padding: 0  30px !important;
+    }
+  }
+  .el-table .el-table__header-wrapper th{
+    background-color:#F5F6F8;
+    color:#343434;
+  }
+  .el-table{
+    color:#343434;
+  }
+ // ::-webkit-scrollbar {
+ //   width: 7px; /* 滚动条宽度 */
+ // }
+ // ::-webkit-scrollbar-track {
+ //   background: #f1f1f1; /* 滚动条轨道背景色 */
+ // }
+ // ::-webkit-scrollbar-thumb {
+ //  background: #999; /* 滚动条滑块背景色 */
+ //   border-radius: 10px; /* 滚动条滑块圆角 */
+ // }
+ // ::-webkit-scrollbar-thumb:hover {
+ //   // background: red; /* 滚动条滑块悬停时的背景色 */
+ // }
+</style>
+<style scoped lang="scss">
+  // .flexc{
+  //   display: flex;
+  //   justify-content: space-between;
+  // }
+  	.carlist{background: #FFFFFF;border-radius: 10px;margin-bottom: 14px;
+  		.ctop{border-bottom: 1px solid #E5E5E5;padding:13px 12px;
+  			.imgs{width: 20px;height: 21px;margin-right: 15px;}
+  			.tit{font-size: 16px;color: #272727;font-weight: bold;margin-right: 7px;overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;}
+  			.txt{font-weight: 500;font-size: 14px;
+  				&.ca{color: #3565ED;}
+  				&.cb{color: #FE5A0E;}
+  				&.cc{color: #28C529;}
+  			}
+  			.txta{font-weight: 500;font-size: 14px;color: #AAAAAA;}
+  			.num{font-size: 14px;color: #AAAAAA;}
+  		}
+  		.btn{height: 17px;border-radius: 9px;display: flex;align-items: center;justify-content: center;padding: 0 5px;font-size:12px;margin-right: 12px;
+  			&.btna{border: 1px solid #06C770;color: #06C770;}
+  			&.btnb{border: 1px solid #3565ED;color: #3565ED;}
+  			&.btnc{border: 1px solid #FE5A0E;color: #FE5A0E;}
+  			&.btnbga{border: 1px solid #0156FE;color: #3565ED;background: #DFEAFF;height: 18px;}
+  			&.btnbgb{border: 1px solid #C1C1C1;color: #666666;background: #F1F1F1;height: 18px;}
+  			&.btnbgc{border: 1px solid #FE5A0E;color:#FE5A0E;background:#FFEEE6;height: 18px;}
+  		}
+  		.clists{padding: 12px 12px 4px;
+  			.clist{font-weight: 500;margin-bottom: 8px;
+  	font-size: 13px;color: #272727;display: flex;line-height: 17px;
+  				.tit{font-size: 14px;color: #AAAAAA;flex: 0 0 auto;margin-right: 8px;text-align-last: justify;}
+  				.imgas{display: flex;align-items: center;flex-wrap: wrap;
+  					image{width: 71px;height: 71px;margin-right: 15px;margin-top:4px;}
+  				}
+  			}
+  			.w50{
+  				.clist{width: 50%;}
+  			}
+  		}
+  	}
+  	.houselist{
+  		.clists{padding-bottom: 1px !important;}
+  		.clist{margin-bottom: 11px !important;}
+  	}
+  .goe{
+    p{
+      margin: 0;
+      font-weight: 800;
+      font-size: 16px;
+      color: #161616;
+      margin-top: 10px;
+      margin-bottom: 3px;
+      padding: 0 10px;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      display:-webkit-box; //作为弹性伸缩盒子模型显示。
+      -webkit-box-orient:vertical; //设置伸缩盒子的子元素排列方式--从上到下垂直排列
+      -webkit-line-clamp:1; //显示的行
+    }
+    p:nth-child(2){
+
+    }
+  }
+  .ingwe{
+    border: 2px solid #196CFF;
+  }
+  .renyuangs{
+    p{
+      font-weight: 500;
+      font-size: 14px;
+      color: #161616;
+      padding: 0;
+    }
+  }
+  .tongty{
+    display: flex;
+    align-items: center;
+  }
+  .bortt{
+    border-top: 1px solid #DADADA;
+    margin-top: 15px;
+
+    p{
+      margin: 0;
+      font-weight: bold;
+      font-size: 14px;
+      color: #5F8BF4;
+      width:50%;
+      padding: 10px;
+      text-align: center;
+    }
+  }
+  .xiangque{
+    overflow: hidden;
+    text-overflow: ellipsis;
+    display:-webkit-box; //作为弹性伸缩盒子模型显示。
+    -webkit-box-orient:vertical; //设置伸缩盒子的子元素排列方式--从上到下垂直排列
+    -webkit-line-clamp:2; //显示的行
+    height: 46px;
+  }
+  .buzhout{
+    margin-top: 20px;
+    p{
+      margin: 0;
+      font-weight: bold;
+      font-size: 16px;
+      color: #666666;
+      span{
+        font-size: 14px;
+        font-weight: 400;
+      }
+    }
+    .p{
+      font-weight: 500;
+      font-size: 14px;
+      color: #666666;
+      margin-top: 10px;
+      padding-left: 22px;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      display:-webkit-box; //作为弹性伸缩盒子模型显示。
+      -webkit-box-orient:vertical; //设置伸缩盒子的子元素排列方式--从上到下垂直排列
+      -webkit-line-clamp:1; //显示的行
+      position: relative;
+
+    }
+    .p:before{
+      position: absolute;
+      display: inline-block;
+      content: "";
+      width: 1px;
+      height: 30px;
+      background-color: #C1C1C1;
+      top:0;
+      left:6px;
+    }
+    .ph{
+      font-weight: 500;
+      font-size: 14px;
+      color: #666666;
+      margin-top: 10px;
+      padding-left: 22px;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      display:-webkit-box; //作为弹性伸缩盒子模型显示。
+      -webkit-box-orient:vertical; //设置伸缩盒子的子元素排列方式--从上到下垂直排列
+      -webkit-line-clamp:1; //显示的行
+      position: relative;
+
+    }
+    .pb:before{
+      			display: inline-block;
+      			content: "";
+      			width: 12px;
+      			height: 12px;
+      			border-radius: 50%;
+            background-color: #C1C1C1;
+            margin-right: 10px;
+    }
+    .jisdei{
+      position: relative;
+    }
+    .jisdei:before{
+      position: absolute;
+      display: inline-block;
+      content: "";
+      width: 1px;
+      height: 98px;
+      background-color: #C1C1C1;
+      top:0;
+      left:6px;
+      // margin-right: 10px;
+    }
+    .acft{
+      color: #0156FE ;
+    }
+    .acft:before{
+      display: inline-block;
+        content: "";
+                  background:url("../../../assets/images/icon_htgl_lc_selected.png") no-repeat;
+                  background-size: 12px 12px;
+            			width: 12px;
+            			height: 12px;
+                  margin-right: 10px;
+    }
+
+  }
+  .het{
+    height: 450px;
+  }
+.work{}
+.flex1{flex: 1;}
+.over{overflow: hidden;white-space: nowrap;text-overflow: ellipsis;}
+.flexc{display: flex;align-items: center;}
+.co9B{color: #9B9B9B !important;width: 90%;}
+.mb8{margin-bottom: 18px;}
+	.worklist{background: #FFFFFF;border-radius: 10px;overflow: hidden;margin-bottom: 12px;
+		.listtop{display: flex;padding: 12px 12px 8px;
+			.name{width: 35px;height: 35px;border-radius: 50%;font-weight: bold;text-align: center;line-height: 35px;flex: 0 0 auto;margin-right: 11px;font-size: 13px;background: #E4F2FA;color: #009FE8;
+				&.bga{background: #ECF9F3;color: #00B278;}
+				&.bgb{background: #FFF4E1;color: #FFB132;}
+				&.bgc{background: #E0E0F1;color: #AF88B8;}
+
+			}
+			.namea{font-weight: bold;font-size: 15px;color: #222327;margin-bottom: 5px;}
+			.phone{width: 30px;height: 30px;margin-left: 11px;flex: 0 0 auto;}
+		}
+		.chtop{font-weight: 500;font-size: 12px;min-height: 40px;padding-left: 13px;box-sizing: border-box;padding: 8px 13px 8px 13px;color: #999999;
+			text{margin-right: 18rpx;color: #161616;}
+		}
+		.chstep{padding: 0 12px 6px;
+			.imgs{width: 13px;height: 14px;display: flex;align-items: center;justify-content: center;margin-right: 6px;flex:0 0 auto;
+				.imga{width: 13px;height: 13px;}
+				.imgb{width: 13px;height: 14px;}
+			}
+			.tit{font-weight: 500;font-size: 13px;color: #B5B5B5;flex: 0 0 auto;}
+			.txt{font-weight: 500;font-size: 13px;color: #222327;}
+			.code{width: 18rpx;height: 11px;margin-left: 7px;}
+		}
+	}
+	.worklist  .uni-collapse{background: #F4F7FF;border-top: 1px solid #E6E6E6;}
+	.worklist .uni-collapse-item__wrap{background: #F4F7FF;}
+	.notit{font-weight: 500;font-size: 13px;color: #222327;}
+	.adrlist{margin-right: 36rpx;min-width: 70px;display: flex;align-items: center;margin-bottom: 5px;}
+		.noico{width: 10px;height: 13px;margin-right: 6px;display: flex;align-items: center;justify-content: center;
+			.imga{width: 10px;height: 11px;}
+			.imgb{width: 10px;height: 12px;}
+			.imgc{width: 9px;height: 14px;}
+		}
+  .co77{
+   color: #779AF9 !important;
+  }
+  .co06{
+    color: #AF88B8 !important;
+  }
+  .cofb{
+    color: #FFA20C !important;
+  }
+  .coaf{
+    color: #FFA20C !important;
+  }
+  .coafs{
+    color: #00B278 !important;
+  }
+  .coafss{
+    color: #FF6969 !important;
+  }
+
+  .baae{
+    display: flex;
+    padding: 20px;
+    p{
+      margin: 0;
+      font-size: 16px;
+      color: #AAAAAA;
+      margin-right: 10px;
+    }
+    .activeq{
+      font-weight: bold;
+      font-size: 16px;
+      color: #161616;
+    }
+  }
+  .bsers{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding: 0 20px;
+    padding-bottom: 20px;
+    padding-left: 0;
+    img{
+      margin-right: 10px;
+    }
+    div{
+       display: flex;
+       align-items: center;
+       margin-left: 20px;
+    }
+
+    p{
+       margin: 0;
+       font-weight: 500;
+       font-size: 14px;
+       color: #161616;
+       display: flex;
+       align-items: center;
+       font-family: PingFang SC;
+       font-weight: 500;
+       font-size: 16px;
+
+    }
+  }
+  </style>
+
+

+ 1271 - 0
ruoyi-ui-gongdan/src/views/gongdan/gongdanzhipaime/index.vue

@@ -0,0 +1,1271 @@
+<template>
+  <div class="app-container">
+    <div >
+          <div style="background-color: #fff;padding: 20px;border-radius: 10px; padding-bottom: 0;">
+                  <p style="margin: 0; font-weight: 800;font-size: 16px;color: #343434;display: flex;align-items: center;margin-bottom: 20px;border-left: 6px solid #03BF8A;margin-left: -20px;">
+                    <!-- <img src="../../../assets/images/icon_htgl_btzs.png" alt="" style="width: 16px;height: 20px;"> -->
+                   <span style="margin-left: 10px;">搜索条件</span>
+                  </p>
+                  <div style="padding-bottom: 0;margin-bottom: 20px;">
+        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="88px">
+          <el-row>
+              <el-col :span="8">
+                <el-form-item label="联系人" prop="personName">
+                        <el-input
+                          v-model="queryParams.personName"
+                          placeholder="请输入联系人"
+                          clearable
+                          @keyup.enter.native="handleQuery"
+                        />
+                      </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="联系电话" prop="phonenumber">
+                        <el-input
+                          v-model="queryParams.phonenumber"
+                          placeholder="请输入联系电话"
+                          clearable
+                          @keyup.enter.native="handleQuery"
+                        />
+                      </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="工单类型" prop="type">
+                        <el-select v-model="queryParams.type" placeholder="请选择工单类型" clearable>
+                          <el-option
+                            v-for="dict in dict.type.work_order_type"
+                            :key="dict.value"
+                            :label="dict.label"
+                            :value="dict.value"
+                          />
+                        </el-select>
+                      </el-form-item>
+              </el-col>
+              <el-col :span="8">
+               <el-form-item label="服务进展" prop="serviceProgress">
+                       <el-select v-model="queryParams.serviceProgress" placeholder="请选择服务进展" clearable>
+                         <el-option
+                           v-for="dict in dict.type.service_progress"
+                           :key="dict.value"
+                           :label="dict.label"
+                           :value="dict.value"
+                         />
+                       </el-select>
+                     </el-form-item>
+              </el-col>
+              <el-col :span="8">
+               <el-form-item label="派单情况" prop="orderPlacement">
+                       <el-select v-model="queryParams.orderPlacement" placeholder="请选择派单情况" clearable>
+                         <el-option
+                           v-for="dict in dict.type.order_placement"
+                           :key="dict.value"
+                           :label="dict.label"
+                           :value="dict.value"
+                         />
+                       </el-select>
+                     </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item class="butt bnjle">
+                  <el-button size="mini" type="primary" style="background-color: #1BDD96; border: #1BDD96;"   @click="handleQuery">搜索</el-button>
+                  <el-button size="mini"  @click="resetQuery">重置</el-button>
+                </el-form-item>
+              </el-col>
+          </el-row>
+
+        </el-form>
+      </div>
+      </div>
+
+
+      <div class="casr">
+              <el-row :gutter="10" class="mb8">
+                <!-- <el-col :span="1.5">
+                  <div style="font-weight: bold;font-size: 14px;color: #343434; display: flex;align-items: center;">
+                    当夜全选
+                  </div>
+                </el-col> -->
+               <el-col :span="1.5">
+                  <el-button
+                    type="primary"
+                    plain
+                    size="mini"
+                    @click="handleAdd"
+                    v-hasPermi="['wuYe:repair:add']"
+                  >添加</el-button>
+                </el-col>
+                <!-- <el-col :span="1.5">
+                  <el-button
+                    type="success"
+                    plain
+                    size="mini"
+                    :disabled="single"
+                    @click="handleUpdate"
+                    v-hasPermi="['system:post:edit']"
+                  >修改</el-button>
+                </el-col>
+                <el-col :span="1.5">
+                  <el-button
+                    type="danger"
+                    plain
+                    size="mini"
+                    :disabled="multiple"
+                    @click="handleDelete"
+                    v-hasPermi="['system:post:remove']"
+                  >删除</el-button>
+                </el-col> -->
+                <el-col :span="1.5">
+                  <el-button
+                    type="warning"
+                    plain
+                    size="mini"
+                    @click="handleExport"
+                    v-hasPermi="['wuYe:repair:export']"
+                  >导出</el-button>
+                </el-col>
+                <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+              </el-row>
+              <div class=" infinite-list" :style="dynamicStyle">
+                <el-row :gutter="10" v-if="infoList.length != 0" style="width: 100%;margin-left: 0;">
+                  <el-col :span="6" v-for="(item,idx) in infoList" :key="idx">
+                    <div class="worklist" style="background-color: #fff;box-shadow: 0px 0px 10px 0px #CDCDCD;border-radius: 4px;margin-bottom: 10px;" >
+                    	<div class="listtop" style="position: relative;">
+                    		<div class="name" :class="{'bga':item.type==2,'bgb':item.type==3,'bgc':item.type==4,}">{{item.rttie}}</div>
+                    		<div class="flex1">
+                    			<div class="namea">{{item.unitName == null ? '暂无数据' : item.unitName}}</div>
+                    			<div class="adrlist">
+                    				<div class="noico"><img :src="gdicob" class="imga"></img></div>
+                    				<div class="notit">{{item.personName == null ? '暂无数据' : item.personName}}
+                            <span style="margin-left: 10px;">{{item.phonenumber == null ? '暂无数据' : item.phonenumber}}</span></div>
+                    			</div>
+                    			<div class="adrlist">
+                    				<div class="noico"><img :src="gdicoa" class="imgc"></img></div>
+                            <el-tooltip class="item" effect="dark" :content="item.detailedAddress == null ? '暂无数据' : (item.city + item.region +item.detailedAddress)" placement="top-start">
+                    				<div class="notit over co9B" >{{item.detailedAddress == null ? '暂无数据' : (item.city + item.region +item.detailedAddress)}}</div>
+                            </el-tooltip>
+                    			</div>
+                    		</div>
+                        <div style="width: 90% ;height: 1px; background-color: #f1f1f1;position: absolute;bottom: 0;">
+
+                        </div>
+                    		<!-- <img :src='phone' class="phone"  @click.stop="getPhone()"></img> -->
+                    	</div>
+                    	<div class="collapse" @click.stop=""  >
+                        <el-tooltip class="item" effect="dark" content="暂无数据" placement="top-start">
+                    						<div class="chtop flexc" v-if="item.serviceProgress ==0">
+                    							<div style="width: 40%;" class="over">暂无数据</div>
+                    							<div style="width: 60%;" class="over">暂无数据接下了该客户的工单</div>
+                    						</div>
+                                <div class="chtop flexc" v-if="item.serviceProgress !=0">
+                                	<div style="width: 40%;" class="over">{{item.takeTime}}</div>
+                                	<div style="width: 60%;" class="over">{{item.responsibleName + item.responsiblePhone}} 接下了该客户的工单</div>
+                                </div>
+                        </el-tooltip>
+                    					<div class="chstep">
+                    						<div class="flexc mb8">
+                    							<div class="imgs"><img :src="wicoa" class="imga"></img></div>
+                    							<div class="tit">工单编号:</div>
+                    							<div class="txt">{{item.orderId == null ? '暂无数据' : item.orderId}}</div>
+                    							<img :src="code" class="code"></img>
+                    						</div>
+                    						<div class="flexc mb8">
+                    							<div class="imgs"><img :src="wicob" class="imga"></img></div>
+                    							<div class="tit">创建时间:</div>
+                    							<div class="txt">{{item.createTime == null ? '暂无数据' : item.createTime}}</div>
+                    						</div>
+                    						<div class="flexc mb8">
+                    							<div class="imgs"><img :src="wicoc" class="imgb"></img></div>
+                    							<div class="tit">服务类型:</div>
+                    							<div class="txt" :class="{'co77':item.type==1,'co06':item.type==2,'cofb':item.type==3,'coaf':item.type==4,'coafs':item.type==5,'coafss':item.type==6,}">
+                                    <dict-tag :options="dict.type.work_order_type" :value="item.type"/></div>
+                    						</div>
+                                <div class="flexc mb8">
+                                	<div class="imgs"><img :src="wicoc" class="imgb"></img></div>
+                                	<div class="tit">工单状态:</div>
+                                	<div class="txt" >
+                                    <dict-tag :options="dict.type.service_progress" :value="item.serviceProgress"/></div>
+                                </div>
+                    					</div>
+                    	</div>
+                      <div class="bortt tongty" style="justify-content: space-between; margin-top: 0;">
+                         <p  v-if="item.serviceProgress == 0" v-hasPermi="['work:info:jdq']"   style="cursor: pointer;color: #28C529;" @click="daifeng(item)" ><span  >派单</span></span>  </p>
+                        <p  v-if="item.serviceProgress == 0" v-hasPermi="['work:info:jd']" style="cursor: pointer;" @click="jiedan(item)"><span  >接单</span></span>  </p>
+                         <p  v-if="item.serviceProgress == 1" v-hasPermi="['work:info:add']"   style="cursor: pointer;color: #28C529;" @click="tianxie(item)" ><span>填写工单</span></span>  </p>
+                         <p style="cursor: pointer;" @click="handleUpdatef(item)"><span  >查看</span></span>  </p>
+                        <!-- <span @click="handleUpdatef(item)">查看</span> -->
+                        <p  v-hasPermi="['work:info:remove']" style="color:red;cursor: pointer;" @click="handleDelete(item)">删除  </p>
+                      </div>
+
+                    </div>
+                  </el-col>
+                </el-row>
+                <div style="margin-top: 20px;display: flex;justify-content: center;align-items: center;" v-if="infoList.length ==0">
+                   <img   src="../../../assets/images/zwshjbig.png" alt="" style="">
+                </div>
+              </div>
+      </div>
+
+
+      <pagination
+        v-show="total>0"
+        :total="total"
+        :page.sync="queryParams.pageNum"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
+      />
+    </div>
+
+    <!-- 添加或修改岗位对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="640px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-row>
+          <!-- <el-col :span="24" v-if="isnusle == 0">
+            <el-form-item label="报修标题" prop="repairTitle">
+                      <el-input v-model="form.repairTitle" placeholder="请输入报修标题,简要描述报修内容" />
+            </el-form-item>
+
+          </el-col> -->
+          <el-col :span="12" v-if="isnusle == 0">
+             <el-form-item label="手机号码" prop="phoneNumber">
+                      <el-input v-model="form.phoneNumber" placeholder="请输入报修用户手机号码" />
+             </el-form-item>
+          </el-col>
+          <el-col :span="12" v-if="isnusle == 0">
+            <el-form-item label="门牌号" prop="houseAddress">
+                 <el-select filterable  v-model="form.houseAddress" placeholder="请选择门牌号" clearable>
+                   <el-option
+                    @click.native="itnegadd(dict)"
+                     v-for="dict in houseInfoLise"
+                     :key="dict.houseId"
+                     :label="dict.detailedAddress"
+                     :value="dict.houseId"
+                   />
+                 </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24" v-if="isnusle == 0">
+             <el-form-item label="报修详情" prop="repairDetails">
+                      <el-input v-model="form.repairDetails" type="textarea" placeholder="请输入内容" />
+                    </el-form-item>
+          </el-col>
+          <el-col :span="12" v-if="isnusle == 0">
+           <el-form-item label="报修类别" prop="maintenanceCategory">
+                     <el-select v-model="form.maintenanceCategory" placeholder="请选择报修类别">
+                       <el-option
+                         v-for="dict in dict.type.baoxiutype"
+                         :key="dict.value"
+                         :label="dict.label"
+                         :value="dict.value"
+                       ></el-option>
+                     </el-select>
+                   </el-form-item>
+          </el-col>
+          <el-col :span="12" v-if="isnusle == 0">
+            <el-form-item label="报修时间" prop="repairTime">
+                      <el-date-picker
+                      style="width:100%"
+                        v-model="form.repairTime"
+                        type="datetime"
+                        value-format="yyyy-MM-dd HH:mm:ss"
+                        placeholder="请选择报修时间">
+                      </el-date-picker>
+                    </el-form-item>
+          </el-col>
+          <el-col :span="24" v-if="isnusle == 0">
+            <el-form-item label="备注" prop="remark">
+              <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="24" v-if="isnusle == 2">
+             <el-form-item label="维修详情" prop="repairCompletionDetails">
+                      <el-input v-model="form.repairCompletionDetails" type="textarea" placeholder="请输入内容" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="24" class="unimg" v-if="isnusle == 1" >
+            <el-form-item label="上门拍照" prop="visitPhoto">
+              <image-upload v-model="form.visitPhoto"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24" class="unimg" v-if="isnusle == 2">
+            <el-form-item label="结束拍照" prop="completionPhoto">
+              <image-upload v-model="form.completionPhoto"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+
+
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog title="指派" :visible.sync="openz" width="640px" append-to-body>
+      <el-form ref="formz" :model="formz" :rules="rulesz" label-width="80px">
+        <el-row>
+          <el-col :span="24" >
+            <el-form-item label="选择人员" prop="responsibleName">
+                      <el-select style="width: 100%;" v-model="formz.responsibleName" placeholder="请选择选择人员">
+                        <el-option
+                        @click.native="xuanse(dict)"
+                          v-for="dict in staffManageList"
+                          :key="dict.userId"
+                          :label="dict.nickName "
+                          :value="dict.userId"
+                        ></el-option>
+                      </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFormz">确 定</el-button>
+        <el-button @click="cancelz">取 消</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog title="查看详情" :visible.sync="openzx" width="640px" append-to-body class="boet">
+      <div  class="worklist" style="" >
+        <div>
+          <div style="margin-top: 15px; padding: 20px;" class="xiahgw">
+            <el-steps :active="actjse" simple>
+              <el-step title="待接单" icon="el-icon-upload2"></el-step>
+              <el-step title="进行中" icon="el-icon-refresh"></el-step>
+              <el-step title="已完成" icon="el-icon-check"></el-step>
+              <el-step title="已评价" icon="el-icon-check"></el-step>
+            </el-steps>
+          </div>
+        </div>
+      	<div class="listtop">
+      		<div class="name" style="border-radius: 5px;" :class="{'bga':chakn.type==2,'bgb':chakn.type==3,'bgc':chakn.type==4,}">{{chakn.titke}}</div>
+      		<div class="flex1">
+            <div class="adrlist">
+            	<div class="notit" style="font-weight: bold;font-size: 16px;color: #222327;">{{chakn.personName ==null? '暂无数据' : chakn.personName}}
+              <span style="font-size: 14px; font-weight: 400;">{{chakn.phonenumber ==null? '暂无数据' : chakn.phonenumber}}</span></div>
+            </div>
+      			<div class="namea" style="color: #666666; font-size: 15px;">{{chakn.unitName ==null? '暂无数据' : chakn.unitName}}</div>
+      		</div>
+      		<!-- <img :src='phone' class="phone"  @click.stop="getPhone()"></img> -->
+      	</div>
+      	<div class="collapse" @click.stop="" style="border-top: 1px  solid #E6E6E6;">
+      					<div class="chstep" style="padding-top: 20px;">
+      						<div class="flexc mb8">
+      							<div class="imgs"><img :src="wicoa" class="imga"></img></div>
+      							<div class="tit" style="font-size: 14px;color: #AAAAAA;">工单编号:</div>
+      							<div class="txt" style="font-size: 14px;color: #666666;">{{chakn.orderId ==null? '暂无数据' : chakn.orderId}}</div>
+      							<img :src="code" class="code"></img>
+      						</div>
+      						<div class="flexc mb8">
+      							<div class="imgs"><img :src="wicob" class="imga"></img></div>
+      							<div class="tit" style="font-size: 14px;color: #AAAAAA;">创建时间:</div>
+      							<div class="txt" style="font-size: 14px;color: #666666;">{{chakn.createTime ==null? '暂无数据' : chakn.createTime}}</div>
+      						</div>
+                  <div class="flexc mb8">
+                  	<div class="imgs"><img :src="wicob" class="imga"></img></div>
+                  	<div class="tit" style="font-size: 14px;color: #AAAAAA;">客户地址:</div>
+                  	<div class="txt" style="font-size: 14px;color: #666666;">{{chakn.detailedAddress ==null? '暂无数据' : chakn.detailedAddress}}</div>
+                  </div>
+                  <div class="flexc mb8">
+                  	<div class="imgs"><img :src="wicoc" class="imgb"></img></div>
+                  	<div class="tit">服务类型:</div>
+                  	<div class="txt" :class="{'co77':chakn.type==1,'co06':chakn.type==2,'cofb':chakn.type==3,'coaf':chakn.type==4,'coafs':chakn.type==5,'coafss':chakn.type==6,}">
+                      <dict-tag :options="dict.type.work_order_type" :value="chakn.type"/></div>
+                  </div>
+      					</div>
+      	</div>
+        <div class="collapse" @click.stop="" style="border-top: 1px  solid #E6E6E6;" v-if="chakn.workOrderFjgd!=null">
+        			<div class="bsers" style="padding-top: 20px;" >
+        			 <div>
+        			   <p> <img src="../../../assets/images/wenjian.png" alt="" style="width: 20px;height: 20px;"></p>
+        			   <p>{{chakn.workOrderFjgd.name}}</p>
+        			 </div>
+        			  <div>
+        			              <!-- + baseUrl -->
+        			              <p @click="yuangl(defaultSettings.urls  + item.url)" style="color: #658CF8;margin-right: 10px;font-size: 14px;"><img src="../../../assets/images/icon_xq_yl.png" alt="" style="width: 15px;height: 10px;">预览</p>
+        			              <p @click="downloadFileg(defaultSettings.urls  + item.url,item.name)" style="color: #658CF8; font-size: 14px;"><img src="../../../assets/images/icon_xq_xz.png" alt=""  style="width: 15px;height: 15px;">下载</p>
+        			            </div>
+        			</div>
+
+        </div>
+
+
+      </div>
+      <div style="background: #FFFFFF;border-radius: 10px;">
+        <div class="baae">
+          <p :class="isshoe == 0?'activeq' : ''" @click="iskeh(0)">客户需求</p>
+          <p v-if="chakn.serviceProgress == 3" :class="isshoe == 1?'activeq' : ''" @click="iskeh(1)">客户评价</p>
+        </div>
+        <div style="padding: 20px;font-size: 14px;color: #161616;line-height: 30px;" v-if="isshoe == 0">
+         {{chakn.demand ==null? '暂无数据' : chakn.demand}}
+
+        </div>
+        <div class="bsers" v-for = "(item,index) in  chakn.workOrderFjXqList" :key="index" v-if="isshoe == 0">
+         <div>
+           <p> <img src="../../../assets/images/wenjian.png" alt="" style="width: 20px;height: 20px;"></p>
+           <p>{{item.name}}</p>
+         </div>
+          <div>
+            <!-- + baseUrl -->
+            <p @click="yuangl(defaultSettings.urls  + item.url)" style="color: #658CF8;margin-right: 10px;font-size: 14px;"><img src="../../../assets/images/icon_xq_yl.png" alt="" style="width: 15px;height: 10px;">预览</p>
+            <p @click="downloadFile(defaultSettings.urls  + item.url,item.name)" style="color: #658CF8; font-size: 14px;"><img src="../../../assets/images/icon_xq_xz.png" alt=""  style="width: 15px;height: 15px;">下载</p>
+          </div>
+        </div>
+        <div style="padding: 20px;font-size: 14px;color: #161616;line-height: 30px;" v-if="isshoe == 1">
+          <div style="display: flex; ">服务评价  <div style="color: #00B278;margin-left: 10px;"><dict-tag :options="dict.type.work_order_type" :value="chakn.type"/></div></div>
+          <div style="padding: 20px;font-size: 14px;color: #161616;line-height: 30px;" v-if="isshoe == 1">
+           {{chakn.evaluationContent ==null? '暂无数据' : chakn.evaluationContent}}
+          </div>
+          <div style="border-top:  1px solid #E6E6E6;font-size: 14px;color: #AAAAAA;" v-if="isshoe == 1">
+                评价于 {{chakn.updateTime}}
+          </div>
+        </div>
+
+        <div class="bortt tongty" style="justify-content: space-between; margin-top: 0;" >
+           <p  v-if="chakn.serviceProgress == 0" v-hasPermi="['work:info:jdq']"   style="cursor: pointer;color: #28C529;" @click="daifeng(chakn)" ><span  >派单</span></span>  </p>
+           <p  v-if="chakn.serviceProgress == 0" v-hasPermi="['work:info:jd']" style="cursor: pointer;" @click="jiedan(chakn)"><span  >接单</span></span>  </p>
+            <p  v-if="chakn.serviceProgress == 1" v-hasPermi="['work:info:add']"   style="cursor: pointer;color: #28C529;" @click="tianxie(chakn)" ><span  >填写</span></span>  </p>
+            <!-- <p style="cursor: pointer;" @click="handleUpdatef(chakn)"><span  >查看</span></span>  </p> -->
+           <!-- <span @click="handleUpdatef(item)">查看</span> -->
+           <p  v-hasPermi="['work:info:remove']" style="color:red;cursor: pointer;" @click="handleDelete(chakn)">删除  </p>
+        </div>
+
+
+      </div>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+// import 'videojs-flash'
+import { listInfo, getInfo, delInfo, addInfo, updateInfo,jd,listStaffManageNoPage } from "@/api/system/info"
+const defaultSettings = require("@/settings.js");
+import download from 'downloadjs'
+export default {
+  name: "Repair",
+    dicts: ['baoxiutype', 'work_order_evaluation', 'shelf_life', 'work_order_type', 'sys_yes_no', 'service_progress', 'order_placement',],
+  data() {
+    return {
+      list:[{},{name:'嘉欣医疗用品有限公司',type:'2'},{name:'嘉欣医疗用品有限公司',type:'3'},{name:'嘉欣医疗用品有限公司',type:'4'}],
+      gdicoa:require('../../../assets/images/gdicoa.png'),
+      gdicob:require('../../../assets/images/gdicob.png'),
+      gdicoc:require('../../../assets/images/gdicoc.png'),
+      phone:require('../../../assets/images/phone.png'),
+      wicoa:require('../../../assets/images/wicoa.png'),
+      wicob:require('../../../assets/images/wicob.png'),
+      wicoc:require('../../../assets/images/wicoc.png'),
+      code:require('../../../assets/images/code.png'),
+      openzx:false,
+      actjse:1,
+      ite:{
+        name:'嘉欣医疗用品有限公司',type:'1'
+      },
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 物业报修表格数据
+       infoList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      openz:false,
+      houseInfoLise:[],
+      defaultSettings:defaultSettings,
+      baseUrl: process.env.VUE_APP_BASE_API,
+      // 查询参数
+      queryParams: {
+                pageNum: 1,
+                       pageSize: 10,
+                       unitName: null,
+                       provinceId: null,
+                       province: null,
+                       cityId: null,
+                       city: null,
+                       regionId: null,
+                       region: null,
+                       detailedAddress: null,
+                       lon: null,
+                       lat: null,
+                       personName: null,
+                       phonenumber: null,
+                       sex: null,
+                       type: null,
+                       demand: null,
+                       isSignature: null,
+                       evaluation: null,
+                       evaluationContent: null,
+                       serviceProgress: null,
+                       orderPlacement: null,
+                       responsibleId: null,
+                       responsibleName: null,
+                       projectName: null,
+                       shelfLife: null,
+                       isCharge: null,
+                       totalCost: null,
+                       totalCostDx: null,
+                       loginIp: null,
+                       loginDate: null,
+                       delFlag:'N'
+      },
+      // 表单参数
+      form: {},
+      formz: {},
+      // 表单校验
+      rules: {
+        repairTime: [
+                  { required: true, message: "不能为空", trigger: "blur" }
+                ],
+        repairDetails: [
+                  { required: true, message: "不能为空", trigger: "blur" }
+                ],
+        maintenanceCategory: [
+                  { required: true, message: "不能为空", trigger: "blur" }
+                ],
+
+        phoneNumber: [
+                 { required: true, message: "不能为空", trigger: "blur" },
+                 {
+                   pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+                   message: "请输入正确的手机号码",
+                    trigger: "blur"
+                   }
+               ],
+
+      },
+      rulesz: {
+        responsibleName: [
+                  { required: true, message: "不能为空", trigger: "blur" }
+                ],
+
+      },
+      activeName:'first',
+      videoState: false, // 视频播放状态
+      poster:true,
+      controls:true,
+      videoData:{},
+       player: null,
+       isshoe:0,
+       isnusle:1,
+       staffManageList: [],
+       tableMaxHeight:'200',
+       isryr:true,
+       chakn:{}
+
+    };
+  },
+  computed: {
+    dynamicStyle() {
+      return {
+        overflow:'auto',
+        height:  this.tableMaxHeight + 'px',
+        paddingTop:'10px'
+      }
+    }
+    },
+  created() {
+    this.queryParams.responsibleId = this.$store.getters.id
+    if(this.$route.query.type == 1){
+      this.queryParams.orderPlacement = '1'
+      this.queryParams.serviceProgress = '1'
+    }else{
+      this.queryParams.orderPlacement = null
+      this.queryParams.serviceProgress = null
+    }
+    console.log(this.queryParams)
+    this.getList()
+    this.getstaffManageList()
+    console.log(this.$store.getters)
+  window.onresize = () => {
+  	      this.changeTableMaxHeight()
+  	    }
+  	    this.changeTableMaxHeight()
+  },
+  mounted() {
+  	window.onresize = () => {
+  	          this.changeTableMaxHeight()
+  	        }
+  	        this.changeTableMaxHeight()
+  },
+  beforeDestroy() {
+      if (this.player) {
+        this.player.dispose()
+      }
+    },
+  methods: {
+    iskeh(row){
+     this.isshoe = row
+    },
+    getListhouvr() {
+       listNoPage().then(response => {
+         this.houseInfoLise  = response.data;
+       });
+     },
+    /** 查询岗位列表 */
+    getList() {
+      this.loading = true;
+      listInfo(this.queryParams).then(response => {
+        this.infoList  = response.rows;
+        this.infoList .filter(rou=>{
+          rou.isnum = false
+          rou.isryr = true
+          rou.rttie=rou.unitName.substr(0,2)
+        })
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    getstaffManageList(row){
+      let bsdf={'staffCategory':2}
+      listStaffManageNoPage().then(response => {
+        this.staffManageList  = response.rows;
+        // this.staffManageList.filrter(rout=>{
+        //   rout.lable = rout.staffName + '<p>'
+        // })
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 获取当前时间
+    gettime(){
+      let nowDate = new Date()
+      				  let date = {
+      				    year: nowDate.getFullYear(),
+      				    month: nowDate.getMonth() + 1,
+      				    date: nowDate.getDate()
+      				  }
+
+      				   if (parseInt(date.date) < 10) {
+      				      date.date = '0' + date.date
+      				    }
+                  let nghe = date.year + '-' + date.month + '-' + date.date
+      				  return nghe
+
+    },
+    cancelz() {
+      this.openz = false;
+    },
+    gettimeg(){
+      let nowDate = new Date()
+                //获取当前时间并打印
+                        var _this = this;
+                        let sgse=''
+                      let yy = new Date().getFullYear();
+                      let mm = new Date().getMonth()+1;
+                      let dd = new Date().getDate();
+                      let hh = new Date().getHours();
+                      let mf = new Date().getMinutes()<10 ? '0'+new Date().getMinutes() : new Date().getMinutes();
+                      let ss = new Date().getSeconds()<10 ? '0'+new Date().getSeconds() : new Date().getSeconds();
+                       sgse = yy+'-'+mm+'-'+dd+' '+hh+':'+mf+':'+ss;
+                    return  sgse
+
+
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+                     unitName: null,
+                     provinceId: null,
+                     province: null,
+                     cityId: null,
+                     city: null,
+                     regionId: null,
+                     region: null,
+                     detailedAddress: null,
+                     lon: null,
+                     lat: null,
+                     personName: null,
+                     phonenumber: null,
+                     sex: null,
+                     type: null,
+                     demand: null,
+                     isSignature: null,
+                     evaluation: null,
+                     evaluationContent: null,
+                     serviceProgress: null,
+                     orderPlacement: null,
+                     responsibleId: null,
+                     responsibleName: null,
+                     projectName: null,
+                     shelfLife: null,
+                     isCharge: null,
+                     totalCost: null,
+                     totalCostDx: null,
+                     loginIp: null,
+                     loginDate: null,
+            };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+          this.ids = selection.map(item => item.orderId)
+          this.single = selection.length!==1
+          this.multiple = !selection.length
+        },
+     /** 新增按钮操作 */
+        handleAdd() {
+          this.reset()
+          this.open = true
+          this.title = "添加工单信息"
+        },
+        /** 修改按钮操作 */
+        handleUpdate(row) {
+          this.reset()
+          const orderId = row.orderId || this.ids
+          getInfo(orderId).then(response => {
+            this.form = response.data
+            this.open = true
+            this.title = "查看工单信息"
+          })
+        },
+    handleUpdatef(row){
+      this.reset()
+      const orderId = row.orderId || this.ids
+      getInfo(orderId).then(response => {
+        this.chakn = response.data
+        if(response.data.personName != null && response.data.personName !=''){
+          this.chakn.titke = response.data.personName.substr(0,1)
+        }else{
+          this.chakn.titke = '无'
+        }
+        this.actjse = this.chakn.serviceProgress - 0
+        this.openzx = true
+        // this.title = "查看工单信息"
+      })
+
+    },
+    // 填写工单价格
+    tianxie(row){
+      this.$router.push({
+        path: '/gongdanxq',
+        query: {
+        	'id':row.orderId,
+        }
+      })
+    },
+    // 接单
+    jiedan(row){
+      let snge={'orderId':row.orderId,'orderPlacement':2,'responsibleId':this.$store.getters.id,'responsibleName':this.$store.getters.nickName,'responsiblePhone':this.$store.getters.phonenumber}
+      jd(snge).then(response => {
+        this.$modal.msgSuccess("操作成功");
+        this.openz = false;
+        this.getList();
+      });
+    },
+    // 待分配
+    daifeng(row){
+       // 待分配
+       // this.formz.maintenanceCategory = row.maintenanceCategory
+       this.openz = true
+       this.formz.orderId = row.orderId
+       this.formz.orderPlacement = 1
+    },
+    // 待分配提交
+    submitFormz(){
+      this.$refs["formz"].validate(valid => {
+        if (valid) {
+          jd(this.formz).then(response => {
+            this.$modal.msgSuccess("操作成功");
+            this.openz = false;
+            this.getList();
+          });
+        }
+        })
+
+    },
+    // 下载文件
+    downloadFile(row,item){
+      // window.open(row, );
+      if (!/\.(pdf|PDF|png|PNG|jpg|JPG)$/.test(row)) {
+              // 不是pdf格式
+               window.location.href = row;
+              } else  {
+              download(row)
+              }
+
+
+    },
+    // 下载工单
+    downloadFileg(row,item){
+      // window.open(row, );
+      // download(row)
+     window.location.href = row;
+    },
+    // 预览文件
+    yuangl(row){
+      if (!/\.(pdf|PDF|png|PNG|jpg|JPG)$/.test(row)) {
+              // 不是pdf格式
+                window.open(
+                  " https://view.officeapps.live.com/op/view.aspx?src=" + row,
+                  "_blank"
+                );
+              } else  {
+              // pdf 格式
+               window.open(row, '_blank');
+              }
+
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+                  if (this.form.repairId != null) {
+                    updateInfo(this.form).then(response => {
+                      this.$modal.msgSuccess("修改成功");
+                      this.open = false;
+                      this.getList();
+                    });
+                  } else {
+                    this.form.userId = this.$store.getters.userId
+                    addInfo(this.form).then(response => {
+                      this.$modal.msgSuccess("新增成功");
+                      this.open = false;
+                      this.getList();
+                    });
+                  }
+                  }
+      });
+    },
+    /** 删除按钮操作 */
+        handleDelete(row) {
+          const repairIds = row.orderId  || this.ids;
+          delInfo(repairIds).then(response => {
+            this.$modal.msgSuccess("删除成功");
+            this.getList();
+          });
+        },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/info/export', {
+        ...this.queryParams
+      }, `info_${new Date().getTime()}.xlsx`)
+    },
+
+      handleClick(){
+
+      },
+
+    xuanse(val){
+      console.log(val)
+     this.formz.responsibleName = val.nickName
+     this.formz.responsibleId = val.userId
+     this.formz.responsiblePhone = val.phonenumber
+
+    },
+    itnegadd(item){
+      this.form.houseId = item.houseId
+      this.form.houseAddress = item.detailedAddress
+      console.log(item)
+    },
+    // 获取屏幕高度
+    showFilterForm () {
+          this.filterActive = !this.filterActive
+          this.changeTableMaxHeight()
+        },
+
+        changeTableMaxHeight () {
+          let height = document.body.offsetHeight // 网页可视区域高度
+          // if (this.filterActive) {
+          //   this.tableMaxHeight = height - 320
+          // } else {
+            this.tableMaxHeight = height - 150
+          // }
+          console.log(height)
+        }
+
+  }
+};
+</script>
+<style  lang="scss">
+  .boet{
+    .el-dialog__body{
+      background-color: #f8f8f8;
+    }
+  }
+  .xiahgw{
+    .el-step__head.is-process{
+      color:#00B278;
+      border-color:#00B278;
+    }
+    .el-step__title.is-process{
+      color:#00B278;
+    }
+    .el-step__head.is-finish{
+      color:#00B278;
+      border-color:#00B278;
+    }
+    .el-step__title.is-finish{
+       color:#00B278;
+    }
+  }
+  .ingsek{
+   .el-carousel__container{
+  	 height: 150px;
+   }
+   .el-carousel--horizontal{
+     width: 100%;
+   }
+  }
+  .unimg{
+    .el-upload--picture-card{
+      width:102px;
+      height: 102px;
+      line-height: 102px;
+    }
+  }
+
+  .bnjle{
+    margin-left: 20px;
+  }
+  .butt{
+    .el-button--small{
+      padding: 9px 23px !important;
+      font-size: 14px;
+    }
+  }
+  .casr{
+    .el-tabs__item.is-active{
+      color: #196CFF;
+    }
+    .el-tabs--card > .el-tabs__header .el-tabs__item{
+      padding: 0  30px !important;
+    }
+  }
+  .el-table .el-table__header-wrapper th{
+    background-color:#F5F6F8;
+    color:#343434;
+  }
+  .el-table{
+    color:#343434;
+  }
+ // ::-webkit-scrollbar {
+ //   width: 7px; /* 滚动条宽度 */
+ // }
+ // ::-webkit-scrollbar-track {
+ //   background: #f1f1f1; /* 滚动条轨道背景色 */
+ // }
+ // ::-webkit-scrollbar-thumb {
+ //  background: #999; /* 滚动条滑块背景色 */
+ //   border-radius: 10px; /* 滚动条滑块圆角 */
+ // }
+ // ::-webkit-scrollbar-thumb:hover {
+ //   // background: red; /* 滚动条滑块悬停时的背景色 */
+ // }
+</style>
+<style scoped lang="scss">
+  // .flexc{
+  //   display: flex;
+  //   justify-content: space-between;
+  // }
+  	.carlist{background: #FFFFFF;border-radius: 10px;margin-bottom: 14px;
+  		.ctop{border-bottom: 1px solid #E5E5E5;padding:13px 12px;
+  			.imgs{width: 20px;height: 21px;margin-right: 15px;}
+  			.tit{font-size: 16px;color: #272727;font-weight: bold;margin-right: 7px;overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;}
+  			.txt{font-weight: 500;font-size: 14px;
+  				&.ca{color: #3565ED;}
+  				&.cb{color: #FE5A0E;}
+  				&.cc{color: #28C529;}
+  			}
+  			.txta{font-weight: 500;font-size: 14px;color: #AAAAAA;}
+  			.num{font-size: 14px;color: #AAAAAA;}
+  		}
+  		.btn{height: 17px;border-radius: 9px;display: flex;align-items: center;justify-content: center;padding: 0 5px;font-size:12px;margin-right: 12px;
+  			&.btna{border: 1px solid #06C770;color: #06C770;}
+  			&.btnb{border: 1px solid #3565ED;color: #3565ED;}
+  			&.btnc{border: 1px solid #FE5A0E;color: #FE5A0E;}
+  			&.btnbga{border: 1px solid #0156FE;color: #3565ED;background: #DFEAFF;height: 18px;}
+  			&.btnbgb{border: 1px solid #C1C1C1;color: #666666;background: #F1F1F1;height: 18px;}
+  			&.btnbgc{border: 1px solid #FE5A0E;color:#FE5A0E;background:#FFEEE6;height: 18px;}
+  		}
+  		.clists{padding: 12px 12px 4px;
+  			.clist{font-weight: 500;margin-bottom: 8px;
+  	font-size: 13px;color: #272727;display: flex;line-height: 17px;
+  				.tit{font-size: 14px;color: #AAAAAA;flex: 0 0 auto;margin-right: 8px;text-align-last: justify;}
+  				.imgas{display: flex;align-items: center;flex-wrap: wrap;
+  					image{width: 71px;height: 71px;margin-right: 15px;margin-top:4px;}
+  				}
+  			}
+  			.w50{
+  				.clist{width: 50%;}
+  			}
+  		}
+  	}
+  	.houselist{
+  		.clists{padding-bottom: 1px !important;}
+  		.clist{margin-bottom: 11px !important;}
+  	}
+  .goe{
+    p{
+      margin: 0;
+      font-weight: 800;
+      font-size: 16px;
+      color: #161616;
+      margin-top: 10px;
+      margin-bottom: 3px;
+      padding: 0 10px;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      display:-webkit-box; //作为弹性伸缩盒子模型显示。
+      -webkit-box-orient:vertical; //设置伸缩盒子的子元素排列方式--从上到下垂直排列
+      -webkit-line-clamp:1; //显示的行
+    }
+    p:nth-child(2){
+
+    }
+  }
+  .ingwe{
+    border: 2px solid #196CFF;
+  }
+  .renyuangs{
+    p{
+      font-weight: 500;
+      font-size: 14px;
+      color: #161616;
+      padding: 0;
+    }
+  }
+  .tongty{
+    display: flex;
+    align-items: center;
+  }
+  .bortt{
+    border-top: 1px solid #DADADA;
+    margin-top: 15px;
+
+    p{
+      margin: 0;
+      font-weight: bold;
+      font-size: 14px;
+      color: #5F8BF4;
+      width:50%;
+      padding: 10px;
+      text-align: center;
+    }
+  }
+  .xiangque{
+    overflow: hidden;
+    text-overflow: ellipsis;
+    display:-webkit-box; //作为弹性伸缩盒子模型显示。
+    -webkit-box-orient:vertical; //设置伸缩盒子的子元素排列方式--从上到下垂直排列
+    -webkit-line-clamp:2; //显示的行
+    height: 46px;
+  }
+  .buzhout{
+    margin-top: 20px;
+    p{
+      margin: 0;
+      font-weight: bold;
+      font-size: 16px;
+      color: #666666;
+      span{
+        font-size: 14px;
+        font-weight: 400;
+      }
+    }
+    .p{
+      font-weight: 500;
+      font-size: 14px;
+      color: #666666;
+      margin-top: 10px;
+      padding-left: 22px;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      display:-webkit-box; //作为弹性伸缩盒子模型显示。
+      -webkit-box-orient:vertical; //设置伸缩盒子的子元素排列方式--从上到下垂直排列
+      -webkit-line-clamp:1; //显示的行
+      position: relative;
+
+    }
+    .p:before{
+      position: absolute;
+      display: inline-block;
+      content: "";
+      width: 1px;
+      height: 30px;
+      background-color: #C1C1C1;
+      top:0;
+      left:6px;
+    }
+    .ph{
+      font-weight: 500;
+      font-size: 14px;
+      color: #666666;
+      margin-top: 10px;
+      padding-left: 22px;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      display:-webkit-box; //作为弹性伸缩盒子模型显示。
+      -webkit-box-orient:vertical; //设置伸缩盒子的子元素排列方式--从上到下垂直排列
+      -webkit-line-clamp:1; //显示的行
+      position: relative;
+
+    }
+    .pb:before{
+      			display: inline-block;
+      			content: "";
+      			width: 12px;
+      			height: 12px;
+      			border-radius: 50%;
+            background-color: #C1C1C1;
+            margin-right: 10px;
+    }
+    .jisdei{
+      position: relative;
+    }
+    .jisdei:before{
+      position: absolute;
+      display: inline-block;
+      content: "";
+      width: 1px;
+      height: 98px;
+      background-color: #C1C1C1;
+      top:0;
+      left:6px;
+      // margin-right: 10px;
+    }
+    .acft{
+      color: #0156FE ;
+    }
+    .acft:before{
+      display: inline-block;
+        content: "";
+                  background:url("../../../assets/images/icon_htgl_lc_selected.png") no-repeat;
+                  background-size: 12px 12px;
+            			width: 12px;
+            			height: 12px;
+                  margin-right: 10px;
+    }
+
+  }
+  .het{
+    height: 450px;
+  }
+.work{}
+.flex1{flex: 1;}
+.over{overflow: hidden;white-space: nowrap;text-overflow: ellipsis;}
+.flexc{display: flex;align-items: center;}
+.co9B{color: #9B9B9B !important;width: 90%;}
+.mb8{margin-bottom: 18px;}
+	.worklist{background: #FFFFFF;border-radius: 10px;overflow: hidden;margin-bottom: 12px;
+		.listtop{display: flex;padding: 12px 12px 8px;
+			.name{width: 35px;height: 35px;border-radius: 50%;font-weight: bold;text-align: center;line-height: 35px;flex: 0 0 auto;margin-right: 11px;font-size: 13px;background: #E4F2FA;color: #009FE8;
+				&.bga{background: #ECF9F3;color: #00B278;}
+				&.bgb{background: #FFF4E1;color: #FFB132;}
+				&.bgc{background: #E0E0F1;color: #AF88B8;}
+
+			}
+			.namea{font-weight: bold;font-size: 15px;color: #222327;margin-bottom: 5px;}
+			.phone{width: 30px;height: 30px;margin-left: 11px;flex: 0 0 auto;}
+		}
+		.chtop{font-weight: 500;font-size: 12px;min-height: 40px;padding-left: 13px;box-sizing: border-box;padding: 8px 13px 8px 13px;color: #999999;
+			text{margin-right: 18rpx;color: #161616;}
+		}
+		.chstep{padding: 0 12px 6px;
+			.imgs{width: 13px;height: 14px;display: flex;align-items: center;justify-content: center;margin-right: 6px;flex:0 0 auto;
+				.imga{width: 13px;height: 13px;}
+				.imgb{width: 13px;height: 14px;}
+			}
+			.tit{font-weight: 500;font-size: 13px;color: #B5B5B5;flex: 0 0 auto;}
+			.txt{font-weight: 500;font-size: 13px;color: #222327;}
+			.code{width: 18rpx;height: 11px;margin-left: 7px;}
+		}
+	}
+	.worklist  .uni-collapse{background: #F4F7FF;border-top: 1px solid #E6E6E6;}
+	.worklist .uni-collapse-item__wrap{background: #F4F7FF;}
+	.notit{font-weight: 500;font-size: 13px;color: #222327;}
+	.adrlist{margin-right: 36rpx;min-width: 70px;display: flex;align-items: center;margin-bottom: 5px;}
+		.noico{width: 10px;height: 13px;margin-right: 6px;display: flex;align-items: center;justify-content: center;
+			.imga{width: 10px;height: 11px;}
+			.imgb{width: 10px;height: 12px;}
+			.imgc{width: 9px;height: 14px;}
+		}
+  .co77{
+   color: #779AF9 !important;
+  }
+  .co06{
+    color: #AF88B8 !important;
+  }
+  .cofb{
+    color: #FFA20C !important;
+  }
+  .coaf{
+    color: #FFA20C !important;
+  }
+  .coafs{
+    color: #00B278 !important;
+  }
+  .coafss{
+    color: #FF6969 !important;
+  }
+
+  .baae{
+    display: flex;
+    padding: 20px;
+    p{
+      margin: 0;
+      font-size: 16px;
+      color: #AAAAAA;
+      margin-right: 10px;
+    }
+    .activeq{
+      font-weight: bold;
+      font-size: 16px;
+      color: #161616;
+    }
+  }
+  .bsers{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding: 0 20px;
+    padding-bottom: 20px;
+    padding-left: 0;
+    img{
+      margin-right: 10px;
+    }
+    div{
+       display: flex;
+       align-items: center;
+       margin-left: 20px;
+    }
+
+    p{
+       margin: 0;
+       font-weight: 500;
+       font-size: 14px;
+       color: #161616;
+       display: flex;
+       align-items: center;
+       font-family: PingFang SC;
+       font-weight: 500;
+       font-size: 16px;
+
+    }
+  }
+  </style>
+
+

+ 1240 - 0
ruoyi-ui-gongdan/src/views/gongdan/gongdanzhipaipj/index.vue

@@ -0,0 +1,1240 @@
+<template>
+  <div class="app-container">
+    <div >
+          <div style="background-color: #fff;padding: 20px;border-radius: 10px; padding-bottom: 0;">
+                  <p style="margin: 0; font-weight: 800;font-size: 16px;color: #343434;display: flex;align-items: center;margin-bottom: 20px;border-left: 6px solid #03BF8A;margin-left: -20px;">
+                    <!-- <img src="../../../assets/images/icon_htgl_btzs.png" alt="" style="width: 16px;height: 20px;"> -->
+                   <span style="margin-left: 10px;">搜索条件</span>
+                  </p>
+                  <div style="padding-bottom: 0;margin-bottom: 20px;">
+        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="88px">
+          <el-row>
+              <el-col :span="8">
+                <el-form-item label="联系人" prop="personName">
+                        <el-input
+                          v-model="queryParams.personName"
+                          placeholder="请输入联系人"
+                          clearable
+                          @keyup.enter.native="handleQuery"
+                        />
+                      </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="联系电话" prop="phonenumber">
+                        <el-input
+                          v-model="queryParams.phonenumber"
+                          placeholder="请输入联系电话"
+                          clearable
+                          @keyup.enter.native="handleQuery"
+                        />
+                      </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="工单类型" prop="type">
+                        <el-select v-model="queryParams.type" placeholder="请选择工单类型" clearable>
+                          <el-option
+                            v-for="dict in dict.type.work_order_type"
+                            :key="dict.value"
+                            :label="dict.label"
+                            :value="dict.value"
+                          />
+                        </el-select>
+                      </el-form-item>
+              </el-col>
+              <el-col :span="8">
+               <el-form-item label="是否满意" prop="evaluation">
                       <el-select v-model="queryParams.evaluation" placeholder="请选择是否满意" clearable>
                         <el-option
                           v-for="dict in dict.type.work_order_evaluation"
                           :key="dict.value"
                           :label="dict.label"
                           :value="dict.value"
                         />
                       </el-select>
                     </el-form-item>
              </el-col>
+              <el-col :span="8">
+                <el-form-item class="butt bnjle">
+                  <el-button size="mini" type="primary" style="background-color: #1BDD96; border: #1BDD96;"   @click="handleQuery">搜索</el-button>
+                  <el-button size="mini"  @click="resetQuery">重置</el-button>
+                </el-form-item>
+              </el-col>
+          </el-row>
+
+        </el-form>
+      </div>
+      </div>
+
+
+      <div class="casr">
+              <el-row :gutter="10" class="mb8">
+                <!-- <el-col :span="1.5">
+                  <div style="font-weight: bold;font-size: 14px;color: #343434; display: flex;align-items: center;">
+                    当夜全选
+                  </div>
+                </el-col> -->
+               <el-col :span="1.5">
+                  <el-button
+                    type="primary"
+                    plain
+                    size="mini"
+                    @click="handleAdd"
+                    v-hasPermi="['wuYe:repair:add']"
+                  >添加</el-button>
+                </el-col>
+                <!-- <el-col :span="1.5">
+                  <el-button
+                    type="success"
+                    plain
+                    size="mini"
+                    :disabled="single"
+                    @click="handleUpdate"
+                    v-hasPermi="['system:post:edit']"
+                  >修改</el-button>
+                </el-col>
+                <el-col :span="1.5">
+                  <el-button
+                    type="danger"
+                    plain
+                    size="mini"
+                    :disabled="multiple"
+                    @click="handleDelete"
+                    v-hasPermi="['system:post:remove']"
+                  >删除</el-button>
+                </el-col> -->
+                <el-col :span="1.5">
+                  <el-button
+                    type="warning"
+                    plain
+                    size="mini"
+                    @click="handleExport"
+                    v-hasPermi="['wuYe:repair:export']"
+                  >导出</el-button>
+                </el-col>
+                <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+              </el-row>
+              <div class=" infinite-list" :style="dynamicStyle">
+                <el-row :gutter="10" v-if="infoList.length != 0" style="width: 100%;margin-left: 0;">
+                  <el-col :span="6" v-for="(item,idx) in infoList" :key="idx">
+                    <div class="worklist" style="background-color: #fff;box-shadow: 0px 0px 10px 0px #CDCDCD;border-radius: 4px;margin-bottom: 10px;" >
+                    	<div class="listtop" style="position: relative;">
+                    		<div class="name" :class="{'bga':item.type==2,'bgb':item.type==3,'bgc':item.type==4,}">{{item.rttie}}</div>
+                    		<div class="flex1">
+                    			<div class="namea">{{item.unitName == null ? '暂无数据' : item.unitName}}</div>
+                    			<div class="adrlist">
+                    				<div class="noico"><img :src="gdicob" class="imga"></img></div>
+                    				<div class="notit">{{item.personName == null ? '暂无数据' : item.personName}}
+                            <span style="margin-left: 10px;">{{item.phonenumber == null ? '暂无数据' : item.phonenumber}}</span></div>
+                    			</div>
+                    			<div class="adrlist">
+                    				<div class="noico"><img :src="gdicoa" class="imgc"></img></div>
+                            <el-tooltip class="item" effect="dark" :content="item.detailedAddress == null ? '暂无数据' : (item.city + item.region +item.detailedAddress)" placement="top-start">
+                    				<div class="notit over co9B" >{{item.detailedAddress == null ? '暂无数据' : (item.city + item.region +item.detailedAddress)}}</div>
+                            </el-tooltip>
+                    			</div>
+                    		</div>
+                        <div style="width: 90% ;height: 1px; background-color: #f1f1f1;position: absolute;bottom: 0;">
+
+                        </div>
+                    		<!-- <img :src='phone' class="phone"  @click.stop="getPhone()"></img> -->
+                    	</div>
+                    	<div class="collapse" @click.stop="" style="background-color: #F4F7FF;" >
+                        <el-tooltip class="item" effect="dark" content="暂无数据" placement="top-start">
+                    						<div class="chtop flexc" v-if="item.serviceProgress ==0">
+                    							<div style="width: 40%;" class="over">暂无数据</div>
+                    							<div style="width: 60%;" class="over">暂无数据接下了该客户的工单</div>
+                    						</div>
+                                <div class="chtop flexc" v-if="item.serviceProgress !=0">
+                                	<div style="width: 40%;" class="over">{{item.takeTime}}</div>
+                                	<div style="width: 60%;" class="over">{{item.responsibleName + item.responsiblePhone}} 接下了该客户的工单</div>
+                                </div>
+                        </el-tooltip>
+                    					<div class="chstep">
+                    						<div class="flexc mb8">
+                    							<div class="imgs"><img :src="wicoa" class="imga"></img></div>
+                    							<div class="tit">工单编号:</div>
+                    							<div class="txt">{{item.orderId == null ? '暂无数据' : item.orderId}}</div>
+                    							<img :src="code" class="code"></img>
+                    						</div>
+                    						<div class="flexc mb8">
+                    							<div class="imgs"><img :src="wicob" class="imga"></img></div>
+                    							<div class="tit">创建时间:</div>
+                    							<div class="txt">{{item.createTime == null ? '暂无数据' : item.createTime}}</div>
+                    						</div>
+                    						<div class="flexc mb8">
+                    							<div class="imgs"><img :src="wicoc" class="imgb"></img></div>
+                    							<div class="tit">服务类型:</div>
+                    							<div class="txt" :class="{'co77':item.type==1,'co06':item.type==2,'cofb':item.type==3,'coaf':item.type==4,'coafs':item.type==5,'coafss':item.type==6,}">
+                                    <dict-tag :options="dict.type.work_order_type" :value="item.type"/></div>
+                    						</div>
+                                <div class="flexc mb8">
+                                	<div class="imgs"><img :src="wicoc" class="imgb"></img></div>
+                                	<div class="tit">工单状态:</div>
+                                	<div class="txt" >
+                                    <dict-tag :options="dict.type.service_progress" :value="item.serviceProgress"/></div>
+                                </div>
+                    					</div>
+                    	</div>
+                      <div class="bortt tongty" style="justify-content: space-between; margin-top: 0;">
+                         <p  v-if="item.serviceProgress == 0" v-hasPermi="['work:info:jdq']"   style="cursor: pointer;color: #28C529;" @click="daifeng(item)" ><span  >派单</span></span>  </p>
+                        <p  v-if="item.serviceProgress == 0" v-hasPermi="['work:info:jd']" style="cursor: pointer;" @click="jiedan(item)"><span  >接单</span></span>  </p>
+                         <p  v-if="item.serviceProgress == 1" v-hasPermi="['work:info:add']"   style="cursor: pointer;color: #28C529;" @click="tianxie(item)" ><span>填写工单</span></span>  </p>
+                         <p style="cursor: pointer;" @click="handleUpdatef(item)"><span  >查看</span></span>  </p>
+                        <!-- <span @click="handleUpdatef(item)">查看</span> -->
+                        <p  v-hasPermi="['work:info:remove']" style="color:red;cursor: pointer;" @click="handleDelete(item)">删除  </p>
+                      </div>
+
+                    </div>
+                  </el-col>
+                </el-row>
+                <div style="margin-top: 20px;display: flex;justify-content: center;align-items: center;" v-if="infoList.length ==0">
+                   <img   src="../../../assets/images/zwshjbig.png" alt="" style="">
+                </div>
+              </div>
+      </div>
+
+
+      <pagination
+        v-show="total>0"
+        :total="total"
+        :page.sync="queryParams.pageNum"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
+      />
+    </div>
+
+    <!-- 添加或修改岗位对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="640px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-row>
+          <!-- <el-col :span="24" v-if="isnusle == 0">
+            <el-form-item label="报修标题" prop="repairTitle">
+                      <el-input v-model="form.repairTitle" placeholder="请输入报修标题,简要描述报修内容" />
+            </el-form-item>
+
+          </el-col> -->
+          <el-col :span="12" v-if="isnusle == 0">
+             <el-form-item label="手机号码" prop="phoneNumber">
+                      <el-input v-model="form.phoneNumber" placeholder="请输入报修用户手机号码" />
+             </el-form-item>
+          </el-col>
+          <el-col :span="12" v-if="isnusle == 0">
+            <el-form-item label="门牌号" prop="houseAddress">
+                 <el-select filterable  v-model="form.houseAddress" placeholder="请选择门牌号" clearable>
+                   <el-option
+                    @click.native="itnegadd(dict)"
+                     v-for="dict in houseInfoLise"
+                     :key="dict.houseId"
+                     :label="dict.detailedAddress"
+                     :value="dict.houseId"
+                   />
+                 </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24" v-if="isnusle == 0">
+             <el-form-item label="报修详情" prop="repairDetails">
+                      <el-input v-model="form.repairDetails" type="textarea" placeholder="请输入内容" />
+                    </el-form-item>
+          </el-col>
+          <el-col :span="12" v-if="isnusle == 0">
+           <el-form-item label="报修类别" prop="maintenanceCategory">
+                     <el-select v-model="form.maintenanceCategory" placeholder="请选择报修类别">
+                       <el-option
+                         v-for="dict in dict.type.baoxiutype"
+                         :key="dict.value"
+                         :label="dict.label"
+                         :value="dict.value"
+                       ></el-option>
+                     </el-select>
+                   </el-form-item>
+          </el-col>
+          <el-col :span="12" v-if="isnusle == 0">
+            <el-form-item label="报修时间" prop="repairTime">
+                      <el-date-picker
+                      style="width:100%"
+                        v-model="form.repairTime"
+                        type="datetime"
+                        value-format="yyyy-MM-dd HH:mm:ss"
+                        placeholder="请选择报修时间">
+                      </el-date-picker>
+                    </el-form-item>
+          </el-col>
+          <el-col :span="24" v-if="isnusle == 0">
+            <el-form-item label="备注" prop="remark">
+              <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="24" v-if="isnusle == 2">
+             <el-form-item label="维修详情" prop="repairCompletionDetails">
+                      <el-input v-model="form.repairCompletionDetails" type="textarea" placeholder="请输入内容" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="24" class="unimg" v-if="isnusle == 1" >
+            <el-form-item label="上门拍照" prop="visitPhoto">
+              <image-upload v-model="form.visitPhoto"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24" class="unimg" v-if="isnusle == 2">
+            <el-form-item label="结束拍照" prop="completionPhoto">
+              <image-upload v-model="form.completionPhoto"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+
+
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog title="指派" :visible.sync="openz" width="640px" append-to-body>
+      <el-form ref="formz" :model="formz" :rules="rulesz" label-width="80px">
+        <el-row>
+          <el-col :span="24" >
+            <el-form-item label="选择人员" prop="responsibleName">
+                      <el-select style="width: 100%;" v-model="formz.responsibleName" placeholder="请选择选择人员">
+                        <el-option
+                        @click.native="xuanse(dict)"
+                          v-for="dict in staffManageList"
+                          :key="dict.userId"
+                          :label="dict.nickName "
+                          :value="dict.userId"
+                        ></el-option>
+                      </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFormz">确 定</el-button>
+        <el-button @click="cancelz">取 消</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog title="查看详情" :visible.sync="openzx" width="640px" append-to-body class="boet">
+      <div  class="worklist" style="" >
+        <div>
+          <div style="margin-top: 15px; padding: 20px;" class="xiahgw">
+            <el-steps :active="actjse" simple>
+              <el-step title="待接单" icon="el-icon-upload2"></el-step>
+              <el-step title="进行中" icon="el-icon-refresh"></el-step>
+              <el-step title="已完成" icon="el-icon-check"></el-step>
+              <el-step title="已评价" icon="el-icon-check"></el-step>
+            </el-steps>
+          </div>
+        </div>
+      	<div class="listtop">
+      		<div class="name" style="border-radius: 5px;" :class="{'bga':chakn.type==2,'bgb':chakn.type==3,'bgc':chakn.type==4,}">{{chakn.titke}}</div>
+      		<div class="flex1">
+            <div class="adrlist">
+            	<div class="notit" style="font-weight: bold;font-size: 16px;color: #222327;">{{chakn.personName ==null? '暂无数据' : chakn.personName}}
+              <span style="font-size: 14px; font-weight: 400;">{{chakn.phonenumber ==null? '暂无数据' : chakn.phonenumber}}</span></div>
+            </div>
+      			<div class="namea" style="color: #666666; font-size: 15px;">{{chakn.unitName ==null? '暂无数据' : chakn.unitName}}</div>
+      		</div>
+      		<!-- <img :src='phone' class="phone"  @click.stop="getPhone()"></img> -->
+      	</div>
+      	<div class="collapse" @click.stop="" style="border-top: 1px  solid #E6E6E6;">
+      					<div class="chstep" style="padding-top: 20px;">
+      						<div class="flexc mb8">
+      							<div class="imgs"><img :src="wicoa" class="imga"></img></div>
+      							<div class="tit" style="font-size: 14px;color: #AAAAAA;">工单编号:</div>
+      							<div class="txt" style="font-size: 14px;color: #666666;">{{chakn.orderId ==null? '暂无数据' : chakn.orderId}}</div>
+      							<img :src="code" class="code"></img>
+      						</div>
+      						<div class="flexc mb8">
+      							<div class="imgs"><img :src="wicob" class="imga"></img></div>
+      							<div class="tit" style="font-size: 14px;color: #AAAAAA;">创建时间:</div>
+      							<div class="txt" style="font-size: 14px;color: #666666;">{{chakn.createTime ==null? '暂无数据' : chakn.createTime}}</div>
+      						</div>
+                  <div class="flexc mb8">
+                  	<div class="imgs"><img :src="wicob" class="imga"></img></div>
+                  	<div class="tit" style="font-size: 14px;color: #AAAAAA;">客户地址:</div>
+                  	<div class="txt" style="font-size: 14px;color: #666666;">{{chakn.detailedAddress ==null? '暂无数据' : chakn.detailedAddress}}</div>
+                  </div>
+                  <div class="flexc mb8">
+                  	<div class="imgs"><img :src="wicoc" class="imgb"></img></div>
+                  	<div class="tit">服务类型:</div>
+                  	<div class="txt" :class="{'co77':chakn.type==1,'co06':chakn.type==2,'cofb':chakn.type==3,'coaf':chakn.type==4,'coafs':chakn.type==5,'coafss':chakn.type==6,}">
+                      <dict-tag :options="dict.type.work_order_type" :value="chakn.type"/></div>
+                  </div>
+      					</div>
+      	</div>
+        <div class="collapse" @click.stop="" style="border-top: 1px  solid #E6E6E6;" v-if="chakn.workOrderFjgd!=null">
+        			<div class="bsers" style="padding-top: 20px;" >
+        			 <div>
+        			   <p> <img src="../../../assets/images/wenjian.png" alt="" style="width: 20px;height: 20px;"></p>
+        			   <p>{{chakn.workOrderFjgd.name}}</p>
+        			 </div>
+        			  <div>
+        			              <!-- + baseUrl -->
+        			              <p @click="yuangl(defaultSettings.urls  + item.url)" style="color: #658CF8;margin-right: 10px;font-size: 14px;"><img src="../../../assets/images/icon_xq_yl.png" alt="" style="width: 15px;height: 10px;">预览</p>
+        			              <p @click="downloadFileg(defaultSettings.urls  + item.url,item.name)" style="color: #658CF8; font-size: 14px;"><img src="../../../assets/images/icon_xq_xz.png" alt=""  style="width: 15px;height: 15px;">下载</p>
+        			            </div>
+        			</div>
+
+        </div>
+
+
+      </div>
+      <div style="background: #FFFFFF;border-radius: 10px;">
+        <div class="baae">
+          <p :class="isshoe == 0?'activeq' : ''" @click="iskeh(0)">客户需求</p>
+          <p v-if="chakn.serviceProgress == 3" :class="isshoe == 1?'activeq' : ''" @click="iskeh(1)">客户评价</p>
+        </div>
+        <div style="padding: 20px;font-size: 14px;color: #161616;line-height: 30px;" v-if="isshoe == 0">
+         {{chakn.demand ==null? '暂无数据' : chakn.demand}}
+
+        </div>
+        <div class="bsers" v-for = "(item,index) in  chakn.workOrderFjXqList" :key="index" v-if="isshoe == 0">
+         <div>
+           <p> <img src="../../../assets/images/wenjian.png" alt="" style="width: 20px;height: 20px;"></p>
+           <p>{{item.name}}</p>
+         </div>
+          <div>
+            <!-- + baseUrl -->
+            <p @click="yuangl(defaultSettings.urls  + item.url)" style="color: #658CF8;margin-right: 10px;font-size: 14px;"><img src="../../../assets/images/icon_xq_yl.png" alt="" style="width: 15px;height: 10px;">预览</p>
+            <p @click="downloadFile(defaultSettings.urls  + item.url,item.name)" style="color: #658CF8; font-size: 14px;"><img src="../../../assets/images/icon_xq_xz.png" alt=""  style="width: 15px;height: 15px;">下载</p>
+          </div>
+        </div>
+        <div style="padding: 20px;font-size: 14px;color: #161616;line-height: 30px;" v-if="isshoe == 1">
+          <div style="display: flex; ">服务评价  <div style="color: #00B278;margin-left: 10px;"><dict-tag :options="dict.type.work_order_type" :value="chakn.type"/></div></div>
+          <div style="padding: 20px;font-size: 14px;color: #161616;line-height: 30px;" v-if="isshoe == 1">
+           {{chakn.evaluationContent ==null? '暂无数据' : chakn.evaluationContent}}
+          </div>
+          <div style="border-top:  1px solid #E6E6E6;font-size: 14px;color: #AAAAAA;" v-if="isshoe == 1">
+                评价于 {{chakn.updateTime}}
+          </div>
+        </div>
+
+        <div class="bortt tongty" style="justify-content: space-between; margin-top: 0;" >
+           <p  v-if="chakn.serviceProgress == 0" v-hasPermi="['work:info:jdq']"   style="cursor: pointer;color: #28C529;" @click="daifeng(chakn)" ><span  >派单</span></span>  </p>
+           <p  v-if="chakn.serviceProgress == 0" v-hasPermi="['work:info:jd']" style="cursor: pointer;" @click="jiedan(chakn)"><span  >接单</span></span>  </p>
+            <p  v-if="chakn.serviceProgress == 1" v-hasPermi="['work:info:add']"   style="cursor: pointer;color: #28C529;" @click="tianxie(chakn)" ><span  >填写</span></span>  </p>
+            <!-- <p style="cursor: pointer;" @click="handleUpdatef(chakn)"><span  >查看</span></span>  </p> -->
+           <!-- <span @click="handleUpdatef(item)">查看</span> -->
+           <p  v-hasPermi="['work:info:remove']" style="color:red;cursor: pointer;" @click="handleDelete(chakn)">删除  </p>
+        </div>
+
+
+      </div>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+// import 'videojs-flash'
+import { listInfo, getInfo, delInfo, addInfo, updateInfo,jd,listStaffManageNoPage } from "@/api/system/info"
+const defaultSettings = require("@/settings.js");
+import download from 'downloadjs'
+export default {
+  name: "Repair",
+    dicts: ['baoxiutype', 'work_order_evaluation', 'shelf_life', 'work_order_type', 'sys_yes_no', 'service_progress', 'order_placement'],
+  data() {
+    return {
+      list:[{},{name:'嘉欣医疗用品有限公司',type:'2'},{name:'嘉欣医疗用品有限公司',type:'3'},{name:'嘉欣医疗用品有限公司',type:'4'}],
+      gdicoa:require('../../../assets/images/gdicoa.png'),
+      gdicob:require('../../../assets/images/gdicob.png'),
+      gdicoc:require('../../../assets/images/gdicoc.png'),
+      phone:require('../../../assets/images/phone.png'),
+      wicoa:require('../../../assets/images/wicoa.png'),
+      wicob:require('../../../assets/images/wicob.png'),
+      wicoc:require('../../../assets/images/wicoc.png'),
+      code:require('../../../assets/images/code.png'),
+      openzx:false,
+      actjse:1,
+      ite:{
+        name:'嘉欣医疗用品有限公司',type:'1'
+      },
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 物业报修表格数据
+       infoList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      openz:false,
+      houseInfoLise:[],
+      defaultSettings:defaultSettings,
+      baseUrl: process.env.VUE_APP_BASE_API,
+      // 查询参数
+      queryParams: {
+                pageNum: 1,
+                       pageSize: 10,
+                       unitName: null,
+                       provinceId: null,
+                       province: null,
+                       cityId: null,
+                       city: null,
+                       regionId: null,
+                       region: null,
+                       detailedAddress: null,
+                       lon: null,
+                       lat: null,
+                       personName: null,
+                       phonenumber: null,
+                       sex: null,
+                       type: null,
+                       demand: null,
+                       isSignature: null,
+                       evaluation: null,
+                       evaluationContent: null,
+                       serviceProgress: 3,
+                       orderPlacement: null,
+                       responsibleId: null,
+                       responsibleName: null,
+                       projectName: null,
+                       shelfLife: null,
+                       isCharge: null,
+                       totalCost: null,
+                       totalCostDx: null,
+                       loginIp: null,
+                       loginDate: null,
+                       delFlag:'N'
+      },
+      // 表单参数
+      form: {},
+      formz: {},
+      // 表单校验
+      rules: {
+        repairTime: [
+                  { required: true, message: "不能为空", trigger: "blur" }
+                ],
+        repairDetails: [
+                  { required: true, message: "不能为空", trigger: "blur" }
+                ],
+        maintenanceCategory: [
+                  { required: true, message: "不能为空", trigger: "blur" }
+                ],
+
+        phoneNumber: [
+                 { required: true, message: "不能为空", trigger: "blur" },
+                 {
+                   pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+                   message: "请输入正确的手机号码",
+                    trigger: "blur"
+                   }
+               ],
+
+      },
+      rulesz: {
+        responsibleName: [
+                  { required: true, message: "不能为空", trigger: "blur" }
+                ],
+
+      },
+      activeName:'first',
+      videoState: false, // 视频播放状态
+      poster:true,
+      controls:true,
+      videoData:{},
+       player: null,
+       isshoe:0,
+       isnusle:1,
+       staffManageList: [],
+       tableMaxHeight:'200',
+       isryr:true,
+       chakn:{}
+
+    };
+  },
+  computed: {
+    dynamicStyle() {
+      return {
+        overflow:'auto',
+        height:  this.tableMaxHeight + 'px',
+        paddingTop:'10px'
+      }
+    }
+    },
+  created() {
+    this.getList()
+    this.getstaffManageList()
+    console.log(this.$store.getters)
+  window.onresize = () => {
+  	      this.changeTableMaxHeight()
+  	    }
+  	    this.changeTableMaxHeight()
+  },
+  mounted() {
+  	window.onresize = () => {
+  	          this.changeTableMaxHeight()
+  	        }
+  	        this.changeTableMaxHeight()
+  },
+  beforeDestroy() {
+      if (this.player) {
+        this.player.dispose()
+      }
+    },
+  methods: {
+    iskeh(row){
+     this.isshoe = row
+    },
+    getListhouvr() {
+       listNoPage().then(response => {
+         this.houseInfoLise  = response.data;
+       });
+     },
+    /** 查询岗位列表 */
+    getList() {
+      this.loading = true;
+      listInfo(this.queryParams).then(response => {
+        this.infoList  = response.rows;
+        this.infoList .filter(rou=>{
+          rou.isnum = false
+          rou.isryr = true
+          rou.rttie=rou.unitName.substr(0,2)
+        })
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    getstaffManageList(row){
+      let bsdf={'staffCategory':2}
+      listStaffManageNoPage().then(response => {
+        this.staffManageList  = response.rows;
+        // this.staffManageList.filrter(rout=>{
+        //   rout.lable = rout.staffName + '<p>'
+        // })
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 获取当前时间
+    gettime(){
+      let nowDate = new Date()
+      				  let date = {
+      				    year: nowDate.getFullYear(),
+      				    month: nowDate.getMonth() + 1,
+      				    date: nowDate.getDate()
+      				  }
+
+      				   if (parseInt(date.date) < 10) {
+      				      date.date = '0' + date.date
+      				    }
+                  let nghe = date.year + '-' + date.month + '-' + date.date
+      				  return nghe
+
+    },
+    cancelz() {
+      this.openz = false;
+    },
+    gettimeg(){
+      let nowDate = new Date()
+                //获取当前时间并打印
+                        var _this = this;
+                        let sgse=''
+                      let yy = new Date().getFullYear();
+                      let mm = new Date().getMonth()+1;
+                      let dd = new Date().getDate();
+                      let hh = new Date().getHours();
+                      let mf = new Date().getMinutes()<10 ? '0'+new Date().getMinutes() : new Date().getMinutes();
+                      let ss = new Date().getSeconds()<10 ? '0'+new Date().getSeconds() : new Date().getSeconds();
+                       sgse = yy+'-'+mm+'-'+dd+' '+hh+':'+mf+':'+ss;
+                    return  sgse
+
+
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+                     unitName: null,
+                     provinceId: null,
+                     province: null,
+                     cityId: null,
+                     city: null,
+                     regionId: null,
+                     region: null,
+                     detailedAddress: null,
+                     lon: null,
+                     lat: null,
+                     personName: null,
+                     phonenumber: null,
+                     sex: null,
+                     type: null,
+                     demand: null,
+                     isSignature: null,
+                     evaluation: null,
+                     evaluationContent: null,
+                     serviceProgress: null,
+                     orderPlacement: null,
+                     responsibleId: null,
+                     responsibleName: null,
+                     projectName: null,
+                     shelfLife: null,
+                     isCharge: null,
+                     totalCost: null,
+                     totalCostDx: null,
+                     loginIp: null,
+                     loginDate: null,
+            };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+          this.ids = selection.map(item => item.orderId)
+          this.single = selection.length!==1
+          this.multiple = !selection.length
+        },
+     /** 新增按钮操作 */
+        handleAdd() {
+          this.reset()
+          this.open = true
+          this.title = "添加工单信息"
+        },
+        /** 修改按钮操作 */
+        handleUpdate(row) {
+          this.reset()
+          const orderId = row.orderId || this.ids
+          getInfo(orderId).then(response => {
+            this.form = response.data
+            this.open = true
+            this.title = "查看工单信息"
+          })
+        },
+    handleUpdatef(row){
+      this.reset()
+      const orderId = row.orderId || this.ids
+      getInfo(orderId).then(response => {
+        this.chakn = response.data
+        if(response.data.personName != null && response.data.personName !=''){
+          this.chakn.titke = response.data.personName.substr(0,1)
+        }else{
+          this.chakn.titke = '无'
+        }
+        this.actjse = this.chakn.serviceProgress - 0
+        this.openzx = true
+        // this.title = "查看工单信息"
+      })
+
+    },
+    // 填写工单价格
+    tianxie(row){
+      this.$router.push({
+        path: '/gongdanxq',
+        query: {
+        	'id':row.orderId,
+        }
+      })
+    },
+    // 接单
+    jiedan(row){
+      let snge={'orderId':row.orderId,'orderPlacement':2,'responsibleId':this.$store.getters.id,'responsibleName':this.$store.getters.nickName,'responsiblePhone':this.$store.getters.phonenumber}
+      jd(snge).then(response => {
+        this.$modal.msgSuccess("操作成功");
+        this.openz = false;
+        this.getList();
+      });
+    },
+    // 待分配
+    daifeng(row){
+       // 待分配
+       // this.formz.maintenanceCategory = row.maintenanceCategory
+       this.openz = true
+       this.formz.orderId = row.orderId
+       this.formz.orderPlacement = 1
+    },
+    // 待分配提交
+    submitFormz(){
+      this.$refs["formz"].validate(valid => {
+        if (valid) {
+          jd(this.formz).then(response => {
+            this.$modal.msgSuccess("操作成功");
+            this.openz = false;
+            this.getList();
+          });
+        }
+        })
+
+    },
+    // 下载文件
+    downloadFile(row,item){
+      // window.open(row, );
+      if (!/\.(pdf|PDF|png|PNG|jpg|JPG)$/.test(row)) {
+              // 不是pdf格式
+               window.location.href = row;
+              } else  {
+              download(row)
+              }
+
+
+    },
+    // 下载工单
+    downloadFileg(row,item){
+      // window.open(row, );
+      // download(row)
+     window.location.href = row;
+    },
+    // 预览文件
+    yuangl(row){
+      if (!/\.(pdf|PDF|png|PNG|jpg|JPG)$/.test(row)) {
+              // 不是pdf格式
+                window.open(
+                  " https://view.officeapps.live.com/op/view.aspx?src=" + row,
+                  "_blank"
+                );
+              } else  {
+              // pdf 格式
+               window.open(row, '_blank');
+              }
+
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+                  if (this.form.repairId != null) {
+                    updateInfo(this.form).then(response => {
+                      this.$modal.msgSuccess("修改成功");
+                      this.open = false;
+                      this.getList();
+                    });
+                  } else {
+                    this.form.userId = this.$store.getters.userId
+                    addInfo(this.form).then(response => {
+                      this.$modal.msgSuccess("新增成功");
+                      this.open = false;
+                      this.getList();
+                    });
+                  }
+                  }
+      });
+    },
+    /** 删除按钮操作 */
+        handleDelete(row) {
+          const repairIds = row.orderId  || this.ids;
+          delInfo(repairIds).then(response => {
+            this.$modal.msgSuccess("删除成功");
+            this.getList();
+          });
+        },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/info/export', {
+        ...this.queryParams
+      }, `info_${new Date().getTime()}.xlsx`)
+    },
+
+      handleClick(){
+
+      },
+
+    xuanse(val){
+      console.log(val)
+     this.formz.responsibleName = val.nickName
+     this.formz.responsibleId = val.userId
+     this.formz.responsiblePhone = val.phonenumber
+
+    },
+    itnegadd(item){
+      this.form.houseId = item.houseId
+      this.form.houseAddress = item.detailedAddress
+      console.log(item)
+    },
+    // 获取屏幕高度
+    showFilterForm () {
+          this.filterActive = !this.filterActive
+          this.changeTableMaxHeight()
+        },
+
+        changeTableMaxHeight () {
+          let height = document.body.offsetHeight // 网页可视区域高度
+          // if (this.filterActive) {
+          //   this.tableMaxHeight = height - 320
+          // } else {
+            this.tableMaxHeight = height - 150
+          // }
+          console.log(height)
+        }
+
+  }
+};
+</script>
+<style  lang="scss">
+  .boet{
+    .el-dialog__body{
+      background-color: #f8f8f8;
+    }
+  }
+  .xiahgw{
+    .el-step__head.is-process{
+      color:#00B278;
+      border-color:#00B278;
+    }
+    .el-step__title.is-process{
+      color:#00B278;
+    }
+    .el-step__head.is-finish{
+      color:#00B278;
+      border-color:#00B278;
+    }
+    .el-step__title.is-finish{
+       color:#00B278;
+    }
+  }
+  .ingsek{
+   .el-carousel__container{
+  	 height: 150px;
+   }
+   .el-carousel--horizontal{
+     width: 100%;
+   }
+  }
+  .unimg{
+    .el-upload--picture-card{
+      width:102px;
+      height: 102px;
+      line-height: 102px;
+    }
+  }
+
+  .bnjle{
+    margin-left: 20px;
+  }
+  .butt{
+    .el-button--small{
+      padding: 9px 23px !important;
+      font-size: 14px;
+    }
+  }
+  .casr{
+    .el-tabs__item.is-active{
+      color: #196CFF;
+    }
+    .el-tabs--card > .el-tabs__header .el-tabs__item{
+      padding: 0  30px !important;
+    }
+  }
+  .el-table .el-table__header-wrapper th{
+    background-color:#F5F6F8;
+    color:#343434;
+  }
+  .el-table{
+    color:#343434;
+  }
+ // ::-webkit-scrollbar {
+ //   width: 7px; /* 滚动条宽度 */
+ // }
+ // ::-webkit-scrollbar-track {
+ //   background: #f1f1f1; /* 滚动条轨道背景色 */
+ // }
+ // ::-webkit-scrollbar-thumb {
+ //  background: #999; /* 滚动条滑块背景色 */
+ //   border-radius: 10px; /* 滚动条滑块圆角 */
+ // }
+ // ::-webkit-scrollbar-thumb:hover {
+ //   // background: red; /* 滚动条滑块悬停时的背景色 */
+ // }
+</style>
+<style scoped lang="scss">
+  // .flexc{
+  //   display: flex;
+  //   justify-content: space-between;
+  // }
+  	.carlist{background: #FFFFFF;border-radius: 10px;margin-bottom: 14px;
+  		.ctop{border-bottom: 1px solid #E5E5E5;padding:13px 12px;
+  			.imgs{width: 20px;height: 21px;margin-right: 15px;}
+  			.tit{font-size: 16px;color: #272727;font-weight: bold;margin-right: 7px;overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;}
+  			.txt{font-weight: 500;font-size: 14px;
+  				&.ca{color: #3565ED;}
+  				&.cb{color: #FE5A0E;}
+  				&.cc{color: #28C529;}
+  			}
+  			.txta{font-weight: 500;font-size: 14px;color: #AAAAAA;}
+  			.num{font-size: 14px;color: #AAAAAA;}
+  		}
+  		.btn{height: 17px;border-radius: 9px;display: flex;align-items: center;justify-content: center;padding: 0 5px;font-size:12px;margin-right: 12px;
+  			&.btna{border: 1px solid #06C770;color: #06C770;}
+  			&.btnb{border: 1px solid #3565ED;color: #3565ED;}
+  			&.btnc{border: 1px solid #FE5A0E;color: #FE5A0E;}
+  			&.btnbga{border: 1px solid #0156FE;color: #3565ED;background: #DFEAFF;height: 18px;}
+  			&.btnbgb{border: 1px solid #C1C1C1;color: #666666;background: #F1F1F1;height: 18px;}
+  			&.btnbgc{border: 1px solid #FE5A0E;color:#FE5A0E;background:#FFEEE6;height: 18px;}
+  		}
+  		.clists{padding: 12px 12px 4px;
+  			.clist{font-weight: 500;margin-bottom: 8px;
+  	font-size: 13px;color: #272727;display: flex;line-height: 17px;
+  				.tit{font-size: 14px;color: #AAAAAA;flex: 0 0 auto;margin-right: 8px;text-align-last: justify;}
+  				.imgas{display: flex;align-items: center;flex-wrap: wrap;
+  					image{width: 71px;height: 71px;margin-right: 15px;margin-top:4px;}
+  				}
+  			}
+  			.w50{
+  				.clist{width: 50%;}
+  			}
+  		}
+  	}
+  	.houselist{
+  		.clists{padding-bottom: 1px !important;}
+  		.clist{margin-bottom: 11px !important;}
+  	}
+  .goe{
+    p{
+      margin: 0;
+      font-weight: 800;
+      font-size: 16px;
+      color: #161616;
+      margin-top: 10px;
+      margin-bottom: 3px;
+      padding: 0 10px;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      display:-webkit-box; //作为弹性伸缩盒子模型显示。
+      -webkit-box-orient:vertical; //设置伸缩盒子的子元素排列方式--从上到下垂直排列
+      -webkit-line-clamp:1; //显示的行
+    }
+    p:nth-child(2){
+
+    }
+  }
+  .ingwe{
+    border: 2px solid #196CFF;
+  }
+  .renyuangs{
+    p{
+      font-weight: 500;
+      font-size: 14px;
+      color: #161616;
+      padding: 0;
+    }
+  }
+  .tongty{
+    display: flex;
+    align-items: center;
+  }
+  .bortt{
+    border-top: 1px solid #DADADA;
+    margin-top: 15px;
+
+    p{
+      margin: 0;
+      font-weight: bold;
+      font-size: 14px;
+      color: #5F8BF4;
+      width:50%;
+      padding: 10px;
+      text-align: center;
+    }
+  }
+  .xiangque{
+    overflow: hidden;
+    text-overflow: ellipsis;
+    display:-webkit-box; //作为弹性伸缩盒子模型显示。
+    -webkit-box-orient:vertical; //设置伸缩盒子的子元素排列方式--从上到下垂直排列
+    -webkit-line-clamp:2; //显示的行
+    height: 46px;
+  }
+  .buzhout{
+    margin-top: 20px;
+    p{
+      margin: 0;
+      font-weight: bold;
+      font-size: 16px;
+      color: #666666;
+      span{
+        font-size: 14px;
+        font-weight: 400;
+      }
+    }
+    .p{
+      font-weight: 500;
+      font-size: 14px;
+      color: #666666;
+      margin-top: 10px;
+      padding-left: 22px;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      display:-webkit-box; //作为弹性伸缩盒子模型显示。
+      -webkit-box-orient:vertical; //设置伸缩盒子的子元素排列方式--从上到下垂直排列
+      -webkit-line-clamp:1; //显示的行
+      position: relative;
+
+    }
+    .p:before{
+      position: absolute;
+      display: inline-block;
+      content: "";
+      width: 1px;
+      height: 30px;
+      background-color: #C1C1C1;
+      top:0;
+      left:6px;
+    }
+    .ph{
+      font-weight: 500;
+      font-size: 14px;
+      color: #666666;
+      margin-top: 10px;
+      padding-left: 22px;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      display:-webkit-box; //作为弹性伸缩盒子模型显示。
+      -webkit-box-orient:vertical; //设置伸缩盒子的子元素排列方式--从上到下垂直排列
+      -webkit-line-clamp:1; //显示的行
+      position: relative;
+
+    }
+    .pb:before{
+      			display: inline-block;
+      			content: "";
+      			width: 12px;
+      			height: 12px;
+      			border-radius: 50%;
+            background-color: #C1C1C1;
+            margin-right: 10px;
+    }
+    .jisdei{
+      position: relative;
+    }
+    .jisdei:before{
+      position: absolute;
+      display: inline-block;
+      content: "";
+      width: 1px;
+      height: 98px;
+      background-color: #C1C1C1;
+      top:0;
+      left:6px;
+      // margin-right: 10px;
+    }
+    .acft{
+      color: #0156FE ;
+    }
+    .acft:before{
+      display: inline-block;
+        content: "";
+                  background:url("../../../assets/images/icon_htgl_lc_selected.png") no-repeat;
+                  background-size: 12px 12px;
+            			width: 12px;
+            			height: 12px;
+                  margin-right: 10px;
+    }
+
+  }
+  .het{
+    height: 450px;
+  }
+.work{}
+.flex1{flex: 1;}
+.over{overflow: hidden;white-space: nowrap;text-overflow: ellipsis;}
+.flexc{display: flex;align-items: center;}
+.co9B{color: #9B9B9B !important;width: 90%;}
+.mb8{margin-bottom: 18px;}
+	.worklist{background: #FFFFFF;border-radius: 10px;overflow: hidden;margin-bottom: 12px;
+		.listtop{display: flex;padding: 12px 12px 8px;
+			.name{width: 35px;height: 35px;border-radius: 50%;font-weight: bold;text-align: center;line-height: 35px;flex: 0 0 auto;margin-right: 11px;font-size: 13px;background: #E4F2FA;color: #009FE8;
+				&.bga{background: #ECF9F3;color: #00B278;}
+				&.bgb{background: #FFF4E1;color: #FFB132;}
+				&.bgc{background: #E0E0F1;color: #AF88B8;}
+
+			}
+			.namea{font-weight: bold;font-size: 15px;color: #222327;margin-bottom: 5px;}
+			.phone{width: 30px;height: 30px;margin-left: 11px;flex: 0 0 auto;}
+		}
+		.chtop{font-weight: 500;font-size: 12px;min-height: 40px;padding-left: 13px;box-sizing: border-box;padding: 8px 13px 8px 13px;color: #999999;
+			text{margin-right: 18rpx;color: #161616;}
+		}
+		.chstep{padding: 0 12px 6px;
+			.imgs{width: 13px;height: 14px;display: flex;align-items: center;justify-content: center;margin-right: 6px;flex:0 0 auto;
+				.imga{width: 13px;height: 13px;}
+				.imgb{width: 13px;height: 14px;}
+			}
+			.tit{font-weight: 500;font-size: 13px;color: #B5B5B5;flex: 0 0 auto;}
+			.txt{font-weight: 500;font-size: 13px;color: #222327;}
+			.code{width: 18rpx;height: 11px;margin-left: 7px;}
+		}
+	}
+	.worklist  .uni-collapse{background: #F4F7FF;border-top: 1px solid #E6E6E6;}
+	.worklist .uni-collapse-item__wrap{background: #F4F7FF;}
+	.notit{font-weight: 500;font-size: 13px;color: #222327;}
+	.adrlist{margin-right: 36rpx;min-width: 70px;display: flex;align-items: center;margin-bottom: 5px;}
+		.noico{width: 10px;height: 13px;margin-right: 6px;display: flex;align-items: center;justify-content: center;
+			.imga{width: 10px;height: 11px;}
+			.imgb{width: 10px;height: 12px;}
+			.imgc{width: 9px;height: 14px;}
+		}
+  .co77{
+   color: #779AF9 !important;
+  }
+  .co06{
+    color: #AF88B8 !important;
+  }
+  .cofb{
+    color: #FFA20C !important;
+  }
+  .coaf{
+    color: #FFA20C !important;
+  }
+  .coafs{
+    color: #00B278 !important;
+  }
+  .coafss{
+    color: #FF6969 !important;
+  }
+
+  .baae{
+    display: flex;
+    padding: 20px;
+    p{
+      margin: 0;
+      font-size: 16px;
+      color: #AAAAAA;
+      margin-right: 10px;
+    }
+    .activeq{
+      font-weight: bold;
+      font-size: 16px;
+      color: #161616;
+    }
+  }
+  .bsers{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding: 0 20px;
+    padding-bottom: 20px;
+    padding-left: 0;
+    img{
+      margin-right: 10px;
+    }
+    div{
+       display: flex;
+       align-items: center;
+       margin-left: 20px;
+    }
+
+    p{
+       margin: 0;
+       font-weight: 500;
+       font-size: 14px;
+       color: #161616;
+       display: flex;
+       align-items: center;
+       font-family: PingFang SC;
+       font-weight: 500;
+       font-size: 16px;
+
+    }
+  }
+  </style>
+
+

+ 927 - 0
ruoyi-ui-gongdan/src/views/gongdan/kehurenyuan/index.vue

@@ -0,0 +1,927 @@
+<template>
+  <div class="app-container">
+    <div >
+      <div style="background-color: #fff;padding: 20px;border-radius: 10px; padding-bottom: 0;">
+              <p style="margin: 0; font-weight: 800;font-size: 16px;color: #343434;display: flex;align-items: center;margin-bottom: 20px;border-left: 6px solid #03BF8A;margin-left: -20px;">
+                <!-- <img src="../../../assets/images/icon_htgl_btzs.png" alt="" style="width: 16px;height: 20px;"> -->
+               <span style="margin-left: 10px;">搜索条件</span>
+              </p>
+              <div style="padding-bottom: 0;margin-bottom: 20px;">
+                <el-form class="qucheu" :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="108px">
+                  <el-row>
+
+                    <el-col :span="24">
+                      <el-col :span="8">
+                        <el-form-item label="单位名称" prop="unitName">
+                                <el-input
+                                  v-model="queryParams.unitName"
+                                  placeholder="请输入单位名称"
+                                  clearable
+                                  @keyup.enter.native="handleQuery"
+                                />
+                              </el-form-item>
+                      </el-col>
+                      <el-col :span="8">
+                       <el-form-item label="联系方式" prop="staffPhone">
+                               <el-input
+                                 v-model="queryParams.staffPhone"
+                                 placeholder="请输入人员联系方式"
+                                 clearable
+                                 @keyup.enter.native="handleQuery"
+                               />
+                             </el-form-item>
+                      </el-col>
+                      <el-col :span="5">
+                        <el-form-item class="butt" style="border: 0;">
+                          <el-button style="background-color: #03BF8A; border-color: #03BF8A;" type="primary" size="mini"  @click="handleQuery">查询 </el-button>
+                          <el-button size="mini"  @click="resetQuery">重置</el-button>
+                        </el-form-item>
+                      </el-col>
+
+                    </el-col>
+
+
+
+                  </el-row>
+
+                </el-form>
+              </div>
+            </div>
+
+
+      <div class="casr"  >
+              <el-row :gutter="10" class="mb8">
+                <!-- <el-col :span="1.5">
+                  <div style="font-weight: bold;font-size: 14px;color: #343434; display: flex;align-items: center;">
+                    当夜全选
+                  </div>
+                </el-col> -->
+                <!-- <el-col :span="1.5">
+                  <el-button
+                    type="success"
+                    plain
+                    size="mini"
+                    @click="handleAdd"
+                    v-hasPermi="['manage:staffManage:add']"
+                  >添加</el-button>
+                </el-col> -->
+                <!-- <el-col :span="1.5">
+                  <el-button
+                    type="success"
+                    plain
+                    size="mini"
+                    :disabled="single"
+                    @click="handleUpdate"
+                    v-hasPermi="['system:post:edit']"
+                  >修改</el-button>
+                </el-col>
+                <el-col :span="1.5">
+                  <el-button
+                    type="danger"
+                    plain
+                    size="mini"
+                    :disabled="multiple"
+                    @click="handleDelete"
+                    v-hasPermi="['system:post:remove']"
+                  >删除</el-button>
+                </el-col> -->
+                <el-col :span="1.5">
+                  <el-button
+                    type="warning"
+                    plain
+                    size="mini"
+                    @click="handleExport"
+                    v-hasPermi="['manage:staffManage:export']"
+                  >导出</el-button>
+                </el-col>
+                <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+              </el-row>
+              <div class=" infinite-list" :style="dynamicStyle">
+                <el-row :gutter="10" v-if="staffManageList.length !=0" style="width:100%;margin-left: 0;">
+                  <el-col :span="6" v-for="(item,index) in staffManageList" :key="index"  >
+                    <!-- @click="isac(item)" -->
+                    <div v-if="isshoe"  :class=" item.isnum ==true ? 'ingwe' :'' " style="position: relative; background-color: #fff;box-shadow: 0px 0px 10px 0px #CDCDCD;border-radius: 4px;margin-bottom: 10px;">
+                      <div style="display: flex; align-items: center;padding: 15px 20px; position: relative;padding-bottom: 0;">
+                      <div style="width: 22%;margin-top: -60px;">
+                         <!-- <image-preview :src="item.staffImage" :width="50" :height="50"  style="border-radius:50%;margin-top: -10px;"/> -->
+                         <img src="../../../assets/images/icon_htgl_rylb_mrtx.png" alt="" style="width: 50px;height: 50px;border-radius: 50%;" >
+                      </div>
+                      <div class="haned" style="width: 88%; padding-right: 20px;">
+                        <p style="margin-bottom: 5px;">
+                          <span style="font-weight: bold;font-size: 16px;color: #161616;margin-left: 15px;margin-right: 10px;">{{item.personName ==null?'暂无数据' : item.personName}}</span>
+                          <!-- <img v-hasPermi="['manage:staffManage:edit']" src="../../../assets/images/icon_htgl_rylb_bj.png" alt=""  style="cursor: pointer;" @click="handleUpdate(item)"> -->
+                          <!-- <img v-hasPermi="['manage:staffManage:remove']" src="../../../assets/images/icon_htgl_rylb_del.png" alt=""  style="float: right;cursor: pointer;" @click="handleDelete(item)"> -->
+                        </p>
+                        <div style="display: flex; margin-left: 15px;font-size: 14px;color: #666666;margin-top: 5px;">
+                          <p  style="text-align: left; width: 70px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;" > 电话号码:</p>
+                          <p style="width: 62%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-left: 5px;font-size: 14px;color: #666666;">
+                            {{item.phonenumber ==null?'暂无数据' : item.phonenumber}}
+                          </p>
+                        </div>
+                        <div style="display: flex; margin-left: 15px;font-size: 14px;color: #666666;margin-top: 5px;">
+                          <p style="width: 70px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;" >单位名称:</p>
+                          <el-tooltip class="item" effect="dark" :content="item.unitName ==null?'暂无数据' : item.unitName" placement="top-start">
+                          <p style="width: 62%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-left: 5px;font-size: 14px;color: #666666;">
+                            {{item.unitName ==null?'暂无数据' : item.unitName}}
+                          </p>
+                          </el-tooltip>
+                        </div>
+                        <div style=" display: flex; margin-left: 15px;font-size: 14px;color: #666666;margin-top: 5px;">
+
+                          <p style="width: 70px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;">详细地址:</p>
+                          <el-tooltip class="item" effect="dark" :content="item.detailedAddress ==null?'暂无数据' : item.city + item.region +item.detailedAddress" placement="top-start">
+                          <p style="width: 62%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-left: 5px;font-size: 14px;color: #666666;">
+                            {{item.detailedAddress ==null?'暂无数据' : (item.city + item.region +item.detailedAddress)}}
+                          </p>
+                          </el-tooltip>
+                        </div>
+
+
+
+                      </div>
+
+
+
+
+                      </div>
+                       <!-- <div class="weit">
+                                              <p>开发部</p>
+                                              <p>白名单</p>
+                                            </div> -->
+
+
+                     <!-- <img v-if="item.isnum == true" src="../../../assets/images/icon_htgl_kp_gx.png" alt="" style="width: 35px;height: 35px;position: absolute;bottom: 0;right: 0;"> -->
+                     <div class="bortt tongty" style="justify-content: space-between; margin-top: 0;">
+                        <p style="cursor: pointer;" @click="handleUpdate(item)"><span  >查看</span></span>  </p>
+                       <!-- <span @click="handleUpdatef(item)">查看</span> -->
+                       <p  v-hasPermi="['basic:info:remove']" style="color:red;cursor: pointer;" @click="handleDelete(item)">删除  </p>
+                     </div>
+                    </div>
+                  </el-col>
+                </el-row>
+                <div style="margin-top: 20px;display: flex;justify-content: center;align-items: center;" v-if="staffManageList.length ==0">
+                   <img   src="../../../assets/images/zwshjbig.png" alt="" style="">
+                </div>
+              </div>
+      </div>
+
+
+
+      <paginations
+        v-show="total>0"
+        :total="total"
+        :page.sync="queryParams.pageNum"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
+      />
+    </div>
+
+    <!-- 添加或修改岗位对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
+          <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+            <el-row :gutter="20" class="ite">
+              <el-col :span="16">
+                <el-col :span="24">
+                  <el-form-item label="人员姓名" prop="staffName">
+                            <el-input v-model="form.staffName" placeholder="请输入人员姓名" />
+                          </el-form-item>
+                </el-col>
+                <el-col :span="24">
+                  <el-form-item label="人员联系方式" prop="staffPhone">
+                            <el-input v-model="form.staffPhone" placeholder="请输入人员联系方式" />
+                          </el-form-item>
+                </el-col>
+                <el-col :span="24">
+                  <el-form-item label="紧急联系人" prop="emergencyContact">
+                           <el-input v-model="form.emergencyContact" placeholder="请输入紧急联系人" />
+                         </el-form-item>
+                </el-col>
+                <el-col :span="24">
+                  <el-form-item label="紧急联系人手机" prop="emergencyContactPhone">
+                            <el-input v-model="form.emergencyContactPhone" placeholder="请输入紧急联系人手机" />
+                          </el-form-item>
+                </el-col>
+              </el-col>
+
+
+              <el-col :span="8" class="sgwe unimg" style="border: 1px solid #F8F8F8;height: 235px;">
+                  <div style=" margin:10px 0; font-weight: bold;font-size: 14px;color: #333333;text-align: center;">人脸照片</div>
+
+                  <image-uploadr :limit="1" v-model="form.staffImage"/>
+                  <div style="font-weight: bold;font-size: 14px;color: #03BF8A;text-align: center;margin-top: 10px;" @click="openClick">点击拍照</div>
+                  <!-- onTake -->
+              </el-col>
+
+               <!-- <el-col :span="24"> -->
+
+
+               <!-- </el-col> -->
+              </el-col>
+            </el-row>
+
+          </el-form>
+         <div slot="footer" class="dialog-footer">
+                       <el-button style="background-color:#03BF8A ; border-color: #03BF8A;" type="primary" @click="submitForm">确 定</el-button>
+                       <el-button style="background-color:#DDEBE7 ; border-color: #DDEBE7; color: #475669;" @click="cancel">取 消</el-button>
+                     </div>
+        </el-dialog>
+        <photo ref="photo" v-model="form.staffImage" :title="'图片拍照上传'" />
+                   <!--开启摄像头的弹窗-->
+                  <!-- <div class="info2" @click="onTake">
+                     <el-image :src="form.url" style="padding-left: 200px;width: 600px; height:400px"></el-image>
+                   </div> -->
+                   <!--开启摄像头的拍照和-->
+                   <el-dialog title="拍照上传" :visible.sync="visible" @close="onCancel1" width="1065px" append-to-body>
+                     <div class="box">
+                       <video id="videoCamera" class="canvas" :width="videoWidth" :height="videoHeight" autoPlay></video>
+                       <canvas id="canvasCamera" class="canvas" :width="videoWidth" :height="videoHeight"></canvas>
+                     </div>
+                     <div slot="footer">
+                       <el-button @click="drawImage" icon="el-icon-camera" size="small">
+                         拍照
+                       </el-button>
+                       <el-button v-if="os" @click="getCompetence" icon="el-icon-video-camera" size="small">
+                         打开摄像头
+                       </el-button>
+                       <el-button v-else @click="stopNavigator" icon="el-icon-switch-button" size="small">
+                         关闭摄像头
+                       </el-button>
+                       <el-button @click="resetCanvas" icon="el-icon-refresh" size="small">
+                         重置
+                       </el-button>
+                       <el-button @click="onCancel" icon="el-icon-circle-close"
+                                  v-hasPermi="['system:oss:upload']"
+                                  type="primary" size="small">
+                         完成
+                       </el-button>
+                     </div>
+                   </el-dialog>
+
+  </div>
+</template>
+
+<script>
+const defaultSettings = require("@/settings.js");
+import { listStaffManage, getStaffManage, delStaffManage, addStaffManage, updateStaffManage,unploa } from "@/api/system/staffManage"
+export default {
+   name: "ResidentInfo",
+    dicts: ['affiliation_personnel', 'sys_yes_no', 'gender','zhuhu_type', 'relationship_householder','renzhen_sh'],
+  data() {
+    return {
+     // 遮罩层
+          // 遮罩层
+                loading: true,
+                // 选中数组
+                ids: [],
+                // 非单个禁用
+                single: true,
+                // 非多个禁用
+                multiple: true,
+                // 显示搜索条件
+                showSearch: true,
+                // 总条数
+                total: 0,
+                // 人员管理表格数据
+                staffManageList: [],
+                // 弹出层标题
+                title: "",
+                // 是否显示弹出层
+                open: false,
+                // 查询参数
+                queryParams: {
+                  pageNum: 1,
+                  pageSize: 10,
+                  staffName: null,
+                  staffPhone: null,
+                  emergencyContact: null,
+                  emergencyContactPhone: null,
+                  staffImage: null,
+                },
+                // 表单参数
+                form: {},
+                // 表单校验
+                rules: {
+                  staffName: [
+                            { required: true, message: "不能为空", trigger: "blur" }
+                          ],
+                  staffPhone: [
+                      { required: true, message: "不能为空", trigger: "blur" },
+                                       {
+                                         pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+                                         message: "请输入正确的手机号码",
+                                          trigger: "blur"
+                                         }
+                  ],
+
+                },
+      activeName:'first',
+      videoState: false, // 视频播放状态
+      poster:true,
+      controls:true,
+      videoData:{},
+       player: null,
+       isshoe:true,
+       tableMaxHeight:'200',
+       tenantListtw:[],
+       houseInfoLisen:[],
+       isxin:false,
+      imgSrc: "",
+              visible: false,//弹窗
+              loading: false,//上传按钮加载
+              open: false,//控制摄像头开关
+              thisVideo: null,
+              thisContext: null,
+              thisCancas: null,
+              videoWidth: 500,
+              videoHeight: 400
+
+    };
+  },
+  computed: {
+    dynamicStyle() {
+      return {
+        overflow:'auto',
+        height: this.tableMaxHeight+ 'px',
+        paddingTop:'10px'
+      }
+    }
+    },
+  created() {
+    // if(this.$route.query.id != undefined){
+    //    this.queryParams.houseId = this.$route.query.id  - 0
+    // }
+    // this.usename = this.$store.state.user.name
+    this.getList();
+
+ window.onresize = () => {
+ 	      this.changeTableMaxHeight()
+ 	    }
+ 	    this.changeTableMaxHeight()
+ },
+ mounted() {
+ 	window.onresize = () => {
+ 	          this.changeTableMaxHeight()
+ 	        }
+ 	        this.changeTableMaxHeight()
+ },
+  beforeDestroy() {
+      if (this.player) {
+        this.player.dispose()
+      }
+    },
+  methods: {
+    openClick() {
+            this.$refs['photo'].dialogPhotoVisible = true
+        },
+    /** 查询岗位列表 */
+    getList() {
+   this.loading = true;
+      listStaffManage(this.queryParams).then(response => {
+        this.staffManageList   = response.rows;
+        this.staffManageList  .filter(rou=>{
+          rou.imges = []
+          if(rou.idCardFront != null && rou.idCardFront != ''){
+            rou.imges.push(rou.idCardFront)
+          }
+          if(rou.idCardBack != null && rou.idCardBack != ''){
+            rou.imges.push(rou.idCardBack)
+          }
+          rou.isnum = false
+        })
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+
+     shiegw(val){
+       console.log(val)
+       	var _IDRe18 = /^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
+       	// var _IDre15 =  /^([1-6][1-9]|50)\d{4}\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}$/
+       	// 校验身份证:
+       	// return (_IDRe18.test(idNo) || _IDre15.test(idNo)) ? true : false;
+        if(_IDRe18.test(this.form.residentIdCard) == true){
+          let sge = this.getInfo( this.form.residentIdCard)
+          this.form.yearsOld = sge.age
+          this.form.residentGender = sge.sex + ''
+          this.form.residentBirthday = sge.birth
+          console.log(sge)
+        }
+
+     },
+
+   uploadedSuccessfully(row){
+     console.log('上传重构',row)
+     if(row.length !=0){
+       row.filter(ru=>{
+         this.form.residentName = ru.realName
+         this.form.residentIdCard = ru.idCard
+         let sge = this.getInfo( this.form.residentIdCard)
+         this.form.yearsOld = sge.age
+         this.form.residentGender = sge.sex + ''
+         // this.form.residentBirthday = sge.birth
+       })
+
+     }
+   },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+   this.form = {
+           staffId: null,
+           staffName: null,
+           staffPhone: null,
+           emergencyContact: null,
+           emergencyContactPhone: null,
+           staffImage: null,
+           delFlag: null,
+           createBy: null,
+           createTime: null,
+           updateBy: null,
+           updateTime: null,
+           remark: null
+         }
+      this.resetForm("form");
+    },
+     /** 搜索按钮操作 */
+        handleQuery() {
+          this.queryParams.pageNum = 1
+          this.getList()
+        },
+        /** 重置按钮操作 */
+        resetQuery() {
+          this.resetForm("queryForm")
+          this.handleQuery()
+        },
+    // 多选框选中数据
+       handleSelectionChange(selection) {
+         this.ids = selection.map(item => item.staffId)
+         this.single = selection.length!==1
+         this.multiple = !selection.length
+       },
+    /** 新增按钮操作 */
+        handleAdd() {
+          this.reset()
+          this.open = true
+          this.title = "添加人员管理"
+        },
+        /** 修改按钮操作 */
+        handleUpdate(row) {
+          this.reset()
+          const staffId = row.staffId || this.ids
+          getStaffManage(staffId).then(response => {
+            this.form = response.data
+            this.open = true
+            this.title = "修改人员管理"
+          })
+        },
+    /** 提交按钮 */
+        submitForm() {
+
+          this.$refs["form"].validate(valid => {
+            if (valid) {
+              if (this.form.staffId != null) {
+                updateStaffManage(this.form).then(response => {
+                  this.$modal.msgSuccess("修改成功")
+                  this.open = false
+                  this.getList()
+                })
+              } else {
+                addStaffManage(this.form).then(response => {
+                  this.$modal.msgSuccess("新增成功")
+                  this.open = false
+                  this.getList()
+                })
+              }
+            }
+          })
+        },
+        /** 删除按钮操作 */
+        handleDelete(row) {
+          const staffIds = row.staffId || this.ids
+          this.$modal.confirm('是否确认删除人员管理编号为"' + staffIds + '"的数据项?').then(function() {
+            return delStaffManage(staffIds)
+          }).then(() => {
+            this.getList()
+            this.$modal.msgSuccess("删除成功")
+          }).catch(() => {})
+        },
+    /** 导出按钮操作 */
+       handleExport() {
+         this.download('manage/staffManage/export', {
+           ...this.queryParams
+         }, `staffManage_${new Date().getTime()}.xlsx`)
+       },
+
+      handleClick(){
+
+      },
+    isac(val){
+      console.log(5,val)
+      val.isnum = !val.isnum
+      this.isshoe = false
+      this.isshoe = true
+    },
+    itneg(item){
+      this.queryParams.houseId = item.houseId
+      this.queryParams.detailedAddress = item.detailedAddress
+    },
+    itnegadd(item){
+      this.form.houseId = item.houseId
+      this.form.detailedAddress = item.detailedAddress
+    },
+    // 获取屏幕高度
+    showFilterForm () {
+          this.filterActive = !this.filterActive
+          this.changeTableMaxHeight()
+        },
+
+        changeTableMaxHeight () {
+          let height = document.body.offsetHeight // 网页可视区域高度
+          // if (this.filterActive) {
+          //   this.tableMaxHeight = height - 320
+          // } else {
+            this.tableMaxHeight = height - 150
+          // }
+          console.log(height)
+        },
+     onTake() {
+          this.visible = true;
+          this.getCompetence();
+        },
+
+        /*关闭弹窗,以及关闭摄像头功能*/
+        onCancel1() {
+          this.visible = false;
+          this.stopNavigator(); // 关闭摄像头
+        },
+
+        // 调用摄像头权限
+        getCompetence() {
+          //必须在model中render后才可获取到dom节点,直接获取无法获取到model中的dom节点
+          this.$nextTick(() => {
+            const _this = this;
+            this.os = false; //切换成关闭摄像头
+            // 获取画布节点
+            this.thisCancas = document.getElementById("canvasCamera");
+            // 为画布指定绘画为2d类型
+            this.thisContext = this.thisCancas.getContext("2d");
+            //获取video节点
+            this.thisVideo = document.getElementById("videoCamera");
+            // 旧版本浏览器可能根本不支持mediaDevices,我们首先设置一个空对象
+            if (navigator.mediaDevices === undefined) {
+              navigator.menavigatordiaDevices = {};
+            }
+            // 一些浏览器实现了部分mediaDevices,我们不能只分配一个对象
+            // 使用getUserMedia,因为它会覆盖现有的属性。
+            // 这里,如果缺少getUserMedia属性,就添加它。
+            if (navigator.mediaDevices.getUserMedia === undefined) {
+              navigator.mediaDevices.getUserMedia = function(constraints) {
+                // 首先获取现存的getUserMedia(如果存在)
+                let getUserMedia =
+                  navigator.webkitGetUserMedia ||
+                  navigator.mozGetUserMedia ||
+                  navigator.getUserMedia;
+                // 有些浏览器不支持,会返回错误信息
+                // 保持接口一致
+                if (!getUserMedia) {
+                  return Promise.reject(
+                    new Error("getUserMedia is not implemented in this browser")
+                  );
+                }
+                // 否则,使用Promise将调用包装到旧的navigator.getUserMedia
+                return new Promise(function(resolve, reject) {
+                  getUserMedia.call(navigator, constraints, resolve, reject);
+                });
+              };
+            }
+            const constraints = {
+              audio: false,
+              video: {
+                width: _this.videoWidth,
+                height: _this.videoHeight,
+                transform: "scaleX(-1)"
+              }
+            };
+            navigator.mediaDevices
+              .getUserMedia(constraints)
+              .then(function(stream) {
+                // 旧的浏览器可能没有srcObject
+                if ("srcObject" in _this.thisVideo) {
+                  _this.thisVideo.srcObject = stream;
+                } else {
+                  // 避免在新的浏览器中使用它,因为它正在被弃用。
+                  _this.thisVideo.src = window.URL.createObjectURL(stream);
+                }
+                _this.thisVideo.onloadedmetadata = function(e) {
+                  console.log(e)
+                  _this.thisVideo.play();
+                };
+              })
+              .catch(err => {
+                console.log(err)
+                this.$notify({
+                  title: "警告",
+                  message: "没有开启摄像头权限或浏览器版本不兼容.",
+                  type: "warning"
+                });
+              });
+          });
+        },
+
+        //调用摄像头 --- 进行绘制图片
+        drawImage() {
+          // 点击,canvas画图
+          this.thisContext.drawImage(
+            this.thisVideo,
+            0,
+            0,
+            this.videoWidth,
+            this.videoHeight
+          );
+          // 获取图片base64链接
+          this.imgSrc = this.thisCancas.toDataURL("image/png");
+
+          /*const imgSrc=this.imgSrc;*/
+        },
+        //清空画布
+        clearCanvas(id) {
+          let c = document.getElementById(id);
+          let cxt = c.getContext("2d");
+          cxt.clearRect(0, 0, c.width, c.height);
+        },
+
+        //重置画布
+        resetCanvas() {
+          // this.imgSrc = "";
+          this.clearCanvas("canvasCamera");
+        },
+
+        //关闭摄像头
+        stopNavigator() {
+          if (this.thisVideo && this.thisVideo !== null) {
+            this.thisVideo.srcObject.getTracks()[0].stop();
+            this.os = true; //切换成打开摄像头
+          }
+        },
+        /*调用摄像头拍照结束*/
+         /*完成拍照并对其照片进行上传*/
+            onCancel() {
+              this.visible = false;
+              /* this.resetCanvas();*/
+              // console.log(this.imgSrc);
+               const file = this.imgSrc; // 把整个base64给file
+                        const time = (new Date()).valueOf();//生成时间戳
+                        const name = time + ".png"; // 定义文件名字(例如:abc.png , cover.png)
+                        const conversions = this.base64ImgtoFile(file, name); // 调用base64转图片方法
+                        const data = new FormData();
+                        data.append('file', conversions);
+
+              // this.imgFile = this.dataURLtoFile(this.imgSrc, new Date() + ".png");
+              // console.log(this.imgFile);
+              // this.stopNavigator();
+              // // let par = {
+              // //   photo: this.imgFile,
+              // // };
+              // let data = new FormData();
+              // data.append("file", this.imgFile); //1是图片,2是视频
+              // // data.append("code", this.addForm.code);
+              // // checkbeforepersonalphoto上传图片的接口
+              unploa(data).then(res => {
+                console.log(res)
+                if (res.code == "200") {
+                  this.$message({
+                    message: "上传成功",
+                    type: "success"
+                  });
+                  this.form.url = res.data.url;
+                  this.form.osid = res.data.ossId;
+                }
+              });
+            },
+         base64ImgtoFile(dataurl, filename = 'file') {
+           console.log(dataurl)
+           let arr = dataurl.split(',')
+           let mime = arr[0].match(/:(.*?);/)[1]
+           let suffix = mime.split('/')[1]
+           let bstr = atob(arr[1])
+           let n = bstr.length
+           console.log(bstr)
+           let u8arr = new Uint8Array(n)
+           while (n--) {
+             u8arr[n] = bstr.charCodeAt(n)
+           }
+           console.log(u8arr)
+           console.log(new File([u8arr], `${filename}.${suffix}`, {
+             type: mime
+           }))
+           return new File([u8arr], `${filename}.${suffix}`, {
+             type: mime
+           })
+         },
+
+           dataURLtoFile(dataurl, filename) {
+                   let arr = dataurl.split(',');
+                   let mime = arr[0].match(/:(.*?);/)[1];
+                   let bstr = atob(arr[1]);
+                   let n = bstr.length;
+                   let u8arr = new Uint8Array(n);
+                   while (n--) {
+                     u8arr[n] = bstr.charCodeAt(n)
+                   }
+                   console.log(new File([u8arr], filename, {type: mime}))
+                   return new File([u8arr], filename, {type: mime})
+                 },
+
+
+
+
+  }
+};
+</script>
+<style  lang="scss">
+  .ite{
+    .el-form-item{
+      margin-bottom: 30px;
+    }
+  }
+  .ingsek{
+   .el-carousel__container{
+  	 height: 150px;
+   }
+   .el-carousel--horizontal{
+     width: 100%;
+   }
+  }
+  .shefnze{
+    .el-upload--picture-card{
+      width: 80px;
+      height: 80px;
+      line-height: 80px;
+    }
+    .el-upload-list--picture-card .el-upload-list__item{
+      width: 80px;
+      height: 80px;
+    }
+    .el-upload__tip{
+      overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+    }
+  }
+  .ngeshimg{
+    .el-upload--picture-card{
+      width: 36px;
+      height: 36px;
+      line-height: 36px;
+      position: absolute;
+      top:0;
+      right: 0;
+    }
+    .component-upload-image{
+      position: absolute;
+      top:0;
+      right: 0;
+    }
+    .el-upload--picture-card i{
+      font-size: 20px;
+    }
+    .el-upload-list--picture-card .el-upload-list__item{
+      width: 58px;
+      height: 36px;
+      position: absolute;
+      top:0;
+      right: -10px;
+    }
+  }
+  .unimg{
+    .el-upload--picture-card{
+      width:140px;
+      height: 160px;
+      margin-left: 15px;
+      // line-height: 102px;
+      background-color:#f8f8f8;
+      border: 0;
+    }
+   .el-upload-list--picture-card .el-upload-list__item{
+       margin-left: 15px;
+    }
+  }
+
+  .bnjle{
+    margin-left: 20px;
+  }
+  .butt{
+    .el-button--small{
+      padding: 9px 23px !important;
+      font-size: 14px;
+    }
+  }
+  .casr{
+    .el-tabs__item.is-active{
+      color: #196CFF;
+    }
+    .el-tabs--card > .el-tabs__header .el-tabs__item{
+      padding: 0  30px !important;
+    }
+  }
+  .el-table .el-table__header-wrapper th{
+    background-color:#F5F6F8;
+    color:#343434;
+  }
+  .el-table{
+    color:#343434;
+  }
+</style>
+<style scoped lang="scss">
+  .goe{
+    p{
+      margin: 0;
+      font-weight: 800;
+      font-size: 16px;
+      color: #161616;
+      margin-top: 10px;
+      margin-bottom: 3px;
+      padding: 0 10px;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      display:-webkit-box; //作为弹性伸缩盒子模型显示。
+      -webkit-box-orient:vertical; //设置伸缩盒子的子元素排列方式--从上到下垂直排列
+      -webkit-line-clamp:1; //显示的行
+    }
+    p:nth-child(2){
+
+    }
+  }
+  .ingwe{
+    border: 2px solid #196CFF;
+  }
+  .renyuangs{
+    p{
+      font-weight: 500;
+      font-size: 14px;
+      color: #161616;
+      padding: 0;
+    }
+    div{
+      font-weight: 500;
+      font-size: 14px;
+      color: #161616;
+      padding: 0;
+      display: flex;
+    }
+  }
+  .tongty{
+    display: flex;
+    align-items: center;
+  }
+  .bortt{
+    border-top: 1px solid #DADADA;
+    margin-top: 15px;
+
+    p{
+      margin: 0;
+      font-weight: bold;
+      font-size: 14px;
+      color: #5F8BF4;
+      width:50%;
+      padding: 10px;
+      text-align: center;
+    }
+  }
+  .wide{
+      width:100% !important;
+    }
+    .haned{
+      flex:1;
+      padding-bottom: 15px;
+      p{
+        margin: 0;
+      }
+    }
+    .weit{
+      display: flex;
+      padding-left: 85px;
+      padding-bottom: 10px;
+      margin-top: 10px;
+      p{
+        margin: 0;
+        font-weight: 500;
+        font-size: 14px;
+        color: #009FE8;
+        border-radius: 10px;
+        border: 1px solid #009FE8;
+        padding: 2px  5px;
+        margin-right: 10px;
+      }
+      p:nth-child(2){
+        color: #FFAB2B;
+        border: 1px solid #FFAB2B;
+      }
+    }
+  </style>
+
+

+ 4537 - 1076
ruoyi-ui-gongdan/src/views/index.vue

@@ -1,1100 +1,4561 @@
-<template>
-  <div class="app-container home">
-    <el-row :gutter="20">
-      <el-col :sm="24" :lg="12" style="padding-left: 20px">
-        <h2>若依后台管理框架</h2>
-        <p>
-          一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了若依管理系统,她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。
-        </p>
-        <p>
-          <b>当前版本:</b> <span>v{{ version }}</span>
-        </p>
-        <p>
-          <el-tag type="danger">&yen;免费开源</el-tag>
-        </p>
-        <p>
-          <el-button
-            type="primary"
-            size="mini"
-            icon="el-icon-cloudy"
-            plain
-            @click="goTarget('https://gitee.com/y_project/RuoYi-Vue')"
-            >访问码云</el-button
-          >
-          <el-button
-            size="mini"
-            icon="el-icon-s-home"
-            plain
-            @click="goTarget('http://ruoyi.vip')"
-            >访问主页</el-button
-          >
-        </p>
-      </el-col>
-
-      <el-col :sm="24" :lg="12" style="padding-left: 50px">
-        <el-row>
-          <el-col :span="12">
-            <h2>技术选型</h2>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="6">
-            <h4>后端技术</h4>
-            <ul>
-              <li>SpringBoot</li>
-              <li>Spring Security</li>
-              <li>JWT</li>
-              <li>MyBatis</li>
-              <li>Druid</li>
-              <li>Fastjson</li>
-              <li>...</li>
-            </ul>
-          </el-col>
-          <el-col :span="6">
-            <h4>前端技术</h4>
-            <ul>
-              <li>Vue</li>
-              <li>Vuex</li>
-              <li>Element-ui</li>
-              <li>Axios</li>
-              <li>Sass</li>
-              <li>Quill</li>
-              <li>...</li>
-            </ul>
-          </el-col>
-        </el-row>
-      </el-col>
-    </el-row>
-    <el-divider />
-    <el-row :gutter="20">
-      <el-col :xs="24" :sm="24" :md="12" :lg="8">
-        <el-card class="update-log">
-          <div slot="header" class="clearfix">
-            <span>联系信息</span>
-          </div>
-          <div class="body">
-            <p>
-              <i class="el-icon-s-promotion"></i> 官网:<el-link
-                href="http://www.ruoyi.vip"
-                target="_blank"
-                >http://www.ruoyi.vip</el-link
-              >
-            </p>
-            <p>
-              <i class="el-icon-user-solid"></i> QQ群:<s> 满937441 </s> <s> 满887144332 </s>
-              <s> 满180251782 </s> <s> 满104180207 </s> <s> 满186866453 </s> <s> 满201396349 </s>
-              <s> 满101456076 </s> <s> 满101539465 </s> <s> 满264312783 </s> <s> 满167385320 </s> 
-              <s> 满104748341 </s> <s> 满160110482 </s> <s> 满170801498 </s> <s> 满108482800 </s> 
-              <s> 满101046199 </s> <s> 满136919097 </s> <s> 满143961921 </s> <s> 满174951577 </s> 
-              <s> 满161281055 </s> <s> 满138988063 </s> <s> 满151450850 </s> <s> 满224622315 </s>
-              <s> 满287842588 </s> <s> 满187944233 </s> <a href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=G6r5KGCaa3pqdbUSXNIgYloyb8e0_L0D&authKey=4w8tF1eGW7%2FedWn%2FHAypQksdrML%2BDHolQSx7094Agm7Luakj9EbfPnSTxSi2T1LQ&noverify=0&group_code=228578329" target="_blank">228578329</a>
-            </p>
-            <p>
-              <i class="el-icon-chat-dot-round"></i> 微信:<a
-                href="javascript:;"
-                >/ *若依</a
+<template>
+  <div class="app-container">
+    <el-row :gutter="10">
+     <el-col :span="18">
+       <div style="display: flex;justify-content: space-between;">
+         <div class="box_5 flex-col">
+                 <span class="text_45">本月全部工单</span>
+                 <div class="block_1 flex-row">
+                   <div class="text-wrapper_6 flex-col justify-between">
+                     <span class="text_46">{{dongdannu.zs}}</span>
+                     <span class="text_47">较上月增长{{dongdannu.zz}}</span>
+                   </div>
+                   <img
+                     class="image_9"
+                     referrerpolicy="no-referrer"
+                     src="../assets/images/pic_htgl_gdtj.png"
+                   />
+                 </div>
+               </div>
+               <div class="box_13 flex-col">
+                       <div class="box_14 flex-col"></div>
+                       <span class="text_54">待接单</span> <span class="text_55">{{dongdannu.djd}}</span>
+                       <img
+                         class="image_12"
+                         referrerpolicy="no-referrer"
+                         src="../assets/images/pic_htgl_tj_djd.png"
+                       />
+                     </div>
+          <div class="box_15 flex-col">
+                  <div class="box_16 flex-col"></div>
+                  <div class="box_17 flex-row justify-between">
+                    <div class="text-wrapper_8 flex-col justify-between">
+                      <span class="text_56">进行中</span> <span class="text_57">{{dongdannu.jxz}}</span>
+                    </div>
+                    <img
+                      class="label_6"
+                      referrerpolicy="no-referrer"
+                      src="../assets/images/pic_htgl_tj_jxz.png"
+                    />
+                  </div>
+                </div>
+          <div class="box_18 flex-col">
+                  <div class="block_2 flex-col"></div>
+                  <span class="text_58">已完成</span>
+                  <div class="block_3 flex-row justify-between">
+                    <span class="text_59">{{dongdannu.ywc}}</span>
+                    <img
+                      class="image_13"
+                      referrerpolicy="no-referrer"
+                      src="../assets/images/pic_htgl_tj_ywc.png"
+                    />
+                  </div>
+                </div>
+          <div class="box_24 flex-col">
+                  <div class="group_11 flex-col"></div>
+                  <div class="group_12 flex-row justify-between">
+                    <div class="text-wrapper_19 flex-col justify-between">
+                      <span class="text_100">待评价</span>
+                      <span class="text_101">{{dongdannu.dpj}}</span>
+                    </div>
+                    <img
+                      class="label_7"
+                      referrerpolicy="no-referrer"
+                      src="../assets/images/pic_htgl_tj_dpj.png"
+                    />
+                  </div>
+                </div>
+       </div>
+       <el-col :span="16"  style="padding-left: 0; margin-top: 20px;">
+         <div class="box_6 flex-col">
+                 <div class="text-wrapper_7 flex-row">
+                   <span class="text_48">常用功能</span>
+                 </div>
+                 <div class="box_7 flex-row justify-between" style="cursor: pointer;">
+                   <div class="box_8 flex-col" @click="tiaoz(0)" v-hasPermi="['work:info:list']">
+                     <img
+                       class="label_2"
+                       referrerpolicy="no-referrer"
+                       src="../assets/images/pic_htgl_gn_gd.png"
+                     />
+                     <span class="text_49">工单管理</span>
+                   </div>
+                   <div class="box_9 flex-col" @click="tiaoz(1)" v-hasPermi="['system:user:list']">
+                     <img
+                       class="label_3"
+                       referrerpolicy="no-referrer"
+                       src="../assets/images/pic_htgl_gn_yg.png"
+                     />
+                     <span class="text_50">员工管理</span>
+                   </div>
+                   <div class="box_10 flex-col" @click="tiaoz(2)" v-hasPermi="['basic:info:list']">
+                     <img
+                       class="label_4"
+                       referrerpolicy="no-referrer"
+                       src="../assets/images/pic_htgl_gn_kh.png"
+                     />
+                     <span class="text_51">客户管理</span>
+                   </div>
+                   <div class="box_11 flex-col" @click="tiaoz(3)" v-hasPermi="['work:info:list']">
+                     <img
+                       class="image_10"
+                       referrerpolicy="no-referrer"
+                       src="../assets/images/pic_htgl_gn_pj.png"
+                     />
+                     <span class="text_52">评价管理</span>
+                   </div>
+                   <div class="box_12 flex-col" @click="nandu">
+                     <img
+                       class="label_5"
+                       referrerpolicy="no-referrer"
+                       src="../assets/images/pic_htgl_gn_zj.png"
+                     />
+                     <span class="text_53">年度总结</span>
+                   </div>
+                 </div>
+               </div>
+            <div class="box_4 flex-col">
+                    <div class="section_2 flex-row" style="justify-content: space-between;">
+                      <span class="text_30">较上月服务类型单量统计</span>
+                      <div   style="flex:1; display: flex; justify-content: flex-end;padding: 0 15px;">
+                        <div class="image-text_1 flex-row justify-between">
+                          <div class="image_6" style="background: linear-gradient(0deg, #FFC6A9, #FB9C67);border-radius: 2px;"></div>
+
+                                                <span class="text-group_1">上月</span>
+                                              </div>
+                                              <div class="image-text_2 flex-row justify-between">
+                                                <div class="image_7" style="background: linear-gradient(0deg, #B1EAD8, #59CAA7);border-radius: 2px;"></div>
+
+                                                <span class="text-group_2">本月</span>
+                                              </div>
+                      </div>
+
+                    </div>
+                    <!-- <span class="text_31">件</span> -->
+                    <div class="section_3 flex-row justify-between">
+
+                      <div class="image-wrapper_1 flex-col">
+                        <bar-chart  :chart-data="zhuzhuang" v-if='iszhu'/>
+                      </div>
+                    </div>
+
+                  </div>
+              <div class="box_3 flex-col">
+                      <span class="text_12">服务动态</span>
+                      <div class="group_2 flex-row justify-between">
+                        <div class="group_3 flex-col">
+                          <div class="section_1 flex-col"></div>
+                          <img
+                            class="image_4"
+                            referrerpolicy="no-referrer"
+                            src="../assets/images/pic_htlc_line.png"
+                          />
+                          <img
+                            class="image_5"
+                            referrerpolicy="no-referrer"
+                            src="../assets/images/pic_htlc_line.png"
+                          />
+                        </div>
+                        <div class="group_4 flex-col" v-if="fuweush">
+                          <span class="text_13" v-if="fuwudong[0].serviceProgress == 0">{{fuwudong[0].createTime}}</span>
+                          <span class="text_13" v-if="fuwudong[0].serviceProgress == 1">{{fuwudong[0].takeTime}}</span>
+                          <span class="text_13" v-if="fuwudong[0].serviceProgress == 2">{{fuwudong[0].updateTime}}</span>
+                          <span class="text_13" v-if="fuwudong[0].serviceProgress == 3">{{fuwudong[0].updateTime}}</span>
+                          <div class="text-wrapper_2" v-if="fuwudong[0].serviceProgress == 0">
+                            <span style="color: #161616;">{{fuwudong[0].unitName == null?'暂无数据' : fuwudong[0].unitName}}</span>提交了
+                            <span style="color: #161616;">{{fuwudong[0].type == null?'暂无数据' : fuwudong[0].type}}</span>工单;工单编号
+                            <span style="color: #161616;">{{fuwudong[0].orderId == null?'暂无数据' : fuwudong[0].orderId}}</span>
+                          </div>
+                          <div class="text-wrapper_2" v-if="fuwudong[0].serviceProgress == 1">
+                            <span style="color: #161616;">{{fuwudong[0].responsibleName == null?'暂无数据' : fuwudong[0].responsibleName}}</span>
+                            接下了<span style="color: #161616;">{{fuwudong[0].unitName == null?'暂无数据' : fuwudong[0].unitName}}</span>的
+                            <span style="color: #161616;">{{fuwudong[0].type == null?'暂无数据' : fuwudong[0].type}}</span>工单;工单编号
+                            <span style="color: #161616;">{{fuwudong[0].orderId == null?'暂无数据' : fuwudong[0].orderId}}</span>
+                          </div>
+                          <div class="text-wrapper_2" v-if="fuwudong[0].serviceProgress == 2">
+                            <span style="color: #161616;">{{fuwudong[0].unitName == null?'暂无数据' : fuwudong[0].unitName}}</span>的
+                            <span style="color: #161616;">{{fuwudong[0].type == null?'暂无数据' : fuwudong[0].type}}</span>工单已完成;客户
+                            <span style="color: #161616;">暂无评价</span>
+                          </div>
+                          <div class="text-wrapper_2" v-if="fuwudong[0].serviceProgress == 3">
+                           <span style="color: #161616;">{{fuwudong[0].unitName == null?'暂无数据' : fuwudong[0].unitName}}</span>的
+                                <span style="color: #161616;">{{fuwudong[0].type == null?'暂无数据' : fuwudong[0].type}}</span>工单已完成;客户评价
+                                <span style="color: #161616;">{{fuwudong[0].evaluation == null?'暂无数据' : fuwudong[0].evaluation}}</span>
+                          </div>
+
+                          <!-- 1 -->
+
+                          <span class="text_22" v-if="fuwudong[1].serviceProgress == 0">{{fuwudong[1].createTime}}</span>
+                          <span class="text_22" v-if="fuwudong[1].serviceProgress == 1">{{fuwudong[1].takeTime}}</span>
+                          <span class="text_22" v-if="fuwudong[1].serviceProgress == 2">{{fuwudong[1].updateTime}}</span>
+                          <span class="text_22" v-if="fuwudong[1].serviceProgress == 3">{{fuwudong[1].updateTime}}</span>
+
+                          <div class="text-wrapper_2" v-if="fuwudong[1].serviceProgress == 0">
+                                                      <span style="color: #161616;">{{fuwudong[1].unitName == null?'暂无数据' : fuwudong[1].unitName}}</span>提交了
+                                                      <span style="color: #161616;">{{fuwudong[1].type == null?'暂无数据' : fuwudong[1].type}}</span>工单;工单编号
+                                                      <span style="color: #161616;">{{fuwudong[1].orderId == null?'暂无数据' : fuwudong[1].orderId}}</span>
+                                                    </div>
+                                                    <div class="text-wrapper_2" v-if="fuwudong[1].serviceProgress == 1">
+                                                      <span style="color: #161616;">{{fuwudong[1].responsibleName == null?'暂无数据' : fuwudong[1].responsibleName}}</span>
+                                                      接下了<span style="color: #161616;">{{fuwudong[1].unitName == null?'暂无数据' : fuwudong[1].unitName}}</span>的
+                                                      <span style="color: #161616;">{{fuwudong[1].type == null?'暂无数据' : fuwudong[1].type}}</span>工单;工单编号
+                                                      <span style="color: #161616;">{{fuwudong[1].orderId == null?'暂无数据' : fuwudong[1].orderId}}</span>
+                                                    </div>
+                                                    <div class="text-wrapper_2" v-if="fuwudong[1].serviceProgress == 2">
+                                                      <span style="color: #161616;">{{fuwudong[1].unitName == null?'暂无数据' : fuwudong[1].unitName}}</span>的
+                                                      <span style="color: #161616;">{{fuwudong[1].type == null?'暂无数据' : fuwudong[1].type}}</span>工单已完成;客户
+                                                      <span style="color: #161616;">暂无评价</span>
+                                                    </div>
+                                                    <div class="text-wrapper_2" v-if="fuwudong[1].serviceProgress == 3">
+                                                     <span style="color: #161616;">{{fuwudong[1].unitName == null?'暂无数据' : fuwudong[1].unitName}}</span>的
+                                                          <span style="color: #161616;">{{fuwudong[1].type == null?'暂无数据' : fuwudong[1].type}}</span>工单已完成;客户评价
+                                                          <span style="color: #161616;">{{fuwudong[1].evaluation == null?'暂无数据' : fuwudong[1].evaluation}}</span>
+                                                    </div>
+
+                          <span class="text_29" v-if="fuwudong[2].serviceProgress == 0">{{fuwudong[2].createTime}}</span>
+                          <span class="text_29" v-if="fuwudong[2].serviceProgress == 1">{{fuwudong[2].takeTime}}</span>
+                          <span class="text_29" v-if="fuwudong[2].serviceProgress == 2">{{fuwudong[2].updateTime}}</span>
+                          <span class="text_29" v-if="fuwudong[2].serviceProgress == 3">{{fuwudong[2].updateTime}}</span>
+
+                        </div>
+                      </div>
+                      <div class="group_5 flex-col"></div>
+                      <div class="group_6 flex-col"></div>
+                    </div>
+       </el-col>
+       <el-col :span="8" style="padding-right: 0;">
+          <div class="box_20 flex-col">
+            <pie-chart :chart-data="huanxi"/>
+                  <div class="section_6 flex-row" style="justify-content: space-between;margin-top: 45px;">
+                    <div style="flex: 1;display: flex;justify-content: space-between;">
+                      <div class="section_7 flex-col"></div>
+                      <span class="text_92">网络服务</span>
+                    </div>
+                    <div style="flex: 1;display: flex;justify-content: space-between;margin: 0 10px;">
+                      <div class="section_8 flex-col"></div>
+                      <span class="text_93">设备服务</span>
+                    </div>
+                    <div style="flex: 1;display: flex;justify-content: space-between;">
+                      <div class="section_9 flex-col"></div>
+                      <span class="text_94">软件服务</span>
+                    </div>
+                  </div>
+                  <div class="section_6 flex-row" style="justify-content: space-between;margin-top: 20px;">
+                                      <div style="flex: 1;display: flex;justify-content: space-between;">
+                                        <div class="section_7 flex-col"    style="background-color: #EE6666;"></div>
+                                        <span class="text_92">开发服务</span>
+                                      </div>
+                                      <div style="flex: 1;display: flex;justify-content: space-between;margin: 0 10px;">
+                                        <div class="section_8 flex-col" style="background-color: #73C0DE;"></div>
+                                        <span class="text_93">设计服务</span>
+                                      </div>
+                                      <div style="flex: 1;display: flex;justify-content: space-between;">
+                                        <div class="section_9 flex-col" style="background-color: #5470C6;"></div>
+                                        <span class="text_94">其他服务 </span>
+                                      </div>
+                                    </div>
+                </div>
+          <div class="box_19 flex-col">
+                  <span class="text_60">员工业绩Top6排名</span>
+                  <div class="group_7 " style="margin-top: 20px;">
+                    <el-row>
+                      <el-col :span="3">
+                        <div style="width: 100%;height: 26px;">
+
+                        </div>
+                      </el-col>
+                      <el-col :span="7" style="display: flex;justify-content: center;">
+                        <div class="text-wrapper_9 ">
+                          <span class="text_61">姓名</span>
+                        </div>
+                      </el-col>
+                      <el-col :span="7" style="display: flex;justify-content: center;">
+                        <div class="text-wrapper_9 ">
+                          <span class="text_61">姓名</span>
+                        </div>
+                      </el-col>
+                      <el-col :span="7" style="display: flex;justify-content: center;">
+                        <div class="text-wrapper_9 ">
+                          <span class="text_61">姓名</span>
+                        </div>
+                      </el-col>
+                    </el-row>
+
+                  </div>
+                  <div class="group_8 ">
+                    <el-row>
+                                          <el-col :span="3">
+                   <img
+                                         class="thumbnail_2"
+                                         referrerpolicy="no-referrer"
+                                         src="../assets/images/icon_ndtj_jp_jp.png"
+                                       />
+                                          </el-col>
+                                          <el-col :span="7" style="display: flex;justify-content: center;">
+                                           <span class="text_64">孙丽</span>
+                                          </el-col>
+                                          <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                             <span class="text_64">开发部</span>
+                                          </el-col>
+                                          <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                            <span class="text_64">14单</span>
+                                          </el-col>
+                                        </el-row>
+                  </div>
+                  <div class="group_8 ">
+                    <el-row>
+                                          <el-col :span="3">
+                   <img
+                                         class="thumbnail_3"
+                                         referrerpolicy="no-referrer"
+                                         src="../assets/images/icon_ndtj_jp_yp.png"
+                                       />
+                                          </el-col>
+                                          <el-col :span="7" style="display: flex;justify-content: center;">
+                                           <span class="text_64">王伟民</span>
+                                          </el-col>
+                                          <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                             <span class="text_64">网络服务部</span>
+                                          </el-col>
+                                          <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                            <span class="text_64">14单</span>
+                                          </el-col>
+                                        </el-row>
+                  </div>
+                  <div class="group_8 ">
+                    <el-row>
+                                          <el-col :span="3">
+                   <img
+                                         class="thumbnail_4"
+                                         referrerpolicy="no-referrer"
+                                         src="../assets/images/icon_ndtj_jp_tp.png"
+                                       />
+                                          </el-col>
+                                          <el-col :span="7" style="display: flex;justify-content: center;">
+                                           <span class="text_64">王伟民</span>
+                                          </el-col>
+                                          <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                             <span class="text_64">网络服务部</span>
+                                          </el-col>
+                                          <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                            <span class="text_64">14单</span>
+                                          </el-col>
+                                        </el-row>
+                  </div>
+                  <div class="group_8 ">
+                    <el-row>
+                                          <el-col :span="3">
+                   <span class="text_81">4</span>
+                                          </el-col>
+                                          <el-col :span="7" style="display: flex;justify-content: center;">
+                                           <span class="text_64">王伟民</span>
+                                          </el-col>
+                                          <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                             <span class="text_64">开发部</span>
+                                          </el-col>
+                                          <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                            <span class="text_64">14单</span>
+                                          </el-col>
+                                        </el-row>
+                  </div>
+                  <div class="group_8 ">
+                    <el-row>
+                                          <el-col :span="3">
+                   <span class="text_81">5</span>
+                                          </el-col>
+                                          <el-col :span="7" style="display: flex;justify-content: center;">
+                                           <span class="text_64">王伟民</span>
+                                          </el-col>
+                                          <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                             <span class="text_64">开发部</span>
+                                          </el-col>
+                                          <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                            <span class="text_64">14单</span>
+                                          </el-col>
+                                        </el-row>
+                  </div>
+                  <div class="group_8 ">
+                    <el-row>
+                                          <el-col :span="3">
+                  <span class="text_81">6</span>
+                                          </el-col>
+                                          <el-col :span="7" style="display: flex;justify-content: center;">
+                                          <span class="text_64">刘琪琪</span>
+                                          </el-col>
+                                          <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                             <span class="text_64">运维部</span>
+                                          </el-col>
+                                          <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                            <span class="text_64">14单</span>
+                                          </el-col>
+                                        </el-row>
+                  </div>
+                </div>
+       </el-col>
+     </el-col>
+     <el-col :span="6" style="padding-right: 0;">
+      <div class="box_26 flex-col">
+              <div class="box_27 flex-row">
+                <div class=" flex-row">
+                  <div class="image-wrapper_6 flex-col justify-between">
+                    <img :src="avatar" class="label_8">
+
+                    <img
+                      class="thumbnail_25"
+                      referrerpolicy="no-referrer"
+                      src="../assets/images/icon_htgl_tz.png"
+                    />
+                  </div>
+                  <div class="group_23 flex-col">
+                    <div class="group_24 flex-row justify-between">
+                      <span class="text_148">admin</span>
+                      <img
+                        class="thumbnail_26"
+                        referrerpolicy="no-referrer"
+                        src="../assets/images/icon_htgl_bj.png"
+                      />
+                    </div>
+                    <div class="text-wrapper_23 flex-col">
+                      <span class="text_149">超级管理员</span>
+                    </div>
+                  </div>
+                </div>
+                <img
+                  class="image_17"
+                  referrerpolicy="no-referrer"
+                  src="../assets/images/pic_htgl_zhzs.png"
+                />
+              </div>
+              <span class="text_151" @click="dainge"
+                >您有<span style="color: #F06011;margin-right: 8px;margin-left: 5px;">{{dabnum}}</span>条新消息等待处理!</span
               >
-            </p>
-            <p>
-              <i class="el-icon-money"></i> 支付宝:<a
-                href="javascript:;"
-                class="支付宝信息"
-                >/ *若依</a
+              <span class="text_152"
+                >上次登录时间:{{getyer}}年{{getmor}}月{{getday}}日&nbsp;&nbsp;{{getshifL}}</span
               >
-            </p>
-          </div>
-        </el-card>
-      </el-col>
-      <el-col :xs="24" :sm="24" :md="12" :lg="8">
-        <el-card class="update-log">
-          <div slot="header" class="clearfix">
-            <span>更新日志</span>
-          </div>
-          <el-collapse accordion>
-            <el-collapse-item title="v3.8.9 - 2024-12-30">
-              <ol>
-                <li>用户管理支持分栏拖动</li>
-                <li>修改主题样式本地读取</li>
-                <li>用户头像http(s)链接支持</li>
-                <li>用户管理过滤掉已禁用部门</li>
-                <li>支持自定义显示Excel属性列</li>
-                <li>操作日志记录DELETE请求参数</li>
-                <li>白名单支持对通配符路径匹配</li>
-                <li>校检文件名是否包含特殊字符</li>
-                <li>代码生成创建表屏蔽违规的字符</li>
-                <li>菜单面包屑导航支持多层级显示</li>
-                <li>Excel注解支持wrapText是否允许内容换行</li>
-                <li>代码生成新增配置是否允许文件覆盖到本地</li>
-                <li>修复角色禁用权限不失效问题</li>
-                <li>修复代码生成上级菜单显示问题</li>
-                <li>修复导出子列表对象只能在最后的问题</li>
-                <li>修复TopNav无法正确获取active的问题</li>
-                <li>修复默认关闭Tags-Views内链页面打不开</li>
-                <li>升级oshi到最新版本6.6.5</li>
-                <li>升级tomcat到最新版本9.0.96</li>
-                <li>升级fastjson到最新版2.0.53</li>
-                <li>升级logback到最新版本1.2.13</li>
-                <li>升级spring-framework到最新版本5.3.39</li>
-                <li>升级quill到最新版本2.0.2</li>
-                <li>升级axios到最新版本0.28.1</li>
-                <li>优化身份证脱敏正则</li>
-                <li>优化权限更新后同步缓存</li>
-                <li>优化查询时间范围日期格式</li>
-                <li>优化参数键值更换为多行文本</li>
-                <li>优化导入带标题文件关闭清理</li>
-                <li>优化上传图片带域名不增加前缀</li>
-                <li>优化特殊字符密码修改失败问题</li>
-                <li>优化无用户编号不校验数据权限</li>
-                <li>优化TopNav内链菜单点击没有高亮</li>
-                <li>优化菜单管理切换Mini布局错乱问题</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.8.8 - 2024-06-30">
-              <ol>
-                <li>菜单管理新增路由名称</li>
-                <li>新增数据脱敏过滤注解</li>
-                <li>用户密码新增非法字符验证</li>
-                <li>限制用户操作数据权限范围</li>
-                <li>代码生成新增创建表结构功能</li>
-                <li>定时任务白名单配置范围缩小</li>
-                <li>优化代码生成主子表关联查询方式</li>
-                <li>Excel注解新增属性comboReadDict</li>
-                <li>Excel注解ColumnType类型新增文本</li>
-                <li>新增国际化资源文件配置</li>
-                <li>升级oshi到最新版本6.6.1</li>
-                <li>升级druid到最新版本1.2.23</li>
-                <li>升级core-js到最新版本3.37.1</li>
-                <li>更新HttpUtils中的User-Agent</li>
-                <li>更新compressionPlugin到6.1.2以兼容node18+</li>
-                <li>升级spring-security到安全版本,防止漏洞风险</li>
-                <li>升级spring-framework到安全版本,防止漏洞风险</li>
-                <li>优化自定义XSS注解匹配方式</li>
-                <li>优化缓存监控键名列表排序显示</li>
-                <li>优化定时任务日志默认按时间排序</li>
-                <li>优化默认文件大小超过2G无效的问题</li>
-                <li>优化查表特殊字符使用反斜杠进行转义</li>
-                <li>优化定时任务cron表达式小时配置显示错误问题</li>
-                <li>优化多个自定数据权限使用in查询,避免多次拼接</li>
-                <li>优化导入Excel时设置dictType属性重复查缓存问题</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.8.7 - 2023-12-08">
-              <ol>
-                <li>操作日志记录部门名称</li>
-                <li>全局数据存储用户编号</li>
-                <li>新增编程式判断资源访问权限</li>
-                <li>操作日志列表新增IP地址查询</li>
-                <li>定时任务新增页去除状态选项</li>
-                <li>代码生成支持选择前端模板类型</li>
-                <li>显隐列组件支持复选框弹出类型</li>
-                <li>通用排序属性orderBy参数限制长度</li>
-                <li>Excel自定义数据处理器增加单元格/工作簿对象</li>
-                <li>升级oshi到最新版本6.4.8</li>
-                <li>升级druid到最新版本1.2.20</li>
-                <li>升级fastjson到最新版2.0.43</li>
-                <li>升级pagehelper到最新版1.4.7</li>
-                <li>升级commons.io到最新版本2.13.0</li>
-                <li>升级element-ui到最新版本2.15.14</li>
-                <li>修复五级路由缓存无效问题</li>
-                <li>修复外链带端口出现的异常</li>
-                <li>修复树模板父级编码变量错误</li>
-                <li>修复字典表详情页面搜索问题</li>
-                <li>修复内链iframe没有传递参数问题</li>
-                <li>修复自定义字典样式不生效的问题</li>
-                <li>修复字典缓存删除方法参数错误问题</li>
-                <li>修复Excel导入数据临时文件无法删除问题</li>
-                <li>修复未登录带参数访问成功后参数丢失问题</li>
-                <li>修复HeaderSearch组件跳转query参数丢失问题</li>
-                <li>修复代码生成导入后必填项与数据库不匹配问题</li>
-                <li>修复Excels导入时无法获取到dictType字典值问题</li>
-                <li>优化下载zip方法新增遮罩层</li>
-                <li>优化头像上传参数新增文件名称</li>
-                <li>优化字典标签支持自定义分隔符</li>
-                <li>优化菜单管理类型为按钮状态可选</li>
-                <li>优化前端防重复提交数据大小限制</li>
-                <li>优化TopNav菜单没有图标svg不显示</li>
-                <li>优化数字金额大写转换精度丢失问题</li>
-                <li>优化富文本Editor组件检验图片格式</li>
-                <li>优化页签在Firefox浏览器被遮挡的问题</li>
-                <li>优化个人中心/基本资料修改时数据显示问题</li>
-                <li>优化缓存监控图表支持跟随屏幕大小自适应调整</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.8.6 - 2023-06-30">
-              <ol>
-                <li>支持登录IP黑名单限制</li>
-                <li>新增监控页面图标显示</li>
-                <li>操作日志新增消耗时间属性</li>
-                <li>屏蔽定时任务bean违规的字符</li>
-                <li>日志管理使用索引提升查询性能</li>
-                <li>日志注解支持排除指定的请求参数</li>
-                <li>支持自定义隐藏属性列过滤子对象</li>
-                <li>升级oshi到最新版本6.4.3</li>
-                <li>升级druid到最新版本1.2.16</li>
-                <li>升级fastjson到最新版2.0.34</li>
-                <li>升级spring-boot到最新版本2.5.15</li>
-                <li>升级element-ui到最新版本2.15.13</li>
-                <li>移除apache/commons-fileupload依赖</li>
-                <li>修复页面切换时布局错乱的问题</li>
-                <li>修复匿名注解Anonymous空指针问题</li>
-                <li>修复路由跳转被阻止时内部产生报错信息问题</li>
-                <li>修复isMatchedIp的参数判断产生空指针的问题</li>
-                <li>修复用户多角色数据权限可能出现权限抬升的情况</li>
-                <li>修复开启TopNav后一级菜单路由参数设置无效问题</li>
-                <li>修复DictTag组件value没有匹配的值时则展示value</li>
-                <li>优化文件下载出现的异常</li>
-                <li>优化选择图标组件高亮回显</li>
-                <li>优化弹窗后导航栏偏移的问题</li>
-                <li>优化修改密码日志存储明文问题</li>
-                <li>优化页签栏关闭其他出现的异常问题</li>
-                <li>优化页签关闭左侧选项排除首页选项</li>
-                <li>优化关闭当前tab页跳转最右侧tab页</li>
-                <li>优化缓存列表清除操作提示不变的问题</li>
-                <li>优化字符未使用下划线不进行驼峰式处理</li>
-                <li>优化用户导入更新时需获取用户编号问题</li>
-                <li>优化侧边栏的平台标题与VUE_APP_TITLE保持同步</li>
-                <li>优化导出Excel时设置dictType属性重复查缓存问题</li>
-                <li>连接池Druid支持新的配置connectTimeout和socketTimeout</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.8.5 - 2023-01-01">
-              <ol>
-                <li>定时任务违规的字符</li>
-                <li>重置时取消部门选中</li>
-                <li>新增返回警告消息提示</li>
-                <li>忽略不必要的属性数据返回</li>
-                <li>修改参数键名时移除前缓存配置</li>
-                <li>导入更新用户数据前校验数据权限</li>
-                <li>兼容Excel下拉框内容过多无法显示的问题</li>
-                <li>升级echarts到最新版本5.4.0</li>
-                <li>升级core-js到最新版本3.25.3</li>
-                <li>升级oshi到最新版本6.4.0</li>
-                <li>升级kaptcha到最新版2.3.3</li>
-                <li>升级druid到最新版本1.2.15</li>
-                <li>升级fastjson到最新版2.0.20</li>
-                <li>升级pagehelper到最新版1.4.6</li>
-                <li>优化弹窗内容过多展示不全问题</li>
-                <li>优化swagger-ui静态资源使用缓存</li>
-                <li>开启TopNav没有子菜单隐藏侧边栏</li>
-                <li>删除fuse无效选项maxPatternLength</li>
-                <li>优化导出对象的子列表为空会出现[]问题</li>
-                <li>优化编辑头像时透明部分会变成黑色问题</li>
-                <li>优化小屏幕上修改头像界面布局错位的问题</li>
-                <li>修复代码生成勾选属性无效问题</li>
-                <li>修复文件上传组件格式验证问题</li>
-                <li>修复回显数据字典数组异常问题</li>
-                <li>修复sheet超出最大行数异常问题</li>
-                <li>修复Log注解GET请求记录不到参数问题</li>
-                <li>修复调度日志点击多次数据不变化的问题</li>
-                <li>修复主题颜色在Drawer组件不会加载问题</li>
-                <li>修复文件名包含特殊字符的文件无法下载问题</li>
-                <li>修复table中更多按钮切换主题色未生效修复问题</li>
-                <li>修复某些特性的环境生成代码变乱码TXT文件问题</li>
-                <li>修复代码生成图片/文件/单选时选择必填无法校验问题</li>
-                <li>修复某些特性的情况用户编辑对话框中角色和部门无法修改问题</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.8.4 - 2022-09-26">
-              <ol>
-                <li>数据逻辑删除不进行唯一验证</li>
-                <li>Excel注解支持导出对象的子列表方法</li>
-                <li>Excel注解支持自定义隐藏属性列</li>
-                <li>Excel注解支持backgroundColor属性设置背景色</li>
-                <li>支持配置密码最大错误次数/锁定时间</li>
-                <li>登录日志新增解锁账户功能</li>
-                <li>通用下载方法新增config配置选项</li>
-                <li>支持多权限字符匹配角色数据权限</li>
-                <li>页面内嵌iframe切换tab不刷新数据</li>
-                <li>操作日志记录支持排除敏感属性字段</li>
-                <li>修复多文件上传报错出现的异常问题</li>
-                <li>修复图片预览组件src属性为null值控制台报错问题</li>
-                <li>升级oshi到最新版本6.2.2</li>
-                <li>升级fastjson到最新版2.0.14</li>
-                <li>升级pagehelper到最新版1.4.3</li>
-                <li>升级core-js到最新版本3.25.2</li>
-                <li>升级element-ui到最新版本2.15.10</li>
-                <li>优化任务过期不执行调度</li>
-                <li>优化字典数据使用store存取</li>
-                <li>优化修改资料头像被覆盖的问题</li>
-                <li>优化修改用户登录账号重复验证</li>
-                <li>优化代码生成同步后值NULL问题</li>
-                <li>优化定时任务支持执行父类方法</li>
-                <li>优化用户个人信息接口防止修改部门</li>
-                <li>优化布局设置使用el-drawer抽屉显示</li>
-                <li>优化没有权限的用户编辑部门缺少数据</li>
-                <li>优化日志注解记录限制请求地址的长度</li>
-                <li>优化excel/scale属性导出单元格数值类型</li>
-                <li>优化日志操作中重置按钮时重复查询的问题</li>
-                <li>优化多个相同角色数据导致权限SQL重复问题</li>
-                <li>优化表格上右侧工具条(搜索按钮显隐&右侧样式凸出)</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.8.3 - 2022-06-27">
-              <ol>
-                <li>新增缓存列表菜单功能</li>
-                <li>代码生成树表新增(展开/折叠)</li>
-                <li>Excel注解支持color字体颜色</li>
-                <li>新增Anonymous匿名访问不鉴权注解</li>
-                <li>用户头像上传限制只能为图片格式</li>
-                <li>接口使用泛型使其看到响应属性字段</li>
-                <li>检查定时任务bean所在包名是否为白名单配置</li>
-                <li>添加页签openPage支持传递参数</li>
-                <li>用户缓存信息添加部门ancestors祖级列表</li>
-                <li>升级element-ui到最新版本2.15.8</li>
-                <li>升级oshi到最新版本6.1.6</li>
-                <li>升级druid到最新版本1.2.11</li>
-                <li>升级fastjson到最新版2.0.8</li>
-                <li>升级spring-boot到最新版本2.5.14</li>
-                <li>降级jsencrypt版本兼容IE浏览器</li>
-                <li>删除多余的salt字段</li>
-                <li>新增获取不带后缀文件名称方法</li>
-                <li>新增获取配置文件中的属性值方法</li>
-                <li>新增内容编码/解码方便插件集成使用</li>
-                <li>字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)</li>
-                <li>优化设置分页参数默认值</li>
-                <li>优化对空字符串参数处理的过滤</li>
-                <li>优化显示顺序orderNum类型为整型</li>
-                <li>优化表单构建按钮不显示正则校验</li>
-                <li>优化字典数据回显样式下拉框显示值</li>
-                <li>优化R响应成功状态码与全局保持一致</li>
-                <li>优化druid开启wall过滤器出现的异常问题</li>
-                <li>优化用户管理左侧树型组件增加选中高亮保持</li>
-                <li>优化新增用户与角色信息&用户与岗位信息逻辑</li>
-                <li>优化默认不启用压缩文件缓存防止node_modules过大</li>
-                <li>修复字典数据显示不全问题</li>
-                <li>修复操作日志查询类型条件为0时会查到所有数据</li>
-                <li>修复Excel注解prompt/combo同时使用不生效问题</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.8.2 - 2022-04-01">
-              <ol>
-                <li>前端支持设置是否需要防止数据重复提交</li>
-                <li>开启TopNav没有子菜单情况隐藏侧边栏</li>
-                <li>侧边栏菜单名称过长悬停显示标题</li>
-                <li>用户访问控制时校验数据权限,防止越权</li>
-                <li>导出Excel时屏蔽公式,防止CSV注入风险</li>
-                <li>组件ImagePreview支持多图预览显示</li>
-                <li>组件ImageUpload支持多图同时选择上传</li>
-                <li>组件FileUpload支持多文件同时选择上传</li>
-                <li>服务监控新增运行参数信息显示</li>
-                <li>定时任务目标字符串过滤特殊字符</li>
-                <li>定时任务目标字符串验证包名白名单</li>
-                <li>代码生成列表图片支持预览</li>
-                <li>代码生成编辑修改打开新页签</li>
-                <li>代码生成新增Java类型Boolean</li>
-                <li>代码生成子表支持日期/字典配置</li>
-                <li>代码生成同步保留必填/类型选项</li>
-                <li>升级oshi到最新版本6.1.2</li>
-                <li>升级fastjson到最新版1.2.80</li>
-                <li>升级pagehelper到最新版1.4.1</li>
-                <li>升级spring-boot到最新版本2.5.11</li>
-                <li>升级spring-boot-mybatis到最新版2.2.2</li>
-                <li>添加遗漏的分页参数合理化属性</li>
-                <li>修改npm即将过期的注册源地址</li>
-                <li>修复分页组件请求两次问题</li>
-                <li>修复通用文件下载接口跨域问题</li>
-                <li>修复Xss注解字段值为空时的异常问题</li>
-                <li>修复选项卡点击右键刷新丢失参数问题</li>
-                <li>修复表单清除元素位置未垂直居中问题</li>
-                <li>修复服务监控中运行参数显示条件错误</li>
-                <li>修复导入Excel时字典字段类型为Long转义为空问题</li>
-                <li>修复登录超时刷新页面跳转登录页面还提示重新登录问题</li>
-                <li>优化加载字典缓存数据</li>
-                <li>优化IP地址获取到多个的问题</li>
-                <li>优化任务队列满时任务拒绝策略</li>
-                <li>优化文件上传兼容Weblogic环境</li>
-                <li>优化定时任务默认保存到内存中执行</li>
-                <li>优化部门修改缩放后出现的错位问题</li>
-                <li>优化Excel格式化不同类型的日期对象</li>
-                <li>优化菜单表关键字导致的插件报错问题</li>
-                <li>优化Oracle用户头像列为空时不显示问题</li>
-                <li>优化页面若未匹配到字典标签则返回原字典值</li>
-                <li>优化修复登录失效后多次请求提示多次弹窗问题</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.8.1 - 2022-01-01">
-              <ol>
-                <li>新增Vue3前端代码生成模板</li>
-                <li>新增图片预览组件</li>
-                <li>新增压缩插件实现打包Gzip</li>
-                <li>自定义xss校验注解实现</li>
-                <li>自定义文字复制剪贴指令</li>
-                <li>代码生成预览支持复制内容</li>
-                <li>路由支持单独配置菜单或角色权限</li>
-                <li>用户管理部门查询选择节点后分页参数初始</li>
-                <li>修复用户分配角色属性错误</li>
-                <li>修复打包后字体图标偶现的乱码问题</li>
-                <li>修复菜单管理重置表单出现的错误</li>
-                <li>修复版本差异导致的懒加载报错问题</li>
-                <li>修复Cron组件中周回显问题</li>
-                <li>修复定时任务多参数逗号分隔的问题</li>
-                <li>修复根据ID查询列表可能出现的主键溢出问题</li>
-                <li>修复tomcat配置参数已过期问题</li>
-                <li>升级clipboard到最新版本2.0.8</li>
-                <li>升级oshi到最新版本v5.8.6</li>
-                <li>升级fastjson到最新版1.2.79</li>
-                <li>升级spring-boot到最新版本2.5.8</li>
-                <li>升级log4j2到2.17.1,防止漏洞风险</li>
-                <li>优化下载解析blob异常提示</li>
-                <li>优化代码生成字典组重复问题</li>
-                <li>优化查询用户的角色组&岗位组代码</li>
-                <li>优化定时任务cron表达式小时设置24</li>
-                <li>优化用户导入提示溢出则显示滚动条</li>
-                <li>优化防重复提交标识组合为(key+url+header)</li>
-                <li>优化分页方法设置成通用方便灵活调用</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.8.0 - 2021-12-01">
-              <ol>
-                <li>新增配套并同步的Vue3前端版本</li>
-                <li>新增通用方法简化模态/缓存/下载/权限/页签使用</li>
-                <li>优化导出数据/使用通用下载方法</li>
-                <li>Excel注解支持自定义数据处理器</li>
-                <li>Excel注解支持导入导出标题信息</li>
-                <li>Excel导入支持@Excels注解</li>
-                <li>新增组件data-dict,简化数据字典使用</li>
-                <li>新增Jaxb依赖,防止jdk8以上出现的兼容错误</li>
-                <li>生产环境使用路由懒加载提升页面响应速度</li>
-                <li>修复五级以上菜单出现的404问题</li>
-                <li>防重提交注解支持配置间隔时间/提示消息</li>
-                <li>日志注解新增是否保存响应参数</li>
-                <li>任务屏蔽违规字符&参数忽略双引号中的逗号</li>
-                <li>升级SpringBoot到最新版本2.5.6</li>
-                <li>升级pagehelper到最新版1.4.0</li>
-                <li>升级spring-boot-mybatis到最新版2.2.0</li>
-                <li>升级oshi到最新版本v5.8.2</li>
-                <li>升级druid到最新版1.2.8</li>
-                <li>升级velocity到最新版本2.3</li>
-                <li>升级fastjson到最新版1.2.78</li>
-                <li>升级axios到最新版本0.24.0</li>
-                <li>升级dart-sass到版本1.32.13</li>
-                <li>升级core-js到最新版本3.19.1</li>
-                <li>升级jsencrypt到最新版本3.2.1</li>
-                <li>升级js-cookie到最新版本3.0.1</li>
-                <li>升级file-saver到最新版本2.0.5</li>
-                <li>升级sass-loader到最新版本10.1.1</li>
-                <li>升级element-ui到最新版本2.15.6</li>
-                <li>新增sendGet无参请求方法</li>
-                <li>禁用el-tag组件的渐变动画</li>
-                <li>代码生成点击预览重置激活tab</li>
-                <li>AjaxResult重写put方法,以方便链式调用</li>
-                <li>优化登录/验证码请求headers不设置token</li>
-                <li>优化用户个人信息接口防止修改用户名</li>
-                <li>优化Cron表达式生成器关闭时销毁避免缓存</li>
-                <li>优化注册成功提示消息类型success</li>
-                <li>优化aop语法,使用spring自动注入注解</li>
-                <li>优化记录登录信息,移除不必要的修改</li>
-                <li>优化mybatis全局默认的执行器</li>
-                <li>优化Excel导入图片可能出现的异常</li>
-                <li>修复代码生成模板主子表删除缺少事务</li>
-                <li>修复日志记录可能出现的转换异常</li>
-                <li>修复代码生成复选框字典遗漏问题</li>
-                <li>修复关闭xss功能导致可重复读RepeatableFilter失效</li>
-                <li>修复字符串无法被反转义问题</li>
-                <li>修复后端主子表代码模板方法名生成错误问题</li>
-                <li>修复xss过滤后格式出现的异常</li>
-                <li>修复swagger没有指定dataTypeClass导致启动出现warn日志</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.7.0 - 2021-09-13">
-              <ol>
-                <li>参数管理支持配置验证码开关</li>
-                <li>新增是否开启用户注册功能</li>
-                <li>定时任务支持在线生成cron表达式</li>
-                <li>菜单管理支持配置路由参数</li>
-                <li>支持自定义注解实现接口限流</li>
-                <li>Excel注解支持Image图片导入</li>
-                <li>自定义弹层溢出滚动样式</li>
-                <li>自定义可拖动弹窗宽度指令</li>
-                <li>自定义可拖动弹窗高度指令</li>
-                <li>修复任意账户越权问题</li>
-                <li>修改时检查用户数据权限范围</li>
-                <li>修复保存配置主题颜色失效问题</li>
-                <li>新增暗色菜单风格主题</li>
-                <li>菜单&部门新增展开/折叠功能</li>
-                <li>页签新增关闭左侧&添加图标</li>
-                <li>顶部菜单排除隐藏的默认路由</li>
-                <li>顶部菜单同步系统主题样式</li>
-                <li>跳转路由高亮相对应的菜单栏</li>
-                <li>代码生成主子表多选行数据</li>
-                <li>日期范围支持添加多组</li>
-                <li>升级element-ui到最新版本2.15.5</li>
-                <li>升级oshi到最新版本v5.8.0</li>
-                <li>升级commons.io到最新版本v2.11.0</li>
-                <li>定时任务屏蔽ldap远程调用</li>
-                <li>定时任务屏蔽http(s)远程调用</li>
-                <li>补充定时任务表字段注释</li>
-                <li>定时任务对检查异常进行事务回滚</li>
-                <li>启用父部门状态排除顶级节点</li>
-                <li>富文本新增上传文件大小限制</li>
-                <li>默认首页使用keep-alive缓存</li>
-                <li>修改代码生成字典回显样式</li>
-                <li>自定义分页合理化传入参数</li>
-                <li>修复字典组件值为整形不显示问题</li>
-                <li>修复定时任务日志执行状态显示</li>
-                <li>角色&菜单新增字段属性提示信息</li>
-                <li>修复角色分配用户页面参数类型错误提醒</li>
-                <li>优化布局设置动画特效</li>
-                <li>优化异常处理信息</li>
-                <li>优化错误token导致的解析异常</li>
-                <li>密码框新增显示切换密码图标</li>
-                <li>定时任务新增更多操作</li>
-                <li>更多操作按钮添加权限控制</li>
-                <li>导入用户样式优化</li>
-                <li>提取通用方法到基类控制器</li>
-                <li>优化使用权限工具获取用户信息</li>
-                <li>优化用户不能删除自己</li>
-                <li>优化XSS跨站脚本过滤</li>
-                <li>优化代码生成模板</li>
-                <li>验证码默认20s超时</li>
-                <li>BLOB下载时清除URL对象引用</li>
-                <li>代码生成导入表按创建时间排序</li>
-                <li>修复代码生成页面数据编辑保存之后总是跳转第一页的问题</li>
-                <li>修复带safari浏览器无法格式化utc日期格式yyyy-MM-dd'T'HH:mm:ss.SSS问题</li>
-                <li>多图上传组件移除多余的api地址&验证失败导致图片删除问题&无法删除相应图片修复</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.6.0 - 2021-07-12">
-              <ol>
-                <li>角色管理新增分配用户功能</li>
-                <li>用户管理新增分配角色功能</li>
-                <li>日志列表支持排序操作</li>
-                <li>优化参数&字典缓存操作</li>
-                <li>系统布局配置支持动态标题开关</li>
-                <li>菜单路由配置支持内链访问</li>
-                <li>默认访问后端首页新增提示语</li>
-                <li>富文本默认上传返回url类型</li>
-                <li>新增自定义弹窗拖拽指令</li>
-                <li>全局注册常用通用组件</li>
-                <li>全局挂载字典标签组件</li>
-                <li>ImageUpload组件支持多图片上传</li>
-                <li>FileUpload组件支持多文件上传</li>
-                <li>文件上传组件添加数量限制属性</li>
-                <li>富文本编辑组件添加类型属性</li>
-                <li>富文本组件工具栏配置视频</li>
-                <li>封装通用iframe组件</li>
-                <li>限制超级管理员不允许操作</li>
-                <li>用户信息长度校验限制</li>
-                <li>分页组件新增pagerCount属性</li>
-                <li>添加bat脚本执行应用</li>
-                <li>升级oshi到最新版本v5.7.4</li>
-                <li>升级element-ui到最新版本2.15.2</li>
-                <li>升级pagehelper到最新版1.3.1</li>
-                <li>升级commons.io到最新版本v2.10.0</li>
-                <li>升级commons.fileupload到最新版本v1.4</li>
-                <li>升级swagger到最新版本v3.0.0</li>
-                <li>修复关闭confirm提示框控制台报错问题</li>
-                <li>修复存在的SQL注入漏洞问题</li>
-                <li>定时任务屏蔽rmi远程调用</li>
-                <li>修复用户搜索分页变量错误</li>
-                <li>修复导出角色数据范围翻译缺少仅本人</li>
-                <li>修复表单构建选择下拉选择控制台报错问题</li>
-                <li>优化图片工具类读取文件</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.5.0 - 2021-05-25">
-              <ol>
-                <li>新增菜单导航显示风格TopNav(false为左侧导航菜单,true为顶部导航菜单)</li>
-                <li>布局设置支持保存&重置配置</li>
-                <li>修复树表数据显示不全&加载慢问题</li>
-                <li>新增IE浏览器版本过低提示页面</li>
-                <li>用户登录后记录最后登录IP&时间</li>
-                <li>页面导出按钮点击之后添加遮罩</li>
-                <li>富文本编辑器支持自定义上传地址</li>
-                <li>富文本编辑组件新增readOnly属性</li>
-                <li>页签TagsView新增关闭右侧功能</li>
-                <li>显隐列组件加载初始默认隐藏列</li>
-                <li>关闭头像上传窗口还原默认图片</li>
-                <li>个人信息添加手机&邮箱重复验证</li>
-                <li>代码生成模板导出按钮点击后添加遮罩</li>
-                <li>代码生成模板树表操作列添加新增按钮</li>
-                <li>代码生成模板修复主子表字段重名问题</li>
-                <li>升级fastjson到最新版1.2.76</li>
-                <li>升级druid到最新版本v1.2.6</li>
-                <li>升级mybatis到最新版3.5.6 阻止远程代码执行漏洞</li>
-                <li>升级oshi到最新版本v5.6.0</li>
-                <li>velocity剔除commons-collections版本,防止3.2.1版本的反序列化漏洞</li>
-                <li>数据监控页默认账户密码防止越权访问</li>
-                <li>修复firefox下表单构建拖拽会新打卡一个选项卡</li>
-                <li>修正后端导入表权限标识</li>
-                <li>修正前端操作日志&登录日志权限标识</li>
-                <li>设置Redis配置HashKey序列化</li>
-                <li>删除操作日志记录信息</li>
-                <li>上传媒体类型添加视频格式</li>
-                <li>修复请求形参未传值记录日志异常问题</li>
-                <li>优化xss校验json请求条件</li>
-                <li>树级结构更新子节点使用replaceFirst</li>
-                <li>优化ExcelUtil空值处理</li>
-                <li>日志记录过滤BindingResult对象,防止异常</li>
-                <li>修改主题后mini类型按钮无效问题</li>
-                <li>优化通用下载完成后删除节点</li>
-                <li>通用Controller添加响应返回消息</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.4.0 - 2021-02-22">
-              <ol>
-                <li>代码生成模板支持主子表</li>
-                <li>表格右侧工具栏组件支持显隐列</li>
-                <li>图片组件添加预览&移除功能</li>
-                <li>Excel注解支持Image图片导出</li>
-                <li>操作按钮组调整为朴素按钮样式</li>
-                <li>代码生成支持文件上传组件</li>
-                <li>代码生成日期控件区分范围</li>
-                <li>代码生成数据库文本类型生成表单文本域</li>
-                <li>用户手机邮箱&菜单组件修改允许空字符串</li>
-                <li>升级SpringBoot到最新版本2.2.13 提升启动速度</li>
-                <li>升级druid到最新版本v1.2.4</li>
-                <li>升级fastjson到最新版1.2.75</li>
-                <li>升级element-ui到最新版本2.15.0</li>
-                <li>修复IE11浏览器报错问题</li>
-                <li>优化多级菜单之间切换无法缓存的问题</li>
-                <li>修复四级菜单无法显示问题</li>
-                <li>修正侧边栏静态路由丢失问题</li>
-                <li>修复角色管理-编辑角色-功能权限显示异常</li>
-                <li>配置文件新增redis数据库索引属性</li>
-                <li>权限工具类增加admin判断</li>
-                <li>角色非自定义权限范围清空选择值</li>
-                <li>修复导入数据为负浮点数时丢失精度问题</li>
-                <li>移除path-to-regexp正则匹配插件</li>
-                <li>修复生成树表代码异常</li>
-                <li>修改ip字段长度防止ipv6地址长度不够</li>
-                <li>防止get请求参数值为false或0等特殊值会导致无法正确的传参</li>
-                <li>登录后push添加catch防止出现检查错误</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.3.0 - 2020-12-14">
-              <ol>
-                <li>新增缓存监控功能</li>
-                <li>支持主题风格配置</li>
-                <li>修复多级菜单之间切换无法缓存的问题</li>
-                <li>多级菜单自动配置组件</li>
-                <li>代码生成预览支持高亮显示</li>
-                <li>支持Get请求映射Params参数</li>
-                <li>删除用户和角色解绑关联</li>
-                <li>去除用户手机邮箱部门必填验证</li>
-                <li>Excel支持注解align对齐方式</li>
-                <li>Excel支持导入Boolean型数据</li>
-                <li>优化头像样式,鼠标移入悬停遮罩</li>
-                <li>代码生成预览提供滚动机制</li>
-                <li>代码生成删除多余的数字float类型</li>
-                <li>修正转换字符串的目标字符集属性</li>
-                <li>回显数据字典防止空值报错</li>
-                <li>日志记录增加过滤多文件场景</li>
-                <li>修改缓存Set方法可能导致嵌套的问题</li>
-                <li>移除前端一些多余的依赖</li>
-                <li>防止安全扫描YUI出现的风险提示</li>
-                <li>修改node-sass为dart-sass</li>
-                <li>升级SpringBoot到最新版本2.1.18</li>
-                <li>升级poi到最新版本4.1.2</li>
-                <li>升级oshi到最新版本v5.3.6</li>
-                <li>升级bitwalker到最新版本1.21</li>
-                <li>升级axios到最新版本0.21.0</li>
-                <li>升级element-ui到最新版本2.14.1</li>
-                <li>升级vue到最新版本2.6.12</li>
-                <li>升级vuex到最新版本3.6.0</li>
-                <li>升级vue-cli到版本4.5.9</li>
-                <li>升级vue-router到最新版本3.4.9</li>
-                <li>升级vue-cli到最新版本4.4.6</li>
-                <li>升级vue-cropper到最新版本0.5.5</li>
-                <li>升级clipboard到最新版本2.0.6</li>
-                <li>升级core-js到最新版本3.8.1</li>
-                <li>升级echarts到最新版本4.9.0</li>
-                <li>升级file-saver到最新版本2.0.4</li>
-                <li>升级fuse.js到最新版本6.4.3</li>
-                <li>升级js-beautify到最新版本1.13.0</li>
-                <li>升级js-cookie到最新版本2.2.1</li>
-                <li>升级path-to-regexp到最新版本6.2.0</li>
-                <li>升级quill到最新版本1.3.7</li>
-                <li>升级screenfull到最新版本5.0.2</li>
-                <li>升级sortablejs到最新版本1.10.2</li>
-                <li>升级vuedraggable到最新版本2.24.3</li>
-                <li>升级chalk到最新版本4.1.0</li>
-                <li>升级eslint到最新版本7.15.0</li>
-                <li>升级eslint-plugin-vue到最新版本7.2.0</li>
-                <li>升级lint-staged到最新版本10.5.3</li>
-                <li>升级runjs到最新版本4.4.2</li>
-                <li>升级sass-loader到最新版本10.1.0</li>
-                <li>升级script-ext-html-webpack-plugin到最新版本2.1.5</li>
-                <li>升级svg-sprite-loader到最新版本5.1.1</li>
-                <li>升级vue-template-compiler到最新版本2.6.12</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.2.1 - 2020-11-18">
-              <ol>
-                <li>阻止任意文件下载漏洞</li>
-                <li>代码生成支持上传控件</li>
-                <li>新增图片上传组件</li>
-                <li>调整默认首页</li>
-                <li>升级druid到最新版本v1.2.2</li>
-                <li>mapperLocations配置支持分隔符</li>
-                <li>权限信息调整</li>
-                <li>调整sql默认时间</li>
-                <li>解决代码生成没有bit类型的问题</li>
-                <li>升级pagehelper到最新版1.3.0</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.2.0 - 2020-10-10">
-              <ol>
-                <li>升级springboot版本到2.1.17 提升安全性</li>
-                <li>升级oshi到最新版本v5.2.5</li>
-                <li>升级druid到最新版本v1.2.1</li>
-                <li>升级jjwt到版本0.9.1</li>
-                <li>升级fastjson到最新版1.2.74</li>
-                <li>修改sass为node-sass,避免el-icon图标乱码</li>
-                <li>代码生成支持同步数据库</li>
-                <li>代码生成支持富文本控件</li>
-                <li>代码生成页面时不忽略remark属性</li>
-                <li>代码生成添加select必填选项</li>
-                <li>Excel导出类型NUMERIC支持精度浮点类型</li>
-                <li>Excel导出targetAttr优化获取值,防止get方法不规范</li>
-                <li>Excel注解支持自动统计数据总和</li>
-                <li>Excel注解支持设置BigDecimal精度&舍入规则</li>
-                <li>菜单&数据权限新增(展开/折叠 全选/全不选 父子联动)</li>
-                <li>允许用户分配到部门父节点</li>
-                <li>菜单新增是否缓存keep-alive</li>
-                <li>表格操作列间距调整</li>
-                <li>限制系统内置参数不允许删除</li>
-                <li>富文本组件优化,支持自定义高度&图片冲突问题</li>
-                <li>富文本工具栏样式对齐</li>
-                <li>导入excel整形值校验优化</li>
-                <li>修复页签关闭所有时固定标签路由不刷新问题</li>
-                <li>表单构建布局型组件新增按钮</li>
-                <li>左侧菜单文字过长显示省略号</li>
-                <li>修正根节点为子部门时,树状结构显示问题</li>
-                <li>修正调用目标字符串最大长度</li>
-                <li>修正菜单提示信息错误</li>
-                <li>修正定时任务执行一次权限标识</li>
-                <li>修正数据库字符串类型nvarchar</li>
-                <li>优化递归子节点</li>
-                <li>优化数据权限判断</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-
-            <el-collapse-item title="v3.1.0 - 2020-08-13">
-              <ol>
-                <li>表格工具栏右侧添加刷新&显隐查询组件</li>
-                <li>后端支持CORS跨域请求</li>
-                <li>代码生成支持选择上级菜单</li>
-                <li>代码生成支持自定义路径</li>
-                <li>代码生成支持复选框</li>
-                <li>Excel导出导入支持dictType字典类型</li>
-                <li>Excel支持分割字符串组内容</li>
-                <li>验证码类型支持(数组计算、字符验证)</li>
-                <li>升级vue-cli版本到4.4.4</li>
-                <li>修改 node-sass 为 dart-sass</li>
-                <li>表单类型为Integer/Long设置整形默认值</li>
-                <li>代码生成器默认mapper路径与默认mapperScan路径不一致</li>
-                <li>优化防重复提交拦截器</li>
-                <li>优化上级菜单不能选择自己</li>
-                <li>修复角色的权限分配后,未实时生效问题</li>
-                <li>修复在线用户日志记录类型</li>
-                <li>修复富文本空格和缩进保存后不生效问题</li>
-                <li>修复在线用户判断逻辑</li>
-                <li>唯一限制条件只返回单条数据</li>
-                <li>添加获取当前的环境配置方法</li>
-                <li>超时登录后页面跳转到首页</li>
-                <li>全局异常状态汉化拦截处理</li>
-                <li>HTML过滤器改为将html转义</li>
-                <li>检查字符支持小数点&降级改成异常提醒</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-
-            <el-collapse-item title="v3.0.0 - 2020-07-20">
-              <ol>
-                <li>单应用调整为多模块项目</li>
-                <li>升级element-ui版本到2.13.2</li>
-                <li>删除babel,提高编译速度。</li>
-                <li>新增菜单默认主类目</li>
-                <li>编码文件名修改为uuid方式</li>
-                <li>定时任务cron表达式验证</li>
-                <li>角色权限修改时已有权限未自动勾选异常修复</li>
-                <li>防止切换权限用户后登录出现404</li>
-                <li>Excel支持sort导出排序</li>
-                <li>创建用户不允许选择超级管理员角色</li>
-                <li>修复代码生成导入表结构出现异常页面不提醒问题</li>
-                <li>修复代码生成点击多次表修改数据不变化的问题</li>
-                <li>修复头像上传成功二次打开无法改变裁剪框大小和位置问题</li>
-                <li>修复布局为small者mini用户表单显示错位问题</li>
-                <li>修复热部署导致的强换异常问题</li>
-                <li>修改用户管理复选框宽度,防止部分浏览器出现省略号</li>
-                <li>IpUtils工具,清除Xss特殊字符,防止Xff注入攻击</li>
-                <li>生成domain 如果是浮点型 统一用BigDecimal</li>
-                <li>定时任务调整label-width,防止部署出现错位</li>
-                <li>调整表头固定列默认样式</li>
-                <li>代码生成模板调整,字段为String并且必填则加空串条件</li>
-                <li>代码生成字典Integer/Long使用parseInt</li>
-                <li>
-                  修复dict_sort不可update为0的问题&查询返回增加dict_sort升序排序
-                </li>
-                <li>修正岗位导出权限注解</li>
-                <li>禁止加密密文返回前端</li>
-                <li>修复代码生成页面中的查询条件创建时间未生效的问题</li>
-                <li>修复首页搜索菜单外链无法点击跳转问题</li>
-                <li>修复菜单管理选择图标,backspace删除时不过滤数据</li>
-                <li>用户管理部门分支节点不可检查&显示计数</li>
-                <li>数据范围过滤属性调整</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-
-            <el-collapse-item title="v2.3.0 - 2020-06-01">
-              <ol>
-                <li>升级fastjson到最新版1.2.70 修复高危安全漏洞</li>
-                <li>dev启动默认打开浏览器</li>
-                <li>vue-cli使用默认source-map</li>
-                <li>slidebar eslint报错优化</li>
-                <li>当tags-view滚动关闭右键菜单</li>
-                <li>字典管理添加缓存读取</li>
-                <li>参数管理支持缓存操作</li>
-                <li>支持一级菜单(和主页同级)在main区域显示</li>
-                <li>限制外链地址必须以http(s)开头</li>
-                <li>tagview & sidebar 主题颜色与element ui(全局)同步</li>
-                <li>修改数据源类型优先级,先根据方法,再根据类</li>
-                <li>支持是否需要设置token属性,自定义返回码消息。</li>
-                <li>swagger请求前缀加入配置。</li>
-                <li>登录地点设置内容过长则隐藏显示</li>
-                <li>修复定时任务执行一次按钮后不提示消息问题</li>
-                <li>修改上级部门(选择项排除本身和下级)</li>
-                <li>通用http发送方法增加参数 contentType 编码类型</li>
-                <li>更换IP地址查询接口</li>
-                <li>修复页签变量undefined</li>
-                <li>添加校验部门包含未停用的子部门</li>
-                <li>修改定时任务详情下次执行时间日期显示错误</li>
-                <li>角色管理查询设置默认排序字段</li>
-                <li>swagger添加enable参数控制是否启用</li>
-                <li>只对json类型请求构建可重复读取inputStream的request</li>
-                <li>修改代码生成字典字段int类型没有自动选中问题</li>
-                <li>vuex用户名取值修正</li>
-                <li>表格树模板去掉多余的)</li>
-                <li>代码生成序号修正</li>
-                <li>全屏情况下不调整上外边距</li>
-                <li>代码生成Date字段添加默认格式</li>
-                <li>用户管理角色选择权限控制</li>
-                <li>修复路由懒加载报错问题</li>
-                <li>模板sql.vm添加菜单状态</li>
-                <li>设置用户名称不能修改</li>
-                <li>dialog添加append-to-body属性,防止ie遮罩</li>
-                <li>菜单区分状态和显示隐藏功能</li>
-                <li>升级fastjson到最新版1.2.68 修复安全加固</li>
-                <li>修复代码生成如果选择字典类型缺失逗号问题</li>
-                <li>登录请求params更换为data,防止暴露url</li>
-                <li>日志返回时间格式处理</li>
-                <li>添加handle控制允许拖动的元素</li>
-                <li>布局设置点击扩大范围</li>
-                <li>代码生成列属性排序查询</li>
-                <li>代码生成列支持拖动排序</li>
-                <li>修复时间格式不支持ios问题</li>
-                <li>表单构建添加父级class,防止冲突</li>
-                <li>定时任务并发属性修正</li>
-                <li>角色禁用&菜单隐藏不查询权限</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-
-            <el-collapse-item title="v2.2.0 - 2020-03-18">
-              <ol>
-                <li>系统监控新增定时任务功能</li>
-                <li>添加一个打包Web工程bat</li>
-                <li>修复页签鼠标滚轮按下的时候,可以关闭不可关闭的tag</li>
-                <li>修复点击退出登录有时会无提示问题</li>
-                <li>修复防重复提交注解无效问题</li>
-                <li>修复通知公告批量删除异常问题</li>
-                <li>添加菜单时路由地址必填限制</li>
-                <li>代码生成字段描述可编辑</li>
-                <li>修复用户修改个人信息导致缓存不过期问题</li>
-                <li>个人信息创建时间获取正确属性值</li>
-                <li>操作日志详细显示正确类型</li>
-                <li>导入表单击行数据时选中对应的复选框</li>
-                <li>批量替换表前缀逻辑调整</li>
-                <li>固定重定向路径表达式</li>
-                <li>升级element-ui版本到2.13.0</li>
-                <li>操作日志排序调整</li>
-                <li>修复charts切换侧边栏或者缩放窗口显示bug</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-
-            <el-collapse-item title="v2.1.0 - 2020-02-24">
-              <ol>
-                <li>新增表单构建</li>
-                <li>代码生成支持树表结构</li>
-                <li>新增用户导入</li>
-                <li>修复动态加载路由页面刷新问题</li>
-                <li>修复地址开关无效问题</li>
-                <li>汉化错误提示页面</li>
-                <li>代码生成已知问题修改</li>
-                <li>修复多数据源下配置关闭出现异常处理</li>
-                <li>添加HTML过滤器,用于去除XSS漏洞隐患</li>
-                <li>修复上传头像控制台出现异常</li>
-                <li>修改用户管理分页不正确的问题</li>
-                <li>修复验证码记录提示错误</li>
-                <li>修复request.js缺少Message引用</li>
-                <li>修复表格时间为空出现的异常</li>
-                <li>添加Jackson日期反序列化时区配置</li>
-                <li>调整根据用户权限加载菜单数据树形结构</li>
-                <li>调整成功登录不恢复按钮,防止多次点击</li>
-                <li>修改用户个人资料同步缓存信息</li>
-                <li>修复页面同时出现el-upload和Editor不显示处理</li>
-                <li>修复在角色管理页修改菜单权限偶尔未选中问题</li>
-                <li>配置文件新增redis密码属性</li>
-                <li>设置mybatis全局的配置文件</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-
-            <el-collapse-item title="v2.0.0 - 2019-12-02">
-              <ol>
-                <li>新增代码生成</li>
-                <li>新增@RepeatSubmit注解,防止重复提交</li>
-                <li>新增菜单主目录添加/删除操作</li>
-                <li>日志记录过滤特殊对象,防止转换异常</li>
-                <li>修改代码生成路由脚本错误</li>
-                <li>用户上传头像实时同步缓存,无需重新登录</li>
-                <li>调整切换页签后不重新加载数据</li>
-                <li>添加jsencrypt实现参数的前端加密</li>
-                <li>系统退出删除用户缓存记录</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v1.1.0 - 2019-11-11">
-              <ol>
-                <li>新增在线用户管理</li>
-                <li>新增按钮组功能实现(批量删除、导出、清空)</li>
-                <li>新增查询条件重置按钮</li>
-                <li>新增Swagger全局Token配置</li>
-                <li>新增后端参数校验</li>
-                <li>修复字典管理页面的日期查询异常</li>
-                <li>修改时间函数命名防止冲突</li>
-                <li>去除菜单上级校验,默认为顶级</li>
-                <li>修复用户密码无法修改问题</li>
-                <li>修复菜单类型为按钮时不显示权限标识</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v1.0.0 - 2019-10-08">
-              <ol>
-                <li>若依前后端分离系统正式发布</li>
-              </ol>
-            </el-collapse-item>
-          </el-collapse>
-        </el-card>
-      </el-col>
-      <el-col :xs="24" :sm="24" :md="12" :lg="8">
-        <el-card class="update-log">
-          <div slot="header" class="clearfix">
-            <span>捐赠支持</span>
-          </div>
-          <div class="body">
-            <img
-              src="@/assets/images/pay.png"
-              alt="donate"
-              width="100%"
-            />
-            <span style="display: inline-block; height: 30px; line-height: 30px"
-              >你可以请作者喝杯咖啡表示鼓励</span
-            >
-          </div>
-        </el-card>
-      </el-col>
+            </div>
+            <div class="box_25 flex-col">
+              <div class="infinite-list"  style="overflow:auto">
+                <div class="text-wrapper_20 flex-row">
+                  <span class="text_102">工单日历</span>
+                </div>
+                <div class="group_13 flex-col">
+                  <Calendar
+                        v-on:choseDay="clickDay"
+                        v-on:changeMonth="changeDate"
+
+                      ></Calendar>
+                </div>
+              </div>
+
+                    <span class="text_128">客户工单</span>
+                    <div :class="item == 2? 'group_18 group_18it flex-col' : 'group_18 flex-col'" v-for="(item,index) in  infoList" :key="index">
+                      <div class="group_19 flex-row justify-between">
+                        <span class="text_129">{{item.unitName == null ? '暂无数据' : item.unitName}}</span>
+                        <img
+                          class="thumbnail_12"
+                          referrerpolicy="no-referrer"
+                          src="../assets/images/icn_htgl_rl_jr.png"
+                        />
+                      </div>
+                      <div class="group_20 flex-row">
+                        <img
+                          class="thumbnail_13"
+                          referrerpolicy="no-referrer"
+                          src="../assets/images/icn_htgl_rl_xm.png"
+                        />
+                        <span class="text_130">{{item.personName == null ? '暂无数据' : item.personName}}</span>
+                        <img
+                          class="thumbnail_14"
+                          referrerpolicy="no-referrer"
+                          src="../assets/images/icn_htgl_rl_sj.png"
+                        />
+                        <span class="text_131">{{item.createTime == null ? '暂无数据' : item.createTime}}</span>
+                      </div>
+                      <div class="image-text_3 flex-row justify-between">
+                        <img
+                          class="thumbnail_15"
+                          referrerpolicy="no-referrer"
+                          src="../assets/images/icn_htgl_rl_dz.png"
+                        />
+                        <span class="text-group_4">{{item.detailedAddress == null ? '暂无数据' : item.detailedAddress}}</span>
+                      </div>
+                      <img
+                        class="image_15"
+                        referrerpolicy="no-referrer"
+                        src="../assets/images/icn_htgl_rl_dz.png"
+                      />
+                      <div class="image-text_4 flex-row justify-between">
+                        <img
+                          class="thumbnail_16"
+                          referrerpolicy="no-referrer"
+                          src="../assets/images/icon_gdlb_gdh.png"
+                        />
+                        <div class="text-group_5">
+                          <span class="text_132">工单编号:</span>
+                          <div class="text_133">{{item.userId == null ? '暂无数据' : item.userId}}</div>
+                        </div>
+                      </div>
+                      <div class="image-text_4 flex-row justify-between">
+                        <img
+                          class="thumbnail_17"
+                          referrerpolicy="no-referrer"
+                          src="../assets/images/icon_gdlb_sj.png"
+                        />
+                        <div class="text-group_5">
+                          <span class="text_132">创建时间:</span>
+                          <div class="text_133">{{item.createTime == null ? '暂无数据' : item.createTime}}</div>
+                        </div>
+                      </div>
+                      <div class="image-text_4 flex-row justify-between">
+                        <img
+                          class="thumbnail_18"
+                          referrerpolicy="no-referrer"
+                          src="../assets/images/icon_gdlb_lx.png"
+                        />
+                        <div class="text-group_5">
+                          <span class="text_132">服务类型:</span>
+                          <div class="text_133" style="color: #5470C6;"><dict-tag :options="dict.type.work_order_type" :value="item.type"/></div>
+                        </div>
+                      </div>
+
+                    </div>
+
+                  </div>
+     </el-col>
     </el-row>
-  </div>
-</template>
+    <el-dialog title="年度总结" :visible.sync="open" width="450px" append-to-body class="idnege">
+     <div style="position: relative;">
+       <img src="../assets/images/pic_ndzj_tbbg.png" alt=""style="width: 100%;height: 400px;">
+       <div style="position: absolute;left: 25px;bottom: 50px;">
+         <div class="avdbge">
+           <p>{{getyer}}</p>
+           <p>年度总结</p>
+         </div>
+         <div style="font-weight: 500;font-size: 14px; color: #333333;">
+           Annual summary of {{getyer}}
+         </div>
+         <div class="jiangi">
+          {{getyer}}.01.01 ~ {{getyer}}.12.31
+         </div>
+       </div>
+     </div>
+     <div style="padding: 20px; padding-top: 0; background-color: rgba(237,242,255,0.3);margin-top:-40px;">
+     <div style="padding: 20px; background-color: rgba(255,255,255,0.5);">
+       <div class=" flex-col" style="margin-top: 0;padding-top: 0;background-color: rgba(234,239,255,0.5); border-top-right-radius: 20px; border-top-left-radius: 20px;">
+         <div style="position: relative;">
+           <img src="../assets/images/pic_ndzj_bt_blue.png" alt=""style="width: 100%;height: 46px;">
+           <span style="position: absolute;bottom: 14px;left: 175px;font-weight: bold;
+               font-size: 18px;color: #FFFFFF;"> 服务类型单量统计</span>
+         </div>
+         <pie-chartone :chart-data="huanxi"/>
+               <div class="section_6 flex-row" style="justify-content: space-between;margin-top: 45px; padding: 0 20px;">
+                 <div style="flex: 1;display: flex;justify-content: center;">
+                   <div class="section_7 flex-col"></div>
+                   <span class="text_92" style="margin-left: 10px;">网络服务</span>
+                 </div>
+                 <div style="flex: 1;display: flex;justify-content: center;margin: 0 10px;">
+                   <div class="section_8 flex-col"></div>
+                   <span class="text_93" style="margin-left: 10px;">设备服务</span>
+                 </div>
+                 <div style="flex: 1;display: flex;justify-content: center;">
+                   <div class="section_9 flex-col"></div>
+                   <span class="text_94" style="margin-left: 10px;">软件服务</span>
+                 </div>
+               </div>
+               <div class="section_6 flex-row" style="justify-content: space-between;margin-top: 15px; padding: 0 20px;">
+                 <div style="flex: 1;display: flex;justify-content: center;">
+                   <div class="section_7 flex-col" style="background-color: #EE6666;"></div>
+                   <span class="text_92" style="margin-left: 10px;">开发服务</span>
+                 </div>
+                 <div style="flex: 1;display: flex;justify-content: center;margin: 0 10px;">
+                   <div class="section_8 flex-col" style="background-color: #73C0DE;"></div>
+                   <span class="text_93" style="margin-left: 10px;">设计服务</span>
+                 </div>
+                 <div style="flex: 1;display: flex;justify-content: center;">
+                   <div class="section_9 flex-col" style="background-color: #5470C6;"></div>
+                   <span class="text_94" style="margin-left: 10px;">其他服务</span>
+                 </div>
+               </div>
+               <el-row :gutter="20" style="padding: 20px;">
+                 <el-col :span="8" style="margin-bottom: 10px;">
+                   <div style="width: 100%;height: 56px;background: #E6ECFE;border-radius: 10px;text-align: center;padding-top: 10px;">
+                     <i style="font-weight: bold;font-size: 16px;color: #333333;">47</i>
+                     <p style="margin: 0;font-weight: 500;font-size: 16px;color: #333333;">网络服务</p>
+                   </div>
+                 </el-col>
+                 <el-col :span="8" style="margin-bottom: 10px;">
+                   <div style="width: 100%;height: 56px;background: #E6ECFE;border-radius: 10px;text-align: center;padding-top: 10px;">
+                     <i style="font-weight: bold;font-size: 16px;color: #333333;">47</i>
+                     <p style="margin: 0;font-weight: 500;font-size: 16px;color: #333333;">设备服务</p>
+                   </div>
+                 </el-col>
+                 <el-col :span="8" style="margin-bottom: 10px;">
+                   <div style="width: 100%;height: 56px;background: #E6ECFE;border-radius: 10px;text-align: center;padding-top: 10px;">
+                     <i style="font-weight: bold;font-size: 16px;color: #333333;">47</i>
+                     <p style="margin: 0;font-weight: 500;font-size: 16px;color: #333333;">软件服务</p>
+                   </div>
+                 </el-col>
+                 <el-col :span="8" style="margin-bottom: 10px;">
+                   <div style="width: 100%;height: 56px;background: #E6ECFE;border-radius: 10px;text-align: center;padding-top: 10px;">
+                     <i style="font-weight: bold;font-size: 16px;color: #333333;">47</i>
+                     <p style="margin: 0;font-weight: 500;font-size: 16px;color: #333333;">开发服务</p>
+                   </div>
+                 </el-col>
+                 <el-col :span="8">
+                   <div style="width: 100%;height: 56px;background: #E6ECFE;border-radius: 10px;text-align: center;padding-top: 10px;">
+                     <i style="font-weight: bold;font-size: 16px;color: #333333;">47</i>
+                     <p style="margin: 0;font-weight: 500;font-size: 16px;color: #333333;">设计服务</p>
+                   </div>
+                 </el-col>
+                 <el-col :span="8">
+                   <div style="width: 100%;height: 56px;background: #E6ECFE;border-radius: 10px;text-align: center;padding-top: 10px;">
+                     <i style="font-weight: bold;font-size: 16px;color: #333333;">47</i>
+                     <p style="margin: 0;font-weight: 500;font-size: 16px;color: #333333;">其他服务</p>
+                   </div>
+                 </el-col>
+               </el-row>
+             </div>
+     </div>
+     <div style="padding: 20px; background-color: rgba(255,255,255,0.5);">
+       <div class=" flex-col" style="margin-top: 0;padding-top: 0;">
+         <div style="position: relative; background-color: rgba(240,248,244,0.5); border-top-right-radius: 20px; border-top-left-radius: 20px;" >
+           <img src="../assets/images/pic_ndzj_bt_green.png" alt=""style="width: 100%;height: 46px;">
+           <span style="position: absolute;bottom: 14px;left: 175px;font-weight: bold;
+               font-size: 18px;color: #FFFFFF;"> 年度单量统计</span>
+         </div>
+         <line-chart :chart-data="lineChartData" />
+
+
+
+             </div>
+     </div>
+     <div style="padding: 20px; background-color: rgba(255,255,255,0.5);">
+       <div class=" flex-col" style="margin-top: 0;padding-top: 0;background-color: rgba(255,243,224,0.5); padding: 0 20px 20px 20px; " >
+         <div style="position: relative;">
+           <img src="../assets/images/pic_ndzj_bt_orang.png" alt=""style="width: 100%;height: 46px;">
+           <span style="position: absolute;bottom: 14px;left: 175px;font-weight: bold;
+               font-size: 18px;color: #FFFFFF;"> 员工业绩Top 6</span>
+         </div>
+         <div class="box_19 flex-col" style="background-color: #FBEFDC;">
+                           <div class="group_7 " style="margin-top: 20px; width: 100%;">
+                             <el-row>
+                               <el-col :span="3">
+                                                       <div style="width: 100%;height: 26px;">
+
+                                                       </div>
+                                                     </el-col>
+                               <el-col :span="7" style="display: flex;justify-content: center;">
+                                 <div class="text-wrapper_9 ">
+                                   <span class="text_61">姓名</span>
+                                 </div>
+                               </el-col>
+                               <el-col :span="7" style="display: flex;justify-content: center;">
+                                 <div class="text-wrapper_9 ">
+                                   <span class="text_61">姓名</span>
+                                 </div>
+                               </el-col>
+                               <el-col :span="7" style="display: flex;justify-content: center;">
+                                 <div class="text-wrapper_9 ">
+                                   <span class="text_61">姓名</span>
+                                 </div>
+                               </el-col>
+                             </el-row>
 
+                           </div>
+                           <div class="group_8 ">
+                             <el-row>
+                                                   <el-col :span="3">
+                            <img
+                                                  class="thumbnail_2"
+                                                  referrerpolicy="no-referrer"
+                                                  src="../assets/images/icon_ndtj_jp_jp.png"
+                                                />
+                                                   </el-col>
+                                                   <el-col :span="7" style="display: flex;justify-content: center;">
+                                                    <span class="text_64">孙丽</span>
+                                                   </el-col>
+                                                   <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                                      <span class="text_64">开发部</span>
+                                                   </el-col>
+                                                   <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                                     <span class="text_64">14单</span>
+                                                   </el-col>
+                                                 </el-row>
+                           </div>
+                           <div class="group_8 ">
+                             <el-row>
+                                                   <el-col :span="3">
+                            <img
+                                                  class="thumbnail_3"
+                                                  referrerpolicy="no-referrer"
+                                                  src="../assets/images/icon_ndtj_jp_yp.png"
+                                                />
+                                                   </el-col>
+                                                   <el-col :span="7" style="display: flex;justify-content: center;">
+                                                    <span class="text_64">王伟民</span>
+                                                   </el-col>
+                                                   <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                                      <span class="text_64">网络服务部</span>
+                                                   </el-col>
+                                                   <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                                     <span class="text_64">14单</span>
+                                                   </el-col>
+                                                 </el-row>
+                           </div>
+                           <div class="group_8 ">
+                             <el-row>
+                                                   <el-col :span="3">
+                            <img
+                                                  class="thumbnail_4"
+                                                  referrerpolicy="no-referrer"
+                                                  src="../assets/images/icon_ndtj_jp_tp.png"
+                                                />
+                                                   </el-col>
+                                                   <el-col :span="7" style="display: flex;justify-content: center;">
+                                                    <span class="text_64">王伟民</span>
+                                                   </el-col>
+                                                   <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                                      <span class="text_64">网络服务部</span>
+                                                   </el-col>
+                                                   <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                                     <span class="text_64">14单</span>
+                                                   </el-col>
+                                                 </el-row>
+                           </div>
+                           <div class="group_8 ">
+                             <el-row>
+                                                   <el-col :span="3">
+                            <span class="text_81">4</span>
+                                                   </el-col>
+                                                   <el-col :span="7" style="display: flex;justify-content: center;">
+                                                    <span class="text_64">王伟民</span>
+                                                   </el-col>
+                                                   <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                                      <span class="text_64">开发部</span>
+                                                   </el-col>
+                                                   <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                                     <span class="text_64">14单</span>
+                                                   </el-col>
+                                                 </el-row>
+                           </div>
+                           <div class="group_8 ">
+                             <el-row>
+                                                   <el-col :span="3">
+                            <span class="text_81">5</span>
+                                                   </el-col>
+                                                   <el-col :span="7" style="display: flex;justify-content: center;">
+                                                    <span class="text_64">王伟民</span>
+                                                   </el-col>
+                                                   <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                                      <span class="text_64">开发部</span>
+                                                   </el-col>
+                                                   <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                                     <span class="text_64">14单</span>
+                                                   </el-col>
+                                                 </el-row>
+                           </div>
+                           <div class="group_8 ">
+                             <el-row>
+                                                   <el-col :span="3">
+                           <span class="text_81">6</span>
+                                                   </el-col>
+                                                   <el-col :span="7" style="display: flex;justify-content: center;">
+                                                   <span class="text_64">刘琪琪</span>
+                                                   </el-col>
+                                                   <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                                      <span class="text_64">运维部</span>
+                                                   </el-col>
+                                                   <el-col :span="7" style="display: flex;justify-content: flex-end;">
+                                                     <span class="text_64">14单</span>
+                                                   </el-col>
+                                                 </el-row>
+                           </div>
+                         </div>
+
+
+             </div>
+     </div>
+     </div>
+
+    </el-dialog>
+  </div>
+
+</template>
+
 <script>
-export default {
+  import { listInfo, getInfo, delInfo, addInfo, updateInfo,jd,listStaffManageNoPage } from "@/api/system/info"
+  import { lc,fw,bj,num,recordlist,px } from "@/api/index"
+  import PanelGroup from './dashboard/PanelGroup'
+  import LineChart from './dashboard/LineChart'
+  import RaddarChart from './dashboard/RaddarChart'
+  import PieChart from './dashboard/PieChart'
+  import PieChartone from './dashboard/PieChartone'
+  import BarChart from './dashboard/BarChart'
+
+  import Calendar from 'vue-calendar-component';
+  const lineChartData = {
+  newVisitis: {
+    expectedData: [100, 120, 161, 134, 105, 160, 165],
+    actualData: [120, 82, 91, 154, 162, 140, 145]
+  },
+  messages: {
+    expectedData: [200, 192, 120, 144, 160, 130, 140],
+    actualData: [180, 160, 151, 106, 145, 150, 130]
+  },
+  purchases: {
+    expectedData: [80, 100, 121, 104, 105, 90, 100],
+    actualData: [120, 90, 100, 138, 142, 130, 130]
+  },
+  shoppings: {
+    expectedData: [130, 140, 141, 142, 145, 150, 160],
+    actualData: [120, 82, 91, 154, 162, 140, 130]
+  }
+}
+
+export default {
   name: "Index",
-  data() {
-    return {
-      // 版本号
-      version: "3.8.9"
-    }
+  dicts: ['work_order_type', ],
+  components: {
+      Calendar,
+      PanelGroup,
+      LineChart,
+      RaddarChart,
+      PieChart,
+      BarChart,
+      PieChartone
+    },
+  data() {
+    return {
+      // 版本号
+      version: "3.8.9",
+      open:false,
+       lineChartData: lineChartData.newVisitis,
+       getyer:'',
+       getmor:'',
+       getday:'',
+       getshifL:'',
+        infoList: [],
+        dongdannu:{},
+        huanxi:{},
+        zhuzhuang:[],
+        iszhu:false,
+        dabnum:0,
+        avatar:'',
+        fuwudong:[],
+        fuweush:false,
+        buyTypeOptions:[],
+        buyTypeOptionsmy:[],
+        isgegs:[]
+    }
   },
+  created() {
+    this.avatar = this.$store.state.user.avatar
+    this.getDicts("work_order_type").then(response => {
+      this.buyTypeOptions = response.data;
+      this.buyTypeOptions.filter(rou=>{
+                      rou.value = rou.dictValue
+                      rou.label = rou.dictLabel
+                    })
+    });
+    this.getDicts("work_order_evaluation").then(response => {
+      this.buyTypeOptionsmy = response.data;
+      this.buyTypeOptionsmy.filter(rou=>{
+                      rou.value = rou.dictValue
+                      rou.label = rou.dictLabel
+                    })
+    });
+    this.gettime()
+    this.getList(null)
+    this.getgongnu()
+    this.gethuanx()
+    this.getzhuzh()
+    this.getdaiban()
+    this.fuwudongg()
+  },
   methods: {
-    goTarget(href) {
-      window.open(href, "_blank")
+    // 工单数量
+    getgongnu(){
+          lc().then(response => {
+        this.dongdannu = response.data
+          })
+    },
+    // 环形
+    gethuanx(){
+          fw().then(response => {
+        this.huanxi = response.data
+          })
+    },
+    // 柱状
+    getzhuzh(){
+      this.iszhu = false
+          bj().then(response => {
+        this.zhuzhuang = response.data
+        this.iszhu = true
+          })
+    },
+    // 服务动态
+    fuwudongg(){
+       let nsgh={'pageNum': 1, 'pageSize': 3,}
+       this.fuweush = false
+      recordlist(nsgh).then(response => {
+      this.fuwudong = response.rows
+      this.fuwudong.filter(rou=>{
+        rou.type = this.selectDictLabel(this.buyTypeOptions ,rou.type)
+        rou.evaluation = this.selectDictLabel(this.buyTypeOptionsmy ,rou.evaluation)
+      })
+
+      if(this.fuwudong.length == 0){
+        let gd={unitName:null,responsibleName:'暂无数据',type:'暂无数据',orderId:'暂无数据',
+        updateTime:'暂无数据',takeTime:'暂无数据',createTime:'暂无数据',serviceProgress:0,evaluation:'暂无数据'
+        }
+        this.fuwudong.push(gd)
+        this.fuwudong.push(gd)
+        this.fuwudong.push(gd)
+      }else if(this.fuwudong.length == 1){
+        let gd={unitName:null,responsibleName:'暂无数据',type:'暂无数据',orderId:'暂无数据',
+        updateTime:'暂无数据',takeTime:'暂无数据',createTime:'暂无数据',serviceProgress:0,evaluation:'暂无数据'
+        }
+        this.fuwudong.push(gd)
+        this.fuwudong.push(gd)
+      }else if(this.fuwudong.length == 2){
+        let gd={unitName:null,responsibleName:'暂无数据',type:'暂无数据',orderId:'暂无数据',
+        updateTime:'暂无数据',takeTime:'暂无数据',createTime:'暂无数据',serviceProgress:0,evaluation:'暂无数据'
+        }
+         this.fuwudong.push(gd)
+      }
+      // console.log(this.fuwudong)
+      this.fuweush = true
+        })
+    },
+    // 待办数量
+    getdaiban(){
+          num().then(response => {
+        this.dabnum = response.data
+
+          })
+    },
+    // 月top6
+    gettop(){
+
+    },
+    // 日历
+    getList(row) {
+      this.loading = true;
+      let nss={pageNum: 1,pageSize: 2,createTime:row}
+      listInfo(nss).then(response => {
+        this.infoList  = response.rows;
+        if(this.infoList.length ==0){
+          let bnsh={unitName:'暂无数据',detailedAddress:'暂无数据',personName:'无数据',phonenumber:'暂无数据',orderId:'暂无数据',
+          type:null,createTime:'暂无数据',}
+          this.infoList.push(bnsh)
+          this.infoList.push(bnsh)
+        }
+        if(this.infoList.length ==1){
+          let bnsh={unitName:'暂无数据',detailedAddress:'暂无数据',personName:'无数据',phonenumber:'暂无数据',orderId:'暂无数据',
+          type:null,createTime:'暂无数据',}
+          this.infoList.push(bnsh)
+        }
+        this.loading = false;
+      });
+    },
+    // 日历点击
+    clickDay(row){
+      row = row.split('/')
+      row = row.join('-')
+      let sg = row + ' '+'00:00:00'
+      // console.log(row,sg,1)
+
+      this.getList(sg)
+    },
+    changeDate(row){
+      console.log(row,2)
+    },
+    goTarget(href) {
+      window.open(href, "_blank")
+    },
+    handleSetLineChartData(type) {
+      this.lineChartData = lineChartData[type]
+    },
+    gettime() {
+      var _this = this;
+      let wk = new Date().getDay()
+      let yy = new Date().getFullYear();
+      let mm = new Date().getMonth() + 1;
+      if(mm < 10){
+        mm = '0'+mm
+      }
+      let dd = new Date().getDate();
+      if(dd < 10){
+        dd = '0'+dd
+      }
+      let hh = new Date().getHours() < 10 ? '0' + new Date().getHours() : new Date().getHours();
+      let mf = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes() : new Date().getMinutes();
+      let ss = new Date().getSeconds() < 10 ? '0' + new Date().getSeconds() : new Date().getSeconds();
+      let weeks = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
+      let week = weeks[wk]
+      _this.getyer = yy;
+      _this.getmor = mm;
+      _this.getday = dd;
+      _this.getshifL = hh + ':' + mf + ':' + ss;
+      // _this.getweek = week;
+
+      // console.log(this.gettime)
+    },
+    // 快捷方式跳转
+    tiaoz(row){
+      if(row == 0){
+        // 工单
+        this.$router.push({
+          path: '/gongdanzhipai',
+
+        })
+      }else if(row == 1){
+        // 员工
+        this.$router.push({
+          path: '/system/user',
+
+        })
+      }else if(row == 2){
+        // 客户
+        this.$router.push({
+          path: '/kehurenyuan',
+          query: {
+          	'id':row.orderId,
+          }
+        })
+      }else if(row == 3){
+        // 评价
+        this.$router.push({
+          path: '/gongdanzhipaipj',
+          query: {
+          	'id':row.orderId,
+          }
+        })
+      }
+    },
+    // 待办
+    dainge(){
+      this.$router.push({
+        path: '/gongdanzhipaime',
+        query: {
+        	'type':1,
+        }
+      })
+    },
+    // 年度总结
+    nandu(){
+       this.open = true
+    }
+  }
+}
+</script>
+<style lang="scss">
+  .idnege{
+    .el-dialog__body{
+      padding: 0;
     }
   }
-}
-</script>
-
-<style scoped lang="scss">
-.home {
-  blockquote {
-    padding: 10px 20px;
-    margin: 0 0 20px;
-    font-size: 17.5px;
-    border-left: 5px solid #eee;
+  .wh_content_all .wh_content:nth-child(2){
+    background-color: #fff !important;
   }
-  hr {
-    margin-top: 20px;
-    margin-bottom: 20px;
-    border: 0;
-    border-top: 1px solid #eee;
+  .wh_content_all .wh_content:nth-child(3){
+    border-radius: 10px;
+    .wh_content_item{
+      display: flex;
+      // width:  !important;
+      // height: 32px !important;
+    }
+    .wh_item_date{
+      width: 32px  !important;
+      height: 32px !important;
+      line-height: 32px !important;
+    }
+
   }
-  .col-item {
+</style>
+
+<style scoped lang="scss">
+  .avdbge{
     margin-bottom: 20px;
-  }
+    p{
+      margin: 0;
+    }
+    p{
+      font-weight: bold;
+      font-size: 40px;
+      color: #1B4EF3;
+    }
+    p:nth-child(2){
+      color: #333333;
+    }
 
-  ul {
-    padding: 0;
-    margin: 0;
   }
+  .jiangi{
+    width: 400px;
+    height: 30px;
+    background: linear-gradient(90deg, #1BA4F3, #1B4EF3);
+    border-radius: 26px;
+    font-family: PingFang SC;
+    font-weight: 500;
+    font-size: 18px;
+    color: #FFFFFF;
+    line-height: 30px;
+    text-align: center;
+    margin-top: 20px;
+  }
+.page {
+  position: relative;
+  width: 1440px;
+  height: 810px;
+  overflow: hidden;
+}
 
-  font-family: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  color: #676a6c;
-  overflow-x: hidden;
+.group_1 {
+  width: 1440px;
+  height: 810px;
+  background: url(https://lanhu-oss-2537-2.lanhuapp.com/psrar2p6uh2wlaj42c9dt72cmgugs7rexec5820a42-55c1-4671-9d29-2df8481c38fd)
+    100% no-repeat;
+  background-size: 100% 100%;
+}
 
-  ul {
-    list-style-type: none;
-  }
+.box_1 {
+  background-color: rgba(255, 255, 255, 1);
+  position: relative;
+  width: 164px;
+  height: 810px;
+}
 
-  h4 {
-    margin-top: 0px;
-  }
+.text-wrapper_1 {
+  background-color: rgba(243, 248, 247, 1);
+  border-radius: 6px;
+  height: 36px;
+  width: 136px;
+  margin: 61px 0 0 14px;
+}
 
-  h2 {
-    margin-top: 10px;
-    font-size: 26px;
-    font-weight: 100;
-  }
+.text_1 {
+  width: 27px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(0, 160, 110, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Heavy;
+  font-weight: 900;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 11px 0 0 36px;
+}
 
-  p {
-    margin-top: 10px;
+.text_2 {
+  width: 55px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Regular;
+  font-weight: normal;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 21px 0 0 50px;
+}
 
-    b {
-      font-weight: 700;
-    }
-  }
+.text_3 {
+  width: 55px;
+  height: 13px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Regular;
+  font-weight: normal;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 32px 0 0 50px;
+}
 
-  .update-log {
-    ol {
-      display: block;
-      list-style-type: decimal;
-      margin-block-start: 1em;
-      margin-block-end: 1em;
-      margin-inline-start: 0;
-      margin-inline-end: 0;
-      padding-inline-start: 40px;
-    }
-  }
+.text_4 {
+  width: 55px;
+  height: 13px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Regular;
+  font-weight: normal;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 32px 0 0 50px;
+}
+
+.text_5 {
+  width: 55px;
+  height: 13px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Regular;
+  font-weight: normal;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 33px 0 0 50px;
+}
+
+.text_6 {
+  width: 55px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Regular;
+  font-weight: normal;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 32px 0 0 49px;
+}
+
+.text_7 {
+  width: 55px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Regular;
+  font-weight: normal;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 31px 0 0 50px;
+}
+
+.text_8 {
+  width: 55px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Regular;
+  font-weight: normal;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 32px 0 0 50px;
+}
+
+.text_9 {
+  width: 55px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Regular;
+  font-weight: normal;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 31px 0 360px 50px;
+}
+
+.image_1 {
+  position: absolute;
+  left: 0;
+  top: 45px;
+  width: 1440px;
+  height: 1px;
+}
+
+.box_2 {
+  background-color: rgba(255, 255, 255, 1);
+  width: 1440px;
+  height: 45px;
+  margin-left: -164px;
+}
+
+.image_2 {
+  width: 238px;
+  height: 22px;
+  margin: 12px 0 0 20px;
+}
+
+.label_1 {
+  width: 27px;
+  height: 26px;
+  margin: 10px 0 0 1022px;
+}
+
+.text_10 {
+  width: 40px;
+  height: 11px;
+  overflow-wrap: break-word;
+  color: rgba(0, 0, 0, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 18px 0 0 7px;
+}
+
+.thumbnail_1 {
+  width: 10px;
+  height: 7px;
+  margin: 20px 0 0 11px;
+}
+
+.text_11 {
+  width: 27px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 28px;
+  margin: 16px 17px 0 21px;
+}
+
+.image_3 {
+  width: 1px;
+  height: 766px;
+  margin: 44px 0 0 -1276px;
+}
+
+.box_3 {
+  box-shadow: 1px 2px 18px 0px rgba(197, 197, 197, 0.15);
+  background-color: rgba(255, 255, 255, 1);
+  border-radius: 3px;
+  position: relative;
+  width:100%;
+  height: 195px;
+  margin-top: 20px;
+  // margin: 605px 0 0 13px;
+}
+
+.text_12 {
+  width: 63px;
+  height: 15px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 16px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 11px 0 0 16px;
+}
+
+.group_2 {
+  width: 100%;
+  height: 127px;
+  padding: 19px 0 23px 27px;
+}
+
+.group_3 {
+  width: 10px;
+  height: 124px;
+}
+
+.section_1 {
+  background-color: rgba(0, 160, 110, 1);
+  border-radius: 50%;
+  width: 10px;
+  height: 10px;
+}
+
+.image_4 {
+  width: 1px;
+  height: 56px;
+  margin-left: 5px;
+}
+
+.image_5 {
+  width: 1px;
+  height: 56px;
+  margin: 2px 0 0 5px;
+}
+
+.group_4 {
+  // width: 539px;
+  flex:1;
+  height: 127px;
+  overflow:hidden;
+  text-overflow:ellipsis;
+  white-space:nowrap;
+}
+
+.text_13 {
+  width: 151px;
+  height: 11px;
+  overflow-wrap: break-word;
+  color: rgba(0, 160, 110, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 11px;
+}
+
+.text-wrapper_2 {
+  width: 100%;
+  height: 14px;
+  overflow-wrap: break-word;
+  font-size: 0;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 13px;
+  margin: 13px 0 0 2px;
+  overflow:hidden;
+  text-overflow:ellipsis;
+  white-space:nowrap;
+  font-weight: bold;
+  font-size: 14px;
+  color: #999999;
+}
+
+.text_14 {
+  width: 537px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 18px;
+}
+
+.text_15 {
+  width: 537px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(153, 153, 153, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 18px;
+}
+
+.text_16 {
+  width: 537px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 18px;
+}
+
+.text_17 {
+  width: 537px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(153, 153, 153, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 18px;
+}
+
+.text_18 {
+  width: 537px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 18px;
+}
+
+.text_19 {
+  width: 537px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 18px;
+}
+
+.text_20 {
+  width: 537px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(153, 153, 153, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 18px;
+}
+
+.text_21 {
+  width: 537px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 18px;
+}
+
+.text_22 {
+  width: 151px;
+  height: 11px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 11px;
+  margin-top: 20px;
+}
+
+.text-wrapper_3 {
+  width: 369px;
+  height: 14px;
+  overflow-wrap: break-word;
+  font-size: 0;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 13px;
+  margin: 13px 0 0 1px;
+}
+
+.text_23 {
+  width: 369px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 14px;
+}
+
+.text_24 {
+  width: 369px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(153, 153, 153, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 18px;
+}
+
+.text_25 {
+  width: 369px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 18px;
+}
+
+.text_26 {
+  width: 369px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 18px;
+}
+
+.text_27 {
+  width: 369px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(153, 153, 153, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 18px;
+}
+
+.text_28 {
+  width: 369px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 18px;
+}
+
+.text_29 {
+  width: 151px;
+  height: 11px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 11px;
+  margin-top: 20px;
+}
+
+.group_5 {
+  background-color: rgba(218, 218, 218, 1);
+  border-radius: 50%;
+  position: absolute;
+  left: 27px;
+  top: 103px;
+  width: 10px;
+  height: 10px;
+}
+
+.group_6 {
+  background-color: rgba(218, 218, 218, 1);
+  border-radius: 50%;
+  position: absolute;
+  left: 27px;
+  top: 161px;
+  width: 10px;
+  height: 10px;
+}
+
+.box_4 {
+  box-shadow: 1px 2px 18px 0px rgba(197, 197, 197, 0.15);
+  background-color: rgba(255, 255, 255, 1);
+  border-radius: 3px;
+  width: 100%;
+  height: 264px;
+  margin-top: 20px;
+  // margin: 326px 0 0 -604px;
+}
+
+.section_2 {
+  width: 100%;
+  height: 27px;
+  padding: 17px 0 0 15px;
+}
+
+.text_30 {
+  width: 176px;
+  height: 16px;
+  overflow-wrap: break-word;
+  color: rgba(0, 0, 0, 1);
+  font-size: 16px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 16px;
+}
+
+.image-text_1 {
+  width: 57px;
+  height: 12px;
+  margin: 15px 0 0 0;
+}
+
+.image_6 {
+  width: 26px;
+  height: 6px;
+  margin-top: 3px;
+}
+
+.text-group_1 {
+  width: 22px;
+  height: 12px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 12px;
+}
+
+.image-text_2 {
+  width: 57px;
+  height: 12px;
+  margin: 15px 0 0 28px;
+}
+
+.image_7 {
+  width: 26px;
+  height: 6px;
+  margin-top: 3px;
+}
+
+.text-group_2 {
+  width: 22px;
+  height: 12px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 12px;
+}
+
+.text_31 {
+  width: 12px;
+  height: 12px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 28px;
+  margin: 1px 0 0 27px;
+}
+
+.section_3 {
+  width: 555px;
+  height: 166px;
+  margin: 12px 0 0 22px;
+}
+
+.text-wrapper_4 {
+  width: 14px;
+  height: 166px;
+}
+
+.text_32 {
+  width: 14px;
+  height: 10px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: right;
+  white-space: nowrap;
+  line-height: 21px;
+}
+
+.text_33 {
+  width: 14px;
+  height: 10px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: right;
+  white-space: nowrap;
+  line-height: 21px;
+  margin-top: 16px;
+}
+
+.text_34 {
+  width: 14px;
+  height: 10px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: right;
+  white-space: nowrap;
+  line-height: 21px;
+  margin-top: 16px;
+}
+
+.text_35 {
+  width: 13px;
+  height: 10px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: right;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 16px 0 0 1px;
+}
+
+.text_36 {
+  width: 13px;
+  height: 10px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: right;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 16px 0 0 1px;
+}
+
+.text_37 {
+  width: 6px;
+  height: 9px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: right;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 17px 0 0 8px;
+}
+
+.text_38 {
+  width: 7px;
+  height: 9px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: right;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 17px 0 0 7px;
+}
+
+.image-wrapper_1 {
+  height: 158px;
+  background: url(https://lanhu-oss-2537-2.lanhuapp.com/pse8t8efq635yuu98ce65xbg4y6qwkb999811796d-7255-4c71-828e-bf40c98c405d) -1px -1px
+    no-repeat;
+  background-size: 533px 159px;
+  margin-top: 5px;
+  width: 532px;
+}
+
+.image_8 {
+  width: 442px;
+  height: 152px;
+  margin: 6px 0 0 43px;
+}
+
+.text-wrapper_5 {
+  width: 468px;
+  height: 12px;
+  margin: 3px 0 14px 75px;
+}
+
+.text_39 {
+  width: 47px;
+  height: 12px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+}
+
+.text_40 {
+  width: 47px;
+  height: 12px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin-left: 37px;
+}
+
+.text_41 {
+  width: 47px;
+  height: 12px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin-left: 37px;
+}
+
+.text_42 {
+  width: 47px;
+  height: 12px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin-left: 38px;
+}
+
+.text_43 {
+  width: 48px;
+  height: 12px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin-left: 36px;
+}
+
+.text_44 {
+  width: 48px;
+  height: 12px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 12px;
+  margin-left: 36px;
+}
+
+.box_5 {
+  box-shadow: 1px 2px 18px 0px rgba(197, 197, 197, 0.15);
+  background-color: rgba(255, 255, 255, 1);
+  border-radius: 3px;
+  width: 19%;
+  height: 98px;
+  // margin: 62px 0 0 -603px;
+}
+
+.text_45 {
+  width: 84px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 18px 0 0 14px;
+}
+
+.block_1 {
+  width: 163px;
+  height: 53px;
+  margin: 8px 0 5px 15px;
+}
+
+.text-wrapper_6 {
+  width: 74px;
+  height: 37px;
+  margin-top: 3px;
+}
+
+.text_46 {
+  width: 39px;
+  height: 19px;
+  overflow-wrap: break-word;
+  color: rgba(0, 160, 110, 1);
+  font-size: 26px;
+  font-family: Alibaba-PuHuiTi-M;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 19px;
+}
+
+.text_47 {
+  width: 74px;
+  height: 10px;
+  overflow-wrap: break-word;
+  color: rgba(240, 96, 17, 1);
+  font-size: 10px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 10px;
+  margin-top: 8px;
+}
+
+.image_9 {
+  width: 96px;
+  height: 53px;
+  // margin-left: -7px;
+}
+
+.box_6 {
+  box-shadow: 1px 2px 18px 0px rgba(197, 197, 197, 0.15);
+  background-color: rgba(255, 255, 255, 1);
+  border-radius: 3px;
+  height: 139px;
+  width: 100%;
+  // margin: 174px 0 0 -177px;
+}
+
+.text-wrapper_7 {
+  width: 62px;
+  height: 15px;
+  margin: 14px 0 0 15px;
+}
+
+.text_48 {
+  width: 62px;
+  height: 15px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 16px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+}
+
+.box_7 {
+  width: 100%;
+  height: 68px;
+  margin: 18px 0 24px 0;
+  padding: 0 24px;
+}
+
+.box_8 {
+  background-color: rgba(243, 248, 247, 1);
+  border-radius: 3px;
+  width: 86px;
+  height: 68px;
+  justify-content: flex-center;
+}
+
+.label_2 {
+  width: 22px;
+  height: 24px;
+  margin: 10px 0 0 32px;
+}
+
+.text_49 {
+  width: 55px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 10px 0 10px 16px;
+}
+
+.box_9 {
+  background-color: rgba(243, 248, 247, 1);
+  border-radius: 3px;
+  width: 86px;
+  height: 68px;
+  // margin-left: 32px;
+  justify-content: flex-center;
+}
+
+.label_3 {
+  width: 23px;
+  height: 24px;
+  margin: 10px 0 0 32px;
+}
+
+.text_50 {
+  width: 55px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 10px 0 10px 16px;
+}
+
+.box_10 {
+  background-color: rgba(243, 248, 247, 1);
+  border-radius: 3px;
+  width: 86px;
+  height: 68px;
+  // margin-left: 32px;
+}
+
+.label_4 {
+  width: 23px;
+  height: 23px;
+  margin: 12px 0 0 32px;
+}
+
+.text_51 {
+  width: 56px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 9px 0 10px 15px;
+}
+
+.box_11 {
+  background-color: rgba(243, 248, 247, 1);
+  border-radius: 3px;
+  width: 86px;
+  height: 68px;
+  // margin-left: 32px;
+  justify-content: flex-center;
+}
+
+.image_10 {
+  width: 19px;
+  height: 24px;
+  margin: 10px 0 0 34px;
+}
+
+.text_52 {
+  width: 56px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 10px 0 10px 15px;
 }
-</style>
 
+.box_12 {
+  background-color: rgba(243, 248, 247, 1);
+  border-radius: 3px;
+  width: 86px;
+  height: 68px;
+  // margin-left: 32px;
+  justify-content: flex-center;
+}
+
+.label_5 {
+  width: 24px;
+  height: 24px;
+  margin: 10px 0 0 31px;
+}
+
+.text_53 {
+  width: 55px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 10px 0 10px 16px;
+}
+
+.image_11 {
+  width: 385px;
+  height: 34px;
+  margin: 776px 0 0 -572px;
+}
+
+.box_13 {
+  box-shadow: 1px 2px 18px 0px rgba(197, 197, 197, 0.15);
+  background-color: rgba(255, 255, 255, 1);
+  border-radius: 3px;
+  position: relative;
+  width: 19%;
+  height: 98px;
+  overflow: hidden;
+  // margin: 62px 0 0 -227px;
+}
+
+.box_14 {
+  background-color: rgba(250, 200, 88, 1);
+  border-radius: 3px;
+  // width: 178px;
+  height: 3px;
+}
+
+.text_54 {
+  width: 41px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 14px;
+  margin: 21px 0 0 15px;
+}
+
+.text_55 {
+  width: 28px;
+  height: 19px;
+  overflow-wrap: break-word;
+  color: rgba(250, 200, 88, 1);
+  font-size: 26px;
+  font-family: Alibaba-PuHuiTi-M;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 19px;
+  margin: 16px 0 25px 14px;
+}
+
+.image_12 {
+  position: absolute;
+  left: 0;
+  top: 62px;
+  width: 100%;
+  height: 36px;
+}
+
+.box_15 {
+  box-shadow: 1px 2px 18px 0px rgba(197, 197, 197, 0.15);
+  background-color: rgba(255, 255, 255, 1);
+  border-radius: 3px;
+  width: 19%;
+  height: 98px;
+  // margin: 62px 0 0 11px;
+}
+
+.box_16 {
+  background-color: rgba(115, 192, 222, 1);
+  border-radius: 3px;
+  // width: 178px;
+  height: 3px;
+}
+
+.box_17 {
+  // width: 150px;
+  height: 49px;
+  margin: 21px 13px 25px 13px;
+}
+
+.text-wrapper_8 {
+  width: 42px;
+  height: 49px;
+}
+
+.text_56 {
+  width: 40px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 14px;
+  margin-left: 2px;
+}
+
+.text_57 {
+  width: 29px;
+  height: 19px;
+  overflow-wrap: break-word;
+  color: rgba(115, 192, 222, 1);
+  font-size: 26px;
+  font-family: Alibaba-PuHuiTi-M;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 19px;
+  margin-top: 16px;
+}
+
+.label_6 {
+  width: 48px;
+  height: 45px;
+  margin-top: 3px;
+}
+
+.box_18 {
+  box-shadow: 1px 2px 18px 0px rgba(197, 197, 197, 0.15);
+  background-color: rgba(255, 255, 255, 1);
+  border-radius: 3px;
+  width: 19%;
+  height: 98px;
+  // margin: 62px 0 0 11px;
+}
+
+.block_2 {
+  background-color: rgba(237, 108, 158, 1);
+  border-radius: 3px;
+  // width: 178px;
+  height: 3px;
+}
+
+.text_58 {
+  width: 41px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 14px;
+  margin: 21px 0 0 15px;
+}
+
+.block_3 {
+  width: 100%;
+  height: 35px;
+  padding: 2px 13px 23px 13px;
+}
+
+.text_59 {
+  width: 29px;
+  height: 19px;
+  overflow-wrap: break-word;
+  color: rgba(236, 108, 157, 1);
+  font-size: 26px;
+  font-family: Alibaba-PuHuiTi-M;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 19px;
+  margin-top: 14px;
+}
+
+.image_13 {
+  width: 94px;
+  height: 35px;
+}
+
+.box_19 {
+  box-shadow: 1px 2px 18px 0px rgba(197, 197, 197, 0.15);
+  background-color: rgba(255, 255, 255, 1);
+  border-radius: 3px;
+  width: 100%;
+  height: 268px;
+  margin-top: 25px;
+  padding: 20px;
+  padding-top: 0;
+  // margin: 532px 0 0 -129px;
+}
+
+.text_60 {
+  width: 132px;
+  height: 17px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 16px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 17px;
+  margin: 15px 0 0 16px;
+}
+
+.group_7 {
+  width: 240px;
+  height: 26px;
+  // margin: 14px 0 0 66px;
+}
+
+.text-wrapper_9 {
+  background-color: rgba(243, 248, 247, 1);
+  border-radius: 13px;
+  height: 26px;
+  width: 55px;
+  line-height: 26px;
+}
+
+.text_61 {
+  width: 26px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(0, 178, 120, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  line-height: 1px;
+  margin: 6px 0 0 15px;
+}
+
+.text-wrapper_10 {
+  background-color: rgba(243, 248, 247, 1);
+  border-radius: 13px;
+  height: 26px;
+  margin-left: 37px;
+  width: 55px;
+}
+
+.text_62 {
+  width: 26px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(0, 178, 120, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  line-height: 1px;
+  margin: 6px 0 0 15px;
+}
+
+.text-wrapper_11 {
+  background-color: rgba(243, 248, 247, 1);
+  border-radius: 13px;
+  height: 26px;
+  margin-left: 38px;
+  width: 55px;
+}
+
+.text_63 {
+  width: 27px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(0, 178, 120, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  line-height: 1px;
+  margin: 6px 0 0 14px;
+}
+
+.group_8 {
+  width: 100%;
+  height: 20px;
+  margin-top: 10px;
+  // margin: 11px 0 0 20px;
+}
+
+.thumbnail_2 {
+  width: 16px;
+  height: 20px;
+}
+
+.text_64 {
+ flex: 1;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 14px;
+  // margin: 4px 0 0 38px;
+}
+
+.text_65 {
+ flex: 1;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 38px;
+  // margin: 5px 0 0 50px;
+}
+
+.text_66 {
+  // width: 29px;
+  flex: 1;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 38px;
+  // margin: 5px 0 0 56px;
+}
+
+.group_9 {
+  width: 272px;
+  height: 22px;
+  margin: 8px 0 0 20px;
+}
+
+.thumbnail_3 {
+  width: 16px;
+  height: 20px;
+}
+
+.text_67 {
+  width: 28px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 38px;
+  margin: 6px 0 0 44px;
+}
+
+.text_68 {
+  width: 42px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 38px;
+  margin: 7px 0 0 57px;
+}
+
+.text_69 {
+  width: 29px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 38px;
+  margin: 8px 0 0 56px;
+}
+
+.group_10 {
+  width: 272px;
+  height: 21px;
+  margin: 9px 0 0 20px;
+}
+
+.thumbnail_4 {
+  width: 15px;
+  height: 20px;
+}
+
+.text_70 {
+  width: 42px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 38px;
+  margin: 5px 0 0 38px;
+}
+
+.text_71 {
+  width: 69px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 38px;
+  margin: 7px 0 0 37px;
+}
+
+.text_72 {
+  width: 29px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 38px;
+  margin: 7px 0 0 42px;
+}
+
+.text-wrapper_12 {
+  width: 267px;
+  height: 17px;
+  margin: 14px 0 0 22px;
+}
+
+.text_73 {
+  width: 11px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(0, 160, 110, 1);
+  font-size: 18px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  line-height: 1px;
+}
+
+.text_74 {
+  width: 42px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 38px;
+  margin: 1px 0 0 40px;
+}
+
+.text_75 {
+  width: 42px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 38px;
+  margin: 2px 0 0 50px;
+}
+
+.text_76 {
+  width: 21px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 38px;
+  margin: 3px 0 0 61px;
+}
+
+.text-wrapper_13 {
+  width: 267px;
+  height: 16px;
+  margin: 14px 0 0 22px;
+}
+
+.text_77 {
+  width: 11px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(0, 160, 110, 1);
+  font-size: 18px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  line-height: 1px;
+  margin-top: 1px;
+}
+
+.text_78 {
+  width: 42px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 38px;
+  margin-left: 40px;
+}
+
+.text_79 {
+  width: 42px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 38px;
+  margin: 2px 0 0 50px;
+}
+
+.text_80 {
+  width: 22px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 38px;
+  margin: 2px 0 0 60px;
+}
+
+.text-wrapper_14 {
+  width: 267px;
+  height: 17px;
+  margin: 14px 0 13px 22px;
+}
+
+.text_81 {
+  width: 11px;
+  height: 15px;
+  overflow-wrap: break-word;
+  color: rgba(0, 160, 110, 1);
+  font-size: 18px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  line-height: 1px;
+}
+
+.text_82 {
+  width: 42px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 38px;
+  margin-left: 40px;
+}
+
+.text_83 {
+  width: 42px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 38px;
+  margin: 2px 0 0 50px;
+}
+
+.text_84 {
+  width: 22px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 38px;
+  margin: 3px 0 0 60px;
+}
+
+.box_20 {
+  box-shadow: 1px 2px 18px 0px rgba(197, 197, 197, 0.15);
+  background-color: rgba(255, 255, 255, 1);
+  border-radius: 3px;
+  height: 344px;
+  width: 100%;
+  position: relative;
+  margin-top: 20px;
+  padding: 20px;
+  // margin: 174px 0 0 -321px;
+}
+
+.text-wrapper_15 {
+  width: 128px;
+  height: 16px;
+  margin: 15px 0 0 15px;
+}
+
+.text_85 {
+  width: 128px;
+  height: 16px;
+  overflow-wrap: break-word;
+  color: rgba(0, 0, 0, 1);
+  font-size: 16px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+}
+
+.text-wrapper_16 {
+  width: 34px;
+  height: 11px;
+  margin: 21px 0 0 153px;
+}
+
+.text_86 {
+  width: 34px;
+  height: 11px;
+  overflow-wrap: break-word;
+  color: rgba(84, 112, 198, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+}
+
+.section_4 {
+  width: 93px;
+  height: 18px;
+  margin: 5px 0 0 71px;
+}
+
+.text_87 {
+  width: 41px;
+  height: 11px;
+  overflow-wrap: break-word;
+  color: rgba(115, 192, 222, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin-top: 3px;
+}
+
+.thumbnail_5 {
+  width: 9px;
+  height: 18px;
+}
+
+.section_5 {
+  width: 266px;
+  height: 14px;
+  margin: 44px 0 0 27px;
+}
+
+.text_88 {
+  width: 34px;
+  height: 11px;
+  overflow-wrap: break-word;
+  color: rgba(238, 102, 102, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+}
+
+.image_14 {
+  width: 23px;
+  height: 2px;
+  margin: 5px 0 0 8px;
+}
+
+.text_89 {
+  width: 42px;
+  height: 11px;
+  overflow-wrap: break-word;
+  color: rgba(0, 178, 120, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 3px 0 0 159px;
+}
+
+.image-wrapper_2 {
+  width: 16px;
+  height: 13px;
+  margin: 1px 0 0 229px;
+}
+
+.thumbnail_6 {
+  width: 16px;
+  height: 13px;
+}
+
+.image-wrapper_3 {
+  width: 13px;
+  height: 13px;
+  margin: 25px 0 0 82px;
+}
+
+.thumbnail_7 {
+  width: 13px;
+  height: 13px;
+}
+
+.text-wrapper_17 {
+  width: 41px;
+  height: 11px;
+  margin: 6px 0 0 51px;
+}
+
+.text_90 {
+  width: 41px;
+  height: 11px;
+  overflow-wrap: break-word;
+  color: rgba(250, 200, 88, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+}
+
+.image-wrapper_4 {
+  width: 16px;
+  height: 17px;
+  margin: 3px 0 0 172px;
+}
+
+.thumbnail_8 {
+  width: 16px;
+  height: 17px;
+}
+
+.text-wrapper_18 {
+  width: 42px;
+  height: 11px;
+  margin: 8px 0 0 188px;
+}
+
+.text_91 {
+  width: 42px;
+  height: 11px;
+  overflow-wrap: break-word;
+  color: rgba(145, 204, 117, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+}
+
+.section_6 {
+  width: 100%;
+  height: 14px;
+  // padding: 27px 19px 0 19px;
+}
+
+.section_7 {
+  background-color: rgba(0, 178, 120, 1);
+  border-radius: 2px;
+  width: 15px;
+  height: 8px;
+  margin-top: 3px;
+}
+
+.text_92 {
+  width: 54px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 14px;
+  // margin-left: 7px;
+}
+
+.section_8 {
+  background-color: rgba(145, 204, 117, 1);
+  border-radius: 2px;
+  width: 15px;
+  height: 8px;
+  margin: 3px 0 0 0;
+}
+
+.text_93 {
+  width: 56px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 14px;
+  margin-left: 6px;
+}
+
+.section_9 {
+  background-color: rgba(250, 200, 88, 1);
+  border-radius: 2px;
+  width: 15px;
+  height: 8px;
+  margin: 3px 0 0 0;
+}
+
+.text_94 {
+  width: 56px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 14px;
+  margin-left: 6px;
+}
+
+.section_10 {
+  width: 288px;
+  height: 13px;
+  margin: 18px 0 20px 19px;
+}
+
+.box_21 {
+  background-color: rgba(238, 102, 102, 1);
+  border-radius: 2px;
+  width: 15px;
+  height: 8px;
+  margin-top: 3px;
+}
+
+.text_95 {
+  width: 55px;
+  height: 13px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin-left: 6px;
+}
+
+.box_22 {
+  background-color: rgba(115, 192, 222, 1);
+  border-radius: 2px;
+  width: 15px;
+  height: 8px;
+  margin: 3px 0 0 29px;
+}
+
+.text_96 {
+  width: 56px;
+  height: 13px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin-left: 6px;
+}
+
+.box_23 {
+  background-color: rgba(84, 112, 198, 1);
+  border-radius: 2px;
+  width: 15px;
+  height: 8px;
+  margin: 3px 0 0 29px;
+}
+
+.text_97 {
+  width: 56px;
+  height: 13px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin-left: 6px;
+}
+
+.section_11 {
+  position: absolute;
+  left: 88px;
+  top: 83px;
+  width: 146px;
+  height: 147px;
+  background: url(https://lanhu-oss-2537-2.lanhuapp.com/ps32q89u3fsa1ae793kfee85xtzc0fpplz62ba0784-1194-472b-a15c-0ac9a2c66d5f)
+    100% no-repeat;
+  background-size: 100% 100%;
+}
+
+.text-group_3 {
+  width: 55px;
+  height: 43px;
+  margin: 52px 0 0 45px;
+}
+
+.text_98 {
+  width: 39px;
+  height: 20px;
+  overflow-wrap: break-word;
+  color: rgba(0, 0, 0, 1);
+  font-size: 26px;
+  font-family: PingFang-SC-Heavy;
+  font-weight: 900;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin-left: 8px;
+}
+
+.text_99 {
+  width: 55px;
+  height: 13px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin-top: 10px;
+}
+
+.box_24 {
+  box-shadow: 1px 2px 18px 0px rgba(197, 197, 197, 0.15);
+  background-color: rgba(255, 255, 255, 1);
+  border-radius: 3px;
+  width: 19%;
+  height: 98px;
+  // margin: 62px 0 0 -181px;
+}
+
+.group_11 {
+  background-color: rgba(84, 112, 198, 1);
+  // width: 178px;
+  height: 3px;
+}
+
+.group_12 {
+  width: 100%;
+  height: 49px;
+  padding: 21px 13px 25px 13px;
+}
+
+.text-wrapper_19 {
+  width: 43px;
+  height: 49px;
+}
+
+.text_100 {
+  width: 41px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 14px;
+  margin-left: 2px;
+}
+
+.text_101 {
+  width: 29px;
+  height: 19px;
+  overflow-wrap: break-word;
+  color: rgba(84, 112, 197, 1);
+  font-size: 26px;
+  font-family: Alibaba-PuHuiTi-M;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 19px;
+  margin-top: 16px;
+}
+
+.label_7 {
+  width: 48px;
+  height: 45px;
+  margin-top: 3px;
+}
+
+.box_25 {
+  box-shadow: 1px 2px 18px 0px rgba(197, 197, 197, 0.15);
+  background-color: rgba(255, 255, 255, 1);
+  border-radius: 3px;
+  width: 100%;
+  height: 618px;
+  margin-top: 20px;
+  padding: 15px;
+  // margin: 192px 0 0 16px;
+}
+
+.text-wrapper_20 {
+  width: 100%;
+  height: 16px;
+  // margin: 14px 0 0 15px;
+}
+
+.text_102 {
+  width: 62px;
+  height: 16px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 16px;
+  font-family: PingFang-SC-Heavy;
+  font-weight: 900;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+}
+
+.text_103 {
+  width: 8px;
+  height: 11px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 2px 0 0 98px;
+}
+
+.text_104 {
+  width: 68px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 1px 0 0 11px;
+}
+
+.text_105 {
+  width: 8px;
+  height: 11px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 2px 0 0 12px;
+}
+
+.text_106 {
+  width: 253px;
+  height: 12px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 17px 0 0 20px;
+}
+
+.group_13 {
+  background-color: rgba(216, 232, 227, 0.3);
+  border-radius: 3px;
+  height: 130px;
+  width: 100%;
+  margin-top: 10px;
+  // margin: 10px 0 0 11px;
+}
+
+.group_14 {
+  width: 255px;
+  height: 22px;
+  margin: 10px 0 0 10px;
+}
+
+.text_107 {
+  width: 13px;
+  height: 10px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin-top: 3px;
+}
+
+.text_108 {
+  width: 11px;
+  height: 10px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 3px 0 0 29px;
+}
+
+.text_109 {
+  width: 13px;
+  height: 10px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 3px 0 0 31px;
+}
+
+.text_110 {
+  width: 14px;
+  height: 10px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 3px 0 0 28px;
+}
+
+.text_111 {
+  width: 13px;
+  height: 10px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 3px 0 0 28px;
+}
+
+.group_15 {
+  border-radius: 2px;
+  width: 22px;
+  height: 22px;
+  border: 0.75px solid rgba(0, 160, 110, 1);
+  margin-left: 19px;
+}
+
+.text_112 {
+  width: 12px;
+  height: 12px;
+  overflow-wrap: break-word;
+  color: rgba(0, 160, 110, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 2px 0 0 5px;
+}
+
+.thumbnail_9 {
+  width: 4px;
+  height: 4px;
+  margin: 1px 0 3px 9px;
+}
+
+.text_113 {
+  width: 13px;
+  height: 10px;
+  overflow-wrap: break-word;
+  color: rgba(0, 0, 0, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 3px 0 0 21px;
+}
+
+.group_16 {
+  width: 255px;
+  height: 22px;
+  margin: 2px 0 0 10px;
+}
+
+.text_114 {
+  width: 13px;
+  height: 9px;
+  overflow-wrap: break-word;
+  color: rgba(0, 0, 0, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin-top: 4px;
+}
+
+.text_115 {
+  width: 14px;
+  height: 10px;
+  overflow-wrap: break-word;
+  color: rgba(0, 0, 0, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 4px 0 0 29px;
+}
+
+.group_17 {
+  background-color: rgba(0, 160, 110, 1);
+  border-radius: 2px;
+  width: 22px;
+  height: 22px;
+  margin-left: 24px;
+}
+
+.text_116 {
+  width: 13px;
+  height: 10px;
+  overflow-wrap: break-word;
+  color: rgba(255, 254, 254, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 4px 0 0 4px;
+}
+
+.thumbnail_10 {
+  width: 4px;
+  height: 4px;
+  margin: 1px 0 3px 10px;
+}
+
+.text_117 {
+  width: 14px;
+  height: 10px;
+  overflow-wrap: break-word;
+  color: rgba(0, 0, 0, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 4px 0 0 23px;
+}
+
+.text_118 {
+  width: 12px;
+  height: 9px;
+  overflow-wrap: break-word;
+  color: rgba(0, 0, 0, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 4px 0 0 27px;
+}
+
+.text_119 {
+  width: 14px;
+  height: 9px;
+  overflow-wrap: break-word;
+  color: rgba(0, 0, 0, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 4px 0 0 25px;
+}
+
+.text_120 {
+  width: 14px;
+  height: 10px;
+  overflow-wrap: break-word;
+  color: rgba(0, 0, 0, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 4px 0 0 24px;
+}
+
+.text-wrapper_21 {
+  width: 255px;
+  height: 10px;
+  margin: 8px 0 0 10px;
+}
+
+.text_121 {
+  width: 14px;
+  height: 10px;
+  overflow-wrap: break-word;
+  color: rgba(0, 0, 0, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+}
+
+.text_122 {
+  width: 13px;
+  height: 10px;
+  overflow-wrap: break-word;
+  color: rgba(0, 0, 0, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin-left: 28px;
+}
+
+.text_123 {
+  width: 13px;
+  height: 10px;
+  overflow-wrap: break-word;
+  color: rgba(0, 0, 0, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin-left: 29px;
+}
+
+.text_124 {
+  width: 14px;
+  height: 10px;
+  overflow-wrap: break-word;
+  color: rgba(0, 0, 0, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin-left: 28px;
+}
+
+.text_125 {
+  width: 14px;
+  height: 10px;
+  overflow-wrap: break-word;
+  color: rgba(0, 0, 0, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin-left: 27px;
+}
+
+.text_126 {
+  width: 14px;
+  height: 10px;
+  overflow-wrap: break-word;
+  color: rgba(0, 0, 0, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin-left: 23px;
+}
+
+.text_127 {
+  width: 14px;
+  height: 10px;
+  overflow-wrap: break-word;
+  color: rgba(0, 0, 0, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: center;
+  white-space: nowrap;
+  line-height: 21px;
+  margin-left: 24px;
+}
+
+.image-wrapper_5 {
+  width: 4px;
+  height: 4px;
+  margin: 1px 0 13px 182px;
+}
+
+.thumbnail_11 {
+  width: 4px;
+  height: 4px;
+}
+
+.text_128 {
+  width: 64px;
+  height: 15px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 16px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 15px;
+  margin: 13px 0 0 14px;
+}
+
+.group_18 {
+  border-radius: 3px;
+  width: 100%;
+  height: 195px;
+  border: 2px solid rgba(115, 192, 222, 1);
+  margin: 10px 0 0 0;
+  padding: 5px;
+}
+.group_18it {
+  border-radius: 3px;
+  width: 100%;
+  height: 195px;
+  border: 2px solid #FAC858;
+  margin: 16px 0 0 0;
+  padding: 5px;
+}
+
+.group_19 {
+  width: 100%;
+  height: 14px;
+  margin: 7px 0 0 0;
+}
+
+.text_129 {
+  width: 138px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(0, 0, 0, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+}
+
+.thumbnail_12 {
+  width: 16px;
+  height: 8px;
+  margin-top: 3px;
+}
+
+.group_20 {
+  width: 100%;
+  height: 13px;
+  margin: 12px 0 0 0;
+}
+
+.thumbnail_13 {
+  width: 10px;
+  height: 10px;
+  margin-top: 2px;
+}
+
+.text_130 {
+  width: 41px;
+  height: 13px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 13px;
+  margin-left: 8px;
+}
+
+.thumbnail_14 {
+  width: 10px;
+  height: 10px;
+  margin: 2px 0 0 11px;
+}
+
+.text_131 {
+  // width: 150px;
+  height: 11px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 11px;
+  margin: 2px 0 0 6px;
+  overflow:hidden;
+  text-overflow:ellipsis;
+  white-space:nowrap;
+  flex:1;
+}
+
+.image-text_3 {
+  width: 100%;
+  height: 14px;
+  margin: 12px 0 0 0;
+}
+
+.thumbnail_15 {
+  width: 8px;
+  height: 11px;
+  margin-top: 2px;
+}
+
+.text-group_4 {
+  flex:1;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 14px;
+  margin-left: 10px;
+  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
+}
+
+.image_15 {
+  width: 100%;
+  height: 1px;
+  margin: 16px 0 0 0;
+}
+
+.image-text_4 {
+  width: 100%;
+  height: 14px;
+  margin: 15px 0 0 0;
+}
+
+.thumbnail_16 {
+  width: 10px;
+  height: 10px;
+  margin-top: 2px;
+}
+
+.text-group_5 {
+  // width: 212px;
+  flex:1;
+  display: flex;
+  height: 14px;
+  overflow-wrap: break-word;
+  font-size: 0;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 13px;
+  overflow:hidden;
+  text-overflow:ellipsis;
+  white-space:nowrap;
+  margin-left: 10px;
+}
+
+.text_132 {
+  width:64px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(181, 181, 181, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 14px;
+}
+
+.text_133 {
+  flex:1;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(34, 35, 39, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 14px;
+  overflow:hidden;
+  text-overflow:ellipsis;
+  white-space:nowrap;
+}
+
+.image-text_5 {
+  width: 232px;
+  height: 13px;
+  margin: 12px 0 0 14px;
+}
+
+.thumbnail_17 {
+  width: 9px;
+  height: 8px;
+  margin-top: 2px;
+}
+
+.text-group_6 {
+  width: 216px;
+  height: 13px;
+  overflow-wrap: break-word;
+  font-size: 0;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 13px;
+}
+
+.text_134 {
+  width: 216px;
+  height: 13px;
+  overflow-wrap: break-word;
+  color: rgba(181, 181, 181, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 18px;
+}
+
+.text_135 {
+  width: 216px;
+  height: 13px;
+  overflow-wrap: break-word;
+  color: rgba(34, 35, 39, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 18px;
+}
+
+.image-text_6 {
+  width: 140px;
+  height: 14px;
+  margin: 11px 0 15px 14px;
+}
+
+.thumbnail_18 {
+  width: 10px;
+  height: 11px;
+  margin-top: 2px;
+}
+
+.text-group_7 {
+  width: 125px;
+  height: 14px;
+  overflow-wrap: break-word;
+  font-size: 0;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 13px;
+}
+
+.text_136 {
+  width: 125px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(181, 181, 181, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 18px;
+}
+
+.text_137 {
+  width: 125px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(84, 112, 198, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 18px;
+}
+
+.group_21 {
+  border-radius: 3px;
+  width: 269px;
+  height: 188px;
+  border: 2px solid rgba(250, 200, 88, 1);
+  margin: 14px 0 13px 13px;
+}
+
+.text-wrapper_22 {
+  width: 247px;
+  height: 14px;
+  margin: 12px 0 0 13px;
+}
+
+.text_138 {
+  width: 138px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(0, 0, 0, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+}
+
+.text_139 {
+  width: 16px;
+  height: 8px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 16px;
+  font-family: PingFang-SC-Bold;
+  font-weight: 700;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 27px;
+  margin-top: 3px;
+}
+
+.group_22 {
+  width: 236px;
+  height: 13px;
+  margin: 12px 0 0 13px;
+}
+
+.thumbnail_19 {
+  width: 10px;
+  height: 10px;
+  margin-top: 2px;
+}
+
+.text_140 {
+  width: 41px;
+  height: 13px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 13px;
+  margin-left: 8px;
+}
+
+.thumbnail_20 {
+  width: 10px;
+  height: 10px;
+  margin: 2px 0 0 11px;
+}
+
+.text_141 {
+  width: 150px;
+  height: 11px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: 2px 0 0 6px;
+}
+
+.image-text_7 {
+  width: 238px;
+  height: 14px;
+  margin: 12px 0 0 14px;
+}
+
+.thumbnail_21 {
+  width: 8px;
+  height: 11px;
+  margin-top: 2px;
+}
+
+.text-group_8 {
+  width: 222px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 27px;
+}
+
+.image_16 {
+  width: 248px;
+  height: 1px;
+  margin: 16px 0 0 10px;
+}
+
+.image-text_8 {
+  width: 229px;
+  height: 14px;
+  margin: 15px 0 0 13px;
+}
+
+.thumbnail_22 {
+  width: 10px;
+  height: 10px;
+  margin-top: 2px;
+}
+
+.text-group_9 {
+  width: 212px;
+  height: 14px;
+  overflow-wrap: break-word;
+  font-size: 0;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 13px;
+}
+
+.text_142 {
+  width: 212px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(181, 181, 181, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 18px;
+}
+
+.text_143 {
+  width: 212px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(34, 35, 39, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 18px;
+}
+
+.image-text_9 {
+  width: 232px;
+  height: 13px;
+  margin: 12px 0 0 14px;
+}
+
+.thumbnail_23 {
+  width: 9px;
+  height: 8px;
+  margin-top: 2px;
+}
+
+.text-group_10 {
+  width: 216px;
+  height: 13px;
+  overflow-wrap: break-word;
+  font-size: 0;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 13px;
+}
+
+.text_144 {
+  width: 216px;
+  height: 13px;
+  overflow-wrap: break-word;
+  color: rgba(181, 181, 181, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 18px;
+}
+
+.text_145 {
+  width: 216px;
+  height: 13px;
+  overflow-wrap: break-word;
+  color: rgba(34, 35, 39, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 18px;
+}
+
+.image-text_10 {
+  width: 140px;
+  height: 14px;
+  margin: 11px 0 15px 14px;
+}
+
+.thumbnail_24 {
+  width: 10px;
+  height: 11px;
+  margin-top: 2px;
+}
+
+.text-group_11 {
+  width: 125px;
+  height: 14px;
+  overflow-wrap: break-word;
+  font-size: 0;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 13px;
+}
+
+.text_146 {
+  width: 125px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(181, 181, 181, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 18px;
+}
+
+.text_147 {
+  width: 125px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(255, 176, 0, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 18px;
+}
+
+.box_26 {
+  box-shadow: 1px 2px 18px 0px rgba(197, 197, 197, 0.15);
+  background-color: rgba(255, 255, 255, 1);
+  border-radius: 3px;
+  width: 100%;
+  height: 117px;
+  padding: 10px;
+  padding-right: 0;
+  padding-top: 0;
+  // margin: 62px 17px 0 -294px;
+}
+
+.box_27 {
+  width: 100%;
+  height: 82px;
+  justify-content: space-between;
+  // margin-left: 16px;
+}
+
+.image-wrapper_6 {
+  width: 45px;
+  height: 72px;
+
+  // margin-top: 10px;
+}
+
+.label_8 {
+  width: 45px;
+  height: 48px;
+  margin-top: 10px;
+  border-radius: 50%;
+}
+
+.thumbnail_25 {
+  width: 12px;
+  height: 12px;
+  margin-top: 16px;
+}
+
+.group_23 {
+  // width: 81px;
+  height: 66px;
+  margin-top: 10px;
+  // margin: 15px 0 0 6px;
+}
+
+.group_24 {
+  width: 67px;
+  height: 14px;
+  margin-left: 5px;
+}
+
+.text_148 {
+  width: 46px;
+  height: 13px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 16px;
+  font-family: PingFang-SC-Heavy;
+  font-weight: 900;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+}
+
+.thumbnail_26 {
+  width: 13px;
+  height: 13px;
+  margin-top: 1px;
+}
+
+.text-wrapper_23 {
+  border-radius: 8px;
+  height: 18px;
+  border: 0.75px solid rgba(0, 160, 110, 1);
+  width: 76px;
+  margin: 7px 0 0 5px;
+}
+
+.text_149 {
+  width: 59px;
+  height: 12px;
+  overflow-wrap: break-word;
+  color: rgba(0, 160, 110, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 11px;
+  margin: 3px 0 0 8px;
+}
+
+.text_150 {
+  width: 16px;
+  height: 11px;
+  overflow-wrap: break-word;
+  color: rgba(240, 96, 17, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Heavy;
+  font-weight: 900;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin-top: 16px;
+}
+
+.image_17 {
+  width: 84px;
+  height: 71px;
+  // margin-left: 62px;
+}
+
+.text_151 {
+  width: 178px;
+  height: 14px;
+  overflow-wrap: break-word;
+  color: rgba(22, 22, 22, 1);
+  font-size: 14px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 21px;
+  margin: -13px 0 0 25px;
+}
+
+.text_152 {
+  width: 100%;
+  height: 12px;
+  overflow-wrap: break-word;
+  color: rgba(102, 102, 102, 1);
+  font-size: 12px;
+  font-family: PingFang-SC-Medium;
+  font-weight: 500;
+  text-align: left;
+  white-space: nowrap;
+  line-height: 12px;
+  margin: 10px 0 0 0;
+  overflow:hidden;
+  text-overflow:ellipsis;
+  white-space:nowrap;
+}
+body * {
+  box-sizing: border-box;
+  flex-shrink: 0;
+}
+body {
+  font-family: PingFangSC-Regular, Roboto, Helvetica Neue, Helvetica, Tahoma,
+    Arial, PingFang SC-Light, Microsoft YaHei;
+}
+input {
+  background-color: transparent;
+  border: 0;
+}
+button {
+  margin: 0;
+  padding: 0;
+  border: 1px solid transparent;
+  outline: none;
+  background-color: transparent;
+}
+
+button:active {
+  opacity: 0.6;
+}
+.van-nav-bar__left:active,
+.van-nav-bar__right:active {
+  opacity: 1;
+}
+[class*='van-']::after {
+  border-bottom: 0;
+}
+.flex-col {
+  display: flex;
+  flex-direction: column;
+}
+.flex-row {
+  display: flex;
+  flex-direction: row;
+}
+.justify-start {
+  display: flex;
+  justify-content: flex-start;
+}
+.justify-center {
+  display: flex;
+  justify-content: center;
+}
+
+.justify-end {
+  display: flex;
+  justify-content: flex-end;
+}
+.justify-evenly {
+  display: flex;
+  justify-content: space-evenly;
+}
+.justify-around {
+  display: flex;
+  justify-content: space-around;
+}
+.justify-between {
+  display: flex;
+  justify-content: space-between;
+}
+.align-start {
+  display: flex;
+  align-items: flex-start;
+}
+.align-center {
+  display: flex;
+  align-items: center;
+}
+.align-end {
+  display: flex;
+  align-items: flex-end;
+}
+
+
+
+</style>
+<style lang="scss">
+  /* // 日历更改样式 以上都是蓝湖样式 */
+  .wh_content_all{
+    position: relative;
+    overflow:visible !important;
+    background-color: #D8E8E3 !important;
+    border-radius: 10px;
+  }
+  .wh_content{
+    overflow:hidden;
+  }
+  // .wh_content_item{
+  //   width: 23px !important;
+  //   height: 23px !important;
+  // }
+
+  .wh_top_tag{
+    font-size: 12px;
+    color: #161616;
+    // background-color: #fff;
+  }
+  .wh_top_changge{
+    position: absolute;
+    right: 0;
+    top: -40px;
+  }
+  .wh_top_changge .wh_content_li{
+    width: 110px;
+  }
+  .wh_top_changge li{
+    font-size: 14px !important;
+    color: #161616 !important;
+  }
+  .wh_jiantou1{
+    border-color: #161616 !important ;
+    width: 8px !important;
+    height: 8px !important;
+  }
+  .wh_jiantou2{
+    width: 8px !important;
+    height: 8px !important;
+    border-color: #161616 !important ;
+  }
+  .wh_content_item .wh_other_dayhide{
+    // background-color: #D8E8E3;
+    // width: 23px;
+    // height: 23px;
+  }
+  .wh_content_item .wh_isToday{
+    border: 1px solid #00A06E;
+    background-color: #D8E8E3 !important;
+    color: #00A06E;
+    border-radius: 2px !important ;
+  }
+  .wh_item_date{
+     // background-color: #D8E8E3;
+  }
+  .wh_content_item .wh_chose_day{
+    background: #00A06E !important;
+    border-radius: 2px !important;
+  }
+</style>
+

+ 588 - 106
ruoyi-ui-gongdan/src/views/login.vue

@@ -1,193 +1,633 @@
 <template>
-  <div class="login">
-    <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
-      <h3 class="title">{{title}}</h3>
-      <el-form-item prop="username">
-        <el-input
-          v-model="loginForm.username"
-          type="text"
-          auto-complete="off"
-          placeholder="账号"
-        >
-          <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
-        </el-input>
-      </el-form-item>
-      <el-form-item prop="password">
-        <el-input
-          v-model="loginForm.password"
-          type="password"
-          auto-complete="off"
-          placeholder="密码"
-          @keyup.enter.native="handleLogin"
-        >
-          <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
-        </el-input>
-      </el-form-item>
-      <el-form-item prop="code" v-if="captchaEnabled">
-        <el-input
-          v-model="loginForm.code"
-          auto-complete="off"
-          placeholder="验证码"
-          style="width: 63%"
-          @keyup.enter.native="handleLogin"
-        >
-          <svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
-        </el-input>
-        <div class="login-code">
-          <img :src="codeUrl" @click="getCode" class="login-code-img"/>
-        </div>
-      </el-form-item>
-      <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox>
-      <el-form-item style="width:100%;">
-        <el-button
-          :loading="loading"
-          size="medium"
-          type="primary"
-          style="width:100%;"
-          @click.native.prevent="handleLogin"
-        >
-          <span v-if="!loading">登 录</span>
-          <span v-else>登 录 中...</span>
-        </el-button>
+  <div class="login" >
+    <div style="display: flex;" class="nbse">
+      <div style="margin-bottom: 30px;">
+        <img style="width: 380px; position: relative;top:0; left:0;" src="../assets/images/pic_gddl_tp.png" alt="">
+      </div>
+      <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
+        <h3 class="title" style="margin-top: 30px;"><img src="../assets/images/icon_dl_logo.png" alt="" style="margin-right: 5px;">中新云客户服务工单系统管理平台</h3>
+         <h3 class="title">登录</h3>
+        <!-- <img src="../assets/images/pic_htdl_logo.png" alt="" style=" width: 100%; margin-bottom: 10px;"> -->
+        <!-- <div class="zhengxi_og" > -->
+          <!-- <p :class="iskj == 1 ?'isacti' :''" @click="islk(1)">账号登录</p> -->
+         <!-- <p :class="iskj == 2 ?'isacti' :''" @click="islk(2)">短信登录</p>
+          <p :class="iskj == 3 ?'isacti' :''" @click="islk(3)">重置密码</p> -->
+          <!-- <div class="nbgsq"></div> -->
+        <!-- </div> -->
+        <el-form-item prop="username" v-if='iskj == 1' class="nkgon">
+          <el-input
+            v-model="loginForm.username"
+            type="text"
+            auto-complete="off"
+            placeholder="账号"
+          >
+            <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
+          </el-input>
+        </el-form-item>
+        <el-form-item prop="password" v-if='iskj == 1' class="nkgon">
+          <el-input
+            v-model="loginForm.password"
+            type="password"
+            auto-complete="off"
+            placeholder="密码"
+            @keyup.enter.native="handleLogin"
+          >
+            <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
+          </el-input>
+        </el-form-item>
+        <!-- v-if='!xgmemberMe' -->
+        <el-form-item prop="code"  v-if="captchaEnabled"   >
+          <el-input
+            v-model="loginForm.code"
+            auto-complete="off"
+            placeholder="验证码"
+            style="width: 63%"
+            @keyup.enter.native="handleLogin"
+          >
+            <svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
+          </el-input>
+          <div class="login-code">
+            <img :src="codeUrl" @click="getCode" class="login-code-img"/>
+          </div>
+        </el-form-item>
+        <el-checkbox v-if='iskj == 1'  v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox>
         <div style="float: right;" v-if="register">
           <router-link class="link-type" :to="'/register'">立即注册</router-link>
         </div>
-      </el-form-item>
-    </el-form>
+
+        <el-form-item  prop="username" v-if='iskj == 2' class="lisevf">
+          <el-input v-model="loginForm.username"  placeholder="联系方式" type="number" >
+            <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
+          </el-input>
+        </el-form-item>
+        <div class="nkg" v-if='iskj == 2'>
+          <el-form-item  prop="code"  >
+            <el-input v-model="loginForm.code"  placeholder="验证码" type="number" >
+              <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
+            </el-input>
+          </el-form-item>
+           <p class="sokspan" @click="fasog" v-show="show">
+           <span></span>发送验证码
+           </p>
+           <p class="sokspan"  v-show="!show">
+             <span></span>{{count}}秒重新发送
+           </p>
+        </div>
+        <el-form-item  prop="username" v-if='iskj == 3' class="lisevf">
+          <el-input v-model="loginForm.username"  placeholder="联系方式" type="number" >
+            <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
+          </el-input>
+        </el-form-item>
+        <div class="nkg" v-if='iskj == 3'>
+          <el-form-item  prop="code"  >
+            <el-input v-model="loginForm.code"  placeholder="验证码" type="number" >
+              <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
+            </el-input>
+          </el-form-item>
+           <p class="sokspan" @click="fasogs" v-show="shows">
+           <span></span>发送验证码
+           </p>
+           <p class="sokspan"  v-show="!shows">
+             <span></span>{{counts}}秒重新发送
+           </p>
+        </div>
+        <el-form-item prop="password" v-if='iskj == 3' class="nkgon" style="margin-top: 25px;">
+          <el-input
+            v-model="loginForm.password"
+            type="password"
+            auto-complete="off"
+            placeholder="密码"
+            show-password
+            @keyup.enter.native="handleLogin"
+          >
+            <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
+          </el-input>
+        </el-form-item>
+        <!-- v-if='xgmemberMe' -->
+
+        <!-- <el-checkbox v-model="xgmemberMe"  @change=" xgmes " style="margin:0px 0px 25px 25px;">修改密码</el-checkbox> -->
+        <el-form-item style="width:100%;margin-bottom: 0;" v-if='iskj == 1' >
+          <el-button
+            :loading="loading"
+            size="medium"
+            type="primary"
+            style="width: 100%;background: linear-gradient(180deg, #00B278 0%, #00B278 100%);height: 45px; border-color: #00B278 ;color: #fff; border-radius: 6px;"
+            @click.native.prevent="handleLogin"
+          >
+            <span v-if="!loading">登 录</span>
+            <span v-else>登 录 中...</span>
+          </el-button>
+
+         <!-- <p class="div_p">
+            * 使用快捷登录,请先绑定第三方账号
+          </p> -->
+        </el-form-item>
+        <el-form-item  style="width:100%;margin-bottom: 0; margin-top: 20px;" v-if='iskj == 2'>
+          <el-button
+            :loading="loading"
+            size="medium"
+            type="primary"
+            style="width: 100%;background: linear-gradient(180deg, #00A9F0 0%, #00A9F0 100%);height: 45px; border-color: #00A9F0 ;color: #fff; border-radius: 6px;"
+            @click.native.prevent="handleLogin"
+          >
+            <span v-if="!loading">登 录</span>
+            <span v-else>登 录 中...</span>
+          </el-button>
+          <div style="float: right;" v-if="register">
+            <router-link class="link-type" :to="'/register'">立即注册</router-link>
+          </div>
+          <!-- <p class="div_p">
+            * 使用快捷登录,请先绑定第三方账号
+          </p> -->
+        </el-form-item>
+        <el-form-item  style="width:100%;margin-bottom: 0; margin-top: 20px;" v-if='iskj == 3'>
+          <el-button
+            :loading="loading"
+            size="medium"
+            type="primary"
+            style="width: 100%;background: linear-gradient(180deg, #00A9F0 0%, #00A9F0 100%);height: 45px; border-color: #00A9F0 ;color: #fff; border-radius: 6px;"
+            @click.native.prevent="handleLogin"
+          >
+            <span v-if="!loading">登 录</span>
+            <span v-else>登 录 中...</span>
+          </el-button>
+          <div style="float: right;" v-if="register">
+            <router-link class="link-type" :to="'/register'">立即注册</router-link>
+          </div>
+          <!-- <p class="div_p">
+            * 使用快捷登录,请先绑定第三方账号
+          </p> -->
+        </el-form-item>
+      </el-form>
+    </div>
+
+
     <!--  底部  -->
     <div class="el-login-footer">
-      <span>Copyright © 2018-2025 ruoyi.vip All Rights Reserved.</span>
+      <!-- <span>版本号:ZXY_tj_1.2</span> -->
     </div>
   </div>
 </template>
 
 <script>
-import { getCodeImg } from "@/api/login"
-import Cookies from "js-cookie"
+import { getCodeImg,postphone,fsefsaxiu,postphonef } from "@/api/login";
+import Cookies from "js-cookie";
 import { encrypt, decrypt } from '@/utils/jsencrypt'
+ import {setToken} from '@/utils/auth'
+  import resetPwd from "./system/user/profile/resetPwd.vue";
+  import { updateUserPwds } from "@/api/system/user";
 
 export default {
   name: "Login",
   data() {
     return {
-      title: process.env.VUE_APP_TITLE,
       codeUrl: "",
       loginForm: {
-        username: "admin",
-        password: "admin123",
+        username: "",
+        password: "",
         rememberMe: false,
         code: "",
-        uuid: ""
+        uuid: "",
+        type:1
       },
       loginRules: {
-        username: [
-          { required: true, trigger: "blur", message: "请输入您的账号" }
-        ],
-        password: [
-          { required: true, trigger: "blur", message: "请输入您的密码" }
-        ],
-        code: [{ required: true, trigger: "change", message: "请输入验证码" }]
+
       },
       loading: false,
       // 验证码开关
-      captchaEnabled: true,
+      captchaEnabled: false,
       // 注册开关
-      register: false,
-      redirect: undefined
-    }
+      register: true,
+      redirect: undefined,
+      xgmemberMe:false,  //修改密码
+      iskj:1,
+      show:true,
+      timecont:60,
+      count: '',
+      shows:true,
+      timeconts:60,
+      counts: '',
+      timer: null,
+      timers:null,
+    };
   },
   watch: {
     $route: {
       handler: function(route) {
-        this.redirect = route.query && route.query.redirect
+        this.redirect = route.query && route.query.redirect;
       },
       immediate: true
     }
   },
   created() {
-    this.getCode()
-    this.getCookie()
+    this.getCode();
+    this.getCookie();
   },
   methods: {
+    getCodd(formData){
+                if (!this.timer) {
+                    this.count = this.timecont;
+                    this.show = false;
+                    let nhge={username:this.loginForm.username}
+                    postphone(nhge).then(res => {
+                      this.$modal.msgSuccess('操作成功');
+                    });
+                    this.timer = setInterval(() => {
+                      if (this.count > 0 && this.count <= this.timecont) {
+                        this.count--;
+                      } else {
+                        this.show = true;
+                        clearInterval(this.timer);
+                        this.timer = null;
+                      }
+                    }, 1000)
+                  }
+            },
+    getCoddf(formData){
+                if (!this.timer) {
+                    this.counts = this.timeconts;
+                    this.shows = false;
+                    let nhge={username:this.loginForm.username}
+                    postphonef(nhge.username).then(res => {
+                      this.$modal.msgSuccess('操作成功');
+                    });
+                    this.timers = setInterval(() => {
+                      if (this.counts > 0 && this.counts <= this.timeconts) {
+                        this.counts--;
+                      } else {
+                        this.shows = true;
+                        clearInterval(this.timers);
+                        this.timers = null;
+                      }
+                    }, 1000)
+                  }
+            },
+    islk(val){
+     this.iskj =val
+     if(val == 1){
+       this.xgmemberMe = false
+     }else{
+       this.xgmemberMe = true
+     }
+     this.loginForm={
+       username: "",
+       password: "",
+       rememberMe: false,
+       code: "",
+       uuid: "",
+       type:val
+     }
+    },
+    fasog(){
+
+      this.getCodd()
+
+    },
+    fasogs(){
+
+      this.getCoddf()
+
+    },
     getCode() {
       getCodeImg().then(res => {
-        this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled
+        this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled;
         if (this.captchaEnabled) {
-          this.codeUrl = "data:image/gif;base64," + res.img
-          this.loginForm.uuid = res.uuid
+          this.codeUrl = "data:image/gif;base64," + res.img;
+          this.loginForm.uuid = res.uuid;
         }
-      })
+      });
     },
     getCookie() {
-      const username = Cookies.get("username")
-      const password = Cookies.get("password")
+      const username = Cookies.get("username");
+      const password = Cookies.get("password");
       const rememberMe = Cookies.get('rememberMe')
+      const type = Cookies.get('type')
       this.loginForm = {
         username: username === undefined ? this.loginForm.username : username,
         password: password === undefined ? this.loginForm.password : decrypt(password),
-        rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
-      }
+        rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
+        type: type == undefined ? this.iskj : this.iskj,
+      };
     },
     handleLogin() {
       this.$refs.loginForm.validate(valid => {
         if (valid) {
-          this.loading = true
+          if(this.iskj == 1){
+            // 账号登录
+            if(this.loginForm.username == null || this.loginForm.username==''){
+              this.$message.error('请输入账号');
+              return
+            }
+            if(this.loginForm.password == null || this.loginForm.password==''){
+              this.$message.error('请输入密码');
+              return
+            }
+          }else if(this.iskj == 2){
+            // 验证码
+            if(this.loginForm.username == null || this.loginForm.username==''){
+              this.$message.error('请输入账号');
+              return
+            }
+            if(this.loginForm.code == null || this.loginForm.code==''){
+              this.$message.error('请输入验证码');
+              return
+            }
+          }
+          this.loading = true;
           if (this.loginForm.rememberMe) {
-            Cookies.set("username", this.loginForm.username, { expires: 30 })
-            Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 })
-            Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 })
+            Cookies.set("username", this.loginForm.username, { expires: 30 });
+            Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 });
+            Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 });
           } else {
-            Cookies.remove("username")
-            Cookies.remove("password")
-            Cookies.remove('rememberMe')
+            Cookies.remove("username");
+            Cookies.remove("password");
+            Cookies.remove('rememberMe');
           }
-          this.$store.dispatch("Login", this.loginForm).then(() => {
-            this.$router.push({ path: this.redirect || "/" }).catch(()=>{})
-          }).catch(() => {
-            this.loading = false
-            if (this.captchaEnabled) {
-              this.getCode()
-            }
-          })
+          this.loginForm.type = this.iskj
+           this.loginForm.username == null
+          console.log(this.loginForm,1)
+          if(this.iskj != 3){
+            this.$store.dispatch("Login", this.loginForm).then(() => {
+              console.log(this.loginForm,1)
+              this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
+            }).catch(() => {
+              this.loading = false;
+              if (this.captchaEnabled) {
+                this.getCode();
+              }
+            });
+          }else{
+            this.loginForm.phone = this.loginForm.username
+            this.loginForm.username = undefined
+            fsefsaxiu(this.loginForm).then(
+              response => {
+                console.log(response.msg,36)
+                if(response.msg == '操作成功'){
+                   this.$modal.msgSuccess(response.msg);
+                   this.islk(1);
+                }else{
+                  this.$message.error(response.msg);
+                }
+                this.loading = false;
+
+              })
+          }
+
         }
-      })
+      });
+    },
+    // 修改密码
+    handleLogins(){
+     if(this.loginForm.username == ""){
+       this.$message.error('请输入账号');
+       return
+     }
+     if(this.loginForm.oldPassword == undefined){
+       this.$message.error('请输入旧密码');
+       return
+     }
+     if(this.loginForm.newPassword == undefined){
+       this.$message.error('请输入新密码');
+       return
+     }
+
+     if(this.loginForm.confirmPassword == undefined){
+       this.$message.error('请输入确认密码');
+       return
+     }
+     this.loading = true;
+     let nhse={
+       userName:''
+     }
+     nhse.userName = this.loginForm.username
+     updateUserPwds(this.loginForm.oldPassword, this.loginForm.newPassword,this.loginForm.username).then(
+       response => {
+         console.log(response.msg,36)
+         if(response.msg == '操作成功'){
+            this.$modal.msgSuccess(response.msg);
+            this.xgmemberMe = false
+            this.getCode();
+            this.$set(this.loginForm,'password','')
+            this.$set(this.loginForm,'uuid','')
+            this.$set(this.loginForm,'rememberMe',false)
+            this.$set(this.loginForm,'code','')
+            this.$set(this.loginForm,'confirmPassword',undefined)
+            this.$set(this.loginForm,'oldPassword',undefined)
+            this.$set(this.loginForm,'newPassword',undefined)
+            // this.$set(this.loginForm,'username','')
+         }else{
+           this.$message.error(response.msg);
+         }
+
+         this.loading = false;
+
+       }
+     );
+    },
+    // 确认密码失去焦点
+    cpass(){
+     if(this.loginForm.confirmPassword !== this.loginForm.newPassword){
+       this.$message.error('两次密码不一致');
+     }
+    },
+    // 复选框选择修改密码
+    xgmes(){
+      if(this.xgmemberMe == false){
+        this.$set(this.loginForm,'confirmPassword',undefined)
+        this.$set(this.loginForm,'oldPassword',undefined)
+        this.$set(this.loginForm,'newPassword',undefined)
+        this.$set(this.loginForm,'username','')
+      }else{
+        this.$set(this.loginForm,'username','')
+        this.$set(this.loginForm,'password','')
+        this.$set(this.loginForm,'uuid','')
+        this.$set(this.loginForm,'rememberMe',false)
+        this.$set(this.loginForm,'code','')
+      }
+    },
+    zhuc(){
+     this.xgmemberMe = true
+    },
+    zhucs(){
+      this.xgmemberMe = false
     }
   }
-}
+};
 </script>
+<style lang="scss">
+  .login{
+    .el-checkbox__input.is-checked + .el-checkbox__label{
+      color:#333333;
+    }
+    .el-checkbox__input.is-checked .el-checkbox__inner{
+      background-color:rgba(0,0,0,0);
+      color:#00B278 ;
+      border-color: #00B278;
+    }
+    .el-checkbox__inner::after{
+     border-color: #00B278;
+    }
+    .link-type
+    {
+       color:#00B278 ;
+    }
+     .link-type:focu{
+       color:#00B278 ;
+    }
+    .svg-icon{
+      color:#00B278 ;
+    }
+  }
+
+</style>
 
 <style rel="stylesheet/scss" lang="scss">
+  .nkg{
+    border: 1px solid #A7A7A7;
+    border-radius: 6px;
+    display: flex;
+    justify-content: space-between;
+     background-color: rgba(255,255,255,0.7) !important;
+    .el-input input{
+      border: 0 !important;
+      background-color: rgba(255,255,255,0.2) !important;
+    }
+    .sokspan{
+      height: 45px;
+      line-height: 45px;
+      width: 35%;
+      text-align: center;
+      font-weight: bold;
+      font-size: 15px;
+      color: #004BF6;
+      cursor: pointer;
+      margin: 0;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      padding-right: 20px;
+      span{
+        height: 15px;
+        width: 1px;
+        background-color: #C1C1C1;
+      }
+    }
+    .el-form-item{
+      margin-bottom: 0 !important;
+    }
+  }
+  .lisevf{
+     .el-input input{
+      border: 1px  solid #A7A7A7 !important;
+      border-radius: 6px !important;
+       background-color: rgba(255,255,255,0.7) !important;
+     }
+
+  }
+  .nkgon{
+    .el-input input{
+     border: 1px  solid #A7A7A7 !important;
+     border-radius: 6px !important;
+      background-color: rgba(255,255,255,0.7) !important;
+    }
+  }
+  .zhengxi_og{
+    display: flex;
+    position: relative;
+    margin-bottom: 20px;
+    cursor:pointer;
+    p{
+      position: relative;
+      z-index: 4;
+      font-weight: 400;
+      font-size: 14px;
+      color: #545454;
+      margin: 0;
+       margin-right: 20px;
+      padding-bottom: 5px;
+      padding-top: 10px;
+    }
+    .isacti{
+      color: #00A9F0;
+      border-bottom: 1px solid #00A9F0;
+    }
+    .nbgsq{
+      width: 100%;
+      height: 2px;
+      background-color: #E6E6E6;
+      position: absolute;
+      bottom: 0;
+      left: 0;
+      z-index: 3;
+    }
+  }
 .login {
   display: flex;
   justify-content: center;
   align-items: center;
+  // flex-direction: column;
   height: 100%;
-  background-image: url("../assets/images/login-background.jpg");
+  background-image: url("../assets/images/pic_dl_bg.png");
   background-size: cover;
+  .el-input__prefix{
+    color: #5974E0;
+    top:2px;
+  }
+  // margin-left: 300px;
+}
+.nbse{
+  background-image: url("../assets/images/pic_gddl_dlkbg.png");
+  background-size: cover;
+  padding: 30px;
 }
 .title {
-  margin: 0px auto 30px auto;
+  margin: 0 auto 20px auto;
   text-align: center;
-  color: #707070;
+  font-size: 18px;
+  font-family: PingFang SC;
+  font-weight: 800;
+  color: #343434;
+
 }
 
 .login-form {
   border-radius: 6px;
-  background: #ffffff;
+  // background: #000a48;
+  // background-color:#fff;
   width: 400px;
-  padding: 25px 25px 5px 25px;
-  z-index: 1;
+  margin-left: -3.2%;
+  // margin-right: -30%;
+  margin-left: 10px;
+  padding: 15px 35px 5px 35px;
   .el-input {
-    height: 38px;
+    height: 45px;
     input {
-      height: 38px;
+      height: 45px;
+      border: 1px solid #0391FD;
+      border-radius: 21px;
+      background-color: #0391FD;
+      // border-color: #F7F6FC;s
+      background-color:#fff
     }
   }
+  .el-checkbox__inner{
+    background-color: #2174f3;
+    border-color: rgba(1, 152, 221,0.2);
+    background-color:rgba(0,0,0,0.3)
+  }
   .input-icon {
     height: 39px;
     width: 14px;
     margin-left: 2px;
   }
+  .el-button--primary{
+    margin-bottom: 20px;
+    // background-color: #A6A1EB !important;
+
+  }
+  .el-form-item{
+    margin-bottom: 25px;
+  }
 }
 .login-tip {
   font-size: 13px;
@@ -218,4 +658,46 @@ export default {
 .login-code-img {
   height: 38px;
 }
+.nli{
+  .el-button--primary{
+    background-color: #A6A1EB;
+    border-color: #A6A1EB !important;
+  }
+}
+.njuyehaf{
+  display: flex;
+  p{
+    flex: 1;
+    font-size: 14px;
+    font-family: PingFang SC;
+    font-weight: 400;
+    color: #C8C8C8;
+    margin: 0;
+    text-align: right;
+    span{
+      color: #FFB339;
+      font-weight: 700;
+      cursor:pointer;
+    }
+  }
+}
+.njhyter{
+  .el-upload{
+    width: 100%;
+  }
+  .el-button--mini{
+    width: 100% !important;
+    padding: 11px 15px;
+    // text-align: left;
+    margin: 0;
+  }
+  .el-button--primary{
+    background-color: #F7F6FC;
+    border-color: #F7F6FC;
+    color: #A6A1EB;
+  }
+  .el-upload__tip{
+    font-size: 12px;
+  }
+}
 </style>

+ 11 - 5
ruoyi-ui-gongdan/src/views/system/user/index.vue

@@ -32,8 +32,8 @@
                 <el-date-picker v-model="dateRange" style="width: 240px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
               </el-form-item>
               <el-form-item>
-                <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-                <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+                <el-button style="background-color: #1BDD96; border: #1BDD96;" type="primary"  size="mini" @click="handleQuery">搜索</el-button>
+                <el-button  size="mini" @click="resetQuery">重置</el-button>
               </el-form-item>
             </el-form>
 
@@ -75,8 +75,8 @@
               </el-table-column>
               <el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width">
                 <template slot-scope="scope" v-if="scope.row.userId !== 1">
-                  <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:user:edit']">修改</el-button>
-                  <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:user:remove']">删除</el-button>
+                  <el-button size="mini" type="text" style="color: #00A06E;" @click="handleUpdate(scope.row)" v-hasPermi="['system:user:edit']">修改</el-button>
+                  <el-button size="mini" type="text" style="color: red;" @click="handleDelete(scope.row)" v-hasPermi="['system:user:remove']">删除</el-button>
                   <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['system:user:resetPwd', 'system:user:edit']">
                     <el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button>
                     <el-dropdown-menu slot="dropdown">
@@ -550,4 +550,10 @@ export default {
     }
   }
 }
-</script>
+</script>
+<style>
+  .el-switch.is-checked .el-switch__core{
+    border-color:#00A06E;
+    background-color:#00A06E;
+  }
+</style>

+ 3 - 3
ruoyi-ui-gongdan/vue.config.js

@@ -1,15 +1,15 @@
 'use strict'
 const path = require('path')
-
+const defaultSettings = require('./src/settings.js')
 function resolve(dir) {
   return path.join(__dirname, dir)
 }
 
 const CompressionPlugin = require('compression-webpack-plugin')
 
-const name = process.env.VUE_APP_TITLE || '若依管理系统' // 网页标题
+const name = process.env.VUE_APP_TITLE || '中心云客户服务工单系统管理平台' // 网页标题
 
-const baseUrl = 'http://localhost:8080' // 后端接口
+const baseUrl = defaultSettings.urls // 后端接口
 
 const port = process.env.port || process.env.npm_config_port || 80 // 端口