浏览代码

开发设备简介功能

vothin 1 年之前
父节点
当前提交
b803f6fe87

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


+ 21 - 2
languages/zh-CN.js

@@ -172,6 +172,7 @@ module.exports = {
     uploaderImg2: '上传头像图片只能是 JPG、PNG、GIF 格式!',
     uploaderImg2: '上传头像图片只能是 JPG、PNG、GIF 格式!',
     uploaderSize: '上传附件大小不能超过 5MB!',
     uploaderSize: '上传附件大小不能超过 5MB!',
     uploaderSize2: '上传头像图片大小不能超过 2MB!',
     uploaderSize2: '上传头像图片大小不能超过 2MB!',
+    uploaderSize3: '上传头像图片大小不能超过 10MB!',
     uploaderImgMsg: '图片宽度必须在100~500之间,宽高比为1: 1!',
     uploaderImgMsg: '图片宽度必须在100~500之间,宽高比为1: 1!',
     uploaderImgMsg2: '请上传宽高比为1: 1的图片',
     uploaderImgMsg2: '请上传宽高比为1: 1的图片',
     uploaderImgMsg3: '图片高度必须在100~500之间!',
     uploaderImgMsg3: '图片高度必须在100~500之间!',
@@ -456,6 +457,16 @@ module.exports = {
     actIntent: 'Activity的参数',
     actIntent: 'Activity的参数',
     inputActIntent: '请输入Activity的参数'
     inputActIntent: '请输入Activity的参数'
   },
   },
+  deviceMenuDetailManage: {
+    type: '类型',
+    chooseType: '请选择简介类型',
+    title: '标题',
+    inputTitle: '请输入标题',
+    titleBg: '头部背景',
+    titleIcon: '标题图标',
+    summary: '简介',
+    inputSummary: '请输入简介',
+  },
   clerkManage: {
   clerkManage: {
     clerkEdit: '编辑成员信息',
     clerkEdit: '编辑成员信息',
     choiceClerk: '请选择员工',
     choiceClerk: '请选择员工',
@@ -872,7 +883,7 @@ module.exports = {
     attacHisCodes: '附加HIS科室标识',
     attacHisCodes: '附加HIS科室标识',
     inputHisCode: '请输入HIS系统标识',
     inputHisCode: '请输入HIS系统标识',
     sharedBedHisCodes: '共享床位HIS标识',
     sharedBedHisCodes: '共享床位HIS标识',
-    distinguishSharedBeds:'区分患者',
+    distinguishSharedBeds: '区分患者',
     inputSharedBedHisCodes: '输入共享本科室床位HIS科室标识,多个科室以逗号分割',
     inputSharedBedHisCodes: '输入共享本科室床位HIS科室标识,多个科室以逗号分割',
     inputAttacHisCode: '输入附加HIS科室标识,多个科室以逗号分割',
     inputAttacHisCode: '输入附加HIS科室标识,多个科室以逗号分割',
     shopType: '组织类型',
     shopType: '组织类型',
@@ -995,7 +1006,8 @@ module.exports = {
     roomCallBed: '开启门口机呼叫床位按钮',
     roomCallBed: '开启门口机呼叫床位按钮',
     boolAllDoorStatus: '开启所有门口机呼显示',
     boolAllDoorStatus: '开启所有门口机呼显示',
     boolDooLightAlwaysOn: '门灯是否常亮',
     boolDooLightAlwaysOn: '门灯是否常亮',
-    convenientServiceEnabled: '便民服务'
+    convenientServiceEnabled: '便民服务',
+    boolLedService: '开发服务器控制点阵屏'
   },
   },
   role: {
   role: {
     roleName: '角色名称',
     roleName: '角色名称',
@@ -1087,6 +1099,7 @@ module.exports = {
     customBoardDesigner: '看板屏设计',
     customBoardDesigner: '看板屏设计',
     staffManageFrames: '空间管理设置',
     staffManageFrames: '空间管理设置',
     deviceMenuManager: '设备菜单',
     deviceMenuManager: '设备菜单',
+    deviceMenuDetail: '菜单详细信息',
     nbiotDeviceStatus: '故障物联设备',
     nbiotDeviceStatus: '故障物联设备',
     offlineDevice: '离线设备',
     offlineDevice: '离线设备',
     lowBatteryDevice: '低电量设备',
     lowBatteryDevice: '低电量设备',
@@ -1331,6 +1344,12 @@ module.exports = {
     FILE_UPLOAD_FAILED: '未配置文件存放目录!',
     FILE_UPLOAD_FAILED: '未配置文件存放目录!',
     FILE_FAILED: '文件错误'
     FILE_FAILED: '文件错误'
   },
   },
+  deviceMenuDetailType: {
+    HOSPITAL: '医院简介',
+    PART: '科室简介',
+    IN_NOTICE: '入院须知',
+    SATISFACTION: '满意度调查'
+  },
   entraceguardUser: {
   entraceguardUser: {
     named: '用户姓名',
     named: '用户姓名',
     idNo: '身份证号',
     idNo: '身份证号',

+ 11 - 11
public/domain.js

@@ -1,17 +1,17 @@
 const domain = {
 const domain = {
-  serverUrl: 'http://172.28.100.100:8005',
-  DeviceUrl: 'http://172.28.100.100:8006',
-  mediaUrl: 'http://172.28.100.100:8004',
+  serverUrl: 'http://8.129.220.143:8005',
+  DeviceUrl: 'http://8.129.220.143:8006',
+  mediaUrl: 'http://8.129.220.143:8004',
   OnlineSystemUrl: 'http://api.base.wdklian.com',
   OnlineSystemUrl: 'http://api.base.wdklian.com',
   apiMode: 'dev',
   apiMode: 'dev',
   uiVersion: 1, // 1 医院版,2 月子中心版,3养老院版
   uiVersion: 1, // 1 医院版,2 月子中心版,3养老院版
-  enableBroadcast: false, //广播使能
-  enableMobile: false,  //手机使能
-  enableEntraceguard: false,  //门禁使能
-  enableNBiot: false,  //NB设备
-  enableCustomerDevice: false,  //用户设备
-  enableSosDevice: false, //报警设备
-  enable485:false,
-  enableLinux:false
+  enableBroadcast: true, //广播使能
+  enableMobile: true,  //手机使能
+  enableEntraceguard: true,  //门禁使能
+  enableNBiot: true,  //NB设备
+  enableCustomerDevice: true,  //用户设备
+  enableSosDevice: true, //报警设备
+  enable485:true,
+  enableLinux:true
 }
 }
 
 

+ 6 - 0
src/router/index.js

@@ -171,6 +171,12 @@ export const partRoutes = [
         name: 'device-menu',
         name: 'device-menu',
         meta: { title: i18n.t('tab.deviceMenuManager'), icon: 'el-icon-menu', noCache: true }
         meta: { title: i18n.t('tab.deviceMenuManager'), icon: 'el-icon-menu', noCache: true }
       },
       },
+      {
+        path: 'device_menu_detail',
+        component: () => import('@/views/ncs-device-menu-detail/index'),
+        name: 'device-menu-detail',
+        meta: { title: i18n.t('tab.deviceMenuDetail'), icon: 'el-icon-tickets', noCache: true }
+      },
       // {
       // {
       //   path: 'led',
       //   path: 'led',
       //   component: () => import('@/views/ncs-led/ledDeviceManagement'),
       //   component: () => import('@/views/ncs-led/ledDeviceManagement'),

+ 3 - 3
src/utils/domain.js

@@ -58,9 +58,9 @@ module.exports = {
 // docker push registry.cn-shenzhen.aliyuncs.com/wdkl/hp_ui:en1.83
 // docker push registry.cn-shenzhen.aliyuncs.com/wdkl/hp_ui:en1.83
 // docker run -idt -p 8008:80 --name ncs-ui --log-opt max-size=500m --log-opt max-file=1  -v /etc/localtime:/etc/localtime --restart always  registry.cn-shenzhen.aliyuncs.com/wdkl/hp_ui:en1.83
 // docker run -idt -p 8008:80 --name ncs-ui --log-opt max-size=500m --log-opt max-file=1  -v /etc/localtime:/etc/localtime --restart always  registry.cn-shenzhen.aliyuncs.com/wdkl/hp_ui:en1.83
 // 西班牙语板
 // 西班牙语板
-// docker build -t   registry.cn-shenzhen.aliyuncs.com/wdkl/hp_ui:es1.93 .
-// docker push registry.cn-shenzhen.aliyuncs.com/wdkl/hp_ui:es1.93
-// docker run -idt -p 80:80 --name ncs-ui --log-opt max-size=500m --log-opt max-file=1  -v /etc/localtime:/etc/localtime --restart always  registry.cn-shenzhen.aliyuncs.com/wdkl/hp_ui:es1.92
+// docker build -t   registry.cn-shenzhen.aliyuncs.com/wdkl/hp_ui:es1.97 .
+// docker push registry.cn-shenzhen.aliyuncs.com/wdkl/hp_ui:es1.97
+// docker run -idt -p 80:80 --name ncs-ui --log-opt max-size=500m --log-opt max-file=1  -v /etc/localtime:/etc/localtime --restart always  registry.cn-shenzhen.aliyuncs.com/wdkl/hp_ui:es1.97
 // 俄语板
 // 俄语板
 // docker build -t   registry.cn-shenzhen.aliyuncs.com/wdkl/hp_ui:ru1.92 .
 // docker build -t   registry.cn-shenzhen.aliyuncs.com/wdkl/hp_ui:ru1.92 .
 // docker push registry.cn-shenzhen.aliyuncs.com/wdkl/hp_ui:ru1.92
 // docker push registry.cn-shenzhen.aliyuncs.com/wdkl/hp_ui:ru1.92

+ 11 - 0
src/utils/enum/DeviceMenuDetailTypeEnum.js

@@ -0,0 +1,11 @@
+import createEnum from '@/utils/enum/createEnum'
+import i18n from '@/utils/i18n'
+
+export const DEVICE_MENU_DETAIL_TYPE = createEnum(
+  {
+    HOSPITAL: ['HOSPITAL', i18n.t('deviceMenuDetailType.HOSPITAL')],
+    PART: ['PART', i18n.t('deviceMenuDetailType.PART')],
+    IN_NOTICE: ['IN_NOTICE', i18n.t('deviceMenuDetailType.IN_NOTICE')],
+    SATISFACTION: ['SATISFACTION', i18n.t('deviceMenuDetailType.SATISFACTION')]
+  }
+)

+ 171 - 0
src/views/ncs-device-menu-detail/index.vue

@@ -0,0 +1,171 @@
+<template>
+  <div>
+    <el-card style="margin: 15px">
+      <el-form ref="editform" :rules="rules"  label-width="120px"  :model="formmodel" style="margin: 10px">
+        <el-row>
+          <el-form-item :label="this.$t('deviceMenuDetailManage.type')" prop="type">
+            <el-select v-model="formmodel.type"
+                       :placeholder="this.$t('deviceMenuDetailManage.chooseType')"
+                       filterable clearable>
+              <el-option v-for="(item,index) in deviceMenuDetialTypeTransfer" :key="index" :label="item.key" :value="item.value" />
+            </el-select>
+          </el-form-item>
+        </el-row>
+
+        <el-row>
+          <el-col :span="12">
+            <el-form-item :label="this.$t('deviceMenuDetailManage.title')" prop="title" maxlength="50">
+              <el-input v-model="formmodel.title" :placeholder="this.$t('deviceMenuDetailManage.inputTitle')" :maxlength="50" clearable/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-row>
+          <el-col :span="24">
+            <el-form-item :label="this.$t('deviceMenuDetailManage.summary')" prop="summary" type="textarea" maxlength="200">
+              <el-input v-model="formmodel.summary" :placeholder="this.$t('deviceMenuDetailManage.inputSummary')" :maxlength="200" clearable/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-row>
+          <el-col :span="8">
+            <el-form-item :label="this.$t('deviceMenuDetailManage.titleIcon')">
+              <el-upload
+                  class="avatar-uploader"
+                  :action="`${titleIconUploadUrl}?scene=avatar`"
+                  :show-file-list="false"
+                  :on-success="titleIconUploaded"
+                  :before-upload="handleTitleIconBefore"
+              >
+                <img v-if="titleIconUrl" :src="titleIconUrl" class="avatar">
+                <i v-else class="el-icon-plus avatar-uploader-icon" />
+              </el-upload>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+
+        <el-row>
+          <el-col :span="8">
+            <el-form-item :label="this.$t('deviceMenuDetailManage.titleBg')">
+              <el-upload
+                  class="avatar-uploader"
+                  :action="`${titleBgUploadUrl}?scene=avatar`"
+                  :show-file-list="false"
+                  :on-success="titleBgUploaded"
+                  :before-upload="handleTitleBgBefore"
+              >
+                <img v-if="titleBgUrl" :src="titleBgUrl" class="avatar">
+                <i v-else class="el-icon-plus avatar-uploader-icon" />
+              </el-upload>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+    </el-card>
+  </div>
+</template>
+
+<script>
+import {DEVICE_MENU_DETAIL_TYPE} from "@/utils/enum/DeviceMenuDetailTypeEnum";
+
+const serverUrl = domain.serverUrl
+export default {
+  name: "index",
+  data() {
+    return {
+      rules: {
+      },
+      formmodel: {
+      },
+
+      titleIconUploadUrl: serverUrl + '/ncs/upload/uploadFile',
+      titleIconUrl: '',
+      titleBgUploadUrl: serverUrl + '/ncs/upload/uploadFile',
+      titleBgUrl: '',
+      deviceMenuDetialTypeTransfer: DEVICE_MENU_DETAIL_TYPE.getKeyValueList(),
+    }
+  },
+  methods: {
+
+    /** 上传成功后的钩子 更换图片 置空存储数组*/
+    titleIconUploaded(res) {
+      this.titleIconUrl = serverUrl + '/' + res
+      this.formmodel.title_icon = this.titleIconUrl
+    },
+    titleBgUploaded(res) {
+      this.titleBgUrl = serverUrl + '/' + res
+      this.formmodel.title_bg = this.titleBgUrl
+    },
+    /** 图片上传之前的校验 */
+    handleTitleIconBefore(file) {
+      return new Promise((resolve, reject) => {
+        const isImg = file.type === 'image/jpeg' || file.type === 'image/png' || file.type === 'image/gif'
+        const isLt2M = file.size / 1024 / 1024 < 2
+
+        if (!isImg) {
+          this.$message.error(this.$t('action.uploaderImg2'))
+          reject()
+        }
+        if (!isLt2M) {
+          this.$message.error(this.$t('action.uploaderSize2'))
+          reject()
+        }
+        const reader = new FileReader()
+        reader.onload = (event) => {
+          const image = new Image()
+          image.onload = () => {
+            const width = image.width
+            const height = image.height
+            if (width > 500 || width < 100) {
+              this.$message.error(this.$t('action.uploaderImgMsg'))
+              reject()
+            }
+            if (width !== height) {
+              this.$message.error(this.$t('action.uploaderImgMsg2'))
+              reject()
+            }
+            if (height > 500 || height < 100) {
+              this.$message.error(this.$t('action.uploaderImgMsg3'))
+              reject()
+            }
+            resolve()
+          }
+          image.src = event.target.result
+        }
+        reader.readAsDataURL(file)
+      })
+    },
+    /** 图片上传之前的校验 */
+    handleTitleBgBefore(file) {
+      return new Promise((resolve, reject) => {
+        const isImg = file.type === 'image/jpeg' || file.type === 'image/png' || file.type === 'image/gif'
+        const isLt2M = file.size / 1024 / 1024 < 10
+
+        if (!isImg) {
+          this.$message.error(this.$t('action.uploaderImg2'))
+          reject()
+        }
+        if (!isLt2M) {
+          this.$message.error(this.$t('action.uploaderSize3'))
+          reject()
+        }
+        const reader = new FileReader()
+        reader.onload = (event) => {
+          const image = new Image()
+          image.onload = () => {
+            resolve()
+          }
+          image.src = event.target.result
+        }
+        reader.readAsDataURL(file)
+      })
+    },
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

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

@@ -419,6 +419,12 @@
                 <el-checkbox v-model="formmodel.convenient_service_enabled" :true-label="true" :false-label="false">{{ this.$t('action.enabled') }}</el-checkbox>
                 <el-checkbox v-model="formmodel.convenient_service_enabled" :true-label="true" :false-label="false">{{ this.$t('action.enabled') }}</el-checkbox>
               </el-form-item>
               </el-form-item>
             </el-col>
             </el-col>
+
+            <el-col :span="8">
+              <el-form-item :label="this.$t('partInfo.boolLedService')">
+                <el-checkbox v-model="formmodel.bool_led_service" :true-label="true" :false-label="false">{{ this.$t('action.enabled') }}</el-checkbox>
+              </el-form-item>
+            </el-col>
           </el-row>
           </el-row>
 
 
           <el-row>
           <el-row>