Browse Source

医生科室列表页面及交互

admin_version1.0_2025_06_26
kuaileWu 3 weeks ago
parent
commit
3f70379cdd
  1. 2
      README.md
  2. 3
      public/index.html
  3. 169
      src/views/HomeView.vue
  4. 4
      vue.config.js

2
README.md

@ -1,4 +1,4 @@
# newkuaile-vue-project2
# 仁心大医医生管理后台
## Project setup
```

3
public/index.html

@ -5,7 +5,8 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= htmlWebpackPlugin.options.title %></title>
<!-- <title><%= htmlWebpackPlugin.options.title %></title> -->
<title>仁心大医医生管理后台</title>
</head>
<body>
<noscript>

169
src/views/HomeView.vue

@ -1,6 +1,5 @@
<template>
<div class="min-width pagePadding " style="background: #F5F7FA;">
<p class="pageTitle bold mb24">基础信息</p>
<div class="doctor-list-wrap ">
<p class="pageTitle">医生列表</p>
<el-form>
@ -12,9 +11,9 @@
</div>
<span class="totalCount">{{ totalNum }}已选{{ selectNum }}</span>
<GuipButton type="ignore" :btnstyle="{ width: '99px', height: '32px', margin: '0 26px' }"
@click="batchOperate('1')">批量禁用</GuipButton>
@click="batchOperate('0')">批量禁用</GuipButton>
<GuipButton type="ignore" :btnstyle="{ width: '99px', height: '32px' }"
@click="batchOperate('2')">
@click="batchOperate('1')">
批量启用</GuipButton>
</div>
<div class="right flex">
@ -25,21 +24,22 @@
</div>
</div>
<div class="tableList mt32" v-for="(item, index) in doctorList" :key="index">
<div class="top flex-between mb24">
<div class="left left1 flex">
<el-checkbox @change="handleCheckAllChange(index)" v-model="item.checked"></el-checkbox>
<el-avatar :src="item.avatar"></el-avatar>
<el-avatar :src="item.avator" v-if="item.avator"></el-avatar>
<span class="name">{{ item.name }}</span>
<span>{{ item.phone }}</span>
<GuipSwitch :modelValue="Boolean(item.status)" @change="onSwitchChange(item, index)">
<GuipSwitch :modelValue="Boolean(Number(item.status))" @change="onSwitchChange(item, index)">
</GuipSwitch>
<GuipButton type="text" @click="editDoctor(item, index)">编辑</GuipButton>
</div>
<div class="right">
<GuipButton type="system" size="form" @click="addHospital(item)">添加医院</GuipButton>
</div>
</div>
<GuipTable :tableData="item.departs" style="width: 100%" :ref="(el) => setPopoverRef(index, el)"
@selection-change="handleSelectionChange(index, $event)" :show-header="false"
:loading="loading">
@ -48,7 +48,7 @@
<el-table-column prop="depart_name" label="出诊医院" min-width="295">
<template slot-scope="scope">
<div class="flex cell_render">
<span>{{ scope.row.depart_name }}</span>
<span>{{ scope.row.hispital_name }} {{ scope.row.depart_name }}</span>
</div>
</template>
</el-table-column>
@ -70,7 +70,7 @@
<el-table-column prop="classify_count" label="套餐" min-width="165">
<template slot-scope="scope">
<div class="flex cell_render">
{{ scope.row.classify_count }}分组
{{ scope.row.package_count }}套餐
</div>
</template>
</el-table-column>
@ -183,87 +183,7 @@ export default {
selectNum: 0,
doctorName: '',
isIndeterminate: false,
doctorList: [
{
id: 10,
checked: false,
name: '一二',
idcard: '532524198711223615',
desc: '就哈哈哈哈,嗷跳舞',
detail: '拉开是金德拉克撒娇了大数据连接拉萨。。。',
tag: '专业',
phone: '17785748373',
avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png',
status: 0,
list: [
{
hos: [
'第三人民医院 针灸科',
'第一人民医院 中医科',
],
time: '2054 - 10 - 03',
status: true,
group: '2',
setMenu: '4',
nums: '88',
checked: false,
},
]
},
{
id: 10,
checked: false,
name: '一二',
idcard: '532524198711223615',
desc: '就哈哈哈哈,嗷跳舞',
detail: '拉开是金德拉克撒娇了大数据连接拉萨。。。',
tag: '专业',
phone: '17785748373',
avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png',
status: 1,
list: [
{
hos: [
'第三人民医院 针灸科',
'第一人民医院 中医科',
],
time: '2054 - 10 - 03',
status: true,
group: '2',
setMenu: '4',
nums: '88',
checked: false,
},
{
hos: [
'第三人民医院 针灸科',
'第一人民医院 中医科',
],
time: '2054 - 10 - 03',
status: true,
group: '2',
setMenu: '4',
nums: '88',
checked: false,
},
]
},
{
id: 10,
checked: false,
name: '一二',
idcard: '532524198711223615',
desc: '就哈哈哈哈,嗷跳舞',
detail: '拉开是金德拉克撒娇了大数据连接拉萨。。。',
tag: '专业',
phone: '17785748373',
avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png',
status: 1,
list: [
]
},
],
doctorList: false,
allChecked: false,
}
},
@ -284,10 +204,6 @@ export default {
store.commit('SET_SLIDER_MENU', 'menuData');
this.getInitData()
},
render() {
console.log("组件重新渲染");
return 'a';
},
computed: {
...mapState(['menuData']) // VuexshowSidebar
},
@ -295,8 +211,9 @@ export default {
//
getInitData() {
this.$http('POST', '/api/admin/doctor_depart_list', {
name: this.doctorName
}).then(response => {
if (response.code == 0 && Object.values(response.data).length > 0) {
if (response.code == 0) {
const list = Object.values(response.data).map(item => {
return {
...item,
@ -305,10 +222,8 @@ export default {
}
})
this.doctorList = list
console.log(list,this.doctorList,'this.doctorList====');
this.calculateTotalNum()
}
}).catch(error => {
console.error(error, 'error')
})
@ -394,37 +309,57 @@ export default {
row.status = !row.status;
this.$set(this.doctorList, row)
},
batchOperate(type) {
// this.tableSelections
batchOperate(status) {
console.log(this.tableSelections,'this.tableSelections----');
if (type == '1') {
//
// this.getInitData()
if(!this.tableSelections || this.tableSelections.length <= 0) {
this.$message.error('未选择要'+(status == '0' ? '禁用':'启用')+'的科室')
return;
}
} else {
//
var tableSelections = this.tableSelections.flat()
var depart_index_ids = '';
for(var i=0; i< tableSelections.length;i++) {
if(!depart_index_ids) {
depart_index_ids = tableSelections[i].id
continue;
}
depart_index_ids += ','+tableSelections[i].id
}
this.$http('POST', '/api/admin/depart_mutil_option', {
depart_index_ids:depart_index_ids,
status:status
}).then(response => {
if (response.code == 0) {
this.$message.success(response.msg);
}else{
this.$message.error(response.msg);
}
location.reload()
}).catch(error => {
console.error(error, 'error')
this.$message.error('操作失败');
})
},
onSwitchChange(item, index) {
item.status = item.status == 0 ? 1 : 0;
console.log(index, item, '====');
this.$set(this.doctorList, item)
// let depart_ids = ''
//
// this.$http('POST', '/api/admin/depart_mutil_option', {
// doctor_id:item.id,
// depart_ids:'',
// status:''
// }).then(response => {
// if (response.code == 0) {
// this.doctorList = response.data
// }
// }).catch(error => {
// console.error(error, 'error')
// })
this.$http('POST', '/api/admin/set_doctor_status', {
doctor_id:item.id,
status:item.status
}).then(response => {
if (response.code == 0) {
this.$message.success(response.msg);
}else{
this.$message.error(response.msg);
}
}).catch(error => {
console.error(error, 'error')
this.$message.error('操作失败');
})
},
addDoctor() {
this.$router.push({

4
vue.config.js

@ -3,6 +3,7 @@ const TerserPlugin = require('terser-webpack-plugin');
module.exports = {
// publicPath: '/new/',
devServer: {
port:80,
proxy: {
'/api': {
target: 'http://jasonyizherenxin.checkcopy.com',
@ -11,7 +12,8 @@ module.exports = {
'^/api': ''
}
}
}
},
allowedHosts:'all',
},
configureWebpack: {
module: {

Loading…
Cancel
Save