Explorar el Código

Merge branch 'master' into develop

wuyunfeng hace 2 años
padre
commit
f7ffd32ac0

+ 5 - 1
languages/en.js

@@ -1147,7 +1147,11 @@ module.exports = {
     configurateRight:']'
   },
   functions:{
-    MANAGE_BED:'Manage Bed'
+    MANAGE_BED:'Manage Bed',
+    POSITION_COMPONENT:'Locate',
+    COUNTDOWN_COMPONENT:'Countdown',
+    ROOMCHECK_COMPONENT:'Room patrol',
+    SCREEN_TIP_SET_COMPONENT:'Set screen prompt'
   },
   clerkFrameManage: {
     employeeView: 'Staff View',

+ 5 - 1
languages/es.js

@@ -1147,7 +1147,11 @@ module.exports = {
     configurateRight:']'
   },
   functions:{
-    MANAGE_BED:'Gestión de camas'
+    MANAGE_BED:'Gestión de camas',
+    POSITION_COMPONENT:'location',
+    COUNTDOWN_COMPONENT:'cuenta atrás',
+    ROOMCHECK_COMPONENT:'patrulla de casas',
+    SCREEN_TIP_SET_COMPONENT:'configurar el recordatorio de pantalla'
   },
   clerkFrameManage: {
     employeeView: 'Vista de empleados',

+ 12 - 0
languages/ru-RU.js

@@ -1123,6 +1123,18 @@ module.exports = {
     LICENSE_FAILED: 'Неверный Авторизация после продажи',
     FILE_UPLOAD_FAILED: 'каталог без профиля!'
   },
+  functionRoleMapping:{
+    configurateLeft:'Настроить обладание [',
+    configurateRight:']Функциональные роли '
+  },
+  functions:{
+    MANAGE_BED:'Управление койками',
+    POSITION_COMPONENT:'Месторасположение',
+    COUNTDOWN_COMPONENT:'Обратный отсчет',
+    ROOMCHECK_COMPONENT:'Патрульный дом',
+    SCREEN_TIP_SET_COMPONENT:'Настройка подсказок экрана'
+  },
+
   entraceguardUser:{
     named: 'Имя пользователя',
     idNo:'Номер удостоверения личности',

+ 5 - 1
languages/zh-CN.js

@@ -1148,7 +1148,11 @@ module.exports = {
     configurateRight:']功能的角色'
   },
   functions:{
-    MANAGE_BED:'管理床位'
+    MANAGE_BED:'管理床位',
+    POSITION_COMPONENT:'定位',
+    COUNTDOWN_COMPONENT:'倒计时',
+    ROOMCHECK_COMPONENT:'巡房',
+    SCREEN_TIP_SET_COMPONENT:'设置屏幕提示语'
   },
   clerkFrameManage:{
     employeeView:'职员视图',

+ 3 - 1
src/api/ncs_clerk.js

@@ -28,7 +28,9 @@ export function getClerkList(params) {
 }
 export function add(params) {
   params = JSON.parse(JSON.stringify(params))
-  params.password = md5(params.password)
+  if(params.password){
+    params.password = md5(params.password)
+  }
   return request({
     url: '/ncs/clerk',
     method: 'POST',

+ 11 - 0
src/api/ncs_member.js

@@ -0,0 +1,11 @@
+import request from "@/utils/request";
+
+export function getList(params) {
+    return request({
+        url: '/Mgr/member/page',
+        method: 'POST',
+        loading: false,
+        data: params,
+        headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
+    })
+}

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

@@ -50,29 +50,64 @@
       <el-form ref="addMemberForm" :model="addMemberForm" :rules="addMemberRules" label-width="125px" class="formwrap">
         <el-row>
           <el-col :span="12">
-            <el-form-item :label="this.$t('member.face')">
-              <el-upload
-                class="avatar-uploader"
-                :action="`${uploadurl}?scene=avatar`"
-                :show-file-list="false"
-                :on-success="uploaded"
-                :before-upload="handleShopLogoBefore"
+
+            <el-form-item :label="this.$t('member.mobile')" prop="mobile">
+<!--              <el-select v-model="addMemberForm.mobile" style="width: 100%;" @change="userSelected"  filterable-->
+<!--                         remote-->
+<!--                         :remote-method="remoteMethod"-->
+<!--                         :loading="loading" placeholder="输入用户名或手机号搜索" clearable>-->
+<!--                <el-option-->
+<!--                        v-for="(item,index) in searchUser"-->
+<!--                        :key="index"-->
+<!--                        :label="item.name"-->
+<!--                        :value="item.name">-->
+<!--                  <span style="float: left">{{ item.name }}</span>-->
+<!--                  <span style="float: right; color: #8492a6; font-size: 13px">{{ item.mobile }}</span>-->
+<!--                </el-option>-->
+<!--              </el-select>-->
+<!--              <el-input v-model.number="addMemberForm.mobile" :maxlength="11" />-->
+              <el-autocomplete
+                      class="inline-input"
+                      popper-class="my-autocomplete"
+                      v-model="addMemberForm.mobile"
+                      :fetch-suggestions="querySearch"
+                      value-key="mobile"
+                      placeholder="请输入内容"
+                      @select="handleSelect"
+                      :disabled="autoCompleteDisabled"
               >
-                <img v-if="imageUrl" :src="imageUrl" class="avatar">
-                <i v-else class="el-icon-plus avatar-uploader-icon" />
-              </el-upload>
+                <template slot-scope="{ item }" class="abc">
+                  <div class="name">{{ item.mobile }}</div>
+                  <span class="addr">{{ item.uname }}</span>
+                </template>
+
+              </el-autocomplete>
             </el-form-item>
           </el-col>
+
           <el-col :span="12">
             <el-form-item :label="this.$t('member.uname')" prop="uname">
-              <el-input v-model="addMemberForm.uname" :maxlength="20" />
-            </el-form-item>
-            <el-form-item :label="this.$t('member.password')" prop="password">
-              <el-input v-model="addMemberForm.password" :type="pwdType" :maxlength="20" />
-              <span class="show-pwd" @click="pwdType = pwdType === 'password' ? 'text' : 'password'">
-                <svg-icon :icon-class="pwdType === 'password' ? 'eye' : 'eye-open'" />
-              </span>
+
+              <el-autocomplete
+                      class="inline-input"
+                      popper-class="my-autocomplete"
+                      v-model="addMemberForm.uname"
+                      :fetch-suggestions="querySearch"
+                      value-key="mobile"
+                      placeholder="请输入内容"
+                      @select="handleSelect"
+                      :disabled="autoCompleteDisabled"
+              >
+                <template slot-scope="{ item }" class="abc">
+                  <div class="name">{{ item.uname }}</div>
+                  <span class="addr">{{ item.mobile }}</span>
+                </template>
+
+              </el-autocomplete>
+
+<!--              <el-input v-model="addMemberForm.uname" :maxlength="20" />-->
             </el-form-item>
+
           </el-col>
         </el-row>
 
@@ -81,19 +116,52 @@
             <el-form-item :label="this.$t('member.nickname')" prop="nickname">
               <el-input v-model="addMemberForm.nickname" :maxlength="20" />
             </el-form-item>
+
+            <el-form-item :label="this.$t('member.password')" prop="password">
+              <el-input v-model="addMemberForm.password" :type="pwdType" :maxlength="20" />
+              <span class="show-pwd" @click="pwdType = pwdType === 'password' ? 'text' : 'password'">
+                <svg-icon :icon-class="pwdType === 'password' ? 'eye' : 'eye-open'" />
+              </span>
+            </el-form-item>
+            <el-form-item :label="this.$t('member.sex')" class="form-item-sex">
+              <el-radio v-model="addMemberForm.sex" :label="1">{{ this.$t('member.man') }}</el-radio>
+              <el-radio v-model="addMemberForm.sex" :label="0">{{ this.$t('member.woman') }}</el-radio>
+            </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item :label="this.$t('member.mobile')" prop="mobile">
-              <el-input v-model.number="addMemberForm.mobile" :maxlength="11" />
+
+            <el-form-item :label="this.$t('member.face')">
+              <el-upload
+                      class="avatar-uploader"
+                      :action="`${uploadurl}?scene=avatar`"
+                      :show-file-list="false"
+                      :on-success="uploaded"
+                      :before-upload="handleShopLogoBefore"
+              >
+                <img v-if="imageUrl" :src="imageUrl" class="avatar">
+                <i v-else class="el-icon-plus avatar-uploader-icon" />
+              </el-upload>
             </el-form-item>
           </el-col>
         </el-row>
 
         <el-row>
           <el-col :span="12">
-            <el-form-item :label="this.$t('member.sex')" class="form-item-sex">
-              <el-radio v-model="addMemberForm.sex" :label="1">{{ this.$t('member.man') }}</el-radio>
-              <el-radio v-model="addMemberForm.sex" :label="0">{{ this.$t('member.woman') }}</el-radio>
+            <el-form-item :label="this.$t('clerkManage.role')" prop="role_id">
+              <el-select
+                      v-model="addMemberForm.role_id"
+                      :placeholder="this.$t('clerkManage.choiceRole')"
+                      :disabled="roleTypeDisabled"
+                      clearable
+              >
+
+                <el-option
+                        v-for="item in rolesOptions"
+                        :key="item.role_id"
+                        :label="item.role_name"
+                        :value="item.role_id"
+                />
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -121,22 +189,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item :label="this.$t('clerkManage.role')" prop="role_id">
-              <el-select
-                v-model="addMemberForm.role_id"
-                :placeholder="this.$t('clerkManage.choiceRole')"
-                :disabled="roleTypeDisabled"
-                clearable
-              >
 
-                <el-option
-                  v-for="item in rolesOptions"
-                  :key="item.role_id"
-                  :label="item.role_name"
-                  :value="item.role_id"
-                />
-              </el-select>
-            </el-form-item>
           </el-col>
         </el-row>
         <el-row>
@@ -232,6 +285,7 @@ import {ROLE_TYPE} from "@/utils/enum/RoleTypeEnum";
 import ButtonCellRenderList from "@/components/AgGridCellRender/ButtonCellRenderList";
 let prevOverflow = ''
 const serverUrl = domain.serverUrl
+import * as API_Member from '@/api/ncs_member'
 export default {
   name: 'CareDoctorManager',
   components: { ButtonCellRenderList, ButtonCellRender, AgGridImg, ImageViewer, RadioFilter,ListFilter },
@@ -254,11 +308,21 @@ export default {
       loading: false,
       /** 列表参数 */
       params: {
-        page_size: 10,
+        page_size: 20,
         page_no: 1,
+        fixedCondition: 'user_state=0',
         sort: 'member_id',
         dir: 'asc'
       },
+
+      /** 列表参数 */
+      paramsmember: {
+        page_size: 20,
+        page_no: 1,
+        sort: 'member_id',
+        dir: 'desc'
+      },
+      autoCompleteDisabled:false,
       /** 列表数据 */
       tableData: [],
       pageData: [],
@@ -349,7 +413,7 @@ export default {
       } else {
         this.shopId = val
       }
-      this.params.fixedCondition = this.part_view ? 'shop_id=' + this.shopId : '1 = 1'
+      this.params.fixedCondition = this.part_view ? 'shop_id=' + this.shopId+' and user_state=0' : 'user_state = 0'
       this.GET_MemberList()
     }
   },
@@ -402,7 +466,7 @@ export default {
         filter: false,
         pinned: 'right',
         lockPinned: true,
-        width: 160,
+        width: 100,
         resizable: false,
         sortable: false
       },
@@ -423,7 +487,7 @@ export default {
         resizable: false,
         filter: false,
         sortable: false,
-        hide: this.part_view
+        // hide: this.part_view
       }
       // { headerName: this.$t('action.handle'), field: 'id',
       //   cellRendererFramework: 'ButtonCellRenderList',
@@ -477,7 +541,7 @@ export default {
     } else {
       this.shopId = this.partId
     }
-    this.params.fixedCondition = this.part_view ? 'shop_id=' + this.shopId : '1 = 1'
+    this.params.fixedCondition = this.part_view ? 'shop_id=' + this.shopId +' and user_state=0': 'user_state=0'
     this.GET_MemberList()
     this.getRoles({ page_size: 200, page_no: 1, fixedCondition: ' shop_id = -1', sort: ' role_id', dir: 'desc' })
 
@@ -625,7 +689,7 @@ export default {
             params.face = this.imageUrl
           }
           params.role_name = this.rolesOptions.filter( p => p.role_id === params.role_id)[0].role_name
-          if (params.member_id) {
+          if (params.clerk_id) {
             // if (this.roleZzId === params.role_id) {
             //   const addIds = this.newCheckList.filter(function(val) { return _this.oldCheckList.indexOf(val) === -1 })
             //   const delIds = this.oldCheckList.filter(function(val) { return _this.newCheckList.indexOf(val) === -1 })
@@ -657,6 +721,7 @@ export default {
     },
     /** 添加会员 */
     handleAddMember() {
+      this.autoCompleteDisabled=false
       this.nurseList = []
       this.imageUrl = null
       this.addMemberForm = { sex: 1 }
@@ -666,7 +731,9 @@ export default {
     },
     /** 编辑用户 */
     handlerEdit(row) {
+      this.autoCompleteDisabled=true
       this.addMemberForm = Object.assign({}, row)
+
       this.nurseList = []
       if (this.roleZzId && this.roleZzId === row.role_id) { // 只有护士组长才能编辑小组成员
         this.getNurseByRoleId(row.member_id)
@@ -824,6 +891,23 @@ export default {
         delete this.params.dir
       }
       this.GET_MemberList()
+    },
+    querySearch(queryString, cb) {
+      API_Member.getList({...this.paramsmember,query:queryString}).then(res=>{
+        cb(res.data)
+        console.log(res)
+      })
+    },
+    handleSelect(item) {
+      const {member_id,uname,sex,birthday,mobile,face,midentity,nickname,address} =item
+      this.addMemberForm={...this.addMemberForm,member_id,uname,sex,birthday,mobile,face,midentity,nickname,address}
+      if (birthday) {
+        this.addMemberForm.birthday *= 1000
+      }
+      if(member_id){
+        this.addMemberRules.password[0].required = false
+      }
+      console.log(item);
     }
 
   }
@@ -875,6 +959,9 @@ export default {
       text-align: center;
     }
   }
+  /deep/ .el-select,.el-autocomplete{
+    width:100%;
+  }
 
   .el-tag + .el-tag {
     margin-left: 10px;
@@ -908,4 +995,31 @@ export default {
     display: block;
   }
 
+  .my-autocomplete li  .name {
+        text-overflow: ellipsis;
+        overflow: hidden;
+    line-height: 20px !important;
+      }
+  .my-autocomplete li  .addr {
+        font-size: 12px;
+        color: #b4b4b4;
+    line-height: 20px !important;
+      }
+
+  .my-autocomplete li  .highlighted .addr {
+        color: #ddd;
+      }
+
+
+
+</style>
+
+<style>
+  .my-autocomplete li{
+
+    line-height: normal;
+    padding: 7px;
+
+
+  }
 </style>