Przeglądaj źródła

修改设备操作逻辑

wuyunfeng 4 lat temu
rodzic
commit
d7c63fbc06

+ 200 - 198
src/views/hospitalFrame/hospitalFrame.vue

@@ -9,58 +9,58 @@
         <el-button type="text" size="mini" @click="frameAddVisible = false">取消</el-button>
         <el-button type="text" size="mini" @click="frameAddVisible = false">取消</el-button>
       </div>
       </div>
     </div>
     </div>
-    <div id="params-container" v-if="hospital_frame">
+    <div v-if="hospital_frame" id="params-container">
       <el-card>
       <el-card>
         <div slot="header" class="clearfix">
         <div slot="header" class="clearfix">
-          <span><i class="el-icon-school"></i>科室</span>
+          <span><i class="el-icon-school" />科室</span>
         </div>
         </div>
         <div>
         <div>
-          <el-button type="text" class="add-params-btn" @click="handlePartDevice"><i class="el-icon-cpu"></i> 查看设备 [{{hospital_frame.device_count}}]</el-button>
+          <el-button type="text" class="add-params-btn" @click="handlePartDevice"><i class="el-icon-cpu" /> 查看设备 [{{ hospital_frame.device_count }}]</el-button>
         </div>
         </div>
       </el-card>
       </el-card>
-      <el-card v-if="hospital_frame.frame_room_vos" v-for="(item,index) in hospital_frame.frame_room_vos" :key="index">
-        <div slot="header" class="clearfix" v-if="item.frame_room!=null">
-          <span><i class="el-icon-house"></i> {{ item.frame_room.name }} 房</span>
-          <el-dropdown trigger="click" @command="handleGroupCommand" style="float: right">
-            <span class="el-dropdown-link">操作<i class="el-icon-arrow-down el-icon--right"></i></span>
+      <el-card v-for="(item,index) in hospital_frame.frame_room_vos" v-if="hospital_frame.frame_room_vos" :key="index">
+        <div v-if="item.frame_room!=null" slot="header" class="clearfix">
+          <span><i class="el-icon-house" /> {{ item.frame_room.name }} 房</span>
+          <el-dropdown trigger="click" style="float: right" @command="handleGroupCommand">
+            <span class="el-dropdown-link">操作<i class="el-icon-arrow-down el-icon--right" /></span>
             <el-dropdown-menu slot="dropdown">
             <el-dropdown-menu slot="dropdown">
               <el-dropdown-item :command="{type: 'edit', frame: item.frame_room}">编辑</el-dropdown-item>
               <el-dropdown-item :command="{type: 'edit', frame: item.frame_room}">编辑</el-dropdown-item>
               <el-dropdown-item :command="{type: 'delete', frame: item.frame_room}">删除</el-dropdown-item>
               <el-dropdown-item :command="{type: 'delete', frame: item.frame_room}">删除</el-dropdown-item>
-              <el-dropdown-item :command="{type: 'device', frame: item.frame_room}" divided><i class="el-icon-cpu"></i> 设备 {{item.device_count}}</el-dropdown-item>
+              <el-dropdown-item :command="{type: 'device', frame: item.frame_room}" divided><i class="el-icon-cpu" /> 设备 {{ item.device_count }}</el-dropdown-item>
             </el-dropdown-menu>
             </el-dropdown-menu>
           </el-dropdown>
           </el-dropdown>
         </div>
         </div>
         <template v-if="item.frame_bed_vos && item.frame_bed_vos.length > 0">
         <template v-if="item.frame_bed_vos && item.frame_bed_vos.length > 0">
           <div v-for="(subItem, i) in item.frame_bed_vos" :key="i" class="param-item">
           <div v-for="(subItem, i) in item.frame_bed_vos" :key="i" class="param-item">
-            <span><i class="el-icon-s-flag"></i> {{ subItem.frame_bed.name }} 床</span>
+            <span><i class="el-icon-s-flag" /> {{ subItem.frame_bed.name }} 床</span>
             <span v-if="subItem.customer_id">
             <span v-if="subItem.customer_id">
               <el-button style="width: 150px;" size="mini" plain round @click="handleEditPatient(subItem.customer_id,subItem.frame_bed.id)">
               <el-button style="width: 150px;" size="mini" plain round @click="handleEditPatient(subItem.customer_id,subItem.frame_bed.id)">
-                <i class="el-icon-user"></i> {{ subItem.customer_name+ ' '+ subItem.customer_age+subItem.customer_age_unit}}
+                <i class="el-icon-user" /> {{ subItem.customer_name+ ' '+ subItem.customer_age+subItem.customer_age_unit }}
                 <span v-if="subItem.customer_sex === 1">男</span>
                 <span v-if="subItem.customer_sex === 1">男</span>
                 <span v-else-if="subItem.customer_sex === 2">女</span>
                 <span v-else-if="subItem.customer_sex === 2">女</span>
                 <span v-else>未知</span>
                 <span v-else>未知</span>
               </el-button>
               </el-button>
             </span>
             </span>
             <span v-else>
             <span v-else>
-              <el-button size="mini" type="success" plain round @click="handleAddPatient(subItem.frame_bed)"><i class="el-icon-circle-plus-outline"></i> 病人</el-button>
+              <el-button size="mini" type="success" plain round @click="handleAddPatient(subItem.frame_bed)"><i class="el-icon-circle-plus-outline" /> 病人</el-button>
             </span>
             </span>
             <span>
             <span>
               <el-dropdown size="mini" @command="handleGroupCommand">
               <el-dropdown size="mini" @command="handleGroupCommand">
-                <span class="el-dropdown-link">操作<i class="el-icon-arrow-down el-icon--right"></i></span>
+                <span class="el-dropdown-link">操作<i class="el-icon-arrow-down el-icon--right" /></span>
                 <el-dropdown-menu slot="dropdown">
                 <el-dropdown-menu slot="dropdown">
                   <el-dropdown-item :command="{type: 'edit', frame: subItem.frame_bed}">编辑</el-dropdown-item>
                   <el-dropdown-item :command="{type: 'edit', frame: subItem.frame_bed}">编辑</el-dropdown-item>
                   <el-dropdown-item :command="{type: 'delete', frame: subItem.frame_bed}" style="color: #F56C6C">删除</el-dropdown-item>
                   <el-dropdown-item :command="{type: 'delete', frame: subItem.frame_bed}" style="color: #F56C6C">删除</el-dropdown-item>
-                  <el-dropdown-item :command="{type: 'device', frame: subItem.frame_bed}" divided><i class="el-icon-cpu"></i> 设备 {{subItem.device_count}}
+                  <el-dropdown-item :command="{type: 'device', frame: subItem.frame_bed}" divided><i class="el-icon-cpu" /> 设备 {{ subItem.device_count }}
                   </el-dropdown-item>
                   </el-dropdown-item>
                 </el-dropdown-menu>
                 </el-dropdown-menu>
               </el-dropdown>
               </el-dropdown>
             </span>
             </span>
           </div>
           </div>
-          <el-button type="text" class="add-params-btn" @click="handleAddFrame(item.frame_room.id, item.frame_room.name)"><i class="el-icon-circle-plus"></i> 添加床位</el-button>
+          <el-button type="text" class="add-params-btn" @click="handleAddFrame(item.frame_room.id, item.frame_room.name)"><i class="el-icon-circle-plus" /> 添加床位</el-button>
         </template>
         </template>
         <template v-else>
         <template v-else>
           <div class="param-item empty">暂无数据...</div>
           <div class="param-item empty">暂无数据...</div>
-          <el-button type="text" class="add-params-btn" @click="handleAddFrame(item.frame_room.id, item.frame_room.name)"><i class="el-icon-circle-plus"></i> 添加床位</el-button>
+          <el-button type="text" class="add-params-btn" @click="handleAddFrame(item.frame_room.id, item.frame_room.name)"><i class="el-icon-circle-plus" /> 添加床位</el-button>
         </template>
         </template>
       </el-card>
       </el-card>
     </div>
     </div>
@@ -70,17 +70,17 @@
       :visible.sync="dialogPatientVisible"
       :visible.sync="dialogPatientVisible"
       width="85%"
       width="85%"
     >
     >
-      <customer-edit :customer-id="customerId" :frame-id="frameId" @saved="handlePatientFinished"></customer-edit>
+      <customer-edit :customer-id="customerId" :frame-id="frameId" @saved="handlePatientFinished" />
     </el-dialog>
     </el-dialog>
 
 
     <el-dialog title="科室结构" :visible.sync="dialogFrameVisible" width="500px">
     <el-dialog title="科室结构" :visible.sync="dialogFrameVisible" width="500px">
-      <el-form :model="frameInfo" :rules="rules" ref="editForm" label-width="110px">
+      <el-form ref="editForm" :model="frameInfo" :rules="rules" label-width="110px">
         <el-row>
         <el-row>
           <el-col :span="24">
           <el-col :span="24">
             <!--医院结构名称-->
             <!--医院结构名称-->
             <el-form-item label="名称" prop="name">
             <el-form-item label="名称" prop="name">
               <el-input v-model="frameInfo.name" :maxlength="20">
               <el-input v-model="frameInfo.name" :maxlength="20">
-                <template slot="append">{{frameInfo.type === 4?"房":"床"}}</template>
+                <template slot="append">{{ frameInfo.type === 4?"房":"床" }}</template>
               </el-input>
               </el-input>
             </el-form-item>
             </el-form-item>
           </el-col>
           </el-col>
@@ -89,7 +89,7 @@
           <el-col :span="24">
           <el-col :span="24">
             <!--医院结构别名-->
             <!--医院结构别名-->
             <el-form-item label="别名" prop="alias">
             <el-form-item label="别名" prop="alias">
-              <el-input v-model="frameInfo.alias" :maxlength="20"></el-input>
+              <el-input v-model="frameInfo.alias" :maxlength="20" />
             </el-form-item>
             </el-form-item>
           </el-col>
           </el-col>
         </el-row>
         </el-row>
@@ -103,220 +103,222 @@
         </el-row>
         </el-row>
 
 
         <el-form-item>
         <el-form-item>
-          <el-button type="primary" @click="handlerSubmit('editForm')" class="save">保存修改</el-button>
+          <el-button type="primary" class="save" @click="handlerSubmit('editForm')">保存修改</el-button>
         </el-form-item>
         </el-form-item>
       </el-form>
       </el-form>
     </el-dialog>
     </el-dialog>
 
 
     <el-drawer
     <el-drawer
-      title="设备"
+      :title="selectedFrame.full_name+' 设备'"
       :visible.sync="deviceVisible"
       :visible.sync="deviceVisible"
       :append-to-body="true"
       :append-to-body="true"
       size="60%"
       size="60%"
-      >
-      <device-info :frame-id="frameId"></device-info>
+    >
+      <device-info :frame-id="frameId" :frame="selectedFrame" />
     </el-drawer>
     </el-drawer>
   </div>
   </div>
 </template>
 </template>
 
 
 <script>
 <script>
-  import * as HospitalFrame_API from '@/api/ncs_hospitalFrame'
-  import * as RegExp from "@/utils/RegExp";
-  import customerEdit from '@/views/customer/customerEdit'
-  import DeviceInfo from '@/views/ncs-device/deviceInfo'
+import * as HospitalFrame_API from '@/api/ncs_hospitalFrame'
+import * as RegExp from '@/utils/RegExp'
+import customerEdit from '@/views/customer/customerEdit'
+import DeviceInfo from '@/views/ncs-device/deviceInfo'
 
 
-  export default {
-    name: 'hospitalFrame',
-    components: { DeviceInfo, customerEdit },
-    data: function() {
-      return {
-        hospital_frame: null,
-        frameAddVisible: false,
-        frameName: '',
-        dialogPatientVisible: false,
-        customerId: null,
-        dialogFrameVisible: false,
-        frameInfo: {},
-        deviceVisible: false,
-        frameId: 0,
-        rules: {
-          name: [
-            this.MixinRequired('请输入名称!'),
-            { min: 1, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' },
-            {
-              validator: (rule, value, callback) => {
-                if (!RegExp.userName.test(value)) {
-                  callback(new Error('只支持汉字、字母、数字、“-”、“_”的组合!'))
-                } else {
-                  callback()
-                }
+export default {
+  name: 'HospitalFrame',
+  components: { DeviceInfo, customerEdit },
+  data: function() {
+    return {
+      hospital_frame: null,
+      frameAddVisible: false,
+      frameName: '',
+      dialogPatientVisible: false,
+      customerId: null,
+      dialogFrameVisible: false,
+      frameInfo: {},
+      deviceVisible: false,
+      frameId: 0,
+      selectedFrame: {},
+      rules: {
+        name: [
+          this.MixinRequired('请输入名称!'),
+          { min: 1, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' },
+          {
+            validator: (rule, value, callback) => {
+              if (!RegExp.userName.test(value)) {
+                callback(new Error('只支持汉字、字母、数字、“-”、“_”的组合!'))
+              } else {
+                callback()
               }
               }
             }
             }
-          ],
-          alias: [
-            { min: 1, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' },
-            {
-              validator: (rule, value, callback) => {
-                if (!value) {
-                  callback()
-                }
-                if (!RegExp.userName.test(value)) {
-                  callback(new Error('只支持汉字、字母、数字、“-”、“_”的组合!'))
-                } else {
-                  callback()
-                }
+          }
+        ],
+        alias: [
+          { min: 1, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' },
+          {
+            validator: (rule, value, callback) => {
+              if (!value) {
+                callback()
+              }
+              if (!RegExp.userName.test(value)) {
+                callback(new Error('只支持汉字、字母、数字、“-”、“_”的组合!'))
+              } else {
+                callback()
               }
               }
             }
             }
-          ]
-        },
-        fullName: null
+          }
+        ]
+      },
+      fullName: null
+    }
+  },
+  watch: {
+    deviceVisible: function(newData) {
+      if (!newData) {
+        this.GET_All()
+      }
+    }
+  },
+  mounted() {
+    this.GET_All()
+  },
+  methods: {
+    GET_All() {
+      HospitalFrame_API.getHospitalFrameList(this.$store.getters.userInfo.last_login_shopid).then(response => {
+        if (response) {
+          console.log(response)
+          this.hospital_frame = response
+        }
+      }).catch(response => {
+        this.$message({
+          type: 'info',
+          message: response.message
+        })
+      })
+    },
+    /** 下拉触发 */
+    handleGroupCommand(object) {
+      console.log(object)
+      this.selectedFrame = object.frame
+      switch (object.type) {
+        case 'edit':
+          this.handelEditFrame(object.frame)
+          break
+        case 'delete':
+          this.handlerDeleteFrame(object.frame.id)
+          break
+        case 'device':
+          this.frameId = object.frame.id
+          this.openDeviceList()
+          break
       }
       }
     },
     },
-    mounted() {
+    handleAddPatient(bedFrame) {
+      this.customerId = 0
+      this.frameId = bedFrame.id
+      this.dialogPatientVisible = true
+    },
+    handlePatientFinished() {
+      this.dialogPatientVisible = false
       this.GET_All()
       this.GET_All()
     },
     },
-    watch: {
-      deviceVisible: function(newData) {
-        if (!newData) {
-          this.GET_All()
-        }
+    handleEditPatient(id, frameId) {
+      this.dialogPatientVisible = true
+      this.customerId = id
+      this.frameId = frameId
+    },
+    // frame handle
+    handleAddRoom() {
+      let parent_id = null
+      if (this.hospital_frame) {
+        parent_id = this.hospital_frame.frame_part.id
       }
       }
+      const params = { type: 4, name: this.frameName, part_id: this.$store.getters.partId, parent_id: parent_id }
+      params.full_name = params.name + '房'
+      HospitalFrame_API.addHospitalFrame(params).then(response => {
+        this.$message.success('添加成功!')
+        this.GET_All()
+      })
     },
     },
-    methods: {
-      GET_All() {
-        HospitalFrame_API.getHospitalFrameList(this.$store.getters.userInfo.last_login_shopid).then(response => {
-          if (response) {
-            console.log(response)
-            this.hospital_frame = response
-          }
+    handleAddFrame(id, name) { // 新增床位
+      this.frameInfo = {}
+      this.frameInfo = { parent_id: id, type: 5 }
+      this.fullName = name
+      this.dialogFrameVisible = true
+    },
+    handelEditFrame(frame) {
+      this.frameInfo = { id: frame.id, type: frame.type, name: frame.name, alias: frame.alias, full_name: frame.full_name }
+      this.dialogFrameVisible = true
+    },
+    handleFrameFinished() {
+      this.dialogFrameVisible = false
+      this.GET_All()
+    },
+    /** 单条数据删除处理 */
+    handlerDeleteFrame(ids) {
+      this.$confirm('确定要删除此结构及其所有下级吗?', '警告', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        HospitalFrame_API.deleteHospitalFrame(ids).then(response => {
+          this.$message({
+            type: 'success',
+            message: '已删除!'
+          })
+          this.GET_All()
         }).catch(response => {
         }).catch(response => {
           this.$message({
           this.$message({
             type: 'info',
             type: 'info',
             message: response.message
             message: response.message
           })
           })
         })
         })
-      },
-      /** 下拉触发 */
-      handleGroupCommand(object) {
-        console.log(object)
-        switch (object.type) {
-          case 'edit':
-            this.handelEditFrame(object.frame)
-            break
-          case 'delete':
-            this.handlerDeleteFrame(object.frame.id)
-            break
-          case 'device':
-            this.frameId = object.frame.id
-            this.openDeviceList()
-            break
-        }
-      },
-      handleAddPatient(bedFrame) {
-        this.customerId = 0
-        this.frameId = bedFrame.id
-        this.dialogPatientVisible = true
-      },
-      handlePatientFinished() {
-        this.dialogPatientVisible = false
-        this.GET_All()
-      },
-      handleEditPatient(id,frameId) {
-        this.dialogPatientVisible = true
-        this.customerId = id
-        this.frameId = frameId
-      },
-      // frame handle
-      handleAddRoom() {
-        let parent_id = null
-        if (this.hospital_frame) {
-          parent_id = this.hospital_frame.frame_part.id
-        }
-        const params = { type: 4, name: this.frameName, part_id: this.$store.getters.partId, parent_id: parent_id}
-        params.full_name = params.name + '房'
-        HospitalFrame_API.addHospitalFrame(params).then(response => {
-          this.$message.success('添加成功!')
-          this.GET_All()
-        })
-      },
-      handleAddFrame(id, name) { // 新增床位
-        this.frameInfo = {}
-        this.frameInfo = { parent_id: id, type: 5 }
-        this.fullName = name
-        this.dialogFrameVisible = true
-      },
-      handelEditFrame(frame) {
-        this.frameInfo = { id: frame.id, type: frame.type, name: frame.name, alias: frame.alias, full_name: frame.full_name }
-        this.dialogFrameVisible = true
-      },
-      handleFrameFinished() {
-        this.dialogFrameVisible = false
-        this.GET_All()
-      },
-      /** 单条数据删除处理 */
-      handlerDeleteFrame(ids) {
-        this.$confirm('确定要删除此结构及其所有下级吗?', '警告', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          type: 'warning'
-        }).then(() => {
-          HospitalFrame_API.deleteHospitalFrame(ids).then(response => {
-            this.$message({
-              type: 'success',
-              message: '已删除!'
-            })
-            this.GET_All()
-          }).catch(response => {
-            this.$message({
-              type: 'info',
-              message: response.message
-            })
-          })
-        })
-      },
+      })
+    },
 
 
-      // --------------------设备管理
-      handlePartDevice() {
-        this.frameId = this.hospital_frame.frame_part.id
-        this.openDeviceList()
-      },
-      openDeviceList() {
-        this.deviceVisible = true
-      },
-      handlerSubmit(formName) {
-        this.$refs[formName].validate(valid => {
-          if (valid) {
-            const params = this.MixinClone(this.frameInfo)
-            if (params.id) {
-              if (params.type === 5) {
-                const name = params.full_name.split('-')
-                params.full_name = name[0] + '-' + params.name + '床'
-              } else if (params.type === 4) {
-                params.full_name = params.name + '房'
-              }
-              HospitalFrame_API.updateHospitalFrame(params.id, params).then(response => {
-                this.$message.success('修改成功!')
-                this.handleFrameFinished()
-              })
-            } else {
-              if (!params.part_id) {
-                params.part_id = this.$store.getters.partId
-              }
-              params.full_name = this.fullName + '房-' + params.name + '床'
-              HospitalFrame_API.addHospitalFrame(params).then(response => {
-                this.$message.success('添加成功!')
-                this.handleFrameFinished()
-              })
+    // --------------------设备管理
+    handlePartDevice() {
+      this.frameId = this.hospital_frame.frame_part.id
+      this.openDeviceList()
+    },
+    openDeviceList() {
+      this.deviceVisible = true
+    },
+    handlerSubmit(formName) {
+      this.$refs[formName].validate(valid => {
+        if (valid) {
+          const params = this.MixinClone(this.frameInfo)
+          if (params.id) {
+            if (params.type === 5) {
+              const name = params.full_name.split('-')
+              params.full_name = name[0] + '-' + params.name + '床'
+            } else if (params.type === 4) {
+              params.full_name = params.name + '房'
             }
             }
+            HospitalFrame_API.updateHospitalFrame(params.id, params).then(response => {
+              this.$message.success('修改成功!')
+              this.handleFrameFinished()
+            })
           } else {
           } else {
-            this.$message.error('表单填写有误,请检查!')
-            return false
+            if (!params.part_id) {
+              params.part_id = this.$store.getters.partId
+            }
+            params.full_name = this.fullName + '房-' + params.name + '床'
+            HospitalFrame_API.addHospitalFrame(params).then(response => {
+              this.$message.success('添加成功!')
+              this.handleFrameFinished()
+            })
           }
           }
-        })
-      }
-
+        } else {
+          this.$message.error('表单填写有误,请检查!')
+          return false
+        }
+      })
     }
     }
+
   }
   }
+}
 </script>
 </script>
 
 
 <style type="text/scss" lang="scss" scoped>
 <style type="text/scss" lang="scss" scoped>

+ 48 - 17
src/views/ncs-broadcast/index.vue

@@ -35,7 +35,7 @@
         @current-change="handlePageCurrentChange"
         @current-change="handlePageCurrentChange"
       />
       />
     </ag-grid-layout>
     </ag-grid-layout>
-    <!-- 新建病区弹窗 -->
+    <!-- 新建广播弹窗 -->
     <el-dialog :title.sync="formtitle" :visible.sync="formshow" width="55%">
     <el-dialog :title.sync="formtitle" :visible.sync="formshow" width="55%">
       <div>
       <div>
         <el-form ref="editform" :rules="rules" label-width="120px" :model="formmodel">
         <el-form ref="editform" :rules="rules" label-width="120px" :model="formmodel">
@@ -53,9 +53,9 @@
             </el-col>
             </el-col>
             <el-col :span="12">
             <el-col :span="12">
               <el-form-item label="广播模式" prop="broadcast_mode">
               <el-form-item label="广播模式" prop="broadcast_mode">
-                <el-radio-group v-model="formmodel.broadcast_mode">
-                  <el-radio label="1">手动模式</el-radio>
-                  <el-radio label="2">自动模式</el-radio>
+                <el-radio-group v-model="formmodel.broadcast_mode" @change="broadcastModeChanage">
+                  <el-radio :label="1">手动模式</el-radio>
+                  <el-radio :label="2">自动模式</el-radio>
                 </el-radio-group>
                 </el-radio-group>
               </el-form-item>
               </el-form-item>
             </el-col>
             </el-col>
@@ -63,22 +63,17 @@
           <el-row>
           <el-row>
             <el-col :span="12">
             <el-col :span="12">
               <el-form-item label="播放模式(自动)" prop="play_mode">
               <el-form-item label="播放模式(自动)" prop="play_mode">
-                <el-radio-group v-model="formmodel.play_mode">
-                  <el-radio label="1">定时播放</el-radio>
-                  <el-radio label="2">定次播放</el-radio>
+                <el-radio-group v-model="formmodel.play_mode" @change="playModeChange">
+                  <el-radio :label="1">定时播放</el-radio>
+                  <el-radio :label="2">定次播放</el-radio>
                 </el-radio-group>
                 </el-radio-group>
               </el-form-item>
               </el-form-item>
             </el-col>
             </el-col>
             <el-col :span="12">
             <el-col :span="12">
-              <el-form-item label="定时播放时段">
+              <el-form-item label="自动播放开始" prop="play_start">
                 <el-time-picker
                 <el-time-picker
-                  v-model="timeRange"
-                  is-range
-                  value-format="yyyy-MM-dd HH:mm:ss"
-                  range-separator="至"
-                  start-placeholder="开始时间"
-                  end-placeholder="结束时间"
-                  placeholder="选择时间范围"
+                  v-model="formmodel.play_start"
+                  placeholder="任意时间点"
                 />
                 />
               </el-form-item>
               </el-form-item>
             </el-col>
             </el-col>
@@ -87,16 +82,26 @@
 
 
           <el-row>
           <el-row>
             <el-col :span="12">
             <el-col :span="12">
+              <el-form-item label="定时播放结束" prop="play_end">
+                <el-time-picker
+                  v-model="formmodel.play_end"
+                  placeholder="任意时间点"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
               <el-form-item label="定次播放次数" prop="repeat_times">
               <el-form-item label="定次播放次数" prop="repeat_times">
                 <el-input-number v-model="formmodel.repeat_times" :min="1" :max="100" label="repeat_times" />
                 <el-input-number v-model="formmodel.repeat_times" :min="1" :max="100" label="repeat_times" />
               </el-form-item>
               </el-form-item>
             </el-col>
             </el-col>
+
+          </el-row>
+          <el-row>
             <el-col :span="12">
             <el-col :span="12">
               <el-form-item label="是否启用" prop="status">
               <el-form-item label="是否启用" prop="status">
                 <el-checkbox v-model="formmodel.status" :true-label="1" :false-label="0">开启此广播</el-checkbox>
                 <el-checkbox v-model="formmodel.status" :true-label="1" :false-label="0">开启此广播</el-checkbox>
               </el-form-item>
               </el-form-item>
             </el-col>
             </el-col>
-
           </el-row>
           </el-row>
           <el-row>
           <el-row>
             <el-col :span="24">
             <el-col :span="24">
@@ -122,7 +127,7 @@
         <el-button type="primary" @click="handlerFormSubmit('editform')">确 定</el-button>
         <el-button type="primary" @click="handlerFormSubmit('editform')">确 定</el-button>
       </div>
       </div>
     </el-dialog>
     </el-dialog>
-    <!-- 新建病区弹窗结束 -->
+    <!-- 新建广播弹窗结束 -->
   </div>
   </div>
 </template>
 </template>
 
 
@@ -162,6 +167,12 @@ export default {
         ],
         ],
         repeat_times: [
         repeat_times: [
           { required: true, message: '播放次数必须填写', trigger: 'blur' }
           { required: true, message: '播放次数必须填写', trigger: 'blur' }
+        ],
+        play_start: [
+          { required: true, message: '自动模式开始时间必须选择', trigger: 'blur' }
+        ],
+        play_end: [
+          { required: true, message: '定时播放结束时间必须选择', trigger: 'blur' }
         ]
         ]
       },
       },
       timeRange: [new Date(2020, 11, 11, 7, 0), new Date(2020, 11, 11, 8, 0)],
       timeRange: [new Date(2020, 11, 11, 7, 0), new Date(2020, 11, 11, 8, 0)],
@@ -511,6 +522,26 @@ export default {
           })
           })
         }
         }
       })
       })
+    },
+    broadcastModeChanage(val) { // 变换广播模式,手动模式可以不选择播放模式,自动模式需要选择播放模式,定时播放或者定次播放
+      if (val === 1) { // 手动模式
+        this.rules.play_mode[0].required = false
+        this.rules.repeat_times[0].required = false
+        this.rules.play_end[0].required = false
+        this.rules.play_start[0].required = false
+      } else {
+        this.rules.play_mode[0].required = true
+        this.rules.repeat_times[0].required = false
+        this.rules.play_end[0].required = false
+        this.rules.play_start[0].required = false
+      }
+    },
+    playModeChange(val) {
+      if (val === 1) {
+
+      }else{
+
+      }
     }
     }
   }
   }
 }
 }

+ 36 - 16
src/views/ncs-device/device-edit.vue

@@ -93,6 +93,13 @@
             </el-form-item>
             </el-form-item>
           </el-col>
           </el-col>
         </el-row>
         </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="设备位置">
+              <el-input v-model="formmodel.frame_name" :readonly="true" clearable placeholder="" />
+            </el-form-item>
+          </el-col>
+        </el-row>
 
 
         <el-row>
         <el-row>
           <el-col :span="12">
           <el-col :span="12">
@@ -109,7 +116,6 @@
       <el-button type="primary" @click="handlerFormSubmit('editform')">确 定</el-button>
       <el-button type="primary" @click="handlerFormSubmit('editform')">确 定</el-button>
     </div>
     </div>
 
 
-
   </div>
   </div>
 </template>
 </template>
 
 
@@ -126,13 +132,23 @@ export default {
     frameId: {
     frameId: {
       type: Number,
       type: Number,
       default: 0
       default: 0
+    },
+    frame: {
+      type: Object,
+      default: null
+    },
+    nextIp: {
+      type: String,
+      default: ''
     }
     }
   },
   },
   data: function() {
   data: function() {
     return {
     return {
       /** 表单数据 */
       /** 表单数据 */
       formmodel: {
       formmodel: {
-        eth_ip: null
+        eth_ip: this.nextIp,
+        frame_name: this.frame.full_name,
+        eth_mac: ''
       },
       },
       /** 弹出窗口标题信息 */
       /** 弹出窗口标题信息 */
       formtitle: '新增设备',
       formtitle: '新增设备',
@@ -163,34 +179,36 @@ export default {
       deviceEthIPReadonly: false,
       deviceEthIPReadonly: false,
       wifiHostReadonly: true,
       wifiHostReadonly: true,
       /** 设备类型选择禁用 编辑时不允许修改设备类型 */
       /** 设备类型选择禁用 编辑时不允许修改设备类型 */
-      deviceTypeDisabled: false,
-      nextIp: 'testIPCode'
+      deviceTypeDisabled: false
+    }
+  },
+  computed: {
+    tableHeight() {
+      return this.mainAreaHeight - 130
     }
     }
   },
   },
   watch: {
   watch: {
-    deviceId: function () {
-      if (this.deviceId != 0) {
+    deviceId: function(val, old) {
+      if (this.deviceId !== 0) {
         this.getDeviceById()
         this.getDeviceById()
         this.editflag = 1
         this.editflag = 1
       } else {
       } else {
         this.handlerAdd()
         this.handlerAdd()
       }
       }
+    },
+    nextIp(val, old) {
+      this.formmodel.eth_ip = val
     }
     }
   },
   },
-  computed: {
-    tableHeight() {
-      return this.mainAreaHeight - 130
-    }
-  },
-  mounted() {
-    if (this.deviceId != 0) {
+  async mounted() {
+    if (this.deviceId !== 0) {
       this.getDeviceById()
       this.getDeviceById()
     }
     }
   },
   },
   methods: {
   methods: {
     /** 新增按钮 */
     /** 新增按钮 */
     async handlerAdd() {
     async handlerAdd() {
-      // this.nextIp = await API_Device.getNextIP()
+      console.log('nextip', this.nextIp)
       this.deviceTypeDisabled = false
       this.deviceTypeDisabled = false
       this.formmodel = {
       this.formmodel = {
         part_id: this.$store.getters.partId,
         part_id: this.$store.getters.partId,
@@ -199,7 +217,7 @@ export default {
         eth_mac: null,
         eth_mac: null,
         eth_ip: this.nextIp,
         eth_ip: this.nextIp,
         wifi_mac: 'FF:FF:FF:FF:FF:FF',
         wifi_mac: 'FF:FF:FF:FF:FF:FF',
-        wifi_ip: ' ',
+        wifi_ip: '',
         status: 1
         status: 1
       }
       }
       if (this.$refs.editform) {
       if (this.$refs.editform) {
@@ -221,6 +239,8 @@ export default {
               this.$message.success('保存成功!')
               this.$message.success('保存成功!')
               this.handlerAdd()
               this.handlerAdd()
               this.$emit('saved')
               this.$emit('saved')
+            }).catch(err => {
+              this.$message.error(err)
             })
             })
           } else {
           } else {
             /** 修改 */
             /** 修改 */
@@ -318,7 +338,7 @@ export default {
       this.rules.code[0].required = true // 设备出厂编号 ,总线转换盒不需要填写
       this.rules.code[0].required = true // 设备出厂编号 ,总线转换盒不需要填写
       this.deviceEthIPReadonly = false // ip 地址只读
       this.deviceEthIPReadonly = false // ip 地址只读
       this.wifiHostReadonly = true
       this.wifiHostReadonly = true
-     if (value === 3) {
+      if (value === 3) {
         this.wifiHostReadonly = false
         this.wifiHostReadonly = false
       } else if (value === 11) {
       } else if (value === 11) {
         this.rules.code[0].required = false
         this.rules.code[0].required = false

+ 177 - 172
src/views/ncs-device/deviceInfo.vue

@@ -2,31 +2,31 @@
   <div>
   <div>
     <en-table-layout
     <en-table-layout
       toolbar
       toolbar
-      @selection-change="selectFun"
       pagination
       pagination
-      :tableData="tableData"
+      :table-data="tableData"
       :height="600"
       :height="600"
       :loading="loading"
       :loading="loading"
       :default-sort="{prop: 'id', order: 'ascending'}"
       :default-sort="{prop: 'id', order: 'ascending'}"
+      @selection-change="selectFun"
     >
     >
       <!--工具栏-->
       <!--工具栏-->
       <div slot="toolbar" class="inner-toolbar">
       <div slot="toolbar" class="inner-toolbar">
         <div class="toolbar-search">
         <div class="toolbar-search">
-          <en-table-search @search="handlerSearch" placeholder="请输入搜索关键字"/>
+          <en-table-search placeholder="请输入搜索关键字" @search="handlerSearch" />
         </div>
         </div>
         <div class="toolbar-btns">
         <div class="toolbar-btns">
           <el-button type="primary" @click="handleAddDeviceInfo">新增</el-button>
           <el-button type="primary" @click="handleAddDeviceInfo">新增</el-button>
-           <el-button type="danger" :disabled="multipleSelection.length === 0" @click="batchDelete">批量删除</el-button>
+          <el-button type="danger" :disabled="multipleSelection.length === 0" @click="batchDelete">批量删除</el-button>
         </div>
         </div>
       </div>
       </div>
       <!--表头-->
       <!--表头-->
       <template slot="table-columns">
       <template slot="table-columns">
-        <el-table-column type="selection" width="55" align="center"></el-table-column>
-        <el-table-column prop="device_type" label="设备类型" align="center" :formatter="formatterDeviceType"></el-table-column>
-        <el-table-column prop="code" label="出厂编号" align="center"></el-table-column>
-        <el-table-column prop="name" label="设备名称" align="center"></el-table-column>
-        <el-table-column prop="model" label="设备型号" align="center"></el-table-column>
-        <el-table-column prop="uart_address" label="串口地址" align="center"></el-table-column>
+        <el-table-column type="selection" width="55" align="center" />
+        <el-table-column prop="device_type" label="设备类型" align="center" :formatter="formatterDeviceType" />
+        <el-table-column prop="code" label="出厂编号" align="center" />
+        <el-table-column prop="name" label="设备名称" align="center" />
+        <el-table-column prop="model" label="设备型号" align="center" />
+        <el-table-column prop="uart_address" label="串口地址" align="center" />
         <el-table-column label="操作" width="180">
         <el-table-column label="操作" width="180">
           <template slot-scope="scope">
           <template slot-scope="scope">
             <el-button type="success" size="mini" @click="handlerEdit(scope.$index,scope.row)">
             <el-button type="success" size="mini" @click="handlerEdit(scope.$index,scope.row)">
@@ -41,193 +41,198 @@
 
 
       <!--翻页-->
       <!--翻页-->
       <el-pagination
       <el-pagination
-        slot="pagination"
         v-if="pageData"
         v-if="pageData"
+        slot="pagination"
         :current-page="pageData.page_no"
         :current-page="pageData.page_no"
         :page-sizes="[20, 30, 50, 100]"
         :page-sizes="[20, 30, 50, 100]"
         :page-size="pageData.page_size"
         :page-size="pageData.page_size"
+        layout="total, sizes, prev, pager, next, jumper"
+        :total="pageData.data_total"
         @size-change="handlePageSizeChange"
         @size-change="handlePageSizeChange"
         @current-change="handlePageCurrentChange"
         @current-change="handlePageCurrentChange"
-        layout="total, sizes, prev, pager, next, jumper"
-        :total="pageData.data_total">
-      </el-pagination>
+      />
     </en-table-layout>
     </en-table-layout>
 
 
-
-    <el-dialog title="编辑设备信息" :visible.sync="dialogAddDeviceInfoVisible" :append-to-body="true" width="80%">
-      <device-edit :device-id="deviceId" :frame-id="frameId" @saved="handlePatientFinished"></device-edit>
+    <el-dialog title="编辑设备信息" :visible.sync="dialogAddDeviceInfoVisible" :append-to-body="true" width="60%">
+      <device-edit :device-id="deviceId" :frame-id="frameId" :frame="frame" :next-ip="nextIp" @saved="handlePatientFinished" />
     </el-dialog>
     </el-dialog>
 
 
   </div>
   </div>
 </template>
 </template>
 
 
 <script>
 <script>
-  import * as API_Device from '@/api/ncs_device'
-  import DeviceEdit from '@/views/ncs-device/device-edit'
+import * as API_Device from '@/api/ncs_device'
+import DeviceEdit from '@/views/ncs-device/device-edit'
 
 
-  export default {
-    name: 'deviceInfo',
-    components: { DeviceEdit },
-    props: {
-      frameId: {
-        type: Number,
-        default: 0
-      }
+export default {
+  name: 'DeviceInfo',
+  components: { DeviceEdit },
+  props: {
+    frameId: {
+      type: Number,
+      default: 0
     },
     },
-    data: function() {
-      return {
-        /** 列表loading状态 */
-        loading: false,
-        /** 列表参数 */
-        params: {
-          page_size: 10,
-          page_no: 1,
-          sort: 'id',
-          dir: 'asc'
-        },
-        currentRow: {},
-        /** 列表数据 */
-        tableData: [],
-        pageData: [],
-        dialogAddDeviceInfoVisible: false,
-        /** 选中行数据 */
-        multipleSelection: [],
-        lookForm: {},
-        formshow: false,
-        deviceId: 0
-      }
-    },
-    mounted() {
+    frame: {
+      type: Object,
+      default: null
+    }
+  },
+  data: function() {
+    return {
+      /** 列表loading状态 */
+      loading: false,
+      /** 列表参数 */
+      params: {
+        page_size: 10,
+        page_no: 1,
+        sort: 'id',
+        dir: 'asc'
+      },
+      currentRow: {},
+      /** 列表数据 */
+      tableData: [],
+      pageData: [],
+      dialogAddDeviceInfoVisible: false,
+      /** 选中行数据 */
+      multipleSelection: [],
+      lookForm: {},
+      formshow: false,
+      deviceId: 0,
+      nextIp: ''
+    }
+  },
+  watch: {
+    frameId: function() {
+      console.log('this.frameId=', this.frameId)
       this.GET_List()
       this.GET_List()
-      console.log(this.frameId)
-    },
-    watch: {
-      frameId: function() {
-        console.log('this.frameId=',this.frameId)
-        this.GET_List()
+    }
+  },
+  mounted() {
+    this.GET_List()
+    console.log(this.frameId)
+  },
+  methods: {
+    formatterDeviceType(row, column, cellValue) {
+      switch (cellValue) {
+        case 1:
+          return '护士主机'
+        case 2:
+          return '医生主机'
+        case 3:
+          return '门口机'
+        case 4:
+          return '病床分机'
+        case 5:
+          return 'LCD走廊屏'
+        case 6:
+          return 'LED点阵屏'
+        case 7:
+          return '护士腕表'
+        case 8:
+          return '护工腕表'
+        case 9:
+          return '病人腕表'
+        case 10:
+          return '手机App'
+        case 11:
+          return '总线转换盒'
+        case 12:
+          return '模拟分机'
+        case 13:
+          return '模拟紧急按钮'
+        case 14:
+          return '模拟门灯'
+        case 15:
+          return '遥控器'
+        case 16:
+          return '信标'
+        case 17:
+          return '看板'
+        default:
+          return '未知设备'
       }
       }
     },
     },
-    methods: {
-      formatterDeviceType(row, column, cellValue) {
-        switch (cellValue) {
-          case 1:
-            return '护士主机'
-          case 2:
-            return '医生主机'
-          case 3:
-            return '门口机'
-          case 4:
-            return '病床分机'
-          case 5:
-            return 'LCD走廊屏'
-          case 6:
-            return 'LED点阵屏'
-          case 7:
-            return '护士腕表'
-          case 8:
-            return '护工腕表'
-          case 9:
-            return '病人腕表'
-          case 10:
-            return '手机App'
-          case 11:
-            return '总线转换盒'
-          case 12:
-            return '模拟分机'
-          case 13:
-            return '模拟紧急按钮'
-          case 14:
-            return '模拟门灯'
-          case 15:
-            return '遥控器'
-          case 16:
-            return '信标'
-          case 17:
-            return '看板'
-          default:
-            return '未知设备'
+    /** 选择行变化时,记录选中的行数据 */
+    selectFun(val) {
+      this.multipleSelection = val
+    },
+    /** 加载设备信息列表 */
+    GET_List() {
+      this.loading = true
+      this.params.fixedCondition = ' part_id=' + this.$store.getters.partId + ' and frame_id=' + this.frameId
+      API_Device.getList(this.params).then(res => {
+        this.loading = false
+        this.tableData = res.data
+        this.pageData = {
+          page_no: res.page_no,
+          page_size: res.page_size,
+          data_total: res.data_total
         }
         }
-      },
-      /** 选择行变化时,记录选中的行数据 */
-      selectFun(val) {
-        this.multipleSelection = val
-      },
-      /** 加载设备信息列表 */
-      GET_List() {
-        this.loading = true
-        this.params.fixedCondition = ' part_id=' + this.$store.getters.partId + ' and frame_id=' + this.frameId
-        API_Device.getList(this.params).then(res => {
-          this.loading = false
-          this.tableData = res.data
-          this.pageData = {
-            page_no: res.page_no,
-            page_size: res.page_size,
-            data_total: res.data_total
+      }).catch(() => {
+        this.loading = false
+      })
+    },
+    /** 处理搜索 **/
+    handlerSearch(keywords) {
+      this.params.query = keywords
+      this.GET_List()
+    },
+    /** 单条数据删除处理 */
+    handlerDelete(ids) {
+      const test = '你确定要删除此设备信息?'
+      const _this = this
+      this.$confirm(test, '警告', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        API_Device.remove(ids).then(
+          response => {
+            _this.GET_List()
           }
           }
-        }).catch(() => {
-          this.loading = false
-        })
-      },
-      /** 处理搜索 **/
-      handlerSearch(keywords) {
-        this.params.query = keywords
-        this.GET_List()
-      },
-      /** 单条数据删除处理 */
-      handlerDelete(ids) {
-        let test = '你确定要删除此设备信息?'
-        let _this = this
-        this.$confirm(test, '警告', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          type: 'warning'
-        }).then(() => {
-          API_Device.remove(ids).then(
-            response => {
-              _this.GET_List()
-            }
-          ).catch(response => {
-            _this.$message({
-              type: 'info',
-              message: response.message
-            })
+        ).catch(response => {
+          _this.$message({
+            type: 'info',
+            message: response.message
           })
           })
         })
         })
-      },
-      /** 批量数据删除处理(删除选中的行) */
-      batchDelete: function() {
-        const ids = []
-        this.multipleSelection.forEach(function(item) {
-          ids.push(item.id)
-        })
-        this.handlerDelete(ids.join(','), 'del')
-      },
-      /** 编辑设备信息 */
-      handlerEdit(index, row) {
-        console.log(row)
-        this.deviceId = row.id
-        this.dialogAddDeviceInfoVisible = true
-      },
-      /** 分页大小发生改变 */
-      handlePageSizeChange(size) {
-        this.params.page_size = size
-        this.GET_List()
-      },
-      /** 分页页数发生改变 */
-      handlePageCurrentChange(page) {
-        this.params.page_no = page
-        this.GET_List()
-      },
-      handleAddDeviceInfo() {
-        this.deviceId = 0
-        this.dialogAddDeviceInfoVisible = true
-      },
-      handlePatientFinished() {
-        this.dialogAddDeviceInfoVisible = false
-        this.GET_List()
-      }
+      })
+    },
+    /** 批量数据删除处理(删除选中的行) */
+    batchDelete: function() {
+      const ids = []
+      this.multipleSelection.forEach(function(item) {
+        ids.push(item.id)
+      })
+      this.handlerDelete(ids.join(','), 'del')
+    },
+    /** 编辑设备信息 */
+    handlerEdit(index, row) {
+      console.log(row)
+      this.deviceId = row.id
+      this.dialogAddDeviceInfoVisible = true
+    },
+    /** 分页大小发生改变 */
+    handlePageSizeChange(size) {
+      this.params.page_size = size
+      this.GET_List()
+    },
+    /** 分页页数发生改变 */
+    handlePageCurrentChange(page) {
+      this.params.page_no = page
+      this.GET_List()
+    },
+    async handleAddDeviceInfo() {
+      this.nextIp = await API_Device.getNextIP()
+      this.deviceId = 0
+      this.dialogAddDeviceInfoVisible = true
+    },
+    handlePatientFinished() {
+      this.dialogAddDeviceInfoVisible = false
+      this.GET_List()
     }
     }
   }
   }
+}
 </script>
 </script>
 
 
 <style type="text/scss" scoped>
 <style type="text/scss" scoped>