提交 3f48ffd7 编写于 作者: qian.jie's avatar qian.jie

Merge branch 'feature/jq' into 'develop'

Feature/jq

See merge request com.pica.cloud.education.frontend/pica-admin-consultation!243
......@@ -310,3 +310,10 @@ export const updateDepartmentId = async (data) => {
method: 'post',
});
};
export const doctorDeparList = async (data) => {
return request({
url: `/diagnose/admin/diagnose/department/and/doctorList/${data.uid}`,
method: 'get',
});
};
import request from 'mn-template/plugins/http';
export const doctorListAnd = async(data) => {
return request({
url: '/diagnose/admin/diagnose/operate/and/doctorList',
data: data,
method: 'post',
});
};
export const doctorListRest = async (data) => {
return request({
url: `diagnose/admin/diagnose/reset/operate/doctorList/${data.uid}`,
method: 'get',
});
};
export const conditionUpdate = async (data) => {
return request({
url: '/diagnose/socket/condition/update',
......
......@@ -2,16 +2,20 @@
<div
class="consultationlist"
style="user-select: none"
@click="goworkBench"
>
<div class="list">
<div class="name">
{{ operatorsItem.name || '' }}
</div>
<div class="details">
<!-- <div class="handle">待处理: <span> 暂无</span></div> -->
<div class="details" @click="goSelectDeart">
<div class="see">
<span>查看详情</span>
<span>查看选择科室</span>
<i class="el-icon-arrow-right" />
</div>
</div>
<div class="details" @click="goworkBench">
<div class="see">
<span>待处理详情</span>
<i class="el-icon-arrow-right" />
</div>
</div>
......@@ -64,6 +68,12 @@
}
});
},
goSelectDeart() {
this.$router.push({
path: '/workbench-new',
query: { id: this.operatorsItem.id },
});
}
},
};
</script>
......@@ -81,10 +91,10 @@
.details {
width: 120px;
height: 40px;
background: rgba(68, 146, 132, 0.24);
background: rgba(0, 189, 165, 0.13);
border-radius: 20px;
opacity: 0.44;
border: 1px solid #449284;
// opacity: 0.44;
border: 1px solid rgba(0, 189, 165, 0.13);
display: flex;
justify-content: space-evenly;
align-items: center;
......@@ -107,7 +117,10 @@
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #6a7990;
color: #0D9078;
}
i{
color: rgba(13, 144, 120, 1);
}
}
}
......
<template>
<div class="depart-doctor">
<el-tabs v-model="activeMoutendName" @tab-click="handleClick">
<el-tab-pane v-for="item in departDoctorList" :key="item.departmentId" :label="item.department + ' ' + item.checkDoctorIdListByDepartment.length + '/' +item.allNum" :name="item.departmentId">
<el-checkbox
v-model="item.checkAll"
:indeterminate="item.isIndeterminate"
:disabled="item.allDisabled"
@change="((value)=>{handleCheckAllChange(value,item)})">全选</el-checkbox>
<div style="margin: 10px 0;" />
<el-checkbox-group
v-model="item.checkDoctorIdListByDepartment"
@change="((val)=>{handleCheckedCitiesChange(val,item)})"
>
<el-checkbox
v-for="itemChild in item.diagnoseOperateDoctorRespList"
:key="itemChild.doctorId"
:label="itemChild.doctorId"
:disabled="itemChild.disabled"
>
{{ itemChild.doctorName + ' ' }}{{ ' ' +itemChild.doctorId}}
</el-checkbox>
</el-checkbox-group>
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
export default {
props: {
departDoctorList:{
type: Array,
default() {
return [];
},
},
activeMoutendName:{
type: String,
default() {
return '';
},
}
},
data() {
return {
};
},
computed: {
},
watch: {
},
created() {
},
mounted() {
},
methods: {
handleClick(value) {
console.log(value, 'value');
},
handleCheckAllChange(value, item) {
let itemNameList = [];
if (value) {
itemNameList = (item.diagnoseOperateDoctorRespList || []).map(item => {
return item.doctorId;
});
}
item.checkDoctorIdListByDepartment = value ? itemNameList : [];
item.isIndeterminate = false;
this.$emit('getDepartlist', this.departDoctorList);
},
/**
* checkbox状态 (根据绑定值 checkAll 与 isIndeterminate 联动)
* 半选:checkAll: true或者false,isIndeterminate:true
* 全选:checkAll:true isIndeterminate:false
* 不选:checkAll:false isIndeterminate:false
*/
handleCheckedCitiesChange(value, item) {
const checkedCount = value.length;
item.checkAll = checkedCount === item.diagnoseOperateDoctorRespList.length;
if (checkedCount > 0 && checkedCount < item.diagnoseOperateDoctorRespList.length) {
item.isIndeterminate = true;
item.checkAll = true;
}else{
item.isIndeterminate = false;
}
this.$emit('getDepartlist', this.departDoctorList);
}
},
};
</script>
<style lang="scss" scoped>
</style>
此差异已折叠。
......@@ -7,8 +7,8 @@
<el-breadcrumb-item>首页</el-breadcrumb-item>
<el-breadcrumb-item>我的工作台</el-breadcrumb-item>
</el-breadcrumb>
<el-row style="margin-top: 30px">
<el-col :span="12">
<el-row style="margin-top: 30px;display:flex;alignItems:center" class="row-col-show">
<el-col :span="8">
<div class="left">
<el-row
type="flex"
......@@ -18,7 +18,6 @@
<el-col :span="12">
<el-date-picker
v-model="workbenchAdminDate"
style="margin-top: 10px"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期"
......@@ -27,6 +26,15 @@
</el-row>
</div>
</el-col>
<el-col :span="12">
<div class="right">
<span class="totalNumShow">累计汇总数</span>
<span class="callDoctorShow">呼叫医助次数</span>
<span class="callDoctorNum">389</span>
<span class="laterDoctorShow">接诊医生迟到人数</span>
<span class="laterDoctorNum">167</span>
</div>
</el-col>
</el-row>
</div>
<!-- 问诊列表 -->
......@@ -101,7 +109,6 @@
.header {
padding: 30px;
width: 100%;
background: #ffffff;
.el-input__inner {
width: 173px;
......@@ -110,6 +117,46 @@
border-radius: 7px;
border: 1px solid #d9d9d9;
}
.row-col-show{
.el-col-12{
.right{
display: flex;
width: 70%;
align-items: center;
justify-content: space-around;
.totalNumShow{
font-size: 16px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #212121;
}
.callDoctorShow{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #666666;
}
.callDoctorNum{
font-size: 24px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #212121;
}
.laterDoctorShow{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #666666;
}
.laterDoctorNum{
font-size: 24px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #212121;
}
}
}
}
}
.detailslist {
display: flex;
......
......@@ -20,6 +20,7 @@
v-for="(item, index) in adminList"
:key="index"
class="checkbox-item"
@change="((val)=>{setResert(val,item)})"
>
<el-checkbox :label="item.id">
{{ item.name }}
......@@ -40,6 +41,33 @@
</el-button>
</div>
</div>
<el-dialog
:visible.sync="showIsReset"
width="30%"
>
<div class="show-info-title">
<p>将永久删除名下</p>
<p>所有的科室及上级医生</p>
</div>
<div class="work-info-botton" style="text-align: center">
<span
slot="footer"
class="dialog-footer"
style="text-align: center"
>
<el-button
class="cancel-submit"
@click="cancelResert"
>取 消</el-button>
<el-button
class="contest"
type="primary"
:disabled="isClick"
@click="confirmResert"
>确定</el-button>
</span>
</div>
</el-dialog>
</div>
</template>
<script>
......@@ -48,11 +76,14 @@
operatorQuery,
sumbitMatch
} from '@/api/operation';
import { doctorListRest } from '@/api/workbench';
export default {
data() {
return {
checklist: [],
adminList: [],
showIsReset:false,
operateId:''
};
},
mounted() {
......@@ -60,6 +91,12 @@
this.getAdminList();
},
methods: {
setResert(value, item) {
if (this.checklist.indexOf(item.id) == -1) {
this.showIsReset = true;
this.operateId = item.id;
}
},
cancel() {
this.$confirm('取消后将不保存本次操作内容', '确认取消吗?', {
confirmButtonText: '确定',
......@@ -90,6 +127,7 @@
.then((res) => {
if (res.code == '000000') {
this.checklist = res.data;
console.log(this.checklist, 'this.111111');
}
})
.catch(() => {
......@@ -103,6 +141,19 @@
}
});
},
cancelResert() {
this.showIsReset = false;
},
confirmResert() {
const param = {
uid:this.operateId
};
doctorListRest(param).then(res => {
if (res.code == '000000') {
this.showIsReset = false;
}
});
},
},
};
</script>
......@@ -139,5 +190,31 @@
align-items: center;
}
}
.show-info-title{
text-align: center;
padding: 30px;
font-size: 18px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #02120F;
}
.dialog-footer {
.contest {
min-width: 160px;
height: 40px;
background: #0d9078;
border-radius: 20px;
}
.cancel-submit {
min-width: 160px;
height: 40px;
border-radius: 20px;
border: 1px solid #0d9078;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #0d9078;
}
}
}
</style>
......@@ -20,29 +20,27 @@
</el-radio-button>
</el-radio-group>
</div>
<div class="workbench-content">
<div
v-if="currentDiagList.length"
class="workbench-li-c"
>
v-if="currentDiagList.length || tabPositionValue == 3"
class="workbench-content">
<div
v-if="tabPositionValue == '3'"
class="grid-c"
v-if="tabPositionValue == 3"
class="workbench-li-depar"
>
<el-checkbox-group
v-model="checkedValues"
@change="handleCheckedCitiesChange"
>
<el-checkbox
v-for="item in cityOptions"
:key="item.id"
:label="item.value"
>
{{ item.value }}
</el-checkbox>
</el-checkbox-group>
<div class="search-botton">
<el-button>确定</el-button>
<div class="grid-c">
<department-doctor
:depart-doctor-list="departDoctorList"
:active-moutend-name="activeMoutendName"
@getDepartlist="getDepartlist"
/>
</div>
<div class="depart-footer" style="text-align: right">
<el-button class="rest-depar" @click="restDepartList">重置所有科室</el-button>
<el-button
type="primary"
class="con-depar"
@click="confirmDoctorList"
>确定</el-button>
</div>
</div>
<div
......@@ -93,7 +91,6 @@
</div>
</div>
</div>
<div
v-else
class="nodata-container"
......@@ -106,7 +103,33 @@
暂时没有问诊
</div>
</div>
<el-dialog
:visible.sync="showIsReset"
width="30%"
>
<div class="show-info-title">
<p>将永久删除名下</p>
<p>所有的科室及上级医生</p>
</div>
<div class="work-info-botton" style="text-align: center">
<span
slot="footer"
class="dialog-footer"
style="text-align: center"
>
<el-button
class="cancel-submit"
@click="cancelResert"
>取 消</el-button>
<el-button
class="contest"
type="primary"
:disabled="isClick"
@click="confirmResert"
>确定</el-button>
</span>
</div>
</el-dialog>
</div>
</template>
<script>
......@@ -114,10 +137,15 @@
const { mapState } = createNamespacedHelpers('main');
import storejs from 'storejs';
import consultationCard from '@/components/common/consultationCard/index.vue';
import DepartmentDoctor from '../../../components/common/department-doctor.vue';
import { conditionNewList } from '@/api/workbench';
import { doctorListAnd, doctorListRest } from '@/api/workbench';
import {doctorDeparList} from '@/api/diagnosis';
import _ from 'lodash';
export default {
components: {
consultationCard,
DepartmentDoctor
},
data() {
return {
......@@ -248,6 +276,14 @@
userTrtcEntryStatus: 2,
},
],
departDoctorList:[],
newCheckList:[],
cancelCheckList:[],
checkDoctorIdList:[],
activeMoutendName:'',
operatId:'',
showIsReset:false
};
},
computed: {
......@@ -282,12 +318,80 @@
that.initCard();
}, 0);
}, 4000);
this.doctorDeparList();
// }
},
destroyed() {
window.clearInterval(this.timer);
},
methods: {
doctorDeparList() {
const userInfo = storejs.get('initSocketInfo');
const {userId} = userInfo;
const param = {
uid:userId
};
doctorDeparList(param).then(res => {
if (res.code == '000000') {
this.checkDoctorIdList = res.data.checkDoctorIdList || [];
this.departDoctorList = res.data.diagnoseOperateDepartmentRespList || [];
this.activeMoutendName = (res.data.diagnoseOperateDepartmentRespList || [])[0].departmentId;
}
});
},
restDepartList() {
this.showIsReset = true;
},
cancelResert() {
this.showIsReset = false;
},
confirmResert() {
const userInfo = storejs.get('initSocketInfo');
const {userId} = userInfo;
const param = {
uid:this.operatId ? this.operatId : userId
};
doctorListRest(param).then(res => {
if (res.code == '000000') {
this.showIsReset = false;
this.doctorDeparList();
}
});
},
getDepartlist(allCheckList) {
const checkAllList = allCheckList.map(item => {
return item.checkDoctorIdListByDepartment;
});
const checkListFlat = checkAllList.flat(Infinity);
// 取消医生IDlist
const cancelList = _.difference(this.checkDoctorIdList, checkListFlat);
// 新增的医生ID list
const newCkList = _.difference(checkListFlat, this.checkDoctorIdList);
const checkAllDoctorList = allCheckList.map(item => {
return item.diagnoseOperateDoctorRespList;
});
const checkAllDoctorListFlat = checkAllDoctorList.flat(Infinity);
this.newCheckList = newCkList.map(item => checkAllDoctorListFlat.find(itemChild => itemChild.doctorId === item)).filter(item => item);
this.cancelCheckList = cancelList.map(item => checkAllDoctorListFlat.find(itemChild => itemChild.doctorId === item)).filter(item => item);
},
confirmDoctorList() {
const userInfo = storejs.get('initSocketInfo');
const {userId, userName} = userInfo;
console.log(userId, userName, 'userInfo');
const params = {
cancelDoctorIdList:this.cancelCheckList || [],
insertDoctorIdList:this.newCheckList || [],
operateUserId:userId,
operateUserName:userName
};
doctorListAnd(params).then(res => {
if (res.code == '000000') {
console.log(res);
this.doctorDeparList();
}
});
},
initCard() {
console.log(this.isShowCardData);
const parms = {
......@@ -299,7 +403,7 @@
conditionNewList(parms)
.then((res) => {
if (res.code === '000000') {
this.handleData(res.data);
this.handleData(res.data.length > 0 ? res.data : this.mockData);
} else {
this.$message({
message: res.message,
......@@ -315,12 +419,14 @@
});
},
handleData(data) {
console.log(data, 'data');
this.currentDiagList = [];
data.forEach((item, index) => {
item.diagnoseLogId = '--' + Math.random() * 10;
item['definitionRandom'] = Math.random() * 10;
this.$set(this.currentDiagList, index, item);
});
console.log('this.currentDiagList', this.currentDiagList);
this.isShowCardData = true;
// this.$nextTick(() => {
// });
......@@ -497,6 +603,76 @@
}
}
}
.pagination-container {
background-color: #fff;
height: 71px;
background: #ffffff;
border-radius: 18px;
display: flex;
justify-content: flex-end;
align-items: center;
margin-top: 10px;
padding: 0 20px;
}
.workbench-li-depar{
padding: 20px 10px;
width: 100%;
.grid-c {
display: grid;
grid-row-gap: 20px;
grid-column-gap: 20px;
padding: 25px 30px;
background: #fff;
border-radius: 10px;
overflow-y: auto;
.el-checkbox-group{
.el-checkbox{
width: 20%;
padding: 8px;
}
}
.search-botton{
display: flex;
justify-content: flex-end;
margin-right: 150px;
.el-button{
width: 180px;
height: 40px;
background: #0D9078;
border-radius: 20px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #FFFFFF;
}
}
.workbench-li {
margin: 0 auto;
width: 100%;
}
}
}
.depart-footer{
margin-top: 20px;
.rest-depar{
min-width: 160px;
height: 40px;
border-radius: 20px;
border: 1px solid #0D9078;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #0D9078;
}
.con-depar{
min-width: 160px;
height: 40px;
background: #0D9078;
border-radius: 20px;
}
}
}
.nodata-container {
background-color: #fff;
padding: 0 20px;
......@@ -521,19 +697,6 @@
margin-top: 50px;
}
}
.pagination-container {
background-color: #fff;
height: 71px;
background: #ffffff;
border-radius: 18px;
display: flex;
justify-content: flex-end;
align-items: center;
margin-top: 10px;
padding: 0 20px;
}
}
}
.bg-purple-dark {
......
......@@ -76,15 +76,13 @@
getNav() {
menuList({ systemType: this.systemType }).then((res) => {
if (res.code == '000000') {
const { vueMenuDtos, userId } = res.data;
const { vueMenuDtos, userId, userName } = res.data;
const i = {
isSuper: false,
userID: userId,
};
const u = this.getSocketUrl('test');
console.log(BUILD_ENV);
// u.url = 'https://test1-sockets.yunqueyi.com';
storejs.set('initSocketInfo', { url: u, userId: userId });
const u = this.getSocketUrl(BUILD_ENV);
storejs.set('initSocketInfo', { url: u, userId: userId, userName:userName });
this.$store.dispatch('socket/initSocket', { url: u, userId: userId });
vueMenuDtos.map((item) => {
if (item.index.indexOf('administrators') > -1) {
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册