Pārlūkot izejas kodu

增加翻译,修复值缺失会导致显示空白的问题

vothin 6 mēneši atpakaļ
vecāks
revīzija
2bfba7d297

+ 36 - 0
languages/en.js

@@ -1717,5 +1717,41 @@ module.exports = {
   },
   wnn20241108: {
     WATCH_BSJ: 'Smart Watch - BSJ'
+  },
+  zy20241209: {
+    addType: 'Add Type',
+    isDevice: '(Is device)',
+    notDevice: '(Not device)',
+    haveDevice: ' devices)',
+    currentSelect: 'Current Selection:',
+    addLang: 'Add New Language',
+    lang: 'Language',
+    selectLang: 'Please Select a Language',
+    translate: 'Translate',
+    inputTranslate: 'Please Enter the Translation Content',
+    isDevice2: 'Is device',
+    notDevice2: 'Not device',
+    code: 'Unique Code',
+    inputCode: 'Please Enter a Unique Code',
+    mustMac: 'Required Mac',
+    noMustMac: 'Not Required',
+    canDebug: 'Can Debug and Restart',
+    canNotDebug: 'Cannot',
+    showOnline: 'Show Online',
+    noShowOnline: 'Do Not Show',
+    typeValue: 'Type Value',
+    inputTypeValue: 'Please Enter the Type Value',
+    locationSpace: 'Location Space',
+    selectSpace: 'Please Select the Location Space',
+    addDeviceType: 'Add Device Type',
+    addDeviceTypeMsg1: 'Add New Subordinate Device Type Under《',
+    addDeviceTypeMsg2: '》',
+    editDeviceTypeMsg1: 'Edit Device Type《',
+    editDeviceTypeMsg2: '》',
+    addLangMsg1: 'Add New《',
+    addLangMsg2: '》Multilingual',
+    editLangMsg1: 'Edit《',
+    editLangMsg2: '》Multilingual',
+    deleteDeviceTypeMsg: 'Need to Delete Subordinate Device Types First'
   }
 }

+ 36 - 0
languages/es.js

@@ -1717,5 +1717,41 @@ module.exports = {
   },
   wnn20241108: {
     WATCH_BSJ: 'Reloj inteligente - BSJ'
+  },
+  zy20241209: {
+    addType: 'Agregar Tipo',
+    isDevice: '(Es dispositivo)',
+    notDevice: '(No es dispositivo)',
+    haveDevice: ' dispositivo)',
+    currentSelect: 'Selección actual:',
+    addLang: 'Agregar Nuevo Idioma',
+    lang: 'Idioma',
+    selectLang: 'Seleccione un Idioma',
+    translate: 'Traducir',
+    inputTranslate: 'Por favor, ingrese el contenido de la traducción',
+    isDevice2: 'Es dispositivo',
+    notDevice2: 'No es dispositivo',
+    code: 'Código Único',
+    inputCode: 'Please Enter a Unique Code',
+    mustMac: 'Campo Obligatorio Mac',
+    noMustMac: 'No Obligatorio',
+    canDebug: 'Se puede depurar y reiniciar',
+    canNotDebug: 'No se puede',
+    showOnline: 'Mostrar en línea',
+    noShowOnline: 'No mostrar',
+    typeValue: 'Valor del Tipo',
+    inputTypeValue: 'Por favor, ingrese el valor del tipo',
+    locationSpace: 'Espacio de Ubicación',
+    selectSpace: 'Seleccione el Espacio de Ubicación',
+    addDeviceType: 'Agregar Tipo de Dispositivo',
+    addDeviceTypeMsg1: 'Agregar Nuevo Tipo de Dispositivo Subordinado Bajo《',
+    addDeviceTypeMsg2: '》',
+    editDeviceTypeMsg1: 'Modificar Tipo de Dispositivo《',
+    editDeviceTypeMsg2: '》',
+    addLangMsg1: 'Agregar Nuevo《',
+    addLangMsg2: '》Multilingüe',
+    editLangMsg1: 'Editar《',
+    editLangMsg2: '》Multilingüe',
+    deleteDeviceTypeMsg: 'Debe Eliminar Primero los Tipos de Dispositivos Subordinados'
   }
 }

+ 36 - 0
languages/ru-RU.js

@@ -1716,5 +1716,41 @@ module.exports = {
   },
   wnn20241108: {
     WATCH_BSJ: 'Умные часы - BSJ'
+  },
+  zy20241209: {
+    addType: 'Добавить Тип',
+    isDevice: '(Является устройством)',
+    notDevice: '(Не является устройством)',
+    haveDevice: ' Имеет устройство)',
+    currentSelect: 'Текущий выбор:',
+    addLang: 'Добавить новый язык',
+    lang: 'Язык',
+    selectLang: 'Выберите Язык',
+    translate: 'Перевод',
+    inputTranslate: 'Пожалуйста, введите содержимое перевода',
+    isDevice2: 'Является устройством',
+    notDevice2: 'Не является устройством',
+    code: 'Уникальный Код',
+    inputCode: 'Please Enter a Unique Code',
+    mustMac: 'Обязательный Mac',
+    noMustMac: 'Необязательно',
+    canDebug: 'Можно отлаживать и перезагружать',
+    canNotDebug: 'Нельзя',
+    showOnline: 'Показать в сети',
+    noShowOnline: 'Не показывать',
+    typeValue: 'Значение типа',
+    inputTypeValue: 'Пожалуйста, введите значение типа',
+    locationSpace: 'Пространство местоположения',
+    selectSpace: 'Выберите Пространство Местоположения',
+    addDeviceType: 'Добавить Тип Устройства',
+    addDeviceTypeMsg1: 'Добавить новый подчиненный тип устройства под《',
+    addDeviceTypeMsg2: '》',
+    editDeviceTypeMsg1: 'Изменить тип устройства《',
+    editDeviceTypeMsg2: '》',
+    addLangMsg1: 'Добавить новый《',
+    addLangMsg2: '》Многоязычный',
+    editLangMsg1: 'Редактировать《',
+    editLangMsg2: '》Многоязычный',
+    deleteDeviceTypeMsg: 'Необходимо Сначала Удалить Подчиненные Типы Устройств'
   }
 }

+ 36 - 0
languages/zh-CN.js

@@ -1720,5 +1720,41 @@ module.exports = {
   },
   wnn20241108: {
     WATCH_BSJ: '智能手表-BSJ'
+  },
+  zy20241209: {
+    addType: '新增类型',
+    isDevice: '(是设备)',
+    notDevice: '(不是设备)',
+    haveDevice: '个设备)',
+    currentSelect: '当前选择:',
+    addLang: '新增语言',
+    lang: '语言',
+    selectLang: '请选择语言',
+    translate: '翻译',
+    inputTranslate: '请输入翻译内容',
+    isDevice2: '是设备',
+    notDevice2: '不是设备',
+    code: '唯一编码',
+    inputCode: '请输入唯一编码',
+    mustMac: '必填Mac',
+    noMustMac: '不用填',
+    canDebug: '可调试重启',
+    canNotDebug: '不可',
+    showOnline: '显示在线',
+    noShowOnline: '不显示',
+    typeValue: '类型值',
+    inputTypeValue: '请输入类型值',
+    locationSpace: '所在空间',
+    selectSpace: '请选择所在空间',
+    addDeviceType: '新增设备类型',
+    addDeviceTypeMsg1: '新增《',
+    addDeviceTypeMsg2: '》下级设备类型',
+    editDeviceTypeMsg1: '修改《',
+    editDeviceTypeMsg2: '》设备类型',
+    addLangMsg1: '新增《',
+    addLangMsg2: '》多语言',
+    editLangMsg1: '修改《',
+    editLangMsg2: '》多语言',
+    deleteDeviceTypeMsg: '需要先删除子级设备类型'
   }
 }

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 2 - 2
src/utils/domain.js


+ 54 - 21
src/views/ncs-device/components/deviceManager.vue

@@ -669,21 +669,40 @@
             let data = []
             API_DEVICE_TYPE.getList(this.typeParams).then(res => {
               res.forEach(item => {
-                item.label = item.title
+                let _iTitle
+                if (item.title !== null && item.title !== '') {
+                  _iTitle = item.title
+                }
+                else {
+                  _iTitle = item.code
+                }
+                item.label = _iTitle
                 if (item.bool_device) {
-                  item.key = item.title
+                  item.key = _iTitle
+                  item.title = _iTitle
                   data.push(item)
                 }
                 item.children.forEach(t => {
-                  t.label = t.title
+                  let _tTitle = ''
+                  if (t.title !== null && t.title !== '') {
+                    _tTitle = t.title
+                  }
+                  else {
+                    _tTitle = t.code
+                  }
+                  t.label = _tTitle
                   if (t.bool_device) {
-                    t.key = t.title
+                    t.key = _tTitle
+                    t.title = _tTitle
                     data.push(t)
                   }
                 })
               })
               _this.allDeviceTypeList = res
               _this.deviceTypeList = data
+              console.log(_this.deviceTypeList)
+              console.log("===================")
+              console.log(this.deviceTypeList)
               if (this.frameType) {
                 _this.filterDeviceType(_this.frameType)
               } else {
@@ -1067,6 +1086,9 @@
             /** 获取设备类型文字显示,从deviceTypeTransfer 中找出value值对应的key显示出来 */
             deviceTypeGetter(params) {
               const deviceType = this.deviceTypeList.find(type => type.value === params.data.device_type)
+              if (deviceType == null) {
+                return ''
+              }
               return deviceType.title;
             },
             /** 格式化时间函数 */
@@ -1194,11 +1216,17 @@
             androidDevice(param){
               const val = param.data.device_type
               const deviceType = this.deviceTypeList.find(type => type.value === val)
+              if (deviceType == null) {
+                return false
+              }
               return deviceType.bool_debug
             },
             s485Device(param){
               const val = param.data.device_type
               const deviceType = this.deviceTypeList.find(type => type.value === val)
+              if (deviceType == null) {
+                return ''
+              }
                 return deviceType.code === DEVICE_TYPE_ENUM.RS485_DOOR ||
                     deviceType.code === DEVICE_TYPE_ENUM.SIMULATE_BED_DEVICE && param.data.trans_rs485_id !== null
             },
@@ -1238,24 +1266,26 @@
             /** 修改设备  **/
             handleEdit(params) {
               const deviceType = this.deviceTypeList.find(type => type.value === params.device_type)
-              this.deviceTypeChangeToFrameTypeChange(deviceType.frame_type)
-              this.deviceModel.name = deviceType.title
-              this.deviceRules.eth_mac[0].required = !!deviceType.bool_mac
-              this.hasAudioId = this.isSimulatedDevice(deviceType.code)
-              // this.hasAudioId = deviceType.bool_mac
-              this.hasRoleId = deviceType.code === DEVICE_TYPE_ENUM.NURSE_WATCH
-              this.powerControl = deviceType.code === DEVICE_TYPE_ENUM.DIGIT_BED_DEVICE || deviceType.code === DEVICE_TYPE_ENUM.DOOR_DEVICE
-              this.isVitalSigns = deviceType.code === DEVICE_TYPE_ENUM.VITAL_SIGNS_DEVICE
-              this.isLedDevice = deviceType.code === DEVICE_TYPE_ENUM.LED_SCREEN
-              this.isSwitch = deviceType.code === DEVICE_TYPE_ENUM.SWITCH
-              this.isSmartLife = this.isSmartLifeDevice(deviceType.code)
-              if (this.isNeedAlarmSettingDevice(deviceType.code)) {
-                this.hasSosDeviceSettings = true
-                this.getSosDeviceSetting(params.id)
-              } else {
-                this.hasSosDeviceSettings = false
+              if (deviceType != null) {
+                this.deviceTypeChangeToFrameTypeChange(deviceType.frame_type)
+                this.deviceModel.name = deviceType.title
+                this.deviceRules.eth_mac[0].required = !!deviceType.bool_mac
+                this.hasAudioId = this.isSimulatedDevice(deviceType.code)
+                // this.hasAudioId = deviceType.bool_mac
+                this.hasRoleId = deviceType.code === DEVICE_TYPE_ENUM.NURSE_WATCH
+                this.powerControl = deviceType.code === DEVICE_TYPE_ENUM.DIGIT_BED_DEVICE || deviceType.code === DEVICE_TYPE_ENUM.DOOR_DEVICE
+                this.isVitalSigns = deviceType.code === DEVICE_TYPE_ENUM.VITAL_SIGNS_DEVICE
+                this.isLedDevice = deviceType.code === DEVICE_TYPE_ENUM.LED_SCREEN
+                this.isSwitch = deviceType.code === DEVICE_TYPE_ENUM.SWITCH
+                this.isSmartLife = this.isSmartLifeDevice(deviceType.code)
+                if (this.isNeedAlarmSettingDevice(deviceType.code)) {
+                  this.hasSosDeviceSettings = true
+                  this.getSosDeviceSetting(params.id)
+                } else {
+                  this.hasSosDeviceSettings = false
+                }
+                this.boolBreastplate = deviceType.code === DEVICE_TYPE_ENUM.BREASTPLATE
               }
-              this.boolBreastplate = deviceType.code === DEVICE_TYPE_ENUM.BREASTPLATE
               this.deviceModel = {
                   ...params
               }
@@ -1472,6 +1502,9 @@
              */
             isCannotBeOnline(val) {
               const deviceType = this.deviceTypeList.find(type => type.value === val)
+              if (deviceType == null) {
+                return false
+              }
               return deviceType.bool_show_line
             },
           s433TransferBoxHandleOpen(param) {

+ 73 - 60
src/views/ncs-orginazition/device-type.vue

@@ -15,7 +15,7 @@
           </div>
           <div style="text-align: right">
             <el-switch v-model="openType" :active-text="$t('deviceManage.collapse')" :inactive-text="$t('deviceManage.card')" style="margin-right: 20px;"></el-switch>
-            <el-button type="success" @click="handleAdd(null)" :loading="isSave">新增类型</el-button>
+            <el-button type="success" @click="handleAdd(null)" :loading="isSave">{{ $i18n.t('zy20241209.addType') }}</el-button>
           </div>
         </el-header>
         <el-main style="display: flex;">
@@ -24,14 +24,14 @@
               <el-collapse-item v-for="(item, index) in deviceTypeList" :key="index" style="margin-bottom: 10px;">
                 <div slot="title" style="width: 100%;min-height: 50px;" @click="checkType(item)">
                   <div style="font-size: 15px;float: left;width: 20%;" :class="boolRoom ? 'mybg' : ''">{{ item.name }}
-                    <span v-if="item.bool_device" style="font-size: 12px;color: rgba(56,197,62)">(是设备)</span>
-                    <span v-else style="font-size: 12px;color: rgb(174,128,158,0.23)">(不是设备)</span>
+                    <span v-if="item.bool_device" style="font-size: 12px;color: rgba(56,197,62)">{{ $i18n.t('zy20241209.isDevice') }}</span>
+                    <span v-else style="font-size: 12px;color: rgb(174,128,158,0.23)">{{ $i18n.t('zy20241209.notDevice') }}</span>
                   </div>
                   <div :class="boolRoom ? 'mybg' : ''"  style="margin: 0;float: left;width: 60%;">
                     <div style="float: left;height: 100%">
                       <el-tag effect="plain" type="success">{{ item.code }}
                         <span v-if="item.bool_device">({{item.value}})</span>
-                        <span v-else>({{item.children.length}}个设备)</span>
+                        <span v-else>({{item.children.length}} {{ $i18n.t('zy20241209.haveDevice') }}</span>
                       </el-tag>
                       <el-tag v-if="item.bool_device" v-for="(t, i) in item.frame_type.split(',')" :key="i" effect="plain" :type="getColor(i)">{{ formatFrame(t) }}</el-tag>
                     </div>
@@ -46,8 +46,8 @@
                   <el-card v-for="(t, i) in item.children" :key="i" class="box-card" shadow="hover" :body-style="{ padding: '0px', margin: '0px' }">
                     <div class="clearfix" :class="boolBed ? 'mybg' : ''" style="margin: 0;padding: 15px 0px 10px 0px;display: block;" @click="checkType(t)">
                       <div style="font-size: 15px;float: left;width: 20%;" :class="boolRoom ? 'mybg' : ''">{{ t.name }}
-                        <span v-if="t.bool_device" style="font-size: 12px;color: rgba(56,197,62)">(是设备)</span>
-                        <span v-else style="font-size: 12px;color: rgb(174,128,158,0.23)">(不是设备)</span>
+                        <span v-if="t.bool_device" style="font-size: 12px;color: rgba(56,197,62)">{{ $i18n.t('zy20241209.isDevice') }}</span>
+                        <span v-else style="font-size: 12px;color: rgb(174,128,158,0.23)">{{ $i18n.t('zy20241209.notDevice') }}</span>
                       </div>
                       <div :class="boolRoom ? 'mybg' : ''"  style="margin: 0;float: left;width: 60%;">
                         <div style="float: left;height: 100%">
@@ -72,14 +72,14 @@
                   <div slot="header" :class="boolRoom ? 'mybg' : ''" class="clearfix" style="width: 100%;min-height: 40px;" @click="checkType(item)">
                     <!--                  <div style="font-size: 15px;float: left;width: 10%;margin-top: 5px;">{{ item.name }}</div>-->
                     <div style="font-size: 15px;float: left;width: 20%;margin-top: 5px;">{{ item.name }}
-                      <span v-if="item.bool_device" style="font-size: 12px;color: rgba(56,197,62)">(是设备)</span>
-                      <span v-else style="font-size: 12px;color: rgb(174,128,158,0.23)">(不是设备)</span>
+                      <span v-if="item.bool_device" style="font-size: 12px;color: rgba(56,197,62)">{{ $i18n.t('zy20241209.isDevice') }}</span>
+                      <span v-else style="font-size: 12px;color: rgb(174,128,158,0.23)">{{ $i18n.t('zy20241209.notDevice') }}</span>
                     </div>
                     <div style="margin: 0;float: left;width: 60%;">
                       <div style="float: left;height: 100%">
                         <el-tag effect="plain" type="success">{{ item.code }}
                           <span v-if="item.bool_device">({{item.value}})</span>
-                          <span v-else>({{item.children.length}}个设备)</span>
+                          <span v-else>({{item.children.length}} {{ $i18n.t('zy20241209.haveDevice') }}</span>
                         </el-tag>
                         <el-tag v-if="item.bool_device" v-for="(t, i) in item.frame_type.split(',')" :key="i" effect="plain" :type="getColor(i)">{{ formatFrame(t) }}</el-tag>
                       </div>
@@ -96,8 +96,8 @@
                     <el-card v-for="(t, i) in item.children" :key="i" class="box-card" shadow="hover" :body-style="{ padding: '0px', margin: '0px' }">
                       <div class="clearfix" :class="boolBed ? 'mybg' : ''" style="margin: 0;padding: 15px 0 10px 0;min-height: 40px;display: block;" @click="checkType(t)">
                         <div style="font-size: 15px;float: left;width: 20%;" :class="boolRoom ? 'mybg' : ''">{{ t.name }}
-                          <span v-if="t.bool_device" style="font-size: 12px;color: rgba(56,197,62)">(是设备)</span>
-                          <span v-else style="font-size: 12px;color: rgb(174,128,158,0.23)">(不是设备)</span>
+                          <span v-if="t.bool_device" style="font-size: 12px;color: rgba(56,197,62)">{{ $i18n.t('zy20241209.isDevice') }}</span>
+                          <span v-else style="font-size: 12px;color: rgb(174,128,158,0.23)">{{ $i18n.t('zy20241209.notDevice') }}</span>
                         </div>
                         <div :class="boolRoom ? 'mybg' : ''"  style="margin: 0;float: left;width: 60%;">
                           <div style="float: left;height: 100%">
@@ -119,16 +119,16 @@
           </div>
           <div style="width: 40%">
             <el-row style="margin: 15px">
-              <el-col :span="8">当前选择:<el-tag type="success">{{ nowTypeModel.name }}</el-tag></el-col>
+              <el-col :span="8">{{ $i18n.t('zy20241209.currentSelect') }}<el-tag type="success">{{ nowTypeModel.name }}</el-tag></el-col>
               <el-col :span="4">
-                <el-button type="success" @click="handleAddLg" size="mini" :loading="isSave">新增语言</el-button>
+                <el-button type="success" @click="handleAddLg" size="mini" :loading="isSave">{{ $i18n.t('zy20241209.addLang') }}</el-button>
               </el-col>
             </el-row>
             <el-table :data="languageList" id="myTableId" stripe border ref="refTable" height="520">
-              <el-table-column type="index" width="55" label="序号"></el-table-column>
-              <el-table-column prop="language" min-width="100" label="语音" align="center" />
-              <el-table-column prop="title" min-width="100" label="翻译名" align="center" />
-              <el-table-column style="text-align: left;" label="操作" width="120" fixed="right">
+              <el-table-column type="index" width="55" :label="$i18n.t('action.index')"></el-table-column>
+              <el-table-column prop="language" min-width="100" :label="$i18n.t('zy20241209.lang')" align="center" />
+              <el-table-column prop="title" min-width="100" :label="$i18n.t('zy20241209.translate')" align="center" />
+              <el-table-column style="text-align: left;" :label="$i18n.t('action.handle')" width="120" fixed="right">
                 <template slot-scope="scope">
                   <el-button type="primary" icon="el-icon-edit" circle @click="handleEditLg(scope.row)"></el-button>
                   <el-button type="danger" icon="el-icon-delete" circle @click="handleDelLg(scope.row.id)"></el-button>
@@ -143,33 +143,33 @@
                  :width="this.$i18n.locale === 'zh' ? '50%' : '60%'">
         <el-form ref="deviceEditForm" :rules="formRules"
                  :label-width="this.$i18n.locale === 'zh' ? '120px' : '165px'" :model="formModel">
-          <el-form-item label="类型名称" prop="name">
+          <el-form-item :label="$i18n.t('action.name')" prop="name">
             <el-input v-model="formModel.name"></el-input>
           </el-form-item>
-          <el-form-item label="是否设备" prop="bool_device">
-            <el-switch v-model="formModel.bool_device" active-text="是设备" inactive-text="不是设备"></el-switch>
+          <el-form-item :label="$i18n.t('action.type')" prop="bool_device">
+            <el-switch v-model="formModel.bool_device" :active-text="$i18n.t('zy20241209.isDevice2')" :inactive-text="$i18n.t('zy20241209.notDevice2')"></el-switch>
           </el-form-item>
-          <el-form-item label="唯一编码" prop="code">
+          <el-form-item :label="$i18n.t('zy20241209.code')" prop="code">
             <el-input v-model="formModel.code"></el-input>
           </el-form-item>
-          <el-form-item v-if="formModel.bool_device" label="开关" prop="bool_mac">
-            <el-switch v-model="formModel.bool_mac" active-text="必填Mac" inactive-text="不用填"></el-switch>
-            <el-switch v-model="formModel.bool_debug" style="margin-left: 20px" active-text="可调试重启" inactive-text="不可"></el-switch>
-            <el-switch v-model="formModel.bool_show_line" style="margin-left: 20px" active-text="显示在线" inactive-text="不显示"></el-switch>
+          <el-form-item v-if="formModel.bool_device" :label="$i18n.t('zy20240611.SWITCH')" prop="bool_mac">
+            <el-switch v-model="formModel.bool_mac" :active-text="$i18n.t('zy20241209.mustMac')" :inactive-text="$i18n.t('zy20241209.noMustMac')"></el-switch>
+            <el-switch v-model="formModel.bool_debug" style="margin-left: 20px" :active-text="$i18n.t('zy20241209.canDebug')" :inactive-text="$i18n.t('zy20241209.canNotDebug')"></el-switch>
+            <el-switch v-model="formModel.bool_show_line" style="margin-left: 20px" :active-text="$i18n.t('zy20241209.showOnline')" :inactive-text="$i18n.t('zy20241209.noShowOnline')"></el-switch>
           </el-form-item>
-          <el-form-item v-if="formModel.bool_device" label="类型值" prop="value">
-            <el-input-number v-model="formModel.value" :min="1"></el-input-number>
+          <el-form-item v-if="formModel.bool_device" :label="$i18n.t('zy20241209.typeValue')" prop="value">
+            <el-input-number v-model="formModel.value" :disabled="deviceTypeDisabled"  :min="1"></el-input-number>
           </el-form-item>
-          <el-form-item v-if="formModel.bool_device" label="所在空间" prop="frame_type">
+          <el-form-item v-if="formModel.bool_device" :label="$i18n.t('zy20241209.locationSpace')" prop="frame_type">
             <el-checkbox-group v-model="formModel.frame_type">
-              <el-checkbox label="3" value="3">科室</el-checkbox>
-              <el-checkbox label="4" value="4">房间</el-checkbox>
-              <el-checkbox label="5" value="5">床位</el-checkbox>
+              <el-checkbox label="3" value="3">{{ $i18n.t('frameManage.part') }}</el-checkbox>
+              <el-checkbox label="4" value="4">{{ $i18n.t('frameManage.room2') }}</el-checkbox>
+              <el-checkbox label="5" value="5">{{ $i18n.t('frameManage.bed2') }}</el-checkbox>
             </el-checkbox-group>
           </el-form-item>
           <el-form-item>
-            <el-button type="primary" @click="onSubmit">立即创建</el-button>
-            <el-button @click="modelShow = false" :disabled="disabled">取消</el-button>
+            <el-button type="primary" @click="onSubmit">{{ $i18n.t('action.add') }}</el-button>
+            <el-button @click="modelShow = false" :disabled="disabled">{{ $i18n.t('action.cancel') }}</el-button>
           </el-form-item>
         </el-form>
       </el-dialog>
@@ -180,17 +180,17 @@
                  :width="this.$i18n.locale === 'zh' ? '50%' : '60%'">
         <el-form ref="deviceEditForm2" :rules="formRules2"
                  :label-width="this.$i18n.locale === 'zh' ? '120px' : '165px'" :model="formModel">
-          <el-form-item v-if="!formModel.id" label="语音" prop="language">
-            <el-select v-model="formModel.language" placeholder="请选择语言">
+          <el-form-item v-if="!formModel.id" :label="$i18n.t('zy20241209.lang')" prop="language">
+            <el-select v-model="formModel.language" :placeholder="$i18n.t('zy20241209.selectLang')">
               <el-option v-for="(item, index) in language" :key="index" :label="item.label" :value="item.value"></el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="翻译名" prop="title">
+          <el-form-item :label="$i18n.t('zy20241209.translate')" prop="title">
             <el-input v-model="formModel.title"></el-input>
           </el-form-item>
           <el-form-item>
-            <el-button type="primary" @click="onSubmit2">立即创建</el-button>
-            <el-button @click="languageModelShow = false" :disabled="disabled">取消</el-button>
+            <el-button type="primary" @click="onSubmit2">{{ $i18n.t('action.add') }}</el-button>
+            <el-button @click="languageModelShow = false" :disabled="disabled">{{ $i18n.t('action.cancel') }}</el-button>
           </el-form-item>
         </el-form>
       </el-dialog>
@@ -217,6 +217,7 @@ export default {
       boolPart: false,
       boolRoom: false,
       boolBed: false,
+      deviceTypeDisabled: false,
       needUpdateList: [],
       searchDeviceStr: '',
       isSave: false,
@@ -230,34 +231,34 @@ export default {
       },
       params: {},
       modelShow: false,
-      deviceEditTitle: '新增设备类型',
+      deviceEditTitle: this.$t('zy20241209.addDeviceType'),
       formRules: {
         name: [
-          this.MixinRequired('请输入名称')
+          this.MixinRequired(this.$t('action.inputName'))
         ],
         code: [
-          this.MixinRequired('请输入唯一编码')
+          this.MixinRequired(this.$t('zy20241209.inputCode'))
         ],
         value: [
-          this.MixinRequired('请输入类型值')
+          this.MixinRequired(this.$t('zy20241209.inputTypeValue'))
         ],
         frame_type: [
-          this.MixinRequired('请选择所在空间')
+          this.MixinRequired(this.$t('zy20241209.selectSpace'))
         ]
       },
       formRules2: {
         language: [
-          this.MixinRequired('请选择语言')
+          this.MixinRequired(this.$t('zy20241209.selectLang'))
         ],
         title: [
-          this.MixinRequired('请输入翻译名')
+          this.MixinRequired(this.$t('zy20241209.inputTranslate'))
         ]
       },
       disabled: false,
       languageList: [],
       nowTypeModel: {
         id: null,
-        name: '无'
+        name: this.$t('action.null')
       },
       languageModelShow: false,
       language: [
@@ -333,32 +334,34 @@ export default {
       }
       if (item) {
         this.formModel.parent_id = item.id
-        this.deviceEditTitle = '新增《' + item.name +'》下级设备类型'
+        this.deviceEditTitle = this.$t('zy20241209.addDeviceTypeMsg1') + item.name + this.$t('zy20241209.addDeviceTypeMsg2')
       } else {
-        this.deviceEditTitle = '新增设备类型'
+        this.deviceEditTitle = this.$t('zy20241209.addDeviceType')
       }
       this.disabled = false
       this.modelShow = true
+      this.deviceTypeDisabled = false // 新增设备可以选择设备类型
     },
     handleEdit(item) {
       this.formModel = this.MixinClone(item)
       if (item.bool_device) {
         this.formModel.frame_type = item.frame_type.split(',')
       }
-      this.deviceEditTitle = '修改《' + item.name +'》设备类型'
+      this.deviceEditTitle = this.$t('zy20241209.editDeviceTypeMsg1') + item.name + this.$t('zy20241209.editDeviceTypeMsg2')
       this.disabled = false
       this.modelShow = true
+      this.deviceTypeDisabled = true // 修改设备时,不能改变设备类型
     },
     formatFrame(val) {
       switch (val) {
         case '3':
-          return '科室'
+          return this.$t('frameManage.part')
         case '4':
-          return '房间'
+          return this.$t('frameManage.room2')
         case '5':
-          return '床位'
+          return this.$t('frameManage.bed2')
         default:
-          return '未知'
+          return this.$t('member.unknown')
       }
     },
     checkType(item) {
@@ -369,7 +372,7 @@ export default {
       this.API_GetLanguageList()
     },
     handleAddLg() {
-      this.deviceEditTitle = '新增《' + this.nowTypeModel.name +'》多语言'
+      this.deviceEditTitle = this.$t('zy20241209.addLangMsg1') + this.nowTypeModel.name + this.$t('zy20241209.addLangMsg2')
       this.formModel = {
         code: this.nowTypeModel.code,
         title: '',
@@ -380,7 +383,7 @@ export default {
     },
     handleEditLg(item) {
       this.formModel = this.MixinClone(item)
-      this.deviceEditTitle = '修改《' + this.nowTypeModel.name +'》多语言'
+      this.deviceEditTitle = this.$t('zy20241209.editLangMsg1') + this.nowTypeModel.name + this.$t('zy20241209.editLangMsg2')
       this.disabled = false
       this.languageModelShow = true
     },
@@ -455,7 +458,7 @@ export default {
     },
     handleDel(item) {
       if (item.children) {
-        this.$message.error('需要先删除子级设备类型')
+        this.$message.error(this.$t('zy20241209.deleteDeviceTypeMsg') + '')
         return
       }
       this.$confirm(this.$t('action.sureDelete'), this.$t('action.waring'), {
@@ -464,8 +467,13 @@ export default {
         type: 'warning'
       }).then(() => {
         API_DEVICE_TYPE.remove(item.id).then(res => {
-          this.$message.success(this.$t('action.editSuccess') + '')
-          this.API_GetDeviceTypeList()
+          if (res.success) {
+            this.$message.success(this.$t('action.editSuccess') + '')
+            this.API_GetDeviceTypeList()
+          }
+          else {
+            this.$message.error(res.message)
+          }
         })
       })
     },
@@ -476,8 +484,13 @@ export default {
         type: 'warning'
       }).then(() => {
         API_LANGUAGE.remove(id).then(res => {
-          this.$message.success(this.$t('action.editSuccess') + '')
-          this.API_GetLanguageList()
+          if (res.success) {
+            this.$message.success(this.$t('action.editSuccess') + '')
+            this.API_GetLanguageList()
+          }
+          else {
+            this.$message.error(res.message)
+          }
         })
       })
     }