Browse Source

1、设备管理开发;
2、医院空间结构开发

WenNingning 4 years ago
parent
commit
dabcbb8806

+ 10 - 10
src/api/calling-device.js

@@ -54,16 +54,6 @@ export function update(id, params) {
   })
 }
 
-/** 查询单个设备 */
-export function get(id, params) {
-  return request({
-    url: `/ncs/device/${id}`,
-    method: 'get',
-    loading: false,
-    params
-  })
-}
-
 /** 查询某类设备 */
 export function getDeviceByType(partid, type) {
   return request({
@@ -154,3 +144,13 @@ export function updateDeviceIndex() {
   })
 }
 
+/** 擦除分机测试数据 */
+export function updateByIds(params) {
+  return request({
+    url: `/ncs/device/updateByIds`,
+    method: 'POST',
+    loading: true,
+    data: params
+  })
+}
+

+ 12 - 4
src/api/calling-ncConfig.js

@@ -1,7 +1,7 @@
 import request from '@/utils/request'
 export function getList(params) {
   return request({
-    url: '/mgr/ncConfig/page',
+    url: '/ncs/nurse_config/page',
     method: 'POST',
     loading: true,
     data: params,
@@ -12,7 +12,7 @@ export function getList(params) {
 export function remove(params) {
   const ids = params.toString()
   return request({
-    url: `/mgr/ncConfig/${ids}`,
+    url: `/ncs/nurse_config/${ids}`,
     method: 'DELETE',
     loading: true,
     data: params
@@ -22,7 +22,7 @@ export function remove(params) {
 /** 新增 */
 export function add(params) {
   return request({
-    url: '/mgr/ncConfig',
+    url: '/ncs/nurse_config',
     method: 'POST',
     loading: true,
     data: params
@@ -32,8 +32,16 @@ export function add(params) {
 /** 修改 */
 export function update(id, params) {
   return request({
-    url: `/mgr/ncConfig/${id}`,
+    url: `/ncs/nurse_config/${id}`,
     method: 'put',
     data: params
   })
 }
+
+export function listByPartId(params) {
+  return request({
+    url: `/ncs/nurse_config/listByPartId`,
+    method: 'POST',
+    data: params
+  })
+}

+ 9 - 0
src/api/clerk.js

@@ -0,0 +1,9 @@
+import request from '@/utils/request'
+
+export function listByPartRoleId(params) {
+  return request({
+    url: '/ncs/clerk/listByPartRoleId',
+    method: 'POST',
+    data: params
+  })
+}

+ 274 - 183
src/views/calling-device/deviceInfo.vue

@@ -3,7 +3,6 @@
     <en-table-layout
       toolbar
       @selection-change="selectFun"
-      @sort-change="tableSort"
       pagination
       :tableData="tableData"
       :height="600"
@@ -17,27 +16,18 @@
         </div>
         <div class="toolbar-btns">
           <el-button type="primary" @click="handleAddDeviceInfo">新增</el-button>
-           <el-button type="danger" @click="batchDelete">批量删除</el-button>
+           <el-button type="danger" :disabled="multipleSelection.length === 0" @click="batchDelete">批量删除</el-button>
         </div>
       </div>
       <!--表头-->
       <template slot="table-columns">
-        <el-table-column
-          type="selection"
-          width="55">
-        </el-table-column>
-
-        <el-table-column prop="code" sortable="custom" label="出厂编号">
-        </el-table-column>
-        <el-table-column prop="name" sortable="custom" label="设备名称">
-        </el-table-column>
-        <el-table-column prop="model" sortable="custom" label="设备型号">
-        </el-table-column>
-        <el-table-column prop="uart_address" sortable="custom" label="串口地址">
-        </el-table-column>
-
-
-        <el-table-column label="操作" width="240">
+        <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 label="操作" width="180">
           <template slot-scope="scope">
             <el-button type="success" size="mini" @click="handlerEdit(scope.$index,scope.row)">
               查看
@@ -47,8 +37,6 @@
             </el-button>
           </template>
         </el-table-column>
-
-
       </template>
 
       <!--翻页-->
@@ -56,7 +44,7 @@
         slot="pagination"
         v-if="pageData"
         :current-page="pageData.page_no"
-        :page-sizes="[10, 20, 50, 100]"
+        :page-sizes="[20, 30, 50, 100]"
         :page-size="pageData.page_size"
         @size-change="handlePageSizeChange"
         @current-change="handlePageCurrentChange"
@@ -65,24 +53,155 @@
       </el-pagination>
     </en-table-layout>
 
-    <el-dialog
-      title="编辑设备信息"
-      :visible.sync="dialogAddDeviceInfoVisible"
-      :append-to-body="true"
-      width="80%"
-    >
-      <deviceInfo-edit :formmodel="currentRow" @saved="finished"></deviceInfo-edit>
+
+    <el-dialog title="编辑设备信息" :visible.sync="dialogAddDeviceInfoVisible" :append-to-body="true" width="80%">
+      <en-table-layout
+              toolbar
+              @selection-change="selectFunByAdd"
+              pagination
+              :tableData="addTableData"
+              :loading="addLoading"
+              :default-sort="{prop: 'id', order: 'ascending'}"
+      >
+        <!--工具栏-->
+        <div slot="toolbar" class="inner-toolbar">
+          <div class="toolbar-search">
+            <en-table-search @search="handlerSearchByAdd" placeholder="请输入搜索关键字"/>
+          </div>
+          <div class="toolbar-btns">
+            <el-button type="success" :disabled="addMultipleSelection.length === 0" class="myButten" @click="batchAdd">确定</el-button>
+          </div>
+        </div>
+        <!--表头-->
+        <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 label="操作" width="80">
+            <template slot-scope="scope">
+              <el-button type="primary" size="mini" @click="handlerEdit(scope.$index,scope.row)">
+                查看
+              </el-button>
+            </template>
+          </el-table-column>
+        </template>
+        <!--翻页-->
+        <el-pagination
+                slot="pagination"
+                v-if="addPageData"
+                :current-page="addPageData.page_no"
+                :page-sizes="[20, 30, 50, 100]"
+                :page-size="addPageData.page_size"
+                @size-change="handlePageSizeChangeByAdd"
+                @current-change="handlePageCurrentChangeByAdd"
+                layout="total, sizes, prev, pager, next, jumper"
+                :total="addPageData.data_total">
+        </el-pagination>
+      </en-table-layout>
+    </el-dialog>
+
+    <el-dialog title="查看" :visible.sync="formshow" width="70%"  :append-to-body="true">
+      <div>
+        <el-form ref="editform" label-width="120px" :model="lookForm">
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="设备类型">
+                <el-select v-model="lookForm.device_type" disabled>
+                  <el-option label="护士主机" :value="1" />
+                  <el-option label="医生主机" :value="2" />
+                  <el-option label="门口机" :value="3" />
+                  <el-option label="病床分机" :value="4" />
+                  <el-option label="LED点阵屏" :value="6" />
+                  <el-option label="总线转换盒" :value="11" />
+                  <el-option label="模拟分机" :value="12" />
+                  <el-option label="模拟紧急按钮" :value="13" />
+                  <el-option label="模拟门灯" :value="14" />
+                  <el-option label="信标" :value="16" />
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="设备别名">
+                <el-input v-model="lookForm.name" readonly />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="出厂编号">
+                <el-input v-model="lookForm.code" readonly />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="设备型号">
+                <el-input v-model="lookForm.model" readonly />
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="有线物理地址">
+                <el-input v-model="lookForm.eth_mac" readonly />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="有线IP地址">
+                <el-input v-model="lookForm.eth_ip" readonly />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="WIFI物理地址">
+                <el-input v-model="lookForm.wifi_mac" readonly />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="WIFIIP地址">
+                <el-input v-model="lookForm.wifi_ip" readonly />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="软件版本">
+                <el-input v-model="lookForm.soft_ver" readonly />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="硬件版本">
+                <el-input v-model="lookForm.hard_ver" readonly />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="WIFI热点">
+                <el-input v-model="lookForm.wifi_hostname" readonly/>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="WIFI密码">
+                <el-input v-model="lookForm.wifi_password" readonly/>
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+
+      </div>
     </el-dialog>
   </div>
 </template>
 
 <script>
-  // import * as DeviceInfo_API from '@/api/device'
-  // import DeviceInfoEdit from './deviceInfoEdit'
+  import * as API_Device from '@/api/calling-device'
 
   export default {
     name: 'deviceInfo',
-    components: { DeviceInfoEdit },
     props: {
       frameId: {
         type: Number,
@@ -91,7 +210,6 @@
     },
     data: function() {
       return {
-        imageUrl: '',
         /** 列表loading状态 */
         loading: false,
         /** 列表参数 */
@@ -102,224 +220,188 @@
           dir: 'asc'
         },
         currentRow: {},
-        doctor_age: '',
         /** 列表数据 */
         tableData: [],
         pageData: [],
-        /** 添加设备信息弹出框指示 */
         dialogAddDeviceInfoVisible: false,
         /** 添加设备信息 表单数据 */
         addDeviceInfoForm: {},
         /** 选中行数据 */
         multipleSelection: [],
-        /** 添加设备信息 表单规则 */
-        addDeviceInfoRules: {
-          name: [
-            this.MixinRequired('请输入设备信息名'),
-            { min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' }
-          ]
-        },
-        /** 选择医院结构 */
-        editHospitalFrameDialogVisible: false,
-        chooseHospitalFrameForm: {},
-        chooseHospitalFrameFormRules: {
-          frame_id: [this.MixinRequired('医院结构必须选择!')]
-        },
-        /** 选择使用者 */
-        editHumanDialogVisible: false,
-        chooseHumanForm: {},
-        chooseHumanFormRules: {
-          human_id: [this.MixinRequired('使用者必须选择!')]
+        addParams: {
+          page_size: 10,
+          page_no: 1,
+          sort: 'id',
+          dir: 'asc'
         },
-        deviceModels: []
+        addLoading: false,
+        addTableData: [],
+        addPageData: [],
+        addMultipleSelection: [],
+        lookForm: {},
+        formshow: false
       }
     },
     mounted() {
       this.GET_List()
       console.log(this.frameId)
     },
-    activated() {
-      this.GET_List()
-    },
     watch: {
       frameId: function() {
+        console.log('this.frameId=',this.frameId)
         this.GET_List()
       }
     },
     methods: {
+      formatterDeviceType(row, column, cellValue) {
+        switch (cellValue) {
+          case 1:
+            return '护士主机'
+          case 2:
+            return '医生主机'
+          case 3:
+            return '门口机'
+          case 4:
+            return '病床分机'
+          case 6:
+            return 'LED点阵屏'
+          case 11:
+            return '总线转换盒'
+          case 12:
+            return '模拟分机'
+          case 13:
+            return '模拟紧急按钮'
+          case 14:
+            return '模拟门灯'
+          case 16:
+            return '信标'
+          case 17:
+            return '看板'
+          default:
+            return '未知设备'
+        }
+      },
       /** 选择行变化时,记录选中的行数据 */
       selectFun(val) {
         this.multipleSelection = val
       },
+      selectFunByAdd(val) {
+        this.addMultipleSelection = val
+      },
       /** 加载设备信息列表 */
       GET_List() {
         this.loading = true
-
-        if (this.frameId > 0) {
-          this.params.fixedCondition = ' frame_id=' + this.frameId
-        } else {
-          this.params.fixedCondition = ' part_id=' + this.$store.getters.partId + ' and frame_id=' + this.frameId
-        }
-
-        // DeviceInfo_API.getDeviceInfoList(this.params).then(response => {
-        //   this.loading = false
-        //   this.tableData = response.data
-        //   this.pageData = {
-        //     page_no: response.page_no,
-        //     page_size: response.page_size,
-        //     data_total: response.data_total
-        //   }
-        // }).catch(() => {
-        //   this.loading = false
-        // })
-
-        // DeviceInfo_API.getDeviceModelBySeries('风尚版').then(res => {
-        //   this.deviceModels = res
-        // })
+        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
+        })
+      },
+      GET_Add_List() {
+        let _this = this
+        this.addLoading = true
+        this.addParams.fixedCondition = ' part_id=' + this.$store.getters.partId + ' and status= 0 and isNull(frame_id)'
+        API_Device.getList(this.addParams).then(res => {
+          _this.addLoading = false
+          _this.addTableData = res.data
+          _this.addPageData = {
+            page_no: res.page_no,
+            page_size: res.page_size,
+            data_total: res.data_total
+          }
+        }).catch(() => {
+          _this.addLoading = false
+        })
       },
       /** 处理搜索 **/
       handlerSearch(keywords) {
         this.params.query = keywords
         this.GET_List()
       },
-      /** 表头排序 **/
-      tableSort(column) {
-        if (column.order !== null) {
-          this.params.sort = column.prop
-          this.params.dir = column.order === 'ascending' ? 'asc' : 'desc'
-        } else {
-          this.params.sort = null
-          this.params.dir = null
-        }
-        this.GET_List()
+      handlerSearchByAdd(keywords) {
+        this.addParams.query = keywords
+        this.GET_Add_List()
       },
       /** 单条数据删除处理 */
-      handlerDelete(ids) {
-        this.$confirm('你确定要删除此设备信息?', '警告', {
+      handlerDelete(ids, type) {
+        let test = '你确定要删除此设备信息?'
+        let data = {ids: ids, status: 0, frameId: null}
+        if (type === 'add') {
+          test = '你确定要添加此设备信息-?'
+          data.status = 1
+          data.frameId = this.frameId
+        }
+        let _this = this
+        this.$confirm(test, '警告', {
           confirmButtonText: '确定',
           cancelButtonText: '取消',
           type: 'warning'
         }).then(() => {
-          // DeviceInfo_API.deleteDeviceInfo(ids).then(
-          //   response => {
-          //     this.GET_List()
-          //     this.$message({
-          //       type: 'success',
-          //       message: '已删除!'
-          //     })
-          //   }
-          // ).catch(response => {
-          //   this.$message({
-          //     type: 'info',
-          //     message: response.message
-          //   })
-          // })
-        }).catch((response) => {
-          this.$message({
-            type: 'info',
-            message: '已取消删除'
+          API_Device.updateByIds(data).then(
+            response => {
+              _this.dialogAddDeviceInfoVisible = false
+              _this.GET_List()
+            }
+          ).catch(response => {
+            _this.$message({
+              type: 'info',
+              message: response.message
+            })
           })
         })
       },
       /** 批量数据删除处理(删除选中的行) */
       batchDelete: function() {
-        if (this.multipleSelection.length === 0) {
-          this.$alert('没有选择任何记录!', '系统提示', {
-            confirmButtonText: '确定',
-            callback: action => {
-
-            }
-          })
-        } else {
-          const ids = []
-          this.multipleSelection.forEach(function(item) {
-            ids.push(item.id)
-          })
-
-          this.handlerDelete(ids.join(','))
-        }
-      },
-
-      /** 性别格式化 */
-      formatterSex(row, column, cellValue) {
-        return row.sex === 1 ? '男' : '女'
+        const ids = []
+        this.multipleSelection.forEach(function(item) {
+          ids.push(item.id)
+        })
+        this.handlerDelete(ids.join(','), 'del')
       },
-      /** 提交添加设备信息表单 */
-      submitAddDeviceInfoForm(formName) {
-        this.$refs[formName].validate((valid) => {
-          if (valid) {
-            const params = this.MixinClone(this.addDeviceInfoForm)
-            // DeviceInfo_API.addDeviceInfo(params).then(response => {
-            //   this.dialogAddDeviceInfoVisible = false
-            //   this.$message.success('添加成功!')
-            //   this.GET_List()
-            // })
-          } else {
-            this.$message.error('表单填写有误,请检查!')
-            return false
-          }
+      batchAdd: function() {
+        const ids = []
+        this.addMultipleSelection.forEach(function(item) {
+          ids.push(item.id)
         })
+        this.handlerDelete(ids.join(','), 'add')
       },
       /** 添加设备信息 */
       handleAddDeviceInfo() {
-        this.currentRow = { type: 1 }
-        // if (this.frameId > 0) {
-        this.currentRow.frame_id = this.frameId
-        // }
+        this.GET_Add_List()
         this.dialogAddDeviceInfoVisible = true
       },
       /** 编辑设备信息 */
       handlerEdit(index, row) {
-        // this.$router.push({ name: 'deviceInfoEdit', params: { id: row.id, callback: this.GET_List() }})
-        this.currentRow = { ...row }
-        // console.log('row', this.currentRow)
-        this.dialogAddDeviceInfoVisible = true
+        this.lookForm = Object.assign({}, row);
+        this.formshow = true
       },
       /** 分页大小发生改变 */
       handlePageSizeChange(size) {
         this.params.page_size = size
         this.GET_List()
       },
-
       /** 分页页数发生改变 */
       handlePageCurrentChange(page) {
         this.params.page_no = page
         this.GET_List()
       },
-      finished() {
-        this.dialogAddDeviceInfoVisible = false
-        this.GET_List()
-      },
-      /** 选择医院结构按钮*/
-      handleAddHospitalFrame() {
-        this.editHospitalFrameDialogVisible = true
-      },
-      editchooseHospitalFrameForm() {
-        this.$refs['chooseHospitalFrameForm'].validate((valid, error) => {
-          if (valid) {
-            this.addDeviceInfoForm.frame_id = this.chooseHospitalFrameForm.frame_id
-            this.addDeviceInfoForm.frame_name = this.chooseHospitalFrameForm.frame_name
-            this.editHospitalFrameDialogVisible = false
-          } else {
-            this.$message.error('表单填写有误,请检查!')
-          }
-        })
+      /** 分页大小发生改变 */
+      handlePageSizeChangeByAdd(size) {
+        this.addParams.page_size = size
+        this.GET_Add_List()
       },
-      /** 选择使用者按钮*/
-      handleAddHuman() {
-        this.editHumanDialogVisible = true
+      /** 分页页数发生改变 */
+      handlePageCurrentChangeByAdd(page) {
+        this.addParams = page
+        this.GET_Add_List()
       },
-      editchooseHumanForm() {
-        this.$refs['chooseHumanForm'].validate((valid, error) => {
-          if (valid) {
-            this.addDeviceInfoForm.human_id = this.chooseHumanForm.human_id
-            this.addDeviceInfoForm.human_name = this.chooseHumanForm.human_name
-            this.editHumanDialogVisible = false
-          } else {
-            this.$message.error('表单填写有误,请检查!')
-          }
-        })
-      }
     }
   }
 </script>
@@ -395,5 +477,14 @@
     height: 110px;
     display: block;
   }
+  .myButten {
+    border-radius: 10px;
+    opacity: 0.8;
+    left: 0;
+    bottom:0;
+    margin-left: 30px;
+    position: absolute;
+    z-index: 999;
+  }
 
 </style>

+ 0 - 651
src/views/calling-device/deviceInfoEdit.vue

@@ -1,651 +0,0 @@
-<template>
-  <div class="formwrap">
-
-    <el-form :model="formmodel" :rules="rules" ref="editForm" label-width="150px">
-
-      <el-card>
-        <h4>必须信息</h4>
-        <el-row>
-          <el-col :span="8">
-            <el-form-item label="设备型号" prop="model">
-              <el-select v-model="formmodel.model" placeholder="请选择设备型号" @change="deviceModelsChange">
-                <el-option v-for="item in deviceModels" :key="item.id" :label="item.code" :value="item.code">{{item.code}} ({{item.name}})</el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="设备名称" prop="name">
-              <el-input v-model="formmodel.name" placeholder="设备名称" disabled></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="空间类型" prop="frame_type">
-              <el-select v-model="formmodel.frame_type" placeholder="请选择" disabled>
-                <el-option label="床位" :value="2"/>
-                <el-option label="房间" :value="1"/>
-                <el-option label="科室" :value="0"/>
-                <el-option label="其它" :value="3"/>
-              </el-select>
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row>
-          <el-col :span="8">
-            <el-form-item label="出厂编号" prop="code">
-              <el-input v-model="formmodel.code" clearable placeholder="请输入编号" :maxlength="50"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="串口地址" prop="uart_address">
-              <el-input v-model="formmodel.uart_address" clearable placeholder="请输入串口地址" :maxlength="50"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="7">
-            <el-form-item label="具体位置" prop="frame_name">
-              <el-select placeholder="请选择具体位置" v-model="formmodel.frame_id" @change="frameChange($event)" disabled="">
-                <el-option
-                  v-for="item in frames"
-                  :key="item.id"
-                  :label="item.name"
-                  :value="item.id">
-                  <div v-if="item.type===1" class="el-col-lg-offset-4">{{item.name}} 房</div>
-                  <div v-if="item.type===2" class="el-col-lg-offset-8">{{item.name}} 床</div>
-                  <div v-else class="el-col-lg-offset-1">{{item.name}}</div>
-                </el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="1">
-            <div style="line-height:32px;">&nbsp;{{frameName}}</div>
-          </el-col>
-        </el-row>
-      </el-card>
-
-      <el-card style="margin-top:15px;">
-        <h4>其它信息</h4>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="软件版本" prop="soft_ver">
-              <el-input v-model="formmodel.soft_ver" clearable placeholder="请输入软件版本" :maxlength="50"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="硬件版本" prop="hard_ver">
-              <el-input v-model="formmodel.hard_ver" clearable placeholder="请输入硬件版本" :maxlength="50"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="以太网卡MAC地址" prop="eth_mac">
-              <el-input v-model="formmodel.eth_mac" clearable placeholder="请输入以太网卡MAC地址" :maxlength="50"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="以太网卡IP地址" prop="eth_ip">
-              <el-input v-model="formmodel.eth_ip" clearable placeholder="请输入硬件以太网卡IP地址" :maxlength="50"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="WIFI网卡MAC地址" prop="wifi_mac">
-              <el-input v-model="formmodel.wifi_mac" clearable placeholder="请输入WIFI网卡MAC地址" :maxlength="50"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="WIFI网卡IP地址" prop="wifi_ip">
-              <el-input v-model="formmodel.wifi_ip" clearable placeholder="请输入WIFI网卡IP地址" :maxlength="50"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="WIFI热点名称" prop="wifi_hostname">
-              <el-input v-model="formmodel.wifi_hostname" clearable placeholder="请输入WIFI热点名称" :maxlength="50"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="启用状态">
-              <el-radio v-model="formmodel.status" :label="false">未启用</el-radio>
-              <el-radio v-model="formmodel.status" :label="true">已启用</el-radio>
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="病房号名称" prop="room_num">
-              <el-input v-model="formmodel.room_num" clearable placeholder="请输入病房号名称" :maxlength="50"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="门口机ID号" prop="room_id">
-              <el-input v-model="formmodel.room_id" clearable placeholder="请输入门口机ID号" :maxlength="50"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="床位号" prop="bed_num">
-              <el-input v-model="formmodel.bed_num" readonly></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="床位别名" prop="bed_name">
-              <el-input v-model="formmodel.bed_name" readonly></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row>
-          <el-col :span="24">
-            <el-form-item label="使用者类型">
-              <el-radio v-model="formmodel.human_type" :label="0">未使用</el-radio>
-              <el-radio v-model="formmodel.human_type" :label="1">病人</el-radio>
-              <el-radio v-model="formmodel.human_type" :label="2">医生</el-radio>
-              <el-radio v-model="formmodel.human_type" :label="3">护士</el-radio>
-              <el-radio v-model="formmodel.human_type" :label="4">护工</el-radio>
-              <el-radio v-model="formmodel.human_type" :label="5">其它</el-radio>
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row v-if="formmodel.human_type===1 || formmodel.human_type===2 || formmodel.human_type===3 || formmodel.human_type===4">
-          <el-col :span="12">
-            <el-form-item label="使用者名称" prop="human_name">
-              <el-input v-model="formmodel.human_name" clearable readonly></el-input>
-            </el-form-item>
-          </el-col>
-          <el-button size="mini" type="primary" icon="el-icon-circle-plus-outline" @click="handleAddHuman">选择使用者</el-button>
-
-          <el-dialog
-            title="选择使用者"
-            :visible.sync="editHumanDialogVisible"
-            width="500px"
-            :modal="false"
-            :close-on-click-modal="false"
-            :close-on-press-escape="false"
-          >
-            <el-form :model="chooseHumanForm" :rules="chooseHumanFormRules" ref="chooseHumanForm" label-width="120px">
-              <el-form-item label="使用者列表" prop="human_id" >
-                <pop-grid-select v-if="formmodel.human_type===2 ||formmodel.human_type===3 ||formmodel.human_type===4" server-url="/care/employee/page" readonly title="选择使用者"
-                                 v-model="chooseHumanForm"
-                                 :base-url="baseurl"
-                                 method="post"
-                                 store-field="human_name"
-                                 :columns="[{prop:'type',label:'类型',align:'center',filter:'employeeTypeFormat'},{prop:'name',label:'名称',align:'center'},{prop:'sex',label:'性别',align:'center',filter:'employeeSexFormat'},{prop:'age',label:'年龄',align:'center'},{prop:'face',element:'img',label:'头像',align:'center'}]"
-                                 :filter-param="{page_size:10}"
-                                 :fields-mapping="[{source:'id',target:'human_id'},{source:'name',target:'human_name'}]"
-
-                ></pop-grid-select>
-                <pop-grid-select server-url="/care/patient_info/page" v-if="formmodel.human_type===1" readonly title="选择使用者"
-                                 v-model="chooseHumanForm"
-                                 :base-url="baseurl"
-                                 method="post"
-                                 store-field="human_name"
-                                 :columns="[{prop:'name',label:'病人姓名',align:'center'},{prop:'sex',label:'性别',align:'center',filter:'patienSexFormat'},{prop:'mobile',label:'联系电话',align:'center'},{prop:'age',label:'年龄',align:'center'},{prop:'idcard',label:'身份证号',align:'center'}]"
-                                 :filter-param="{page_size:10}"
-                                 :fields-mapping="[{source:'id',target:'human_id'},{source:'name',target:'human_name'}]"
-
-                ></pop-grid-select>
-              </el-form-item>
-            </el-form>
-            <span slot="footer" class="dialog-footer">
-        <el-button @click="editHumanDialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="editchooseHumanForm">确 定</el-button>
-      </span>
-          </el-dialog>
-        </el-row>
-
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="SIP服务器IP地址" prop="sip_ip">
-              <el-input v-model="formmodel.sip_ip" clearable placeholder="请输入SIP服务器IP地址" :maxlength="50"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="SIP账号" prop="sip_id">
-              <el-input v-model="formmodel.sip_id" clearable placeholder="请输入SIP账号" :maxlength="50"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="SIP密码" prop="sip_password">
-              <el-input type="password" v-model="formmodel.sip_password" clearable placeholder="请输入SIP密码" :maxlength="50"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="SIP账号状态">
-              <el-radio v-model="formmodel.sip_status" :label="true">可以使用</el-radio>
-              <el-radio v-model="formmodel.sip_status" :label="false">暂停使用</el-radio>
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="SIP是否在线">
-              <el-radio v-model="formmodel.online" :label="true">在线</el-radio>
-              <el-radio v-model="formmodel.online" :label="false">离线</el-radio>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="SIP呼叫清单" prop="sip_calllist">
-              <el-input
-                type="textarea"
-                :autosize="{ minRows: 2, maxRows: 4}"
-                :minlength="2"
-                :maxlength="20"
-                :placeholder="'请输入文本内容,长度2~100'"
-                v-model="formmodel.sip_calllist">
-              </el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="被管理的主机ID号" prop="sip_hosting_id">
-              <el-input v-model="formmodel.sip_hosting_id" clearable placeholder="请输入被管理的主机ID号" :maxlength="50"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="SIP主机名称" prop="sip_hosting_name">
-              <el-input v-model="formmodel.sip_hosting_name" clearable placeholder="请输入SIP主机名称" :maxlength="50"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="设备相关数据" prop="ir_cfg">
-              <el-input v-model="formmodel.ir_cfg" clearable placeholder="请输入设备相关数据" :maxlength="50"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="0号区域" prop="zone0">
-              <el-input-number v-model="formmodel.zone0" placeholder="0号区域" size="small" type="number" :controls="false" :maxlength="50">
-              </el-input-number>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="1号区域" prop="zone1">
-              <el-input-number v-model="formmodel.zone1" placeholder="1号区域" size="small" type="number" :controls="false" :maxlength="50">
-              </el-input-number>
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="2号区域" prop="zone2">
-              <el-input-number v-model="formmodel.zone2" placeholder="2号区域" size="small" type="number" :controls="false" :maxlength="50">
-              </el-input-number>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="3号区域" prop="zone3">
-              <el-input-number v-model="formmodel.zone3" placeholder="3号区域" size="small" type="number" :controls="false" :maxlength="50">
-              </el-input-number>
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="4号区域" prop="zone4">
-              <el-input-number v-model="formmodel.zone4" placeholder="4号区域" size="small" type="number" :controls="false" :maxlength="50">
-              </el-input-number>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="5号区域" prop="zone5">
-              <el-input-number v-model="formmodel.zone5" placeholder="5号区域" size="small" type="number" :controls="false" :maxlength="50">
-              </el-input-number>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-card>
-
-      <el-form-item style="margin-top:15px;">
-        <el-button type="primary" @click="handlerSubmit('editForm')" class="save">保存修改</el-button>
-      </el-form-item>
-
-
-    </el-form>
-
-  </div>
-
-</template>
-
-<script>
-  import { UE } from '@/components'
-  // import * as DeviceInfo_API from '@/api/deviceInfo'
-  import * as RegExp from '@/utils/RegExp'
-  // import * as HospitalFrame_API from '@/api/hospitalFrame'
-
-  export default {
-    name: 'deviceInfoEdit',
-    components: {
-      [UE.name]: UE
-    },
-    props: {
-      formmodel: {
-        type: Object,
-        default: () => ({})
-      }
-    },
-    data: function() {
-      return {
-        id: this.$route.params.id,
-        imageUrl: '',
-        uploadurl: '/uploaders/uploadFile',
-        usertags: [],
-        /** 输入校验 */
-        rules: {
-          name: [
-            this.MixinRequired('请输入别名!'),
-            { min: 2, max: 50, message: '长度在 2 到 50 个字符', trigger: 'blur' },
-            {
-              validator: (rule, value, callback) => {
-                if (!RegExp.userName.test(value)) {
-                  callback(new Error('只支持汉字、字母、数字、“-”、“_”的组合!'))
-                } else {
-                  callback()
-                }
-              }
-            }
-          ],
-          code: [{
-            required: true, message: '请输入出厂编号', trigger: 'blur'
-          }],
-          type: [{
-            required: true, message: '请选择类型', trigger: 'blur'
-          }],
-          model: [{
-            required: true, message: '请输入设备型号', trigger: 'blur'
-          }]
-        },
-        /** 选择医院结构 */
-        frames: [],
-        editHospitalFrameDialogVisible: false,
-        chooseHospitalFrameForm: {},
-        chooseHospitalFrameFormRules: {
-          frame_id: [this.MixinRequired('医院结构必须选择!')]
-        },
-        /** 选择使用者 */
-        editHumanDialogVisible: false,
-        chooseHumanForm: {},
-        chooseHumanFormRules: {
-          human_id: [this.MixinRequired('使用者必须选择!')]
-        },
-
-        frameName: '',
-        deviceModels: []
-      }
-    },
-    mounted() {
-      // console.log(this.formmodel)
-      this.getFrames()
-    },
-    activated() {
-    },
-    watch: {
-      'formmodel': function(newval) {
-        this.getFrameName(this.formmodel.frame_type)
-      }
-    },
-    methods: {
-      getFrameName(type) {
-        switch (type) {
-          case 0:
-            this.frameName = '科室'
-            break
-          case 1:
-            this.frameName = '房'
-            break
-          case 2:
-            this.frameName = '床'
-            break
-          default:
-            this.frameName = ''
-            break
-        }
-      },
-      getFrames() {
-        const params = { page_size: 10000, page_no: 1 }
-        // HospitalFrame_API.getHospitalFrameList(params).then(response => {
-        //   if (response.data) {
-        //     this.frames.push({
-        //       id: -1,
-        //       type: 0,
-        //       name: '科室'
-        //     })
-        //     response.data.forEach(item => {
-        //       this.frames.push(item)
-        //       if (item.has_children) {
-        //         item.children.forEach(subItem => {
-        //           this.frames.push(subItem)
-        //         })
-        //       }
-        //     })
-        //
-        //     if (!this.formmodel.frame_id) {
-        //       return
-        //     }
-        //   }
-        // })
-
-        // DeviceInfo_API.getDeviceModelBySeries('风尚版').then(res => {
-        //   this.deviceModels = res
-        //   this.getFrameName(this.formmodel.frame_type)
-        // })
-      },
-      deviceModelsChange(e) {
-        let deviceModel = this.deviceModels.find(item => {
-          return item.code === e
-        })
-        this.formmodel.frame_type = Number.parseInt(deviceModel.frame_type)
-        this.formmodel.name = deviceModel.name
-        this.getFrameName(deviceModel.frame_type)
-      },
-      frameChange(e) {
-        let frameItems = this.frames.find(item => {
-          return item.id === e
-        })
-        if (frameItems) {
-          if (frameItems.type === -1) {
-            this.frameName = '科室'
-          } else if (frameItems.type === 1) {
-            this.frameName = '房'
-          } else if (frameItems.type === 2) {
-            this.frameName = '床'
-          }
-        }
-      },
-      /** 保存按钮处理事件 */
-      handlerSubmit(formName) {
-        this.$refs[formName].validate(valid => {
-          if (valid) {
-            const params = this.MixinClone(this.formmodel)
-            if (params.id) {
-              // DeviceInfo_API.updateDeviceInfo(params.id, params).then(response => {
-              //   this.$message.success('修改成功!')
-              //   this.$emit('saved')
-              // })
-            } else {
-              params.part_id = this.$store.getters.partId
-              params.frame_id = this.formmodel.frame_id
-              // DeviceInfo_API.addDeviceInfo(params).then(response => {
-              //   this.$message.success('添加成功!')
-              //   this.$emit('saved')
-              // })
-            }
-          } else {
-            this.$message.error('表单填写有误,请检查!')
-            return false
-          }
-        })
-      },
-      /** 图片上传之前的校验 */
-      handleShopLogoBefore(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('上传头像图片只能是 JPG、PNG、GIF 格式!')
-            reject()
-          }
-          if (!isLt2M) {
-            this.$message.error('上传头像图片大小不能超过 2MB!')
-            reject()
-          }
-
-          let reader = new FileReader()
-          reader.onload = (event) => {
-            let image = new Image()
-            image.onload = () => {
-              let width = image.width
-              let height = image.height
-              if (width > 500 || width < 100) {
-                this.$message.error('图片宽度必须在100~500之间,宽高比为1:1!')
-                reject()
-              }
-              if (width !== height) {
-                this.$message.error('请上传宽高比为1:1的图片')
-                reject()
-              }
-              if (height > 500 || height < 100) {
-                this.$message.error('图片高度必须在100~500之间!')
-                reject()
-              }
-              resolve()
-            }
-            image.src = event.target.result
-          }
-          reader.readAsDataURL(file)
-        })
-      },
-
-      /** 上传成功后的钩子 更换图片 置空存储数组*/
-      uploaded(response) {
-        this.imageUrl = response.url
-        this.formmodel.face = response.url
-      },
-      /** 选择医院结构按钮*/
-      handleAddHospitalFrame() {
-        this.editHospitalFrameDialogVisible = true
-      },
-      editchooseHospitalFrameForm() {
-        this.$refs['chooseHospitalFrameForm'].validate((valid, error) => {
-          if (valid) {
-            this.formmodel.frame_id = this.chooseHospitalFrameForm.frame_id
-            this.formmodel.frame_name = this.chooseHospitalFrameForm.frame_name
-            this.editHospitalFrameDialogVisible = false
-          } else {
-            this.$message.error('表单填写有误,请检查!')
-          }
-        })
-      },
-      /** 选择使用者按钮*/
-      handleAddHuman() {
-        this.editHumanDialogVisible = true
-      },
-      editchooseHumanForm() {
-        this.$refs['chooseHumanForm'].validate((valid, error) => {
-          if (valid) {
-            this.formmodel.human_id = this.chooseHumanForm.human_id
-            this.formmodel.human_name = this.chooseHumanForm.human_name
-            this.editHumanDialogVisible = false
-          } else {
-            this.$message.error('表单填写有误,请检查!')
-          }
-        })
-      }
-    }
-  }
-</script>
-
-<style type="text/scss" scoped>
-
-
-  .formwrap /deep/ .el-tabs__content {
-    overflow: visible !important;
-  }
-
-  .formwrap /deep/ .app-address-title {
-    height: 32px !important;
-    line-height: 32px !important;
-  }
-
-  .formwrap /deep/ .app-address {
-    width: 100% !important;
-  }
-
-
-  .el-select {
-    width: 100%;
-  }
-
-  .el-date-editor {
-    width: 100%;
-  }
-
-  .formwrap {
-    border: 1px solid #ebebeb;
-    border-radius: 3px;
-    background: #fff;
-    padding: 24px;
-    min-height: 700px;
-  }
-
-  .app-address {
-    margin-top: 4px;
-    z-index: 1;
-  }
-
-  .area-tip {
-    color: #666;
-    margin-left: 10px;
-  }
-
-  /deep/ .avatar-uploader .el-upload {
-    border: 1px dashed #d9d9d9;
-    border-radius: 6px;
-    cursor: pointer;
-    position: relative;
-    overflow: hidden;
-  }
-
-  /deep/ .avatar-uploader .el-upload:hover {
-    border-color: #409EFF;
-  }
-
-  /deep/ .avatar-uploader-icon {
-    font-size: 28px;
-    color: #8c939d;
-    width: 200px;
-    height: 200px;
-    line-height: 200px;
-    text-align: center;
-  }
-
-  /deep/ .avatar {
-    width: 200px;
-    height: 200px;
-    display: block;
-  }
-
-</style>

+ 3 - 53
src/views/calling-device/index.vue

@@ -176,15 +176,6 @@
               </el-form-item>
             </el-col>
           </el-row>
-
-          <el-row>
-            <el-col :span="12">
-              <el-form-item label="" prop="status">
-                <el-checkbox v-model="formmodel.status" :true-label="1" :false-label="0">启用设备</el-checkbox>
-              </el-form-item>
-            </el-col>
-            <el-col :span="12" />
-          </el-row>
         </el-form>
 
       </div>
@@ -230,7 +221,6 @@ export default {
         manager_password: null
       },
       formmodelAppointRoom: {},
-
       /** 弹出窗口标题信息 */
       formtitle: '新增设备',
       formshow: false, // 编辑表单显示开关
@@ -279,8 +269,6 @@ export default {
       multipleSelection: [],
       /** 表单提交指示 0 代表新增 1代表修改 */
       editflag: 0,
-      /** 门口机可选项 病房号 */
-      doorDevices: [],
       /** 房间号禁用 **/
       roomNumDisabled: false,
       /** 床位号只读 **/
@@ -297,7 +285,6 @@ export default {
       /** 设备类型选择禁用 编辑时不允许修改设备类型 */
       deviceTypeDisabled: false,
       nextIp: '',
-      websock: null,
       editLock: this.$store.getters.editLock === 'true'
     }
   },
@@ -321,8 +308,7 @@ export default {
         eth_mac: null,
         eth_ip: this.nextIp,
         wifi_mac: 'FF:FF:FF:FF:FF:FF',
-        wifi_ip: ' ',
-        status: 1
+        wifi_ip: ' '
       }
       if (this.$refs.editform) {
         this.$refs.editform.resetFields()
@@ -446,15 +432,6 @@ export default {
         }
       })
     },
-    formatterSex(row, column, cellValue) {
-      if (row.staff_sex === 1) {
-        return '男'
-      } else if (row.staff_sex === 2) {
-        return '女'
-      } else {
-        return '未知'
-      }
-    },
     formatterDeviceType(row, column, cellValue) {
       switch (cellValue) {
         case 1:
@@ -505,18 +482,6 @@ export default {
       }
       this.getList()
     },
-    /**  病房选择切换事件 */
-    deviceRoomChange(value) {
-      // 查找当前选中的门口机设备
-      const doorDevice = this.doorDevices.find(p => p.id === value)
-      if (doorDevice !== undefined) { // 下拉选中的门口机
-        this.formmodel.device_room_num = doorDevice.device_room_num
-      } else if (value === '') { // 清空选中
-        this.formmodel.device_room_num = ''
-      } else { // 输入创建
-        this.formmodel.device_room_num = value
-      }
-    },
     deviceTypeChange(value) {
       this.rules.eth_mac[0].required = true
       this.rules.eth_ip[0].required = true
@@ -625,12 +590,8 @@ export default {
       }
     },
     editLockChange(val) {
-      if (val) {
-        this.formshow1 = true
-        this.editLock = false
-      } else {
-        this.$store.dispatch('user/toggleEditLock', val)
-      }
+      this.formshow1 = true
+      this.editLock = false
     },
     validEditPassword() {
       if (this.formmodel1.manager_password === 'wdkl2020') {
@@ -640,17 +601,6 @@ export default {
       } else {
         this.$message.error('密码错误!')
       }
-    },
-    roomAppointChange(val) {
-      if (val === 1) {
-        this.rulesAppointRoom.appoint_host_id[0].required = true
-        this.rulesAppointRoom.appoint_room_id[0].required = true
-      } else {
-        this.rulesAppointRoom.appoint_host_id[0].required = false
-        this.rulesAppointRoom.appoint_room_id[0].required = false
-        this.formmodelAppointRoom.appoint_host_id = null
-        this.formmodelAppointRoom.appoint_room_id = null
-      }
     }
   }
 }

+ 72 - 99
src/views/customer/customerEdit.vue

@@ -5,7 +5,7 @@
       <el-row>
         <el-col :span="8">
           <el-form-item label="病人姓名" prop="name">
-            <el-input v-model="formmodel.name" clearable placeholder="请输入姓名" :maxlength="20"></el-input>
+            <el-input v-model="formmodel.named" clearable placeholder="请输入姓名" :maxlength="20"></el-input>
           </el-form-item>
         </el-col>
         <el-col :span="8">
@@ -26,9 +26,6 @@
             </el-select>
           </el-form-item>
         </el-col>
-      </el-row>
-
-      <el-row>
         <el-col :span="8">
           <el-form-item label="性别" class="form-item-sex">
             <el-radio v-model="formmodel.sex" :label="1" checked>男</el-radio>
@@ -36,12 +33,13 @@
             <el-radio v-model="formmodel.sex" :label="3">未知</el-radio>
           </el-form-item>
         </el-col>
+      </el-row>
 
+      <el-row>
         <el-col :span="8">
-          <el-form-item label="年龄" prop="age">
-            <el-input placeholder="请输入年龄" size="small" type="number"  :controls="false" :min="1"
-                             :max="150" v-model="formmodel.age">
-            </el-input>
+          <el-form-item label="在院状态">
+            <el-radio v-model="formmodel.status" :label="1" checked>在院</el-radio>
+            <el-radio v-model="formmodel.status" :label="0">已出院</el-radio>
           </el-form-item>
         </el-col>
         <el-col :span="8">
@@ -51,74 +49,44 @@
             <el-radio v-model="formmodel.age_unit" :label="2">天</el-radio>
           </el-form-item>
         </el-col>
+        <el-col :span="8">
+          <el-form-item label="年龄" prop="age">
+            <el-input placeholder="请输入年龄" size="small" type="number"  :controls="false" :min="1"
+                             :max="150" v-model="formmodel.age">
+            </el-input>
+          </el-form-item>
+        </el-col>
       </el-row>
 
       <el-row>
         <el-col :span="8">
           <el-form-item label="责任医生" prop="doctor_id">
             <el-select placeholder="请选择医生" clearable v-model="formmodel.doctor_id" @change="doctorChange">
-              <el-option :label="item.name" :key="index" v-for="(item,index) in doctors" :value="item.id"></el-option>
+              <el-option :label="item.clerk_name" :key="index" v-for="(item,index) in doctors" :value="item.clerk_id"></el-option>
             </el-select>
           </el-form-item>
         </el-col>
         <el-col :span="8">
           <el-form-item label="责任护士" prop="nurse_id">
             <el-select placeholder="请选择护士" clearable v-model="formmodel.nurse_id" @change="doctorChange">
-              <el-option :label="item.name" :key="index" v-for="(item,index) in nurses" :value="item.id"></el-option>
+              <el-option :label="item.clerk_name" :key="index" v-for="(item,index) in nurses" :value="item.clerk_id"></el-option>
             </el-select>
           </el-form-item>
         </el-col>
         <el-col :span="8">
           <el-form-item label="责任护工" prop="aide_id">
             <el-select placeholder="请选择护工" clearable v-model="formmodel.aide_id" @change="doctorChange">
-              <el-option :label="item.name" :key="index" v-for="(item,index) in aides" :value="item.id"></el-option>
-            </el-select>
-          </el-form-item>
-        </el-col>
-      </el-row>
-
-      <el-row>
-        <el-col :span="8">
-          <el-form-item label="护理等级" prop="grade_level">
-            <el-select placeholder="请选择护理等级" clearable v-model="formmodel.grade_level">
-              <el-option :label="item.value" :key="index" v-for="(item,index) in gradeLevels" :value="item.id"></el-option>
+              <el-option :label="item.clerk_name" :key="index" v-for="(item,index) in aides" :value="item.clerk_id"></el-option>
             </el-select>
           </el-form-item>
         </el-col>
-        <el-col :span="16">
-          <el-form-item label="在院状态">
-            <el-radio v-model="formmodel.status" :label="1" checked>在院</el-radio>
-            <el-radio v-model="formmodel.status" :label="0">已出院</el-radio>
-          </el-form-item>
-        </el-col>
       </el-row>
 
       <el-row>
-        <el-col :span="6">
-          <el-form-item label="剂量级别" prop="dosage_level">
-            <el-select placeholder="请选择剂量级别" clearable v-model="formmodel.dosage_level">
-              <el-option :label="item.value" :key="index" v-for="(item,index) in dosageLevels" :value="item.id"></el-option>
-            </el-select>
-          </el-form-item>
-        </el-col>
-        <el-col :span="6">
-          <el-form-item label="饮食级别" prop="diet_level">
-            <el-select placeholder="请选择饮食级别" clearable v-model="formmodel.diet_level">
-              <el-option :label="item.value" :key="index" v-for="(item,index) in dietLevels" :value="item.id"></el-option>
-            </el-select>
-          </el-form-item>
-        </el-col>
-        <el-col :span="6">
-          <el-form-item label="隔离级别" prop="insulate_level">
-            <el-select placeholder="请选择隔离级别" clearable v-model="formmodel.insulate_level">
-              <el-option :label="item.value" :key="index" v-for="(item,index) in insulateLevels" :value="item.id"></el-option>
-            </el-select>
-          </el-form-item>
-        </el-col>
-        <el-col :span="6">
-          <el-form-item label="过敏级别" prop="alleray_level">
-            <el-select placeholder="请选择过敏级别" clearable v-model="formmodel.alleray_level">
-              <el-option :label="item.value" :key="index" v-for="(item,index) in allerayLevels" :value="item.id"></el-option>
+        <el-col v-for="(item, index) in nurseList" :key="index" :span="24 / nurseList.length">
+          <el-form-item :label="item[0]">
+            <el-select :placeholder="'请选择'+item[0]" clearable v-model="nurseData[index].nurse_level">
+              <el-option v-for="(t,i) in item[1]" :key="i" :label="t.option_name" :value="t.id"></el-option>
             </el-select>
           </el-form-item>
         </el-col>
@@ -251,27 +219,26 @@
 </template>
 
 <script>
-  import { UE } from '@/components'
   // import * as PatientInfo_API from '@/api/patientInfo'
-  // import * as Employee_API from '@/api/employee'
-  // import * as NurseConfig_API from '@/api/nurseConfig'
+  import * as clerk_API from '@/api/clerk'
+  import * as NurseConfig_API from '@/api/calling-ncConfig'
   // import * as HospitalFrame_API from '@/api/hospitalFrame'
   import * as RegExp from '@/utils/RegExp'
 
   export default {
     name: 'patientInfoEdit',
-    components: {
-      [UE.name]: UE
-    },
     props: {
-      formmodel: {
-        type: Object,
-        default: () => ({})
+      customerId: {
+        type: Number,
+        default: 0
       }
     },
     data: function() {
       return {
         id: this.$route.params.id,
+        formmodel: {},
+        nurseList: [],
+        nurseData: [],
         imageUrl: '',
         uploadurl: '/uploaders/uploadFile',
         usertags: [],
@@ -420,57 +387,60 @@
       }
     },
     mounted() {
-      console.log(this.formmodel)
+      console.log(this.customerId)
       this.getEmployees()
       this.getNurseConfigs()
       this.getFrameBeds()
     },
-    activated() {
-    },
     watch: {
-      'formmodel': function(newval) {
+      customerId: function(newval) {
         console.log(newval)
       }
     },
 
     methods: {
       getEmployees() {
-        const params = { page_size: 10000, page_no: 1 }
-        // Employee_API.getEmployeeList(params).then(response => {
-        //   if (response.data) {
-        //     this.doctors = response.data.filter((item) => {
-        //       return item.type === 0
-        //     })
-        //     this.nurses = response.data.filter((item) => {
-        //       return item.type === 1
-        //     })
-        //     this.aides = response.data.filter((item) => {
-        //       return item.type === 2
-        //     })
-        //   }
-        // })
+        let _this = this
+        clerk_API.listByPartRoleId({partId: this.$store.getters.partId}).then(res => {
+          const groupBy = (arr, func) =>
+                  arr.map(typeof func === 'function' ? func : val => val[func]).reduce((acc, val, i) => {
+                    acc[val] = (acc[val] || []).concat(arr[i]);
+                    return acc;
+                  }, {});
+          // 以参数名称来分组
+          let groupData = groupBy(res, item => item.role_name)
+          if (Object.entries(groupData).length > 0) {
+            Object.entries(groupData).forEach(item=> {
+              if (item[0] === '医生') {
+                _this.doctors = item[1]
+              } else if (item[0] === '护士') {
+                _this.nurses = item[1]
+              } else if (item[0] === '护工'){
+                _this.aides = item[1]
+              }
+            })
+          }
+        })
       },
       getNurseConfigs() {
-        const params = { page_size: 10000, page_no: 1 }
-        // NurseConfig_API.getNurseConfigList(params).then(response => {
-        //   if (response.data) {
-        //     this.gradeLevels = response.data.filter(item => {
-        //       return item.nurse_level === 0
-        //     })
-        //     this.dosageLevels = response.data.filter(item => {
-        //       return item.nurse_level === 1
-        //     })
-        //     this.dietLevels = response.data.filter(item => {
-        //       return item.nurse_level === 2
-        //     })
-        //     this.insulateLevels = response.data.filter(item => {
-        //       return item.nurse_level === 3
-        //     })
-        //     this.allerayLevels = response.data.filter(item => {
-        //       return item.nurse_level === 4
-        //     })
-        //   }
-        // })
+        this.nurseData = []
+        let _this = this
+        NurseConfig_API.listByPartId({partId: this.$store.getters.partId}).then(res => {
+          const groupBy = (arr, func) =>
+                  arr.map(typeof func === 'function' ? func : val => val[func]).reduce((acc, val, i) => {
+                    acc[val] = (acc[val] || []).concat(arr[i]);
+                    return acc;
+                  }, {});
+          // 以参数名称来分组
+          let groupData = groupBy(res, item => item.config_name)
+          _this.nurseList = Object.entries(groupData)
+          if (Object.entries(groupData).length > 0) {
+            Object.entries(groupData).forEach((item, index)=> {
+              _this.nurseData.push({nurse_level: item[1][0]})
+            })
+          }
+
+        })
       },
       getFrameBeds() {
         const params = { page_size: 10000, page_no: 1 }
@@ -485,6 +455,9 @@
       },
       /** 保存按钮处理事件 */
       handlerSubmit(formName) {
+        console.log(this.formmodel)
+        console.log(this.nurseData)
+        return
         this.$refs[formName].validate(valid => {
           if (valid) {
             const params = this.MixinClone(this.formmodel)

+ 26 - 33
src/views/hospitalFrame/hospitalFrame.vue

@@ -37,7 +37,7 @@
           <el-button size="mini" plain round @click="handleEditPatient(subItem.customer_member_id)"><i class="el-icon-user"></i> {{ subItem.customer_name}}</el-button>
         </span>
             <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(null)"><i class="el-icon-circle-plus-outline"></i> 病人</el-button>
         </span>
             <span>
           <el-dropdown size="mini" @command="handleGroupCommand">
@@ -45,7 +45,7 @@
             <el-dropdown-menu slot="dropdown">
               <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: 'device', frame: subItem.frame_bed}" divided><i class="el-icon-cpu"></i> 设备 {{subItem.device_count.length}}
+              <el-dropdown-item :command="{type: 'device', frame: subItem.frame_bed}" divided><i class="el-icon-cpu"></i> 设备 {{subItem.device_count}}
               </el-dropdown-item>
             </el-dropdown-menu>
           </el-dropdown>
@@ -63,13 +63,13 @@
 
 
 
-<!--    <el-dialog-->
-<!--      title="病人信息"-->
-<!--      :visible.sync="dialogPatientVisible"-->
-<!--      width="85%"-->
-<!--    >-->
-<!--      <customer-edit :formmodel="patientInfo" @saved="handlePatientFinished"></customer-edit>-->
-<!--    </el-dialog>-->
+    <el-dialog
+      title="病人信息"
+      :visible.sync="dialogPatientVisible"
+      width="85%"
+    >
+      <customer-edit :customer-id="customerId" @saved="handlePatientFinished"></customer-edit>
+    </el-dialog>
 
     <el-dialog title="科室结构" :visible.sync="dialogFrameVisible" width="500px">
       <el-form :model="frameInfo" :rules="rules" ref="editForm" label-width="110px">
@@ -106,33 +106,33 @@
       </el-form>
     </el-dialog>
 
-<!--    <el-drawer-->
-<!--      title="设备"-->
-<!--      :visible.sync="deviceVisible"-->
-<!--      :append-to-body="true"-->
-<!--      size="50%"-->
-<!--      >-->
-<!--      <device-info :frame-id="frameId"></device-info>-->
-<!--    </el-drawer>-->
+    <el-drawer
+      title="设备"
+      :visible.sync="deviceVisible"
+      :append-to-body="true"
+      size="60%"
+      >
+      <device-info :frame-id="frameId"></device-info>
+    </el-drawer>
   </div>
 </template>
 
 <script>
   import * as HospitalFrame_API from '@/api/hospitalFrame'
   import * as RegExp from "@/utils/RegExp";
-  // import customerEdit from '@/views/customer/customerEdit'
-  // import DeviceInfo from '@/views/calling-device/deviceInfo'
+  import customerEdit from '@/views/customer/customerEdit'
+  import DeviceInfo from '@/views/calling-device/deviceInfo'
 
   export default {
     name: 'hospitalFrame',
-    // components: { DeviceInfo, HospitalFrameEdit, customerEdit },
+    components: { DeviceInfo, customerEdit },
     data: function() {
       return {
         hospital_frame: null,
         frameAddVisible: false,
         frameName: '',
         dialogPatientVisible: false,
-        patientInfo: {},
+        customerId: null,
         dialogFrameVisible: false,
         frameInfo: {},
         deviceVisible: false,
@@ -169,15 +169,11 @@
         },
       }
     },
-    activated() {
-      this.GET_All()
-    },
     mounted() {
       this.GET_All()
     },
     watch: {
       deviceVisible: function(newData) {
-        console.log(newData)
         if (!newData) {
           this.GET_All()
         }
@@ -207,25 +203,22 @@
             this.handlerDeleteFrame(object.frame.id)
             break
           case 'device':
-            this.frameId = object.frame.frame.id
-            console.log('hos ' + this.frameId)
+            this.frameId = object.frame.id
             this.openDeviceList()
             break
         }
       },
-      handleAddBed(roomFrame) {
-      },
       handleAddPatient(bedFrame) {
-        this.patientInfo = { sex: 1, age_unit: 0, frame_id: bedFrame.id }
+        this.customerId = 0
         this.dialogPatientVisible = true
       },
       handlePatientFinished() {
         this.dialogPatientVisible = false
         this.GET_All()
       },
-      handleEditPatient(patient) {
+      handleEditPatient(id) {
         this.dialogPatientVisible = true
-        this.patientInfo = patient
+        this.customerId = id
       },
       // frame handle
       handleAddRoom() {
@@ -276,7 +269,7 @@
 
       // --------------------设备管理
       handlePartDevice() {
-        this.frameId = -1
+        this.frameId = this.hospital_frame.frame_part.id
         this.openDeviceList()
       },
       openDeviceList() {