|
@@ -8,15 +8,15 @@
|
|
|
<el-input v-model="form.name" size="small" placeholder="请输入"></el-input>
|
|
<el-input v-model="form.name" size="small" placeholder="请输入"></el-input>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="医派">
|
|
<el-form-item label="医派">
|
|
|
- <el-select v-model="form.sectCategory" @change="getHospitalDepartment(form.sectCategory)"
|
|
|
|
|
|
|
+ <el-select v-model="form.sectCategory" @change="onSectCategoryChange"
|
|
|
placeholder="请选择" size="small" clearable>
|
|
placeholder="请选择" size="small" clearable>
|
|
|
- <el-option v-for="item in hospitalCategory" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
|
|
|
|
|
|
+ <el-option v-for="item in sectCategoryList" :key="item" :label="item" :value="item"></el-option>
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="科室">
|
|
<el-form-item label="科室">
|
|
|
<el-select v-model="form.sectDept"
|
|
<el-select v-model="form.sectDept"
|
|
|
placeholder="请选择" size="small" clearable>
|
|
placeholder="请选择" size="small" clearable>
|
|
|
- <el-option v-for="item in hospitalDepartment" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
|
|
|
|
|
|
+ <el-option v-for="item in sectDeptList" :key="item.value" :label="item.label" :value="item.value"></el-option>
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-form>
|
|
</el-form>
|
|
@@ -55,14 +55,15 @@
|
|
|
</template>
|
|
</template>
|
|
|
<script>
|
|
<script>
|
|
|
import { getEffectQuery } from "@/api/knowledge.js";
|
|
import { getEffectQuery } from "@/api/knowledge.js";
|
|
|
-import { getSuitableTechList } from "@/api/technology.js";
|
|
|
|
|
-import { getHospitalCategory, getHospitalDepartment } from "@/api/city";
|
|
|
|
|
|
|
+import { getSuitableTechList, getPreSectInfo } from "@/api/technology.js";
|
|
|
|
|
|
|
|
export default {
|
|
export default {
|
|
|
data() {
|
|
data() {
|
|
|
return {
|
|
return {
|
|
|
- hospitalCategory: [],
|
|
|
|
|
- hospitalDepartment: [],
|
|
|
|
|
|
|
+ // 医派信息 Map:key 为医派('' 表示全部派别科室),value 为派别科室列表
|
|
|
|
|
+ sectInfoMap: {},
|
|
|
|
|
+ sectCategoryList: [], // 医派下拉项(Map 的非空 key)
|
|
|
|
|
+ sectDeptList: [], // 科室下拉项(当前医派对应的派别科室,归一化为 {label, value})
|
|
|
|
|
|
|
|
form: {
|
|
form: {
|
|
|
name: "", // 方名
|
|
name: "", // 方名
|
|
@@ -79,12 +80,44 @@ export default {
|
|
|
this.clearDis();
|
|
this.clearDis();
|
|
|
},
|
|
},
|
|
|
methods: {
|
|
methods: {
|
|
|
- async getHospitalCategory() {
|
|
|
|
|
- this.hospitalCategory = await getHospitalCategory();
|
|
|
|
|
|
|
+ // 医派下拉变化:刷新科室列表
|
|
|
|
|
+ onSectCategoryChange() {
|
|
|
|
|
+ this.updateSectDeptList();
|
|
|
},
|
|
},
|
|
|
- async getHospitalDepartment() {
|
|
|
|
|
- this.hospitalDepartment = await getHospitalDepartment({hospital: this.form.sectCategory || ''});
|
|
|
|
|
- if (!this.hospitalDepartment.find(item => item.id === this.form.sectDept)) this.form.sectDept = '';
|
|
|
|
|
|
|
+ // 派别科室列表项归一化(兼容字符串 / 对象两种后端返回)
|
|
|
|
|
+ normalizeDept(dept) {
|
|
|
|
|
+ if (dept == null) return null;
|
|
|
|
|
+ if (typeof dept === 'string') return { label: dept, value: dept };
|
|
|
|
|
+ const name = dept.name != null ? dept.name
|
|
|
|
|
+ : dept.deptName != null ? dept.deptName
|
|
|
|
|
+ : dept.sectDept != null ? dept.sectDept
|
|
|
|
|
+ : '';
|
|
|
|
|
+ return { label: name, value: name };
|
|
|
|
|
+ },
|
|
|
|
|
+ // 根据当前医派刷新科室下拉(未选医派 → '' 即全部派别科室)
|
|
|
|
|
+ updateSectDeptList() {
|
|
|
|
|
+ const key = this.form.sectCategory || '';
|
|
|
|
|
+ const raw = this.sectInfoMap[key] || this.sectInfoMap[''] || [];
|
|
|
|
|
+ this.sectDeptList = raw.map(d => this.normalizeDept(d)).filter(Boolean);
|
|
|
|
|
+ // 当前选中科室已不在新列表中则清空
|
|
|
|
|
+ if (!this.sectDeptList.find(d => d.value === this.form.sectDept)) {
|
|
|
|
|
+ this.form.sectDept = '';
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ // 获取医派信息:Data 为 Map,key 为医派,value 为派别科室列表,'' 为全部派别科室
|
|
|
|
|
+ async fetchSectInfo() {
|
|
|
|
|
+ try {
|
|
|
|
|
+ const res = await getPreSectInfo();
|
|
|
|
|
+ this.sectInfoMap = (res && res.Data) ? res.Data : {};
|
|
|
|
|
+ // 医派下拉 = Map 的非空 key('' 表示全部,由「不选」体现)
|
|
|
|
|
+ this.sectCategoryList = Object.keys(this.sectInfoMap).filter(k => k !== '');
|
|
|
|
|
+ this.updateSectDeptList();
|
|
|
|
|
+ } catch (e) {
|
|
|
|
|
+ console.error('获取医派信息失败', e);
|
|
|
|
|
+ this.sectInfoMap = {};
|
|
|
|
|
+ this.sectCategoryList = [];
|
|
|
|
|
+ this.sectDeptList = [];
|
|
|
|
|
+ }
|
|
|
},
|
|
},
|
|
|
resetForm() {
|
|
resetForm() {
|
|
|
this.form = {
|
|
this.form = {
|
|
@@ -96,7 +129,7 @@ export default {
|
|
|
clearDis() {
|
|
clearDis() {
|
|
|
this.currentPage = 1;
|
|
this.currentPage = 1;
|
|
|
this.resetForm();
|
|
this.resetForm();
|
|
|
- this.getHospitalCategory().then(() => this.getHospitalDepartment());
|
|
|
|
|
|
|
+ this.fetchSectInfo();
|
|
|
this.getAgreeRecipe();
|
|
this.getAgreeRecipe();
|
|
|
},
|
|
},
|
|
|
handleCurrentChange(e) {
|
|
handleCurrentChange(e) {
|