1
lkk
2025-04-03 5da871a9345d1b80767623cdbe74a45e3ff5532b
src/components/public/index.vue
@@ -1,197 +1,309 @@
<template>
    <div>
        <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
            <h3 v-if="fList.proResult ">检测项目 :{{ fList.project.proName }}</h3>
            <h3 v-if="fList.proResult ">检测结果 :{{ fList.proResult }}{{fList.project.proMetering}}</h3>
            <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px">
                <el-form-item label="病种名称" prop="bingzhong">
                    <el-input v-model="queryParams.bingzhong" placeholder="请输入简称" clearable
                        @keyup.enter.native="handleQuery" style="width: 120px;" />
                </el-form-item>
                <el-form-item label="拼音码" prop="bzPinyin">
                    <el-input v-model="queryParams.bzPinyin" placeholder="请输入拼音码" clearable
                        @keyup.enter.native="handleQuery" style="width: 130px;" />
                </el-form-item>
                <el-form-item>
                    <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
                </el-form-item>
            </el-form>
            <el-table :data="dataList" ref="multipleTable" v-loading="loading" @selection-change="handleSelectionChange"
                border height="320px
        ">
                <el-table-column type="selection" width="40" align="center" />
                <el-table-column label="序号" type="index" width="80px" />
                <el-table-column label="规则" align="center" prop="ruleStr" />
                <el-table-column label="病种名称" align="center" prop="bingzhong" />
            </el-table>
            <h3>已选项目</h3>
            <el-form :model="form" ref="queryForm" size="small" :inline="true" label-width="68px">
                <el-form-item>
                    <el-input type="textarea" v-model="form.desc" style="width: 560px"></el-input>
                </el-form-item>
            </el-form>
            <span slot="footer" class="dialog-footer">
                <el-button @click="open = false">取 消</el-button>
                <el-button type="primary" @click="handleOk">确 定</el-button>
            </span>
        </el-dialog>
    </div>
  <div>
    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
      <h3 v-if="fList.proResult">检测项目 :{{ fList.project.proName }}</h3>
      <h3 v-if="fList.proResult">
        检测结果 :{{ fList.proResult }}{{ fList.project.proMetering }}
      </h3>
      <el-form
        :model="queryParams"
        ref="queryForm"
        size="small"
        :inline="true"
        label-width="68px"
      >
        <el-form-item label="病种名称" prop="bingzhong">
          <el-input
            v-model="queryParams.bingzhong"
            placeholder="请输入简称"
            clearable
            @keyup.enter.native="handleQuery"
            style="width: 120px"
          />
        </el-form-item>
        <el-form-item label="拼音码" prop="bzPinyin">
          <el-input
            v-model="queryParams.bzPinyin"
            placeholder="请输入拼音码"
            clearable
            @keyup.enter.native="handleQuery"
            style="width: 130px"
          />
        </el-form-item>
        <el-form-item>
          <el-button
            type="primary"
            icon="el-icon-search"
            size="mini"
            @click="handleQuery"
            >搜索</el-button
          >
        </el-form-item>
      </el-form>
      <el-table
        :data="dataList"
        ref="multipleTable"
        v-loading="loading"
        @selection-change="handleSelectionChange"
        border
        height="320px
        "
      >
        <el-table-column type="selection" width="40" align="center" />
        <el-table-column label="序号" type="index" width="80px" />
        <!-- <el-table-column label="规则" align="center" prop="ruleStr" /> -->
        <el-table-column label="检查结论" align="center" prop="ruleStr" />
        <el-table-column label="检查所见" align="center" prop="yxbx" />
      </el-table>
      <div class="pag">
        <div class="pag1">
          <pagination
            v-show="total > 0"
            :total="total"
            :page.sync="queryParams.pageNum"
            :limit.sync="queryParams.pageSize"
            @pagination="getList"
          />
        </div>
      </div>
      <h3>已选项目</h3>
      <el-form
        :model="form"
        ref="queryForm"
        size="small"
        :inline="true"
        label-width="68px"
      >
        <el-form-item>
          <el-input
            type="textarea"
            v-model="form.desc"
            style="width: 560px"
          ></el-input>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button @click="open = false">取 消</el-button>
        <el-button type="primary" @click="handleOk">确 定</el-button>
      </span>
    </el-dialog>
  </div>
</template>
  
<script>
import {
    getlist, getlistByRuleStr
} from "@/api/doctor/check";
import { getlist, getlistByRuleStr } from "@/api/doctor/check";
export default {
    name: 'Public',
  name: "Public",
    props: {
        row: {
            type: Object,
        }
  /*  props: {
    row: {
      type: Object,
    },
    data() {
        return {
            open: false,
            // 弹出层标题
            title: "",
            dataList: [],
            // 遮罩层
            loading: false,
            form: {
                desc: ""
            },
            queryParams: {
                bingzhong: "",
                bzPinyin: "",
            },
            list: [],
            fList: {}
        };
  }, */
  props: {
    lastDesc: {
      type: String,
      default: "",
    },
    watch: {
        'row'(val, newVla) {
            // console.log(val,newVla)
            this.fList = val
            // if (this.fList) {
            //     this.getList()
            // }
        }
  },
  data() {
    return {
      open: false,
      // 弹出层标题
      title: "",
      yxbx:"",
      //   lastDesc: "",
      total: 0,
      dataList: [],
      // 遮罩层
      loading: false,
      form: {
        // desc: "",
        desc: this.lastDesc,
      },
      queryParams: {
        bingzhong: "",
        bzPinyin: "",
        pageNum: 1,
        pageSize: 10,
      },
      list: [],
      fList: {},
      selectedItems: [],
    };
  },
  watch: {
    row(val, newVla) {
      // console.log(val,newVla)
      //   this.fList = val;
      // if (this.fList) {
      //     this.getList()
      // }
    },
    mounted() {
    lastDesc(newVal) {
      this.form.desc = newVal; // 更新 form.desc
      console.log(newVal, 666);
    },
  },
  mounted() {},
    created() {
    },
    methods: {
        getList(row,date) {
            if (row.proId) {
                let fList = row
                // if (this.fList.proResult == "") {
                let data = {
                    proId: fList.proId,
                    // ruleStr: fList.proResult,
                }
                getlist(data).then(res => {
                    this.dataList = res.rows
                    this.$nextTick(() => {
                        this.dataList.forEach(item => {
                            this.fList.rulesList.forEach(item1 => {
                                if (item.aid == item1.aid) {
                                    this.$refs.multipleTable.toggleRowSelection(item, true);
                                }
                            })
                        })
                    })
                })
                // }else{
                //     let data = {
                //         proId: this.fList.proId,
                //         bingzhong: this.queryParams.bingzhong,
                //         ruleStr: this.fList.proResult,
                //     }
                //     getlistByRuleStr(data).then(res => {
                //         this.dataList = res.rows
                //         this.$nextTick(() => {
                //             this.dataList.forEach(item => {
                //                 this.fList.rulesList.forEach(item1 => {
                //                     if (item.aid == item1.aid) {
                //                         this.$refs.multipleTable.toggleRowSelection(item, true);
                //                     }
                //                 })
                //             })
                //         })
                //     })
                // }
            }else{
                let data = {
                    proId: row,
                }
                getlist(data).then(res => {
                    this.dataList = res.rows
                    // this.$nextTick(() => {
                    //     this.dataList.forEach(item => {
                    //         this.fList.rulesList.forEach(item1 => {
                    //             if (item.aid == item1.aid) {
                    //                 this.$refs.multipleTable.toggleRowSelection(item, true);
                    //             }
                    //         })
                    //     })
                    // })
                })
            }
        },
        handleQuery() {
            let data = {
                proId: this.fList.proId,
                bingzhong: this.queryParams.bingzhong,
                bzPinyin: this.queryParams.bzPinyin,
            }
            getlist(data).then(res => {
                this.dataList = res.rows
                this.$nextTick(() => {
                    this.dataList.forEach(item => {
                        this.fList.rulesList.forEach(item1 => {
                            if (item.aid == item1.aid) {
                                this.$refs.multipleTable.toggleRowSelection(item, true);
                            }
                        })
                    })
                })
            })
        },
        handleSelectionChange(selection) {
            this.list = []
            this.list = selection
            this.form.desc = ""
            this.list.forEach(element => {
                if( element.bingzhong){
this.form.desc += element.bingzhong + ","
                }else{
                    this.form.desc += element.ruleStr + ","
                }
  created() {},
  methods: {
    getList(row, date) {
      let data = {
        //   proId: fList.proId,
        // ruleStr: fList.proResult,
      };
      getlist(data).then((res) => {
        this.dataList = res.rows;
        this.$nextTick(() => {
          /* this.dataList.forEach((item) => {
            this.fList.rulesList.forEach((item1) => {
              if (item.aid === item1.aid) {
                this.$refs.multipleTable.toggleRowSelection(item, true);
              }
            });
        },
        handleOk() {
            this.open = false
            if (this.form.desc) {
                this.$emit('add', this.form.desc, this.list);
            }
            this.form.desc = ""
          }); */
        });
      });
    },
    /* getList(row, date) {
      if (row.proId) {
        let fList = row;
        // if (this.fList.proResult == "") {
        let data = {
        //   proId: fList.proId,
          // ruleStr: fList.proResult,
        };
        getlist(data).then((res) => {
          this.dataList = res.rows;
          this.$nextTick(() => {
            this.dataList.forEach((item) => {
              this.fList.rulesList.forEach((item1) => {
                if (item.aid == item1.aid) {
                  this.$refs.multipleTable.toggleRowSelection(item, true);
                }
              });
            });
          });
        });
        // }else{
        //     let data = {
        //         proId: this.fList.proId,
        //         bingzhong: this.queryParams.bingzhong,
        //         ruleStr: this.fList.proResult,
        //     }
        //     getlistByRuleStr(data).then(res => {
        //         this.dataList = res.rows
        //         this.$nextTick(() => {
        //             this.dataList.forEach(item => {
        //                 this.fList.rulesList.forEach(item1 => {
        //                     if (item.aid == item1.aid) {
        //                         this.$refs.multipleTable.toggleRowSelection(item, true);
        //                     }
        //                 })
        //             })
        //         })
        //     })
        // }
      } else {
        let data = {
        //   proId: row,
        };
        getlist(data).then((res) => {
          this.dataList = res.rows;
          console.log(res,888);
          // this.$nextTick(() => {
          //     this.dataList.forEach(item => {
          //         this.fList.rulesList.forEach(item1 => {
          //             if (item.aid == item1.aid) {
          //                 this.$refs.multipleTable.toggleRowSelection(item, true);
          //             }
          //         })
          //     })
          // })
        });
      }
    }, */
    handleQuery() {
      let data = {
        proId: this.fList.proId,
        bingzhong: this.queryParams.bingzhong,
        bzPinyin: this.queryParams.bzPinyin,
      };
      getlist(data).then((res) => {
        this.dataList = res.rows;
        this.$nextTick(() => {
          this.dataList.forEach((item) => {
            this.fList.rulesList.forEach((item1) => {
              if (item.aid == item1.aid) {
                this.$refs.multipleTable.toggleRowSelection(item, true);
              }
            });
          });
        });
      });
    },
    handleSelectionChange(selection) {
        console.log(selection[0].yxbx,123);
      this.list = [];
      this.list = selection;
      this.yxbx = selection[0].yxbx
      //   this.form.desc = "";
      this.list.forEach((element) => {
        if (element.bingzhong) {
          this.form.desc += element.bingzhong + ",";
        } else {
          this.form.desc += element.ruleStr + ",";
        }
    }
}
      });
    },
    /* handleSelectionChange(selection) {
      // 当前选中的项
        const newSelection = selection;
      // 1. 处理取消选中的项
      const removedItems = this.selectedItems.filter(
        (item) => !newSelection.includes(item)
      );
      // 从 form.desc 中移除取消选中的数据
      removedItems.forEach((item) => {
        const itemToRemove = item.bingzhong || item.ruleStr;
        this.form.desc = this.form.desc.replace(
          new RegExp(itemToRemove + ",?", "g"), // 使用正则确保移除所有重复项
          ""
        );
      });
      // 2. 更新已选中的数据列表
      this.selectedItems = newSelection;
      // 3. 添加新选中的项到 form.desc
      newSelection.forEach((element) => {
        const itemToAdd = element.bingzhong || element.ruleStr;
        if (!this.form.desc.includes(itemToAdd)) {
          this.form.desc += itemToAdd + ",";
        }
      });
    }, */
    handleOk() {
      this.open = false;
      if (this.form.desc) {
        // this.$emit("add", this.form.desc, this.list);
        this.$emit("add", this.form.desc,this.yxbx);
        // this.lastDesc = this.form.desc;
      }
      //   this.form.desc = "";
    },
  },
};
</script>
  
<style scoped></style>