浏览代码

Merge branch 'develop' of http://git.wdklian.com/allen/ncs_ui into develop

wuyunfeng 1 年之前
父节点
当前提交
28461164dd
共有 46 个文件被更改,包括 763 次插入599 次删除
  1. 1 0
      Dockerfile
  2. 1 1
      dist/index.html
  3. 13 5
      languages/en.js
  4. 32 24
      languages/es.js
  5. 13 5
      languages/ru-RU.js
  6. 8 3
      languages/zh-CN.js
  7. 3 3
      public/domain.js
  8. 1 1
      set-envs.sh
  9. 1 1
      src/api/calling-broadcast.js
  10. 36 39
      src/api/ncs_board_item.js
  11. 42 45
      src/api/ncs_board_title.js
  12. 10 11
      src/api/ncs_countdown_config.js
  13. 17 17
      src/api/ncs_entrace_guard_user.js
  14. 0 51
      src/api/ncs_frameGroup.js
  15. 4 4
      src/api/ncs_functions.js
  16. 29 29
      src/api/ncs_functions_role_mapping.js
  17. 48 1
      src/api/ncs_hospitalFrame.js
  18. 23 23
      src/api/ncs_interaction-chain.js
  19. 17 18
      src/api/ncs_nbdevicecondition.js
  20. 31 31
      src/api/ncs_screentip.js
  21. 124 0
      src/color/colorChange.js
  22. 3 0
      src/color/elementUiCSS.js
  23. 196 164
      src/router/index.js
  24. 1 1
      src/store/modules/permission.js
  25. 6 6
      src/utils/domain.js
  26. 0 1
      src/utils/mixin.js
  27. 2 2
      src/views/calling-board/index.vue
  28. 8 5
      src/views/dashboard/calling/index.vue
  29. 0 0
      src/views/entrace-guard/index.vue
  30. 0 0
      src/views/entrace-guard/users.vue
  31. 0 0
      src/views/hospital/ncs_customer/customerManager.vue
  32. 1 1
      src/views/hospital/customerManagement.vue
  33. 0 0
      src/views/hospital/ncs_device/deviceManager.vue
  34. 1 1
      src/views/hospital/deviceManagement.vue
  35. 4 5
      src/views/hospital/ncs_frame/frameTreeView.vue
  36. 2 1
      src/views/hospitalFrame/frameGroupEdit.vue
  37. 16 30
      src/views/hospitalFrame/frameTreeView-admin.vue
  38. 2 2
      src/views/hospitalFrame/frameTreeView.vue
  39. 2 1
      src/views/ncs-broadcast/components/broadcastInfo.vue
  40. 4 4
      src/views/ncs-clerk-frame-manage/components/frameView.vue
  41. 4 4
      src/views/ncs-clerk-frame-manage/components/multiClerkManageFrame.vue
  42. 33 43
      src/views/ncs-clerk/components/clerkList.vue
  43. 1 2
      src/views/ncs-device-menu/deviceMenuManagement.vue
  44. 9 12
      src/views/ncs-device-menu/index.vue
  45. 12 0
      src/views/ncs-orginazition/components/partInfoEdit.vue
  46. 2 2
      src/views/nfc-interaction/nfcPosition.vue

+ 1 - 0
Dockerfile

@@ -10,6 +10,7 @@ EXPOSE 443 80
 ENV OnlineSystemUrl=http://api.base.wdklian.com serverUrl=http://172.28.100.100:8005 DeviceUrl=http://172.28.100.100:8006 mediaUrl=http://172.28.100.100:8004 apiMode=dev uiVersion=1 enableBroadcast=false enableMobile=false enableEntraceguard=false enableNBiot=false enableCustomerDevice=false enableSosDevice=false enable485=false enableLinux=false
 RUN echo 'USERNAME=' $serverUrl ',DeviceUrl=' $DeviceUrl ',mediaUrl=' $mediaUrl',apiMode=' $apiMode ',uiVersion=' $uiVersion
 #CMD sh -c "sed -i 's/^.*8006.*$/serverUrl=$serverUrl' domain.js"
+RUN ["chmod", "777", "/app/domain.js"]
 RUN ["chmod", "+x", "/app/set-envs.sh"]
 CMD sh -c  "/app/set-envs.sh && exec nginx -g \"daemon off;\""
 #CMD sh -c "exec nginx -g 'daemon off;'"

文件差异内容过多而无法显示
+ 1 - 1
dist/index.html


+ 13 - 5
languages/en.js

@@ -5,6 +5,7 @@ module.exports = {
     add: 'Add',
     edit: 'Edit',
     more: 'More',
+    view: 'View',
     delete: 'Delete',
     login: 'Login',
     usernameMsg: 'Username',
@@ -302,6 +303,7 @@ module.exports = {
     sureDelete: 'Sure to delete',
     allBad: 'And all the beds in it?',
     sureDeleteBed: 'Make sure to delete the bed',
+    deleteBedFirst: 'Please delete the bed first',
     part: 'Department',
     room: 'Room',
     room2: 'Room',
@@ -424,7 +426,8 @@ module.exports = {
     card: 'Card display',
     devices: ' devices',
     roomNoDevice: 'The room was not equipped',
-    bedNoDevice: 'The bed was not equipped'
+    bedNoDevice: 'The bed was not equipped',
+    operationAdvice: 'Operation suggestions'
   },
   deviceMenuManage: {
     add: 'Add Device Menu',
@@ -903,6 +906,8 @@ module.exports = {
     linuxDoorGainSize: 'Digital doorstep machine volume gain',
     autoAccept: 'Extension automatic answering',
     openAutoAccept: 'Enable automatic answer',
+    unmannedCall: 'Extension opens unmanned call',
+    openUnmannedCall: 'Enable unmanned call',
     eventForward: 'Event forwarding function',
     openEventForward: 'Open event forwarding',
     communicationModeBed: 'Extension communication mode',
@@ -1046,7 +1051,7 @@ module.exports = {
     functionRoleMapping: 'Component Permissions',
     countdownConfig: 'Countdown Component Configuration',
     screentip: 'ScreenTip Component Configuration',
-    bedsideInteration: 'Interaction components',
+    bedsideInteraction: 'Interaction components',
     interactionChain: 'Interaction Accept Order',
     allClerk: 'All employees',
     allCustomer: 'All users',
@@ -1073,7 +1078,8 @@ module.exports = {
     checkNetwork: 'Check the network of the device',
     changeBattery: 'Replace the battery of the device',
     interactionPush: 'Interactive record push configuration',
-    interactionPushParamConfig: 'Push parameter configuration'
+    interactionPushParamConfig: 'Push parameter configuration',
+    CustomerDistribution: 'User Distribution'
   },
   deviceType: {
     NURSE_HOST: 'Nurse Host',
@@ -1307,7 +1313,8 @@ module.exports = {
     LICENSE_ERROR: 'The authorization serial number is wrong, please contact after-sales service',
     LICENSE_EXPIRE: 'The authorization expires, please contact after-sales service',
     LICENSE_FAILED: 'Invalid authorization, please contact after-sales service',
-    FILE_UPLOAD_FAILED: 'No file storage directory configured!'
+    FILE_UPLOAD_FAILED: 'No file storage directory configured!',
+    FILE_FAILED: 'file error'
   },
   entraceguardUser: {
     named: 'User Name',
@@ -1367,6 +1374,7 @@ module.exports = {
     paramType: 'Parameter type',
     paramExplain: 'Parameter description',
     paramAlias: 'Parameter alias(rename the parameter)',
-    exampleValue: 'Parameter example value'
+    exampleValue: 'Parameter example value',
+    isEnable: 'Is it enabled'
   }
 }

+ 32 - 24
languages/es.js

@@ -5,6 +5,7 @@ module.exports = {
     add: 'Agregar',
     edit: 'Editar',
     more: 'mas',
+    view: 'Ver',
     delete: 'Eliminar',
     login: 'Iniciar sesión',
     usernameMsg: 'Nombre de usuario',
@@ -302,6 +303,7 @@ module.exports = {
     sureDelete: 'Seguro de eliminar',
     allBad: '¿Y todas las camas en él?',
     sureDeleteBed: 'Asegúrese de eliminar la cama',
+    deleteBedFirst: 'Por favor, elimine la cama primero',
     part: 'Departamento',
     room: 'Habitación',
     room2: 'Habitación',
@@ -424,7 +426,8 @@ module.exports = {
     card: 'Visualización de tarjeta',
     devices: 'dispositivos',
     roomNoDevice: 'La habitación no estaba equipada',
-    bedNoDevice: 'La cama no estaba equipada'
+    bedNoDevice: 'La cama no estaba equipada',
+    operationAdvice: 'Recomendaciones operativas'
   },
   deviceMenuManage: {
     add: 'Añadir menú de dispositivos',
@@ -903,6 +906,8 @@ module.exports = {
     linuxDoorGainSize: 'Ganancia de volumen de la máquina de escalón digital',
     autoAccept: 'Extensión de respuesta automática',
     openAutoAccept: 'Habilitar respuesta automática',
+    unmannedCall: 'La extensión abre la llamada no tripulada',
+    openUnmannedCall: 'Activar llamada no tripulada',
     eventForward: 'Función de reenvío de eventos',
     openEventForward: 'Reenvío de evento abierto',
     communicationModeBed: 'Modo de comunicación de extensión',
@@ -1046,7 +1051,7 @@ module.exports = {
     functionRoleMapping: 'Permisos de componentes',
     countdownConfig: 'Configuración del componente de cuenta atrás',
     screentip: 'Configuración del componente de recordatorio de pantalla',
-    bedsideInteration: 'Componentes interactivos',
+    bedsideInteraction: 'Componentes interactivos',
     interactionChain: 'Aceptar órdenes de forma interactiva',
     allClerk: 'Todos los empleados',
     allCustomer: 'Todos los usuarios',
@@ -1072,8 +1077,9 @@ module.exports = {
     lowBatteryDevice: 'Equipos de baja potencia',
     checkNetwork: 'Comprobar la red del dispositivo',
     changeBattery: 'Reemplazar la batería del dispositivo',
-    interactionPush:'configuración de empuje de registro interactivo',
-    interactionPushParamConfig:'configuración de parámetros push'
+    interactionPush: 'configuración de empuje de registro interactivo',
+    interactionPushParamConfig: 'configuración de parámetros push',
+    CustomerDistribution: 'Distribución de usuarios'
   },
   deviceType: {
     NURSE_HOST: 'Enfermera anfitriona',
@@ -1119,7 +1125,7 @@ module.exports = {
     S433_TRANSFER_BOX: 'Caja de conversión inalámbrica',
     S433_RECEIVER: 'Receptor de señal',
     SLEEPMATTRESS: 'Colchón para dormir',
-    S4G_INTERCOM: 'Walkie - talkie 4G',
+    S4G_INTERCOM: 'Walkie - talkie 4G'
   },
   vitalSignsDeviceType: {
     BLOOD_SUGAR: 'Medidor de presión arterial',
@@ -1307,7 +1313,8 @@ module.exports = {
     LICENSE_ERROR: 'Número de serie de autorización incorrecto, por favor póngase en contacto con post - venta',
     LICENSE_EXPIRE: 'La autorización expira, por favor póngase en contacto con post - venta',
     LICENSE_FAILED: 'Autorización inválida, por favor póngase en contacto con post - venta',
-    FILE_UPLOAD_FAILED: '¡Directorio de almacenamiento de archivos no configurado!'
+    FILE_UPLOAD_FAILED: '¡Directorio de almacenamiento de archivos no configurado!',
+    FILE_FAILED: 'Error de archivo'
   },
   entraceguardUser: {
     named: 'Nombre de usuario',
@@ -1350,23 +1357,24 @@ module.exports = {
     add433Box: 'Por favor, agregue primero un cuadro de conversión 433',
     volumeControl: 'Control de volumen'
   },
-  interactionPushConfig:{
-    apiUrl:'push Interface url',
-    enabled:'habilitado',
-    remark:'nota',
-    forParts:'para piezas',
-    add:'añadir nueva configuración',
-    createTitle:'añadir una nueva configuración de empuje',
-    configParam:'configuración de parámetros',
-    apiUrlRequired:'necesita empujar la dirección de la interfaz',
-    pushParam:'push param',
-    method:'empuje',
-    paramFormat:'formato de parámetros',
-    pushParamExample:'ejemplo de parámetros',
-    paramName:'nombre del parámetro',
-    paramType:'tipo de parámetro',
-    paramExplain:'descripción de parámetros',
-    paramAlias:'alias de parámetros (parámetros renombrados)',
-    exampleValue:'valor de muestra del parámetro'
+  interactionPushConfig: {
+    apiUrl: 'push Interface url',
+    enabled: 'habilitado',
+    remark: 'nota',
+    forParts: 'para piezas',
+    add: 'añadir nueva configuración',
+    createTitle: 'añadir una nueva configuración de empuje',
+    configParam: 'configuración de parámetros',
+    apiUrlRequired: 'necesita empujar la dirección de la interfaz',
+    pushParam: 'push param',
+    method: 'empuje',
+    paramFormat: 'formato de parámetros',
+    pushParamExample: 'ejemplo de parámetros',
+    paramName: 'nombre del parámetro',
+    paramType: 'tipo de parámetro',
+    paramExplain: 'descripción de parámetros',
+    paramAlias: 'alias de parámetros (parámetros renombrados)',
+    exampleValue: 'valor de muestra del parámetro',
+    isEnable: 'Si se abre'
   }
 }

+ 13 - 5
languages/ru-RU.js

@@ -5,6 +5,7 @@ module.exports = {
     add: 'Добавить',
     edit: 'редактор',
     more: 'Больше',
+    view: 'Посмотреть',
     delete: 'Удалить',
     login: 'Войти',
     usernameMsg: 'Имя пользователя',
@@ -302,6 +303,7 @@ module.exports = {
     sureDelete: 'Конечно удалить',
     allBad: 'И все кровати в нем?',
     sureDeleteBed: 'Обязательно удалите кровать',
+    deleteBedFirst: 'Пожалуйста, удалите кровать',
     part: 'Отдел',
     room: 'Комната',
     room2: 'Комната',
@@ -424,7 +426,8 @@ module.exports = {
     card: 'Отображение карты',
     devices: 'устройства',
     roomNoDevice: 'Помещение не было оборудовано',
-    bedNoDevice: 'Кровать не оборудована'
+    bedNoDevice: 'Кровать не оборудована',
+    operationAdvice: 'Оперативные рекомендации'
   },
   deviceMenuManage: {
     add: 'Добавить меню устройства',
@@ -903,6 +906,8 @@ module.exports = {
     linuxDoorGainSize: 'Коэффициент усиления громкости цифрового клапана',
     autoAccept: 'Автоматический ответ на добавочный номер',
     openAutoAccept: 'Включить автоматический ответ',
+    unmannedCall: 'Включите добавочный. Беспилотный звонок.',
+    openUnmannedCall: 'Включите беспилотный вызов.',
     eventForward: 'Функция переадресации событий',
     openEventForward: 'Открыть переадресацию событий',
     communicationModeBed: 'Режим связи расширения',
@@ -1046,7 +1051,7 @@ module.exports = {
     functionRoleMapping: 'Права компонентов',
     countdownConfig: 'Настройка компонентов обратного отсчета',
     screentip: 'Настройка компонентов подсказок экрана',
-    bedsideInteration: 'Компонент взаимодействия',
+    bedsideInteraction: 'Компонент взаимодействия',
     allClerk: 'Все сотрудники',
     allCustomer: 'Все пользователи',
     allDevice: 'Все устройства',
@@ -1072,7 +1077,8 @@ module.exports = {
     checkNetwork: 'Проверить сеть устройства',
     changeBattery: 'Замена батарей в оборудовании',
     interactionPush: 'Интерактивная запись push - конфигурация',
-    interactionPushParamConfig: 'Настройка параметров push'
+    interactionPushParamConfig: 'Настройка параметров push',
+    CustomerDistribution: 'Распределение пользователей'
   },
   deviceType: {
     NURSE_HOST: 'Устройство медсестры',
@@ -1304,7 +1310,8 @@ module.exports = {
     LICENSE_ERROR: 'ошибка авторизации серийных номеров после продажи',
     LICENSE_EXPIRE: 'срок действия разрешения истекает после продажи',
     LICENSE_FAILED: 'Неверный Авторизация после продажи',
-    FILE_UPLOAD_FAILED: 'каталог без профиля!'
+    FILE_UPLOAD_FAILED: 'каталог без профиля!',
+    FILE_FAILED: 'Ошибка файла'
   },
   entraceguardUser: {
     named: 'Имя пользователя',
@@ -1364,6 +1371,7 @@ module.exports = {
     paramType: 'Тип параметров',
     paramExplain: 'Описание параметров',
     paramAlias: 'Параметры псевдонимы (переименование параметров)',
-    exampleValue: 'Примерное значение параметров'
+    exampleValue: 'Примерное значение параметров',
+    isEnable: 'Открыть'
   }
 }

+ 8 - 3
languages/zh-CN.js

@@ -303,6 +303,7 @@ module.exports = {
     sureDelete: '确定要删除',
     allBad: '及其中的所有床位吗?',
     sureDeleteBed: '确定删除床位',
+    deleteBedFirst: '请先删除床位',
     part: '科室',
     room: '房',
     room2: '房间',
@@ -905,6 +906,8 @@ module.exports = {
     linuxDoorGainSize: '数字门口机音量增益',
     autoAccept: '分机开启自动接听',
     openAutoAccept: '开启自动接听',
+    unmannedCall: '分机开启无人呼叫',
+    openUnmannedCall: '开启无人呼叫',
     eventForward: '事件转发功能',
     openEventForward: '开启事件转发',
     communicationModeBed: '分机通讯方式',
@@ -1049,7 +1052,7 @@ module.exports = {
     functionRoleMapping: '组件权限配置',
     countdownConfig: '倒计时组件配置',
     screentip: '屏幕提示语组件配置',
-    bedsideInteration: '床旁交互组件',
+    bedsideInteraction: '床旁交互组件',
     allClerk: '所有员工',
     allCustomer: '所有用户',
     allDevice: '所有设备',
@@ -1075,7 +1078,8 @@ module.exports = {
     checkNetwork: '检查设备网络',
     changeBattery: '更换设备电池',
     interactionPush: '交互记录推送配置',
-    interactionPushParamConfig: '推送参数配置'
+    interactionPushParamConfig: '推送参数配置',
+    CustomerDistribution: '用户分布'
   },
   deviceType: {
     NURSE_HOST: '护士主机',
@@ -1309,7 +1313,8 @@ module.exports = {
     LICENSE_ERROR: '授权序列号错误,请联系售后',
     LICENSE_EXPIRE: '授权到期,请联系售后',
     LICENSE_FAILED: '无效授权,请联系售后',
-    FILE_UPLOAD_FAILED: '未配置文件存放目录!'
+    FILE_UPLOAD_FAILED: '未配置文件存放目录!',
+    FILE_FAILED: '文件错误'
   },
   entraceguardUser: {
     named: '用户姓名',

+ 3 - 3
public/domain.js

@@ -1,7 +1,7 @@
 const domain = {
-  serverUrl: 'http://8.129.220.143:8005',
-  DeviceUrl: 'http://8.129.220.143:8006',
-  mediaUrl: 'http://8.129.220.143:8004',
+  serverUrl: 'http://172.28.100.100:8005',
+  DeviceUrl: 'http://172.28.100.100:8006',
+  mediaUrl: 'http://172.28.100.100:8004',
   OnlineSystemUrl: 'http://api.base.wdklian.com',
   apiMode: 'dev',
   uiVersion: 1, // 1 医院版,2 月子中心版,3养老院版

+ 1 - 1
set-envs.sh

@@ -13,4 +13,4 @@ echo "const domain = {
   enableSosDevice: ${enableSosDevice}, //报警设备
   enable485:${enable485},
   enableLinux:${enableLinux}
-}"  > /app/domain.js
+}"  > /app/domain.js

+ 1 - 1
src/api/calling-broadcast.js

@@ -1,5 +1,5 @@
 import request from '@/utils/request'
-import { mediaRequest } from '../utils/request'
+import { mediaRequest } from '@/utils/request'
 
 /**
  * 广播设置相关接口

+ 36 - 39
src/api/ncs_board_item.js

@@ -6,64 +6,61 @@ import request from '@/utils/request'
  * @returns {*|Promise|Promise<unknown>}
  */
 export function getList(params) {
-    return request({
-        url: '/ncs/boarditem/page',
-        method: 'POST',
-        loading: true,
-        data: params,
-        headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
-    })
+  return request({
+    url: '/ncs/boarditem/page',
+    method: 'POST',
+    loading: true,
+    data: params,
+    headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
+  })
 }
 
 /** 新增自定义看板项 */
 export function add(params) {
-    return request({
-        url: '/ncs/boarditem',
-        method: 'POST',
-        loading: true,
-        data: params
-    })
+  return request({
+    url: '/ncs/boarditem',
+    method: 'POST',
+    loading: true,
+    data: params
+  })
 }
 
 /** 删除自定义看板项 */
 export function remove(params) {
-    const ids = params.toString()
-    return request({
-        url: `/ncs/boarditem/${ids}`,
-        method: 'DELETE',
-        loading: true,
-        data: params
-    })
+  const ids = params.toString()
+  return request({
+    url: `/ncs/boarditem/${ids}`,
+    method: 'DELETE',
+    loading: true,
+    data: params
+  })
 }
 
 /** 更新自定义看板项 */
 export function update(id, params) {
-    return request({
-        url: `/ncs/boarditem/${id}`,
-        method: 'put',
-        data: params
-    })
+  return request({
+    url: `/ncs/boarditem/${id}`,
+    method: 'put',
+    data: params
+  })
 }
 
 /** 查询自定义看板项 */
 export function get(id, params) {
-    return request({
-        url: `/ncs/boarditem/${id}`,
-        method: 'get',
-        loading: false,
-        params
-    })
+  return request({
+    url: `/ncs/boarditem/${id}`,
+    method: 'get',
+    loading: false,
+    params
+  })
 }
 
-
 /** 获取某科室下的所有看板项 */
 export function getPartList(part_id) {
-    return request({
-        url: `/ncs/boarditem/partboarditem/${part_id}`,
-        method: 'get',
-        loading: false
-    })
+  return request({
+    url: `/ncs/boarditem/partboarditem/${part_id}`,
+    method: 'get',
+    loading: false
+  })
 }
 
-
-

+ 42 - 45
src/api/ncs_board_title.js

@@ -6,73 +6,70 @@ import request from '@/utils/request'
  * @returns {*|Promise|Promise<unknown>}
  */
 export function getList(params) {
-    return request({
-        url: '/ncs/boardtitle/page',
-        method: 'POST',
-        loading: true,
-        data: params,
-        headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
-    })
+  return request({
+    url: '/ncs/boardtitle/page',
+    method: 'POST',
+    loading: true,
+    data: params,
+    headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
+  })
 }
 
 /** 新增自定义看板屏幕 */
 export function add(params) {
-    return request({
-        url: '/ncs/boardtitle',
-        method: 'POST',
-        loading: true,
-        data: params
-    })
+  return request({
+    url: '/ncs/boardtitle',
+    method: 'POST',
+    loading: true,
+    data: params
+  })
 }
 
 /** 删除自定义看板屏幕 */
 export function remove(params) {
-    const ids = params.toString()
-    return request({
-        url: `/ncs/boardtitle/${ids}`,
-        method: 'DELETE',
-        loading: true,
-        data: params
-    })
+  const ids = params.toString()
+  return request({
+    url: `/ncs/boardtitle/${ids}`,
+    method: 'DELETE',
+    loading: true,
+    data: params
+  })
 }
 
 /** 更新自定义看板屏幕 */
 export function update(id, params) {
-    return request({
-        url: `/ncs/boardtitle/${id}`,
-        method: 'put',
-        data: params
-    })
+  return request({
+    url: `/ncs/boardtitle/${id}`,
+    method: 'put',
+    data: params
+  })
 }
 
 /** 查询自定义看板屏幕 */
 export function get(id, params) {
-    return request({
-        url: `/ncs/boardtitle/${id}`,
-        method: 'get',
-        loading: false,
-        params
-    })
+  return request({
+    url: `/ncs/boardtitle/${id}`,
+    method: 'get',
+    loading: false,
+    params
+  })
 }
 
-
 /** 保存为默认设计 */
 export function saveAsDefault(id, params) {
-    return request({
-        url: `/ncs/boardtitle/saveasdefault/${id}`,
-        method: 'put',
-        data: params
-    })
+  return request({
+    url: `/ncs/boardtitle/saveasdefault/${id}`,
+    method: 'put',
+    data: params
+  })
 }
 
-
-
 /** 加载默认设计 */
 export function getDefault(id, params) {
-    return request({
-        url: `/ncs/boardtitle/defaultdesign/${id}`,
-        method: 'get',
-        loading: false,
-        params
-    })
+  return request({
+    url: `/ncs/boardtitle/defaultdesign/${id}`,
+    method: 'get',
+    loading: false,
+    params
+  })
 }

+ 10 - 11
src/api/ncs_countdown_config.js

@@ -1,18 +1,17 @@
 import request from '@/utils/request'
 
-
 export function update(id, params) {
-    return request({
-        url: `/ncs/countdown/${id}`,
-        method: 'put',
-        data: params,
-        headers: { 'Content-Type': 'application/json' }
-    })
+  return request({
+    url: `/ncs/countdown/${id}`,
+    method: 'put',
+    data: params,
+    headers: { 'Content-Type': 'application/json' }
+  })
 }
 
 export function getConfigByPartId(partId) {
-    return request({
-        url: `/ncs/countdown/${partId}`,
-        method: 'GET'
-    })
+  return request({
+    url: `/ncs/countdown/${partId}`,
+    method: 'GET'
+  })
 }

+ 17 - 17
src/api/ncs_entrace_guard_user.js

@@ -1,28 +1,28 @@
 import request from '@/utils/request'
 export function getList(params) {
-    return request({
-        url: '/ncs/entrace_guard_user/page',
-        method: 'POST',
-        loading: true,
-        data: params,
-        headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
-    })
+  return request({
+    url: '/ncs/entrace_guard_user/page',
+    method: 'POST',
+    loading: true,
+    data: params,
+    headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
+  })
 }
 
 /** 更新用户设置 */
 export function update(id, params) {
-    return request({
-        url: `/ncs/entrace_guard_user/${id}`,
-        method: 'put',
-        loading: false,
-        data: params
-    })
+  return request({
+    url: `/ncs/entrace_guard_user/${id}`,
+    method: 'put',
+    loading: false,
+    data: params
+  })
 }
 
 /** 更新用户记录 */
 export function refreshUser(part_id) {
-    return request({
-        url: `/ncs/entrace_guard_user/refresh/${part_id}`,
-        method: 'post'
-    })
+  return request({
+    url: `/ncs/entrace_guard_user/refresh/${part_id}`,
+    method: 'post'
+  })
 }

+ 0 - 51
src/api/ncs_frameGroup.js

@@ -63,54 +63,3 @@ export function getAll(partId) {
   })
 }
 
-/** 查询某科室下的房间结构 */
-export function getframestruct(part_id, frame_type) {
-  return request({
-    url: `/ncs/frame/getframestruct/${part_id}/${frame_type}`,
-    method: 'get',
-    loading: false
-  })
-}
-
-/** 查询某科室下的房间结构 */
-export function getAllFrameTreeByType(frame_type) {
-  return request({
-    url: `/ncs/frame/getAllFrameTreeByType/${frame_type}`,
-    method: 'get',
-    loading: false
-  })
-}
-
-
-/** 查询空间结构的管理人员信息 */
-export function getFrameManagedClerk(frameId) {
-  return request({
-    url: `/ncs/frame/getframemanagedclerk/${frameId}`,
-    method: 'get',
-    loading: false
-  })
-}
-
-
-/** 保存空间结构的管理人员信息 */
-export function saveFrameManagedClerk(params) {
-  return request({
-    url: `/ncs/frame/saveframemanagedclerk`,
-    method: 'POST',
-    loading: true,
-    headers: { 'Content-Type': 'application/json' },
-    data:params
-  })
-}
-
-/** 查询某科室下多人共管的房间结构 */
-export function getframemultimanagedstruct(part_id, frame_type) {
-  return request({
-    url: `/ncs/frame/getframemultimanagedstruct/${part_id}/${frame_type}`,
-    method: 'get',
-    loading: false
-  })
-}
-
-
-

+ 4 - 4
src/api/ncs_functions.js

@@ -1,7 +1,7 @@
 import request from '@/utils/request'
 export function getAll() {
-    return request({
-        url: '/ncs/functions/getall',
-        method: 'get'
-    })
+  return request({
+    url: '/ncs/functions/getall',
+    method: 'get'
+  })
 }

+ 29 - 29
src/api/ncs_functions_role_mapping.js

@@ -1,41 +1,41 @@
 import request from '@/utils/request'
 export function getList(params) {
-    return request({
-        url: '/ncs/functionrolemapping/page',
-        method: 'POST',
-        data: params,
-        headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
-    })
+  return request({
+    url: '/ncs/functionrolemapping/page',
+    method: 'POST',
+    data: params,
+    headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
+  })
 }
-export function getFunctionsRoleMappingByCodeAndPartId(function_code,part_id) {
-    return request({
-        url: `/ncs/functionrolemapping/${function_code}/${part_id}`,
-        method: 'GET'
-    })
+export function getFunctionsRoleMappingByCodeAndPartId(function_code, part_id) {
+  return request({
+    url: `/ncs/functionrolemapping/${function_code}/${part_id}`,
+    method: 'GET'
+  })
 }
 export function remove(id) {
-    return request({
-        url: `/ncs/functionrolemapping/${id}`,
-        method: 'DELETE',
-        loading: true
-    })
+  return request({
+    url: `/ncs/functionrolemapping/${id}`,
+    method: 'DELETE',
+    loading: true
+  })
 }
 /** 修改 */
 export function update(id, params) {
-    return request({
-        url: `/ncs/functionrolemapping/${id}`,
-        method: 'put',
-        data: params,
-        headers: { 'Content-Type': 'application/json' }
-    })
+  return request({
+    url: `/ncs/functionrolemapping/${id}`,
+    method: 'put',
+    data: params,
+    headers: { 'Content-Type': 'application/json' }
+  })
 }
 /** 新增 */
 export function add(params) {
-    return request({
-        url: '/ncs/functionrolemapping',
-        method: 'POST',
-        loading: true,
-        data: params,
-        headers: { 'Content-Type': 'application/json' }
-    })
+  return request({
+    url: '/ncs/functionrolemapping',
+    method: 'POST',
+    loading: true,
+    data: params,
+    headers: { 'Content-Type': 'application/json' }
+  })
 }

+ 48 - 1
src/api/ncs_hospitalFrame.js

@@ -174,4 +174,51 @@ export function getFrameAndDevice(id) {
     method: 'GET',
     loading: false
   })
-}
+}
+
+/** 查询某科室下的房间结构 */
+export function getframestruct(part_id, frame_type) {
+  return request({
+    url: `/ncs/frame/getframestruct/${part_id}/${frame_type}`,
+    method: 'get',
+    loading: false
+  })
+}
+
+/** 查询某科室下的房间结构 */
+export function getAllFrameTreeByType(frame_type) {
+  return request({
+    url: `/ncs/frame/getAllFrameTreeByType/${frame_type}`,
+    method: 'get',
+    loading: false
+  })
+}
+
+/** 查询空间结构的管理人员信息 */
+export function getFrameManagedClerk(frameId) {
+  return request({
+    url: `/ncs/frame/getframemanagedclerk/${frameId}`,
+    method: 'get',
+    loading: false
+  })
+}
+
+/** 保存空间结构的管理人员信息 */
+export function saveFrameManagedClerk(params) {
+  return request({
+    url: `/ncs/frame/saveframemanagedclerk`,
+    method: 'POST',
+    loading: true,
+    headers: { 'Content-Type': 'application/json' },
+    data: params
+  })
+}
+
+/** 查询某科室下多人共管的房间结构 */
+export function getframemultimanagedstruct(part_id, frame_type) {
+  return request({
+    url: `/ncs/frame/getframemultimanagedstruct/${part_id}/${frame_type}`,
+    method: 'get',
+    loading: false
+  })
+}

+ 23 - 23
src/api/ncs_interaction-chain.js

@@ -1,35 +1,35 @@
 import request from '@/utils/request'
 export function getList(params) {
-    return request({
-        url: '/ncs/spreadchain/page',
-        method: 'POST',
-        data: params,
-        headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
-    })
+  return request({
+    url: '/ncs/spreadchain/page',
+    method: 'POST',
+    data: params,
+    headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
+  })
 }
 
 export function remove(id) {
-    return request({
-        url: `/ncs/spreadchain/${id}`,
-        method: 'DELETE',
-        loading: true
-    })
+  return request({
+    url: `/ncs/spreadchain/${id}`,
+    method: 'DELETE',
+    loading: true
+  })
 }
 /** 修改 */
 export function update(id, params) {
-    return request({
-        url: `/ncs/spreadchain/${id}`,
-        method: 'put',
-        data: params
-    })
+  return request({
+    url: `/ncs/spreadchain/${id}`,
+    method: 'put',
+    data: params
+  })
 }
 /** 新增 */
 export function add(params) {
-    return request({
-        url: '/ncs/spreadchain',
-        method: 'POST',
-        loading: true,
-        data: params,
-        headers: { 'Content-Type': 'application/json' }
-    })
+  return request({
+    url: '/ncs/spreadchain',
+    method: 'POST',
+    loading: true,
+    data: params,
+    headers: { 'Content-Type': 'application/json' }
+  })
 }

+ 17 - 18
src/api/ncs_nbdevicecondition.js

@@ -1,26 +1,25 @@
-import request from "@/utils/request";
+import request from '@/utils/request'
 
-
-export function getList(params,partId,viewtype) {
-    return request({
-        url: viewtype===0?`/mgr/nbdevcie/getoffline/${partId}/page`:`/mgr/nbdevcie/getlowbattery/${partId}/page`,
-        method: 'POST',
-        loading: true,
-        data: params,
-        headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
-    })
+export function getList(params, partId, viewtype) {
+  return request({
+    url: viewtype === 0 ? `/mgr/nbdevcie/getoffline/${partId}/page` : `/mgr/nbdevcie/getlowbattery/${partId}/page`,
+    method: 'POST',
+    loading: true,
+    data: params,
+    headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
+  })
 }
 
 export function getLowBatteryDevices(partid) {
-    return request({
-        url: `/mgr/nbdevcie/getlowbattery/${partid}`,
-        method: 'get'
-    })
+  return request({
+    url: `/mgr/nbdevcie/getlowbattery/${partid}`,
+    method: 'get'
+  })
 }
 
 export function getOfflineDevices(partid) {
-    return request({
-        url: `/mgr/nbdevcie/getoffline/${partid}`,
-        method: 'get'
-    })
+  return request({
+    url: `/mgr/nbdevcie/getoffline/${partid}`,
+    method: 'get'
+  })
 }

+ 31 - 31
src/api/ncs_screentip.js

@@ -6,51 +6,51 @@ import request from '@/utils/request'
  * @returns {*|Promise|Promise<unknown>}
  */
 export function getList(params) {
-    return request({
-        url: '/ncs/screentip/page',
-        method: 'POST',
-        loading: true,
-        data: params,
-        headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
-    })
+  return request({
+    url: '/ncs/screentip/page',
+    method: 'POST',
+    loading: true,
+    data: params,
+    headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
+  })
 }
 
 /** 新增屏幕提示语设置 */
 export function add(params) {
-    return request({
-        url: '/ncs/screentip',
-        method: 'POST',
-        loading: true,
-        data: params
-    })
+  return request({
+    url: '/ncs/screentip',
+    method: 'POST',
+    loading: true,
+    data: params
+  })
 }
 
 /** 删除屏幕提示语设置 */
 export function remove(params) {
-    const ids = params.toString()
-    return request({
-        url: `/ncs/screentip/${ids}`,
-        method: 'DELETE',
-        loading: true,
-        data: params
-    })
+  const ids = params.toString()
+  return request({
+    url: `/ncs/screentip/${ids}`,
+    method: 'DELETE',
+    loading: true,
+    data: params
+  })
 }
 
 /** 更新屏幕提示语设置 */
 export function update(id, params) {
-    return request({
-        url: `/ncs/screentip/${id}`,
-        method: 'put',
-        data: params
-    })
+  return request({
+    url: `/ncs/screentip/${id}`,
+    method: 'put',
+    data: params
+  })
 }
 
 /** 查询屏幕提示语设置 */
 export function get(id, params) {
-    return request({
-        url: `/ncs/screentip/${id}`,
-        method: 'get',
-        loading: false,
-        params
-    })
+  return request({
+    url: `/ncs/screentip/${id}`,
+    method: 'get',
+    loading: false,
+    params
+  })
 }

+ 124 - 0
src/color/colorChange.js

@@ -0,0 +1,124 @@
+/**
+ * 获取一系列 主题色
+ * 入参:67c23a
+ * 结果:['67c23a', '103,194,58', '#76c84e', '#85ce61', '#95d475', '#a4da89', '#b3e19d', '#c2e7b0', '#d1edc4', '#e1f3d8', '#f0f9eb', '#5daf34']
+ */
+function getThemeCluster(theme, type = '') {
+  const tintColor = (color, tint) => {
+    let red = parseInt(color.slice(0, 2), 16)
+    let green = parseInt(color.slice(2, 4), 16)
+    let blue = parseInt(color.slice(4, 6), 16)
+
+    if (tint === 0) {
+      // when primary color is in its rgb space
+      return [red, green, blue].join(',')
+    } else {
+      red += Math.round(tint * (255 - red))
+      green += Math.round(tint * (255 - green))
+      blue += Math.round(tint * (255 - blue))
+
+      red = red.toString(16)
+      green = green.toString(16)
+      blue = blue.toString(16)
+
+      return `#${red}${green}${blue}`
+    }
+  }
+
+  const shadeColor = (color, shade) => {
+    let red = parseInt(color.slice(0, 2), 16)
+    let green = parseInt(color.slice(2, 4), 16)
+    let blue = parseInt(color.slice(4, 6), 16)
+
+    red = Math.round((1 - shade) * red)
+    green = Math.round((1 - shade) * green)
+    blue = Math.round((1 - shade) * blue)
+
+    red = red.toString(16)
+    green = green.toString(16)
+    blue = blue.toString(16)
+
+    return `#${red}${green}${blue}`
+  }
+
+  const clusters = [theme]
+  for (let i = 0; i <= 9; i++) {
+    clusters.push(tintColor(theme, Number((i / 10).toFixed(2))))
+  }
+  clusters.push(shadeColor(theme, 0.1))
+  // 这行代码是我自己后面的其他优化所需,可删
+  if (type && type === 'new' && clusters.length) {
+    clusters.forEach((theme, index) => {
+      if (index > 1) {
+        document.body.style.setProperty(`--theme-weaken-color-${index}`, clusters[index]) // 逐渐淡化颜色
+      }
+    })
+    console.log('主题色系-------------------', clusters)
+  }
+  return clusters
+}
+
+/**
+ * @param style 老的css样式代码
+ * @param oldCluster 老的一些列主题色  待替换
+ * @param newCluster 新的一系列主题色  替换成
+ *
+ * @returns newStyle 新的 css样式代码 替换后的
+ */
+function updateStyle(style, oldCluster, newCluster) {
+  let newStyle = style
+  oldCluster.forEach((color, index) => {
+    // 将老颜色替换成新颜色
+    newStyle = newStyle.replace(new RegExp(color, 'ig'), newCluster[index].trim()) // 全局替换 不区分大小写 去掉多余空格
+  })
+  return newStyle
+}
+
+/**
+ * main
+ */
+import ElementUiCSS from './elementUiCSS.js' // 就是上文说的默认样式 index.css; (字符串)
+export const updateThemeColor = function(val) {
+  if (typeof val !== 'string' || val.length === 0) return
+  const ORIGINAL_THEME = '#409EFF' // default color (element ui的默认主题色,所有我们根据这个去改)
+  const ThemeCode = ElementUiCSS
+    .replace(/@font-face{[^}]+}/g, '') // 去掉字体样式
+    .replace(/.el-icon-[a-zA-Z0-9-:^]+before{content:"[^}]+}/g, '') // 去掉图标样式
+    // require('element-ui/lib/theme-chalk/index.css')
+
+  console.log('updateThemeColor ------------------------ in')
+  console.log('ORIGINAL_THEME', ORIGINAL_THEME)
+  // try {
+  //   console.log('ThemeCode', ThemeCode)
+  //   console.log('ThemeCode', String(ThemeCode))
+  //   console.log('ThemeCode', ThemeCode.innerText)
+  // } catch (error) {
+  //   console.log(error)
+  // }
+  // 得到一系列 主题色颜色 (我们需要的颜色 '产出')
+  const themeCluster = getThemeCluster(val.replace('#', ''), 'new')
+  /**
+     * 入参:'chalk'(旧css代码), 'chalk-style'(style的id)
+     * 直接 将老的 css 代码里 待改的旧颜色改成 新颜色 然后将新的样式 插入到head标签里
+     */
+  const getHandler = id => {
+    return () => {
+      // 得到一系列 主题色颜色 (原始的一些列颜色  待改)
+      const originalCluster = getThemeCluster(ORIGINAL_THEME.replace('#', ''))
+      const newStyle = updateStyle(ThemeCode, originalCluster, themeCluster)
+      // console.log('newStyle', newStyle)
+
+      let styleTag = document.getElementById(id)
+      if (!styleTag) {
+        styleTag = document.createElement('style')
+        styleTag.setAttribute('id', id)
+        document.head.appendChild(styleTag)
+      }
+      styleTag.innerText = newStyle
+    }
+  }
+  const chalkHandler = getHandler('chalk-style')
+  chalkHandler()
+
+  console.log('updateThemeColor ------------------------ end')
+}

文件差异内容过多而无法显示
+ 3 - 0
src/color/elementUiCSS.js


+ 196 - 164
src/router/index.js

@@ -76,113 +76,118 @@ export const constantRoutes = [
 ]
 // 科室级页面
 export const partRoutes = [
-  //空间设备相关
+  // 空间设备相关
   {
     path: '/frame',
     component: Layout,
     redirect: '/frame/tree',
-    name: 'part-frame-tree',
+    name: 'frame-tree',
     meta: { title: i18n.t('tab.frameManage'), icon: 'tree', noCache: true },
     children: [{
-        path: 'tree',
-        component: () => import('@/views/hospitalFrame/frameTreeView'),
-        name: 'part-frame-tree',
-        meta: { title: i18n.t('tab.frameManage'), icon: 'tree', noCache: true } // 空间位置
-      },{
-        path: 'clerk_frame_manage',
-        component: () => import('@/views/ncs-clerk-frame-manage/index'),
-        name: 'clerk-frame-manage',
-        meta: { title: i18n.t('tab.staffManageFrames'), icon: 'frame_manage', noCache: true }
-      },{
-        path: 'device',
-        name: 'part-device',
-        component: () => import('@/views/ncs-device/index'),
-        redirect: '/frame/device/list',
-        meta: {
-          title: i18n.t('deviceManage.deviceManage'),
-          icon: 'devices'
-        },
-        children: [
-          {
-            path: 'list',
-            component: () => import('@/views/ncs-device/deviceManagement'),
-            name: 'device-list',
-            meta: { title: i18n.t('tab.deviceManage'), icon: 'component', noCache: true } // 所有设备
-          },
-          {
-            path: 'mobile',
-            component: () => import('@/views/ncs-device/nurse_watch'),
-            name: 'device-mobile',
-            hidden: !enableMobile,
-            meta: { title: i18n.t('tab.mobileDeviceManage'), icon: 'el-icon-watch', noCache: true } // 移动设备
-          },
-          {
-            path: 'user_watch',
-            component: () => import('@/views/ncs-device/user_watch'),
-            name: 'user-watch',
-            hidden: !enableCustomerDevice,
-            meta: { title: i18n.t('tab.userLocationManage'), icon: 'el-icon-watch-1', noCache: true } // 用户设备
-          },
-          {
-            path: 'sos',
-            component: () => import('@/views/ncs-sos-device-setting/sos_device_setting'),
-            name: 'sos-device',
-            hidden: !enableSosDevice,
-            meta: { title: i18n.t('tab.sosDeviceSettingManage'), icon: 'el-icon-s-help', noCache: true } // 报警设备
-          },
-          {
-            path: 'map',
-            component: () => import('@/views/customer/myMapHtml'),
-            name: 'device-map',
-            meta: { title: i18n.t('customerManage.footprint'), icon: 'area', noCache: true }, // 足迹
-            hidden: true
-          },
-          {
-            path: 'nbdevice_condition',
-            component: () => import('@/views/ncs-device/nbDeviceCondition'),
-            name: 'nbdevice-condition',
-            meta: { title: i18n.t('tab.nbiotDeviceStatus'), icon: 'iot', noCache: true },
-            hidden: !enableNBiot
-          },
-          {
-            path: 'information_board',
-            component: () => import('@/views/calling-board/index'),
-            name: 'information-board',
-            meta: { title: i18n.t('tab.boardManage'), icon: 'infomation_board', noCache: true },
-            hidden: uiVersion === 2
-          },
-          {
-            path: 'custom_infoboard',
-            component: () => import('@/views/custom-infoboard/board-title'),
-            name: 'board-title',
-            meta: { title: i18n.t('tab.customBoardManage'), icon: 'designer', noCache: true },
-            hidden: uiVersion === 2
-          },
-          {
-            path: 'device_menu',
-            component: () => import('@/views/ncs-device-menu/index'),
-            name: 'device-menu',
-            meta: { title: i18n.t('tab.deviceMenuManager'), icon: 'el-icon-menu', noCache: true }
-          },
-          {
-            path: 'led',
-            component: () => import('@/views/ncs-led/ledDeviceManagement'),
-            name: 'led-manager',
-            meta: { title: i18n.t('tab.ledDeviceManager'), icon: 'led', noCache: true },
-            hidden: uiVersion === 2
-          },
-          {
-            path: 'led-control',
-            component: () => import('@/views/ncs-led/ledControl'),
-            name: 'led-control',
-            meta: { title: i18n.t('tab.ledDevice'), icon: 'el-icon-message-solid', noCache: true }, // LED点阵屏
-            hidden: true
-          }
-        ]
+      path: 'tree',
+      component: () => import('@/views/hospitalFrame/frameTreeView'),
+      name: 'part-frame-tree',
+      meta: { title: i18n.t('tab.frameManage'), icon: 'tree', noCache: true } // 空间位置
+    }, {
+      path: 'clerk_frame_manage',
+      component: () => import('@/views/ncs-clerk-frame-manage/index'),
+      name: 'clerk-frame-manage',
+      meta: { title: i18n.t('tab.staffManageFrames'), icon: 'frame_manage', noCache: true }
+    }
+    ]
+  },
+  {
+    path: '/device',
+    name: 'part-device',
+    component: Layout,
+    redirect: '/device/list',
+    meta: { title: i18n.t('deviceManage.deviceManage'), icon: 'devices' },
+    children: [
+      {
+        path: 'list',
+        component: () => import('@/views/ncs-device/deviceManagement'),
+        name: 'device-list',
+        meta: { title: i18n.t('tab.deviceManage'), icon: 'component', noCache: true } // 所有设备
+      },
+      {
+        path: 'mobile',
+        component: () => import('@/views/ncs-device/nurse_watch'),
+        name: 'device-mobile',
+        hidden: !enableMobile,
+        meta: { title: i18n.t('tab.mobileDeviceManage'), icon: 'el-icon-watch', noCache: true } // 移动设备
+      },
+      {
+        path: 'user_watch',
+        component: () => import('@/views/ncs-device/user_watch'),
+        name: 'user-watch',
+        hidden: !enableCustomerDevice,
+        meta: { title: i18n.t('tab.userLocationManage'), icon: 'el-icon-watch-1', noCache: true } // 用户设备
+      },
+      {
+        path: 'sos',
+        component: () => import('@/views/ncs-sos-device-setting/sos_device_setting'),
+        name: 'sos-device',
+        hidden: !enableSosDevice,
+        meta: { title: i18n.t('tab.sosDeviceSettingManage'), icon: 'el-icon-s-help', noCache: true } // 报警设备
+      },
+      {
+        path: 'map',
+        component: () => import('@/views/customer/myMapHtml'),
+        name: 'device-map',
+        meta: { title: i18n.t('customerManage.footprint'), icon: 'area', noCache: true }, // 足迹
+        hidden: true
+      },
+      {
+        path: 'nbdevice_condition',
+        component: () => import('@/views/ncs-device/nbDeviceCondition'),
+        name: 'nbdevice-condition',
+        meta: { title: i18n.t('tab.nbiotDeviceStatus'), icon: 'iot', noCache: true },
+        hidden: !enableNBiot
+      },
+      {
+        path: 'information_board',
+        component: () => import('@/views/calling-board/index'),
+        name: 'information-board',
+        meta: { title: i18n.t('tab.boardManage'), icon: 'infomation_board', noCache: true },
+        hidden: uiVersion === 2
+      },
+      {
+        path: 'custom_infoboard',
+        component: () => import('@/views/custom-infoboard/board-title'),
+        name: 'board-title',
+        meta: { title: i18n.t('tab.customBoardManage'), icon: 'designer', noCache: true },
+        hidden: uiVersion === 2
+      },
+      {
+        path: 'index/:id?',
+        component: () => import('@/views/custom-infoboard/infoboard-designer'), // 自定义看板 component: () => import('@/views/custom-infoboard/infoboard-designer'),资阳 component: () => import('@/views/custom-infoboard/screen-designer')
+        name: 'infoboard-designer-manager',
+        meta: { title: i18n.t('tab.customBoardDesigner'), icon: 'el-icon-data-board', noCache: true },
+        hidden: true
+      },
+      {
+        path: 'device_menu',
+        component: () => import('@/views/ncs-device-menu/index'),
+        name: 'device-menu',
+        meta: { title: i18n.t('tab.deviceMenuManager'), icon: 'el-icon-menu', noCache: true }
+      },
+      // {
+      //   path: 'led',
+      //   component: () => import('@/views/ncs-led/ledDeviceManagement'),
+      //   name: 'led-manager',
+      //   meta: { title: i18n.t('tab.ledDeviceManager'), icon: 'led', noCache: true },
+      //   hidden: uiVersion === 2
+      // },
+      {
+        path: 'led-control',
+        component: () => import('@/views/ncs-led/ledControl'),
+        name: 'led-control',
+        meta: { title: i18n.t('tab.ledDevice'), icon: 'el-icon-message-solid', noCache: true }, // LED点阵屏
+        hidden: true
       }
     ]
   },
-  //职员相关
+  // 职员相关
   {
     path: '/clerk',
     component: Layout,
@@ -204,32 +209,33 @@ export const partRoutes = [
       }
     ]
   },
-  //门禁
+  // 门禁
   {
     path: '/entrace_guard',
     component: Layout,
     name: 'entrace-guard',
+    redirect: '/entrace_guard/users',
     hidden: !enableEntraceguard,
     children: [
       {
         path: 'users',
         component: () => import('@/views/entrace-guard/users'),
-        name: 'entrace-guard',
+        name: 'entrace-guard-list',
         meta: { title: i18n.t('tab.entraceguardUser'), icon: 'pass_through', noCache: true },
         hidden: !enableEntraceguard
       }]
   },
-  //客户信息
+  // 客户信息
   {
     path: '/customer',
     component: Layout,
     redirect: '/customer/list',
-    name: 'customer',
+    name: 'customer-manager',
     children: [
       {
         path: 'list',
         component: () => uiVersion === 1 ? import('@/views/customer/patientManagement') : uiVersion === 2 ? import('@/views/customer/customerManagement') : import('@/views/customer/elderlyCareManagement'),
-        name: 'customer-manager',
+        name: 'customer-list',
         meta: {
           title: uiVersion === 1 ? i18n.t('tab.patientManage') : i18n.t('tab.customerManage'),
           icon: 'el-icon-s-custom',
@@ -240,7 +246,7 @@ export const partRoutes = [
         path: 'map',
         component: () => import('@/views/customer/allMap'),
         name: 'map',
-        meta: { title: '用户分布', icon: 'area', noCache: true },
+        meta: { title: i18n.t('tab.CustomerDistribution'), icon: 'area', noCache: true },
         hidden: true
       },
       {
@@ -252,11 +258,12 @@ export const partRoutes = [
       }
     ]
   },
-  //便签
+  // 便签
   {
     path: '/remark',
     component: Layout,
-    name: 'remark-list',
+    name: 'remark',
+    redirect: '/remark/list',
     children: [
       {
         path: 'list',
@@ -266,11 +273,12 @@ export const partRoutes = [
       }
     ]
   },
-  //任务
+  // 任务
   {
     path: '/task',
     component: Layout,
-    name: 'task-list',
+    name: 'task',
+    redirect: '/task/list',
     children: [
       {
         path: 'list',
@@ -280,7 +288,7 @@ export const partRoutes = [
       }
     ]
   },
-  //交互信息
+  // 交互信息
   {
     path: '/interaction',
     component: Layout,
@@ -293,7 +301,7 @@ export const partRoutes = [
         component: () => import('@/views/ncs-interaction/index'),
         name: 'interaction-history',
         meta: { title: i18n.t('tab.interactionHistory'), icon: 'list', noCache: true }
-      },{
+      }, {
         path: 'chars',
         component: () => import('@/views/ncs-chars/index'),
         name: 'interaction-chars',
@@ -301,17 +309,18 @@ export const partRoutes = [
       }
     ]
   },
-  //广播
+  // 广播
   {
     path: '/broadcast',
     component: Layout,
     name: 'broadcast',
+    redirect: '/broadcast/index',
     hidden: !enableBroadcast || uiVersion !== 1,
     children: [
       {
         path: 'index',
         component: () => import('@/views/ncs-broadcast/index'),
-        name: 'broadcast',
+        name: 'broadcast-list',
         meta: { title: i18n.t('tab.broadcastManage'), icon: 'el-icon-headset', noCache: true }, // 广播设置
         hidden: !enableBroadcast || uiVersion !== 1
       },
@@ -323,24 +332,26 @@ export const partRoutes = [
         hidden: true
       }
     ]
-  },{
-    path: '/infoboard_designer',
-    component: Layout,
-    name: 'infoboard-designer',
-    children: [
-      {
-        path: 'index/:id?',
-        component: () => import('@/views/custom-infoboard/infoboard-designer'), // 自定义看板 component: () => import('@/views/custom-infoboard/infoboard-designer'),资阳 component: () => import('@/views/custom-infoboard/screen-designer')
-        name: 'infoboard-designer',
-        meta: { title: i18n.t('tab.customBoardDesigner'), icon: 'el-icon-data-board', noCache: true }
-      }
-    ],
-    hidden: true
-  },{
+  },
+  // {
+  //   path: '/infoboard_designer',
+  //   component: Layout,
+  //   name: 'infoboard-designer',
+  //   children: [
+  //     {
+  //       path: 'index/:id?',
+  //       component: () => import('@/views/custom-infoboard/infoboard-designer'), // 自定义看板 component: () => import('@/views/custom-infoboard/infoboard-designer'),资阳 component: () => import('@/views/custom-infoboard/screen-designer')
+  //       name: 'infoboard-designer-manager',
+  //       meta: { title: i18n.t('tab.customBoardDesigner'), icon: 'el-icon-data-board', noCache: true }
+  //     }
+  //   ],
+  //   hidden: true
+  // },
+  {
     path: '/settings',
     component: Layout,
     redirect: '/settings/index',
-    name: 'part-settings',
+    name: 'settings',
     meta: {
       title: i18n.t('tab.settings'),
       icon: 'el-icon-s-tools'
@@ -351,18 +362,27 @@ export const partRoutes = [
         component: () => import('@/views/calling-setting/index'),
         name: 'part-settings',
         meta: { title: i18n.t('tab.partSettings'), icon: 'el-icon-s-tools', noCache: true } // 机构设置
-      },{
+      }, {
         path: 'nurse_config',
         component: () => import('@/views/ncs-nurse-config/index'),
         name: 'nurse-config',
         meta: { title: i18n.t('tab.nurseConfig'), icon: 'care1', noCache: true }, // 护理参数
         hidden: uiVersion !== 1
-      },{
+      },
+      {
         path: 'channel',
-        component: () => import('@/views/ncs-channel/index'),
+        component: () => import('@/views/hospitalFrame/index'),
         name: 'channel',
+        redirect: '/settings/channel/index',
         meta: { title: i18n.t('tab.channelManage'), icon: 'el-icon-mobile-phone', noCache: true },
-        children: [{
+        children: [
+          {
+            path: 'index',
+            component: () => import('@/views/ncs-channel/index'),
+            name: 'channel-im',
+            meta: { title: i18n.t('tab.channelManage'), icon: 'el-icon-mobile-phone', noCache: true }
+          },
+          {
             path: 'history/:id?',
             component: () => import('@/views/ncs-channel/channelImHistory'),
             name: 'channel-im-history',
@@ -370,18 +390,18 @@ export const partRoutes = [
             hidden: true
           }
         ]
-      },{
+      }, {
         path: 'event_list',
         component: () => import('@/views/ncs-event/index'),
         name: 'event-list',
         meta: { title: i18n.t('tab.eventManage'), icon: 'el-icon-notebook-2', noCache: true }
-      },{
+      }, {
         path: 'components',
         component: () => import('@/views/hospitalFrame/index'),
         redirect: '/settings/components/function_mapping',
         name: 'beds-side',
         meta: {
-          title: i18n.t('tab.bedsideInteration'),
+          title: i18n.t('tab.bedsideInteraction'),
           icon: 'component'
         },
         children: [
@@ -410,10 +430,11 @@ export const partRoutes = [
             meta: { title: i18n.t('tab.screentip'), icon: 'screen_tip', noCache: true }
           }
         ]
-      },{
+      }, {
         path: '/frame_group',
         component: () => import('@/views/hospitalFrame/index'),
-        name: 'frame-group',
+        name: 'frame-group-manager',
+        redirect: '/frame_group/index',
         children: [
           {
             path: 'index',
@@ -443,70 +464,81 @@ export const partRoutes = [
 ]
 export const hospitalRoutes = [
   {
-    path: '/hospital/ncs_frame',
+    path: '/hospital/frame',
     component: Layout,
-    redirect: '/ncs_frame/index',
+    redirect: '/hospital/frame/index',
+    name: 'hospital-frame',
     children: [
       {
         path: 'index',
-        component: () => import('@/views/hospital/ncs_frame/frameTreeView'),
-        name: 'hospital_frameTreeView',
+        component: () => import('@/views/hospital/frame/frameTreeView'),
+        name: 'hospital-frame-tree',
         meta: { title: i18n.t('tab.frameManage'), icon: 'tree', noCache: true }
       }
     ]
   },
   {
-    path: '/hospital/ncs_device',
+    path: '/hospital/device',
     component: Layout,
-    redirect: '/ncs_device/index',
+    redirect: '/hospital/device/index',
+    name: 'hospital-device-manager',
+    meta: { title: i18n.t('deviceManage.deviceManage'), icon: 'devices' },
     children: [
       {
         path: 'index',
         component: () => import('@/views/hospital/deviceManagement'),
-        name: 'hospital_deviceList',
+        name: 'hospital-device-list',
         meta: { title: i18n.t('tab.deviceManage'), icon: 'component', noCache: true }
+      },
+      {
+        path: 'led_control',
+        component: () => import('@/views/hospital/ledControl'),
+        name: 'hospital-led-control',
+        meta: { title: i18n.t('tab.ledDevice'), icon: 'el-icon-message-solid', noCache: true }
       }
     ]
   },
   {
-    path: '/hospital/ncs_clerk',
+    path: '/hospital/clerk',
     component: Layout,
-    redirect: '/ncs_clerk/index',
+    redirect: '/hospital/clerk/index',
+    name: 'hospital-clerk-manager',
     children: [
       {
         path: 'index',
         component: () => import('@/views/hospital/clerkManager'),
-        name: 'hospital_clerkList',
+        name: 'hospital-clerk-list',
         meta: { title: i18n.t('tab.clerkManage'), icon: 'peoples', noCache: true }
       }
     ]
   },
   {
-    path: '/hospital/ncs_customer',
+    path: '/hospital/customer',
     component: Layout,
-    redirect: '/ncs_customer/index',
+    redirect: '/hospital/customer/index',
+    name: 'hospital-customer-manager',
     children: [
       {
         path: 'index',
         component: () => import('@/views/hospital/customerManagement'),
-        name: 'customer-list',
+        name: 'hospital-customer-list',
         meta: { title: i18n.t('tab.customerManage'), icon: 'el-icon-s-custom', noCache: true }
       }
     ]
   },
-  {
-    path: '/hospital/ncs_led',
-    component: Layout,
-    redirect: '/ncs_led/index',
-    children: [
-      {
-        path: 'index',
-        component: () => import('@/views/hospital/ledControl'),
-        name: 'hospital_led',
-        meta: { title: i18n.t('tab.ledDevice'), icon: 'el-icon-message-solid', noCache: true }
-      }
-    ]
-  },
+  // {
+  //   path: '/hospital/led',
+  //   component: Layout,
+  //   redirect: '/hospital/led/index',
+  //   children: [
+  //     {
+  //       path: 'index',
+  //       component: () => import('@/views/hospital/ledControl'),
+  //       name: 'hospital_led',
+  //       meta: { title: i18n.t('tab.ledDevice'), icon: 'el-icon-message-solid', noCache: true }
+  //     }
+  //   ]
+  // },
   { path: '*', redirect: '/404', hidden: true }
 ]
 export const adminRoutes = [
@@ -657,7 +689,7 @@ export const adminRoutes = [
         meta: { title: i18n.t('tab.systemConfig'), icon: 'nested', noCache: true }
       }
     ]
-  },{
+  }, {
     path: '/menu',
     component: Layout,
     redirect: '/menu/index',
@@ -680,7 +712,7 @@ export const adminRoutes = [
         component: () => import('@/views/ncs-orginazition/index'),
         name: 'admin-organization',
         meta: { title: i18n.t('tab.organization'), icon: 'tree', noCache: true }
-      },{
+      }, {
         path: 'index/:id?',
         component: () => import('@/views/ncs-orginazition/partInfoSetting'),
         name: 'admin-part-settings',

+ 1 - 1
src/store/modules/permission.js

@@ -83,7 +83,7 @@ const actions = {
               commit('SET_ROUTES', lastRoutes)
               resolve(lastRoutes)
             })
-          }          
+          }
         }
       }
     })

文件差异内容过多而无法显示
+ 6 - 6
src/utils/domain.js


+ 0 - 1
src/utils/mixin.js

@@ -70,7 +70,6 @@ export default {
   },
   methods: {
     windowResize() {
-      console.log('clientHeight',document.documentElement.clientHeight)
         this.$set(this, 'mainAreaHeight', Number(document.documentElement.clientHeight) - 84)
     },
 

+ 2 - 2
src/views/calling-board/index.vue

@@ -129,7 +129,7 @@ import ListFilter from '@/components/AgGridCustomFilter/ListFilter'
 import RadioFilter from '@/components/AgGridCustomFilter/RadioFilter'
 // import { DeviceUrl } from '@/utils/domain'
 import * as API_Device from '@/api/ncs_device'
-import * as API_FrameGroup from '@/api/ncs_frameGroup'
+import * as API_Frame from '@/api/ncs_hospitalFrame'
 import * as API_Board from '@/api/ncs_board'
 const DeviceUrl = domain.DeviceUrl
 export default {
@@ -417,7 +417,7 @@ export default {
      * */
     getFrameTree() {
       return new Promise((resolve, reject) => {
-        API_FrameGroup.getframestruct(this.$store.getters.partId, 3).then(res => {
+        API_Frame.getframestruct(this.$store.getters.partId, 3).then(res => {
           this.treeData = res.frameTree
           resolve()
         }).catch(err => {

+ 8 - 5
src/views/dashboard/calling/index.vue

@@ -5,7 +5,7 @@
         <el-card style="maring:10px">
           <div slot="header" class="clearfix">
             <span style="float: left">{{ this.$t("home.todayTask") }}</span>
-            <el-link type="primary" style="float: right" @click="goMove('taskList')">{{ this.$t("action.more") }}</el-link>
+            <el-link type="primary" style="float: right" @click="goMove('task-list')">{{ this.$t("action.more") }}</el-link>
           </div>
           <div style="clear:both;font-size: 14px;height: 300px;">
             <el-scrollbar wrap-class="scrollbar-wrapper" style="min-height: 250px">
@@ -41,7 +41,7 @@
         <el-card>
           <div slot="header" class="clearfix">
             <span style="float: left">{{ this.$t('home.recentNote') }}</span>
-            <el-link type="primary" style="float: right" @click="goMove('remarkList')">{{ this.$t('action.more') }}</el-link>
+            <el-link type="primary" style="float: right" @click="goMove('remark-list')">{{ this.$t('action.more') }}</el-link>
           </div>
           <div style="clear:both;font-size: 14px;height: 300px;">
             <el-scrollbar wrap-class="scrollbar-wrapper" style="min-height: 250px">
@@ -76,7 +76,7 @@
         <el-card style="maring:10px">
           <div slot="header" class="clearfix">
             <span style="float: left">{{ this.$t('home.recentInteract') }}</span>
-            <el-link type="primary" style="float: right" @click="goMove('CallingList')">{{ this.$t("action.more") }}</el-link>
+            <el-link type="primary" style="float: right" @click="goMove('interaction-history')">{{ this.$t("action.more") }}</el-link>
           </div>
           <div style="height: 300px">
             <el-table :data="callingHistoryList" height="300px">
@@ -94,7 +94,7 @@
         <el-card>
           <div slot="header" class="clearfix">
             <span style="float: left">{{ this.$t('home.recentRemarks') }}</span>
-            <el-link type="primary" style="float: right" @click="goMove('customerList')">{{ this.$t("action.more") }}</el-link>
+            <el-link type="primary" style="float: right" @click="goMove('customer-manager')">{{ this.$t("action.more") }}</el-link>
           </div>
           <div style="clear:both;font-size: 14px;height: 300px;">
             <el-scrollbar wrap-class="scrollbar-wrapper" style="min-height: 250px">
@@ -244,7 +244,10 @@ export default {
       this.isShowArticle = true
     },
     goMove(path) {
-      this.$router.push({ name: 'customer-manager' })
+      // if (path === 'customerList') {
+      //   uiVersion === 1 ? path = 'patientManagement' : uiVersion === 2 ? path = 'customerManager' : path = 'elderlyCareManager'
+      // }
+      this.$router.push({ name: path })
     },
     formatterFromName(row, column, cellValue) {
       if (!row.outerior_action && row.relative_name === null) {

+ 0 - 0
src/views/entrace-guard/index.vue


+ 0 - 0
src/views/entrace-guard/users.vue


+ 0 - 0
src/views/hospital/ncs_customer/customerManager.vue


+ 1 - 1
src/views/hospital/customerManagement.vue

@@ -5,7 +5,7 @@
 </template>
 
 <script>
-import CustomerManager from './ncs_customer/customerManager'
+import CustomerManager from './customer/customerManager'
 export default {
   name: 'CustomerManagement',
   components: { CustomerManager },

+ 0 - 0
src/views/hospital/ncs_device/deviceManager.vue


+ 1 - 1
src/views/hospital/deviceManagement.vue

@@ -5,7 +5,7 @@
 </template>
 
 <script>
-import DeviceManager from './ncs_device/deviceManager'
+import DeviceManager from './device/deviceManager'
 export default {
   name: 'DeviceManagement',
   components: { DeviceManager },

+ 4 - 5
src/views/hospital/ncs_frame/frameTreeView.vue

@@ -27,7 +27,6 @@
           :expand-on-click-node="false"
           :highlight-current="true"
           :current-node-key="selectedNodeId"
-          draggable
           :accordion="true"
           :filter-node-method="filterNode"
           @node-drag-start="nodeDragStart"
@@ -294,9 +293,9 @@
 
 <script>
 import * as HospitalFrame_API from '@/api/ncs_hospitalFrame'
-import * as API_FrameGroup from '@/api/ncs_frameGroup'
-import CustomerManager from '@/views/hospital/ncs_customer/customerManager'
-import DeviceManager from '@/views/hospital/ncs_device/deviceManager'
+import * as API_Frame from '@/api/ncs_hospitalFrame'
+import CustomerManager from '@/views/hospital/customer/customerManager'
+import DeviceManager from '@/views/hospital/device/deviceManager'
 // import ClerkList from '@/views/ncs-clerk/clerkList
 import ClerkManager from '@/views/hospital/clerkManager'
 import CountTo from 'vue-count-to'
@@ -397,7 +396,7 @@ export default {
      * */
     getFrameTree() {
       return new Promise((resolve, reject) => {
-        API_FrameGroup.getframestruct(this.$store.getters.partId, FRAME_TYPE.HOSPITAL).then(res => {
+        API_Frame.getframestruct(this.$store.getters.partId, FRAME_TYPE.HOSPITAL).then(res => {
           console.log(res)
           this.bfCount = res.bfCount
           this.zcCount = res.zcCount

+ 2 - 1
src/views/hospitalFrame/frameGroupEdit.vue

@@ -45,6 +45,7 @@
      * 编辑病区信息
      */
 import * as API_FrameGroup from '@/api/ncs_frameGroup'
+import * as API_Frame from '@/api/ncs_hospitalFrame'
 export default {
   name: 'FrameGroupEdit',
   data() {
@@ -75,7 +76,7 @@ export default {
     },
 
     getRoomStructs() {
-      API_FrameGroup.getframestruct(this.$store.getters.partId, 4).then(res => {
+      API_Frame.getframestruct(this.$store.getters.partId, 4).then(res => {
         this.rooms = this.filterGroupFrames(res.frameTree, this.groupId)
         console.log('rooms', this.rooms)
       }).catch(err => {

+ 16 - 30
src/views/hospitalFrame/frameTreeView-admin.vue

@@ -26,7 +26,6 @@
           :expand-on-click-node="false"
           :highlight-current="true"
           :current-node-key="selectedNodeId"
-          draggable
           :accordion="true"
           :filter-node-method="filterNode"
           @node-drag-start="nodeDragStart"
@@ -42,35 +41,15 @@
                 effect="dark"
             >
             <!--            <span><svg-icon :icon-class="data.type===4?'sickroom':data.type===5?'bed':'area'" />{{ data.full_name }}</span>-->
-              <span @mouseover="mouseOver($event)"
-                    class="over-ellipsis"
-              ><svg-icon :style="data.customer_id ? 'color: #0a901c' : ''"
-                         :icon-class="data.type===4?'sickroom':data.type===5?'bed':'area'"
-              />{{ data.full_name }}</span>
+              <span @mouseover="mouseOver($event)" class="over-ellipsis">
+                <svg-icon :style="data.customer_id ? 'color: #0a901c' : ''" :icon-class="data.type===4?'sickroom':data.type===5?'bed':'area'"/>
+                {{ data.full_name }}
+              </span>
             </el-tooltip>
             <span class="top-right">
-              <el-button
-                v-if="data.type!==5"
-                :disabled="data.type===1"
-                type="text"
-                size="mini"
-                icon="el-icon-plus"
-                @click.stop="() => append(data)"
-              />
-              <el-button
-                type="text"
-                :disabled="data.type===1 || data.type===3"
-                size="mini"
-                icon="el-icon-edit"
-                @click.stop="() => edit(data)"
-              />
-              <el-button
-                type="text"
-                :disabled="data.type===1"
-                size="mini"
-                icon="el-icon-delete"
-                @click.stop="() => remove(data)"
-              />
+              <el-button v-if="data.type!==5" :disabled="data.type===1" type="text" size="mini" icon="el-icon-plus" @click.stop="() => append(data)"/>
+              <el-button type="text" :disabled="data.type===1 || data.type===3" size="mini" icon="el-icon-edit" @click.stop="() => edit(data)"/>
+              <el-button type="text" :disabled="data.type===1 || data.type ===3" size="mini" icon="el-icon-delete" @click.stop="() => remove(data)"/>
             </span>
           </span>
         </el-tree>
@@ -205,7 +184,7 @@
 
 <script>
 import * as HospitalFrame_API from '@/api/ncs_hospitalFrame'
-import * as API_FrameGroup from '@/api/ncs_frameGroup'
+import * as API_Frame from '@/api/ncs_hospitalFrame'
 import CustomerManager from '../customer/components/customerManager'
 import DeviceManager from '../ncs-device/components/deviceManager'
 import PatientManager from '../customer/components/patientManager'
@@ -289,7 +268,7 @@ export default {
      * */
     getFrameTree() {
       return new Promise((resolve, reject) => {
-        API_FrameGroup.getAllFrameTreeByType(FRAME_TYPE.HOSPITAL).then(res => {
+        API_Frame.getAllFrameTreeByType(FRAME_TYPE.HOSPITAL).then(res => {
           this.treeData = res.frameTree
           resolve()
         }).catch(err => {
@@ -340,6 +319,13 @@ export default {
     },
     remove(data) {
       let warning = ''
+      if (data.children.length > 0) {
+          this.$message({
+            type: 'info',
+            message: this.$t('frameManage.deleteBedFirst')
+          })
+        return
+      }
       if (data.type === FRAME_TYPE.ROOM) {
         warning = this.$t('frameManage.sureDelete') + '【' + data.full_name + '】' + this.$t('frameManage.allBad')
       } else {

+ 2 - 2
src/views/hospitalFrame/frameTreeView.vue

@@ -247,7 +247,7 @@
 
 <script>
 import * as HospitalFrame_API from '@/api/ncs_hospitalFrame'
-import * as API_FrameGroup from '@/api/ncs_frameGroup'
+import * as API_Frame from '@/api/ncs_hospitalFrame'
 import CustomerManager from '../customer/components/customerManager'
 import DeviceManager from '../ncs-device/components/deviceManager'
 import PatientManager from '../customer/components/patientManager'
@@ -335,7 +335,7 @@ export default {
      * */
     getFrameTree() {
       return new Promise((resolve, reject) => {
-        API_FrameGroup.getframestruct(this.$store.getters.partId, FRAME_TYPE.PART).then(res => {
+        API_Frame.getframestruct(this.$store.getters.partId, FRAME_TYPE.PART).then(res => {
           this.treeData = res.frameTree
           resolve()
         }).catch(err => {

+ 2 - 1
src/views/ncs-broadcast/components/broadcastInfo.vue

@@ -128,6 +128,7 @@
 
 <script>
 import * as API_FrameGroup from '@/api/ncs_frameGroup'
+import * as API_Frame from '@/api/ncs_hospitalFrame'
 import * as API_Broadcast from '@/api/calling-broadcast'
 
 export default {
@@ -261,7 +262,7 @@ export default {
     },
     /** 获取科室房间结构 **/
     getRoomStructs() {
-      API_FrameGroup.getframestruct(this.$store.getters.partId, 4).then(res => {
+      API_Frame.getframestruct(this.$store.getters.partId, 4).then(res => {
         this.rooms = this.filterGroupFrames(res.frameTree, this.formmodel.frame_ids)
       })
     },

+ 4 - 4
src/views/ncs-clerk-frame-manage/components/frameView.vue

@@ -318,7 +318,7 @@
 </template>
 
 <script>
-    import * as API_FrameGroup from '@/api/ncs_frameGroup'
+    import * as API_Frame from '@/api/ncs_hospitalFrame'
     import {FRAME_TYPE} from '@/utils/enum/FrameTypeEnum'
     import i18n from "../../../utils/i18n"
 
@@ -366,7 +366,7 @@
              * */
             getFrameTree() {
                 return new Promise((resolve, reject) => {
-                    API_FrameGroup.getframestruct(this.$store.getters.partId, FRAME_TYPE.PART).then(res => {
+                    API_Frame.getframestruct(this.$store.getters.partId, FRAME_TYPE.PART).then(res => {
                         this.treeData = res.frameTree
                         resolve()
                     }).catch(err => {
@@ -418,7 +418,7 @@
                 })
             },
             getFrameManagedClerk(frameId) {
-                API_FrameGroup.getFrameManagedClerk(frameId).then(res => {
+                API_Frame.getFrameManagedClerk(frameId).then(res => {
                     this.frameManagedClerk = {...res}
                 }).catch(err => {
 
@@ -438,7 +438,7 @@
             },
 
             saveFrameManagedClerk() {
-                API_FrameGroup.saveFrameManagedClerk(this.frameManagedClerk).then(res => {
+                API_Frame.saveFrameManagedClerk(this.frameManagedClerk).then(res => {
 
                     this.getFrameManagedClerk(res.id)
                     this.$message.success(this.$t('action.saveSuccess'))

+ 4 - 4
src/views/ncs-clerk-frame-manage/components/multiClerkManageFrame.vue

@@ -291,7 +291,7 @@
 </template>
 
 <script>
-    import * as API_FrameGroup from '@/api/ncs_frameGroup'
+    import * as API_Frame from '@/api/ncs_hospitalFrame'
     import {FRAME_TYPE} from '@/utils/enum/FrameTypeEnum'
     import i18n from "../../../utils/i18n"
     export default {
@@ -344,7 +344,7 @@
              * */
             getFrameTree() {
                 return new Promise((resolve, reject) => {
-                    API_FrameGroup.getframemultimanagedstruct(this.$store.getters.partId, FRAME_TYPE.PART).then(res => {
+                    API_Frame.getframemultimanagedstruct(this.$store.getters.partId, FRAME_TYPE.PART).then(res => {
                         this.treeData = [...res]
                         resolve()
                     }).catch(err => {
@@ -354,7 +354,7 @@
             },
 
             getFrameManagedClerk(frameId) {
-                API_FrameGroup.getFrameManagedClerk(frameId).then(res => {
+                API_Frame.getFrameManagedClerk(frameId).then(res => {
                     this.frameManagedClerk={...res}
                 }).catch(err => {
 
@@ -414,7 +414,7 @@
             },
 
             saveFrameManagedClerk(){
-                API_FrameGroup.saveFrameManagedClerk(this.frameManagedClerk).then(res=>{
+                API_Frame.saveFrameManagedClerk(this.frameManagedClerk).then(res=>{
                     this.getFrameTree().then(() => {
                         if(this.treeData[0]!=null){
                             let node = this.findNodeById(this.treeData,this.selectedNodeId)

+ 33 - 43
src/views/ncs-clerk/components/clerkList.vue

@@ -47,34 +47,21 @@
         <el-row>
           <el-col :span="12">
 
-            <el-form-item :label="this.$t('member.mobile')" prop="mobile">
-<!--              <el-select v-model="addMemberForm.mobile" style="width: 100%;" @change="userSelected"  filterable-->
-<!--                         remote-->
-<!--                         :remote-method="remoteMethod"-->
-<!--                         :loading="loading" placeholder="输入用户名或手机号搜索" clearable>-->
-<!--                <el-option-->
-<!--                        v-for="(item,index) in searchUser"-->
-<!--                        :key="index"-->
-<!--                        :label="item.name"-->
-<!--                        :value="item.name">-->
-<!--                  <span style="float: left">{{ item.name }}</span>-->
-<!--                  <span style="float: right; color: #8492a6; font-size: 13px">{{ item.mobile }}</span>-->
-<!--                </el-option>-->
-<!--              </el-select>-->
-<!--              <el-input v-model.number="addMemberForm.mobile" :maxlength="11" />-->
+            <el-form-item :label="this.$t('member.uname')" prop="uname">
+
               <el-autocomplete
-                      class="inline-input"
-                      popper-class="my-autocomplete"
-                      v-model="addMemberForm.mobile"
-                      :fetch-suggestions="querySearch"
-                      value-key="mobile"
-                      placeholder="请输入内容"
-                      @select="handleSelect"
-                      :disabled="autoCompleteDisabled"
+                  class="inline-input"
+                  popper-class="my-autocomplete"
+                  v-model="addMemberForm.uname"
+                  :fetch-suggestions="querySearch"
+                  value-key="mobile"
+                  :placeholder="this.$t('action.inputMsg')"
+                  @select="handleSelect"
+                  :disabled="autoCompleteDisabled"
               >
                 <template slot-scope="{ item }" class="abc">
-                  <div class="name">{{ item.mobile }}</div>
-                  <span class="addr">{{ item.uname }}</span>
+                  <div class="name">{{ item.uname }}</div>
+                  <span class="addr">{{ item.mobile }}</span>
                 </template>
 
               </el-autocomplete>
@@ -82,23 +69,21 @@
           </el-col>
 
           <el-col :span="12">
-            <el-form-item :label="this.$t('member.uname')" prop="uname">
-
+            <el-form-item :label="this.$t('member.mobile')">
               <el-autocomplete
-                      class="inline-input"
-                      popper-class="my-autocomplete"
-                      v-model="addMemberForm.uname"
-                      :fetch-suggestions="querySearch"
-                      value-key="mobile"
-                      placeholder="请输入内容"
-                      @select="handleSelect"
-                      :disabled="autoCompleteDisabled"
+                  class="inline-input"
+                  popper-class="my-autocomplete"
+                  v-model="addMemberForm.mobile"
+                  :fetch-suggestions="querySearch"
+                  value-key="mobile"
+                  :placeholder="this.$t('action.inputMsg')"
+                  @select="handleSelect"
+                  :disabled="autoCompleteDisabled"
               >
                 <template slot-scope="{ item }" class="abc">
-                  <div class="name">{{ item.uname }}</div>
-                  <span class="addr">{{ item.mobile }}</span>
+                  <div class="name">{{ item.mobile }}</div>
+                  <span class="addr">{{ item.uname }}</span>
                 </template>
-
               </el-autocomplete>
             </el-form-item>
 
@@ -274,8 +259,8 @@ export default {
         page_size: 20,
         page_no: 1,
         fixedCondition: 'user_state=0 and member_id is not NULL',
-        sort: 'shop_id,member_id',
-        dir: 'asc'
+        sort: 'create_time',
+        dir: 'desc'
       },
 
       /** 列表参数 */
@@ -403,7 +388,7 @@ export default {
       //     }
       //   }
       // },
-      { headerName: 'id', field: 'member_id', sortable: true, width: 50 },
+      { headerName: 'id', field: 'member_id', sortable: true, width: 90 },
       { headerName: this.$t('member.uname'), field: 'uname', sortable: true, filter: true, width: 180 },
       { headerName: this.$t('member.nickname'), field: 'clerk_name', sortable: true, filter: true, width: 180 },
       { headerName: this.$t('member.sex'), field: 'sex', sortable: true, valueFormatter: this.formatterSex, width: 180, filterFramework: 'RadioFilter',
@@ -578,7 +563,7 @@ export default {
       // 获取角色
       API_Clerk.getRoles(param).then(res => {
         this.rolesOptions = res.data
-        this.rolesOptions.push({role_id:0,role_name:'超级管理员'})
+        // this.rolesOptions.push({role_id:0,role_name:'超级管理员'})
         this.roleTransfer =[...res.data.map(p=>{return {'key':p.role_name,'value':p.role_name}})]
         this.columnDefs[6].filterParams.listData=this.roleTransfer
         // console.log(this.columnDefs)
@@ -649,7 +634,12 @@ export default {
             params.face = this.imageUrl
           }
 
-          params.role_name = this.rolesOptions.filter( p => p.role_id === params.role_id)[0].role_name
+          if (params.role_id === 0) {
+            params.role_name = this.rolesOptions.filter(p => p.role_id === 1)[0].role_name
+          } else {
+            params.role_name = this.rolesOptions.filter(p => p.role_id === params.role_id)[0].role_name
+          }
+          // params.role_name = this.rolesOptions.filter(p => p.role_id === params.role_id)[0].role_name
           if (params.clerk_id) {
             // if (this.roleZzId === params.role_id) {
             //   const addIds = this.newCheckList.filter(function(val) { return _this.oldCheckList.indexOf(val) === -1 })

+ 1 - 2
src/views/ncs-device-menu/deviceMenuManagement.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <device-menu-manager :frame="frame" :part_view="false" />
+    <device-menu-manager :part_view="false" />
   </div>
 
 </template>
@@ -12,7 +12,6 @@ export default {
   components: { deviceMenuManager },
   data() {
     return {
-      frame: {}
     }
   }
 }

+ 9 - 12
src/views/ncs-device-menu/index.vue

@@ -44,7 +44,7 @@
       <div>
         <el-form ref="editform" :rules="rules" label-width="120px" :model="formmodel">
           <el-form-item :label="this.$t('deviceMenuManage.name')" prop="name">
-            <el-input v-model="formmodel.name" :placeholder="this.$t('action.inputName')" :maxlength="20" />
+            <el-input v-model="formmodel.name" :placeholder="this.$t('action.inputName')" :maxlength="20" clearable/>
           </el-form-item>
           <el-form-item :label="this.$t('deviceManage.deviceType')" prop="device_type">
             <el-select v-model="formmodel.device_type"
@@ -68,7 +68,7 @@
             </el-select>
           </el-form-item>
           <el-form-item label="URL" prop="url">
-            <el-input v-model="formmodel.url" :placeholder="this.$t('deviceMenuManage.inputUrl')" />
+            <el-input v-model="formmodel.url" :placeholder="this.$t('deviceMenuManage.inputUrl')" clearable/>
           </el-form-item>
 <!--          <el-form-item :label="this.$t('deviceMenuManage.urlTemplate')" prop="url_params_temp">-->
 <!--            <el-input v-model="formmodel.url_params_temp" :placeholder="this.$t('deviceMenuManage.inputUrlTemplate')" :maxlength="20" />-->
@@ -77,10 +77,10 @@
           <el-form-item :label="urlTemplateStr"
                         v-for="(item, index) in formmodelUrlParamsTemp" :key="'u' + index">
             <el-col :span="10" style="margin: 0 10px 0 0">
-              <el-input v-model="item.parameter" :maxlength="50" :placeholder="inputTemplateStr"/>
+              <el-input v-model="item.parameter" :maxlength="50" :placeholder="inputTemplateStr" clearable/>
             </el-col>
             <el-col :span="10" style="margin: 0 10px 0 0">
-              <el-input v-model="item.value" :maxlength="50" :placeholder="inputTemplateValueStr"/>
+              <el-input v-model="item.value" :maxlength="50" :placeholder="inputTemplateValueStr" clearable/>
             </el-col>
             <el-col :span="3" style="margin: auto">
               <el-button v-if="index === 0" type="primary" @click="addInput(formmodelUrlParamsTemp)"> {{ addStr }} </el-button>
@@ -90,7 +90,7 @@
           </el-form-item>
 
           <el-form-item label="Activity" prop="act_name">
-            <el-input v-model="formmodel.act_name" :placeholder="this.$t('deviceMenuManage.inputActName')"/>
+            <el-input v-model="formmodel.act_name" :placeholder="this.$t('deviceMenuManage.inputActName')" clearable/>
           </el-form-item>
 <!--          <el-form-item :label="this.$t('deviceMenuManage.actIntent')" prop="act_intent">-->
 <!--            <el-input v-model="formmodel.act_intent" :placeholder="this.$t('deviceMenuManage.inputActIntent')" :maxlength="20" />-->
@@ -99,10 +99,10 @@
           <el-form-item :label="actIntentStr"
                         v-for="(item, index) in formmodelActIntent" :key="'a' + index">
             <el-col :span="10" style="margin: 0 10px 0 0">
-              <el-input v-model="item.parameter" :maxlength="50" :placeholder="inputTemplateStr"/>
+              <el-input v-model="item.parameter" :maxlength="50" :placeholder="inputTemplateStr" clearable/>
             </el-col>
             <el-col :span="10" style="margin: 0 10px 0 0">
-              <el-input v-model="item.value" :maxlength="50" :placeholder="inputTemplateValueStr"/>
+              <el-input v-model="item.value" :maxlength="50" :placeholder="inputTemplateValueStr" clearable/>
             </el-col>
             <el-col :span="3" style="margin: auto">
               <el-button v-if="index === 0" type="primary" @click="addInput(formmodelActIntent)"> {{ addStr }} </el-button>
@@ -111,7 +111,7 @@
 
           </el-form-item>
           <el-form-item :label="this.$t('action.sort')" prop="index">
-            <el-input-number v-model="formmodel.nindex" :min="1"  :placeholder="this.$t('action.sort')"  />
+            <el-input-number v-model="formmodel.nindex" :min="1"  :placeholder="this.$t('action.sort')" clearable/>
           </el-form-item>
 
           <el-form-item :label="this.$t('deviceMenuManage.actived')" prop="actived">
@@ -158,10 +158,6 @@ export default {
   name: "index",
   components: { ButtonCellRender, ImageViewer },
   props: {
-    frame: {
-      type: Object,
-      default: () => {}
-    },
     part_view: { // 是否为科室视图
       type: Boolean,
       default: true
@@ -415,6 +411,7 @@ export default {
         sort: ' role_id',
         dir: 'desc'
       })
+      this.formmodel = {}
       this.formmodelUrlParamsTemp = [{
         parameter: '',
         value: ''

+ 12 - 0
src/views/ncs-orginazition/components/partInfoEdit.vue

@@ -348,13 +348,24 @@
                 <el-checkbox v-model="formmodel.two_color_door_light_valid" :true-label="1" :false-label="0">{{ this.$t('partInfo.support') }}</el-checkbox>
               </el-form-item>
             </el-col>
+          </el-row>
+
+
 
+          <el-row>
             <el-col :span="8">
               <el-form-item :label="this.$t('partInfo.autoAccept')" prop="auto_accept">
                 <el-checkbox v-model="formmodel.auto_accept" :true-label="1" :false-label="0">{{ this.$t('partInfo.openAutoAccept') }}</el-checkbox>
               </el-form-item>
             </el-col>
 
+
+            <el-col :span="8">
+              <el-form-item :label="this.$t('partInfo.unmannedCall')" prop="empty_bed_call_enabled">
+                <el-checkbox v-model="formmodel.empty_bed_call_enabled" :true-label="1" :false-label="0">{{ this.$t('partInfo.openUnmannedCall') }}</el-checkbox>
+              </el-form-item>
+            </el-col>
+
             <el-col :span="8">
               <el-form-item :label="this.$t('partInfo.eventForward')" prop="event_forward">
                 <el-checkbox v-model="formmodel.event_forward" :true-label="1" :false-label="0">{{ this.$t('partInfo.openEventForward') }}</el-checkbox>
@@ -757,6 +768,7 @@ export default {
                 screen_light: 0,
                 room_call_bed: 1,
                 auto_accept: 0,
+                empty_bed_call_enabled: 0,
                 door_nurse_title: '呼叫护士',
                 door_nurse_valid: 1,
                 door_nursing_title: '进入护理',

+ 2 - 2
src/views/nfc-interaction/nfcPosition.vue

@@ -129,7 +129,7 @@ import {parseTime} from "@/utils";
 import {FUNCTION_TYPE} from "@/utils/enum/FunctionEnum";
 import * as API_Clerk from "@/api/ncs_clerk";
 import {unixToDate} from "@/utils/Foundation";
-import * as API_FrameGroup from "@/api/ncs_frameGroup";
+import * as API_Frame from "@/api/ncs_hospitalFrame";
 import {FRAME_TYPE} from "@/utils/enum/FrameTypeEnum";
 
 export default {
@@ -310,7 +310,7 @@ export default {
       }
     },
     getAllFrame(){
-      API_FrameGroup.getframestruct(this.$store.getters.partId, FRAME_TYPE.PART).then(res => {
+      API_Frame.getframestruct(this.$store.getters.partId, FRAME_TYPE.PART).then(res => {
         this.partTree = res.frameTree[0]
       })
     },