|
@@ -263,6 +263,15 @@
|
|
|
@ChildDataTypeChange="ChildDataTypeChange"
|
|
|
@childSubCodeChange="childSubCodeChange"
|
|
|
/>
|
|
|
+ <AddNewRuleContent
|
|
|
+ ref='ruleContent'
|
|
|
+ v-if="(!form.parHasSub && !tableShow) || contentRuls"
|
|
|
+ @ruleContent='ruleContent'
|
|
|
+ :isContent="isEdit"
|
|
|
+ :formEidtCopy='formEidt'
|
|
|
+ :isError='isErr'
|
|
|
+ >
|
|
|
+ </AddNewRuleContent>
|
|
|
<el-form-item>
|
|
|
<div class="form_btn">
|
|
|
<el-button
|
|
@@ -281,10 +290,21 @@
|
|
|
import api from "@api/knowledgeLib.js";
|
|
|
import { formRules } from "./rules";
|
|
|
import AddNewRuleTable from "./AddNewRuleTable";
|
|
|
+import AddNewRuleContent from "./AddNewRuleContent";
|
|
|
export default {
|
|
|
name: "AddRule",
|
|
|
data() {
|
|
|
return {
|
|
|
+ isRedMsg:[],
|
|
|
+ isErr:false, //控制护理开单项里面的错误提示
|
|
|
+ staicData:{ //护理开单项里面的数据
|
|
|
+ gljtxx:[],
|
|
|
+ fjxx:''
|
|
|
+ },
|
|
|
+ formEidt:{},
|
|
|
+ isEdit:false, //判断是否是编辑页面
|
|
|
+ isStatic:false, //判断关联静态知识的tabel列是否显示
|
|
|
+ contentRuls:false, //判断规则内容为列表还是表单
|
|
|
title: "规则维护-添加规则",
|
|
|
ruleTypeList: [], //规则类型列表 1
|
|
|
ruleTermTypeList: [], //规则术语类型列表 2
|
|
@@ -329,12 +349,19 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
+ //护理开单项子组件里面的传过来的值
|
|
|
+ ruleContent(data){
|
|
|
+ this.staicData=data
|
|
|
+ },
|
|
|
clearValidate(data) {
|
|
|
this.$refs.ruleForm.clearValidate(data);
|
|
|
},
|
|
|
// 编辑初始化
|
|
|
async initEdidData() {
|
|
|
- // 规则术语类型初始化
|
|
|
+ // 规则术语类型初始化
|
|
|
+ this.contentRuls=false;
|
|
|
+ this.isEdit=false;
|
|
|
+ this.isRedMsg=[];
|
|
|
const newruleTermTypeList = await this.ruleTypeList.find(
|
|
|
(it) => it.id == this.form.parRuleType
|
|
|
);
|
|
@@ -345,13 +372,43 @@ export default {
|
|
|
);
|
|
|
this.baseTypeList = obj.subMenuList;
|
|
|
this.subRuleMaxNum = obj.number;
|
|
|
-
|
|
|
this.conceptList = [
|
|
|
{
|
|
|
conceptName: this.form.parlibName,
|
|
|
conceptId: this.form.parConceptId,
|
|
|
},
|
|
|
];
|
|
|
+ // 加载护理开单项的推送内容
|
|
|
+ if(!this.form.klRuleByIdSub){
|
|
|
+ this.isEdit=true;
|
|
|
+ this.contentRuls=true;
|
|
|
+ this.formEidt=JSON.parse(JSON.stringify(this.form))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //加载护理非开单项的关联静态知识
|
|
|
+ if(this.form.parRuleType==8){
|
|
|
+ this.isStatic=true;
|
|
|
+ if(Array.isArray(this.form.klRuleByIdGroup)){
|
|
|
+ let itemCopy={}
|
|
|
+ this.form.klRuleByIdGroup.forEach((item,index)=>{
|
|
|
+ if(Array.isArray(item.klRuleStaticSub)){
|
|
|
+ item.klRuleStaticSub.forEach((items,ind)=>{
|
|
|
+ this.$set(this.form.klRuleByIdSub[index],'ruleStatic',[])
|
|
|
+ this.$set(this.form.klRuleByIdSub[index],'ruleStaticList',[])
|
|
|
+ let obj={
|
|
|
+ id:items.conceptId,
|
|
|
+ name:items.name
|
|
|
+ }
|
|
|
+ itemCopy=JSON.parse(JSON.stringify(obj))
|
|
|
+ this.form.klRuleByIdSub[index].ruleStatic.push(itemCopy.id);
|
|
|
+ this.form.klRuleByIdSub[index].ruleStaticList.push(itemCopy)
|
|
|
+ })
|
|
|
+
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //加载列表规则内容
|
|
|
if (this.form.parConceptId && this.checkFirstPlace && this.conceptList) {
|
|
|
this.firstPlace = this.conceptList.find(
|
|
|
(it) => it.conceptId === this.form.parConceptId
|
|
@@ -469,25 +526,47 @@ export default {
|
|
|
//药品数据处理
|
|
|
getDragData(info) {
|
|
|
let dataArr = [];
|
|
|
- let arr = JSON.parse(JSON.stringify(info.klRuleByIdSub));
|
|
|
- arr.map((mapItem) => {
|
|
|
- if (dataArr.length == 0) {
|
|
|
- dataArr.push({ groupType: mapItem.groupType, List: [mapItem] });
|
|
|
- } else {
|
|
|
- let res = dataArr.some((item) => {
|
|
|
- //判断相同日期,有就添加到当前项
|
|
|
- if (item.groupType == mapItem.groupType) {
|
|
|
- item.List.push(mapItem);
|
|
|
- return true;
|
|
|
- }
|
|
|
- });
|
|
|
- if (!res) {
|
|
|
- //如果没找相同日期添加一个新对象
|
|
|
- dataArr.push({ groupType: mapItem.groupType, List: [mapItem] });
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- this.getDragData2(info, dataArr);
|
|
|
+ //处理修改接口请求的数据
|
|
|
+ //先将数据深拷贝,避免数据污染
|
|
|
+ let infoCopy=JSON.parse(JSON.stringify(info))
|
|
|
+ infoCopy.klRuleByIdSubCopy=[];
|
|
|
+ if(info.klRuleByIdGroup.length>0){
|
|
|
+ let klRuleByIdSub={}
|
|
|
+ info.klRuleByIdGroup.forEach(item=>{
|
|
|
+ if(item.klRuleByIdSub&&Array.isArray(item.klRuleByIdSub)){
|
|
|
+ item.klRuleByIdSub.forEach(items=>{
|
|
|
+ klRuleByIdSub=JSON.parse(JSON.stringify(items));
|
|
|
+ infoCopy.klRuleByIdSubCopy.push(klRuleByIdSub)
|
|
|
+ })
|
|
|
+ infoCopy.klRuleByIdSub=[...item.klRuleByIdSub]
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ //判断是否存在klRuleByIdSub,没有就是护理开单项直接赋值
|
|
|
+ if(!info.klRuleByIdGroup[0].klRuleByIdSub){
|
|
|
+ this.form = JSON.parse(JSON.stringify(info));
|
|
|
+ }else{
|
|
|
+ let arr = JSON.parse(JSON.stringify(infoCopy.klRuleByIdSubCopy));
|
|
|
+ arr.map((mapItem) => {
|
|
|
+ if (dataArr.length == 0) {
|
|
|
+ dataArr.push({ groupType: mapItem.groupType, List: [mapItem] });
|
|
|
+ } else {
|
|
|
+ let res = dataArr.some((item) => {
|
|
|
+ //判断相同日期,有就添加到当前项
|
|
|
+ if (item.groupType == mapItem.groupType) {
|
|
|
+ item.List.push(mapItem);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (!res) {
|
|
|
+ //如果没找相同日期添加一个新对象
|
|
|
+ dataArr.push({ groupType: mapItem.groupType, List: [mapItem] });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ this.getDragData2(info, dataArr);
|
|
|
+ }
|
|
|
+
|
|
|
},
|
|
|
getDragData2(info, dataArr) {
|
|
|
let arr = [];
|
|
@@ -505,34 +584,125 @@ export default {
|
|
|
submitForm(formName) {
|
|
|
this.$refs[formName].validate((valid) => {
|
|
|
if (valid) {
|
|
|
+ this.isErr=false;
|
|
|
+ this.isRedMsg=[];
|
|
|
let params = JSON.parse(JSON.stringify(this.form));
|
|
|
- params.klRuleInfoSaveSub = params.klRuleByIdSub;
|
|
|
- delete params.klRuleByIdSub;
|
|
|
- params.klRuleInfoSaveSub.forEach((item, i, arr) => {
|
|
|
- if (i === 0) {
|
|
|
- item.groupType = 1;
|
|
|
- } else {
|
|
|
- if (item.groupId == arr[i - 1].groupId) {
|
|
|
- item.groupType = arr[i - 1].groupType;
|
|
|
- item.subMsg = arr[i - 1].subMsg;
|
|
|
- } else {
|
|
|
- item.groupType = arr[i - 1].groupType + 1;
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- params.klRuleInfoSaveSub.forEach((ite) => {
|
|
|
- delete ite.groupId;
|
|
|
- delete ite.groupChildId;
|
|
|
- delete ite.rowIndex;
|
|
|
- delete ite.baseTypes;
|
|
|
- delete ite.baseTermTypeList;
|
|
|
- delete ite.conceptList;
|
|
|
- });
|
|
|
- if (this.parId) {
|
|
|
- params.parId = this.isCopy ? undefined : this.parId;
|
|
|
- params.parStatus = this.isCopy ? 1 : this.form.parStatus;
|
|
|
- }
|
|
|
- this.saveRule(params);
|
|
|
+ if(params.klRuleByIdSub){
|
|
|
+ params.klRuleInfoSaveSub = params.klRuleByIdSub;
|
|
|
+ delete params.klRuleByIdSub;
|
|
|
+ params.klRuleInfoSaveSub.forEach((item, i, arr) => {
|
|
|
+ if (i === 0) {
|
|
|
+ item.groupType = 1;
|
|
|
+ } else {
|
|
|
+ if (item.groupId == arr[i - 1].groupId) {
|
|
|
+ item.groupType = arr[i - 1].groupType;
|
|
|
+ item.subMsg = arr[i - 1].subMsg;
|
|
|
+ } else {
|
|
|
+ item.groupType = arr[i - 1].groupType + 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ params.klRuleInfoSaveSub.forEach((ite) => {
|
|
|
+ delete ite.groupId;
|
|
|
+ delete ite.groupChildId;
|
|
|
+ delete ite.rowIndex;
|
|
|
+ delete ite.baseTypes;
|
|
|
+ delete ite.baseTermTypeList;
|
|
|
+ delete ite.conceptList;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (this.parId) {
|
|
|
+ params.parId = this.isCopy ? undefined : this.parId;
|
|
|
+ params.parStatus = this.isCopy ? 1 : this.form.parStatus;
|
|
|
+ }
|
|
|
+ //改造params,保存护理开单项类型的
|
|
|
+ let paramsCopy=JSON.parse(JSON.stringify(params))
|
|
|
+ //先遍历子集klRuleInfoSaveSub
|
|
|
+ paramsCopy.klRuleInfoSaveGroup=[];
|
|
|
+ let obj={
|
|
|
+ groupType:0,
|
|
|
+ klRuleInfoSaveSub:[],
|
|
|
+ }
|
|
|
+ this.$set(obj,'ruleStatic',[])
|
|
|
+ if(params.klRuleInfoSaveSub&&Array.isArray(params.klRuleInfoSaveSub)){
|
|
|
+ if(params.klRuleInfoSaveSub.length>0){
|
|
|
+ params.klRuleInfoSaveSub.forEach((item)=>{
|
|
|
+ obj.groupType=item.groupType;
|
|
|
+ obj.klRuleInfoSaveSub=[item]
|
|
|
+ let objCopy=JSON.parse(JSON.stringify(obj))
|
|
|
+ //可以处理objCopy,将groupType相同的放入klRuleInfoSaveSub里面
|
|
|
+ paramsCopy.klRuleInfoSaveGroup.push(objCopy)
|
|
|
+ })
|
|
|
+ }else{
|
|
|
+ paramsCopy.klRuleInfoSaveGroup.push(obj)
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ paramsCopy.klRuleInfoSaveGroup.push(obj)
|
|
|
+ }
|
|
|
+ if(paramsCopy.klRuleInfoSaveSub&&Array.isArray(paramsCopy.klRuleInfoSaveSub)){
|
|
|
+ //护理非开单项的关联静态知识的处理
|
|
|
+ paramsCopy.klRuleInfoSaveSub.forEach((item,ind)=>{
|
|
|
+ let ruleObj={}
|
|
|
+ if(Array.isArray(item.ruleStatic)){
|
|
|
+ item.ruleStatic.forEach((items,index)=>{
|
|
|
+ ruleObj.conceptId=items;
|
|
|
+ ruleObj.orderNo=index;
|
|
|
+ let ruleObjCopy=JSON.parse(JSON.stringify(ruleObj))
|
|
|
+ //将关联静态知识的对象放入数组内
|
|
|
+ paramsCopy.klRuleInfoSaveGroup[ind].ruleStatic.push(ruleObjCopy)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ //删除第二层的klRuleInfoSaveSub
|
|
|
+ delete paramsCopy.klRuleInfoSaveSub
|
|
|
+ }
|
|
|
+ //判断护理开单是否附加信息和关联静态信息是否都没存在值
|
|
|
+ let flagRule=false;
|
|
|
+ //附加信息
|
|
|
+ if(this.staicData.fjxx ){
|
|
|
+ paramsCopy.klRuleInfoSaveGroup[0].groupType='1';
|
|
|
+ paramsCopy.parMsg=this.staicData.fjxx ;
|
|
|
+ flagRule=true;
|
|
|
+ }else{
|
|
|
+ paramsCopy.parMsg='';
|
|
|
+ }
|
|
|
+ //关联静态知识
|
|
|
+ if(this.staicData.gljtxx.length>0){
|
|
|
+ paramsCopy.klRuleInfoSaveGroup[0].groupType='1';
|
|
|
+ let rule={};
|
|
|
+ this.staicData.gljtxx.forEach((item,index)=>{
|
|
|
+ rule.conceptId=item;
|
|
|
+ rule.orderNo=index;
|
|
|
+ let ruleCopy=JSON.parse(JSON.stringify(rule))
|
|
|
+ paramsCopy.klRuleInfoSaveGroup[0].ruleStatic.push(ruleCopy);
|
|
|
+ })
|
|
|
+ flagRule=true;
|
|
|
+ }
|
|
|
+ //如果是护理项并且静态知识和附加信息都没有值
|
|
|
+ if(this.contentRuls &&!flagRule){
|
|
|
+ this.isErr=true
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //如果护理非开单项关联静态知识和附加信息都没有值
|
|
|
+ if(this.isStatic){
|
|
|
+ if(Array.isArray(paramsCopy.klRuleInfoSaveGroup)){
|
|
|
+ paramsCopy.klRuleInfoSaveGroup.forEach((item)=>{
|
|
|
+ if(Array.isArray(item.klRuleInfoSaveSub)){
|
|
|
+ item.klRuleInfoSaveSub.forEach(items=>{
|
|
|
+ if(items.ruleStatic&&Array.isArray(items.ruleStatic)){
|
|
|
+ if(items.ruleStatic.length>0||items.subMsg){
|
|
|
+ this.isRedMsg.push(false)
|
|
|
+ }else{
|
|
|
+ this.isRedMsg.push(true)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.saveRule(paramsCopy);
|
|
|
} else {
|
|
|
return false;
|
|
|
}
|
|
@@ -544,6 +714,14 @@ export default {
|
|
|
},
|
|
|
// table_form 规则类型选中
|
|
|
ruleTypeChange(val) {
|
|
|
+ //先初始化
|
|
|
+ this.contentRuls=false;
|
|
|
+ this.isStatic=false;
|
|
|
+ this.isRedMsg=[]
|
|
|
+ //是否护理非开单项
|
|
|
+ if(val===8){
|
|
|
+ this.isStatic=true
|
|
|
+ }
|
|
|
this.form.parLenCode = "";
|
|
|
const obj = this.ruleTypeList.find((it) => it.id === val);
|
|
|
this.ruleTermTypeList = obj.subMenuList;
|
|
@@ -552,11 +730,23 @@ export default {
|
|
|
},
|
|
|
// table_form 规则术语类型选中
|
|
|
ruleTermChange(val) {
|
|
|
+ this.contentRuls=false;
|
|
|
+ this.isRedMsg=[]
|
|
|
const obj = this.ruleTermTypeList.find((it) => it.code === val);
|
|
|
this.form.parLenName = obj.name;
|
|
|
this.baseTypeList = obj.subMenuList;
|
|
|
this.subRuleMaxNum = obj.number;
|
|
|
this.form.parHasSub = obj.subMenuList.length ? 1 : 0;
|
|
|
+ if(!this.form.parHasSub){
|
|
|
+ this.contentRuls=true;
|
|
|
+ }
|
|
|
+ //初始化护理开单项的输入框
|
|
|
+ if(this.contentRuls){
|
|
|
+ this.$nextTick(()=>{
|
|
|
+ this.isEdit=false
|
|
|
+ this.$refs.ruleContent.clearFormData()
|
|
|
+ })
|
|
|
+ }
|
|
|
this.isShow = obj.subMenuList.length ? 1 : 0;
|
|
|
this.setInitGroupData();
|
|
|
},
|
|
@@ -1203,18 +1393,21 @@ export default {
|
|
|
},
|
|
|
},
|
|
|
watch: {
|
|
|
- "form.klRuleByIdSub": {
|
|
|
+ form: {
|
|
|
handler(val) {
|
|
|
- this.form.klRuleByIdSub.forEach((item, i, arr) => {
|
|
|
- if (i == 0) {
|
|
|
- item.rowIndex = 1;
|
|
|
- } else if (item.groupId == arr[i - 1].groupId) {
|
|
|
- item.rowIndex = arr[i - 1].rowIndex;
|
|
|
- } else {
|
|
|
- item.rowIndex = arr[i - 1].rowIndex + 1;
|
|
|
- }
|
|
|
- });
|
|
|
+ if(val.klRuleByIdSub){
|
|
|
+ this.form.klRuleByIdSub.forEach((item, i, arr) => {
|
|
|
+ if (i == 0) {
|
|
|
+ item.rowIndex = 1;
|
|
|
+ } else if (item.groupId == arr[i - 1].groupId) {
|
|
|
+ item.rowIndex = arr[i - 1].rowIndex;
|
|
|
+ } else {
|
|
|
+ item.rowIndex = arr[i - 1].rowIndex + 1;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
},
|
|
|
+ immediate: true,
|
|
|
deep: true,
|
|
|
},
|
|
|
},
|
|
@@ -1266,6 +1459,6 @@ export default {
|
|
|
return this.dict.indexOf(this.ruleTermCodeStrs) > -1;
|
|
|
},
|
|
|
},
|
|
|
- components: { AddNewRuleTable },
|
|
|
+ components: { AddNewRuleTable,AddNewRuleContent },
|
|
|
};
|
|
|
</script>
|