qinxianzhangyao
2023-11-17 1397987a02dd4896bb2286f8eb1d787ee5663194
qxtj
4个文件已修改
13个文件已添加
3911 ■■■■■ 已修改文件
src/assets/styles/element-ui.scss 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doctor/bgsh/index.vue 764 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doctor/check/index.vue 279 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hosp/restore/index.vue 601 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/jmreport/richengtongji/index.vue 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/jmreport/tijianrenshu/index.vue 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/jmreport/tuanduitiji/index.vue 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/jmreport/yingxingtongji/index.vue 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/paiban/beiwanglu/index.vue 245 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/paiban/gerenpaiban/index.vue 280 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/paiban/pilpaiban/index.vue 267 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/standard/renshunum/index.vue 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/standard/tijiancom/index.vue 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/standard/tijianxinxi/index.vue 388 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/standard/tijianxinxichakan/index.vue 618 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/notice/index.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/styles/element-ui.scss
@@ -136,7 +136,7 @@
  position: absolute;
  top: 0;
  bottom: 0;
  width: 65px;
  width: 78px;
  border-right: 1px solid #e4e4e4;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
src/views/doctor/bgsh/index.vue
New file
@@ -0,0 +1,764 @@
<template>
  <div>
    <el-form :model="queryParams" ref="tableList" :inline="true" label-width="76px" style="margin-top: 10px">
      <el-form-item label="姓名" prop="name">
        <el-input v-model="queryParams.name" style="width: 120px" placeholder="请输入姓名" clearable @keyup.enter.native="handleQuery"></el-input>
      </el-form-item>
      <el-form-item label="体检号" prop="tjNumber">
        <el-input ref="inputName" v-model="queryParams.tjNumber" style="width: 180px" placeholder="请输入体检号" clearable @keyup.enter.native="handleQuery"></el-input>
      </el-form-item>
      <el-form-item label="体检时间" prop="tjTime">
        <el-date-picker v-model="startTime" type="datetimerange" align="right" :picker-options="pickerOptions" style="width: 310px" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:00:00']" format="yyyy-MM-dd HH:mm"
          value-format="yyyy-MM-dd HH:mm" @change="dateChangebirthday1">
        </el-date-picker> </el-form-item>
      <el-form-item label="单位名称" prop="tjCompName" style="margin-left: 20px;">
        <el-select  :remote-method="getRemoteData" v-model="queryParams.tjCompName" value-key="drugManufacturerId" style="width: 180px" remote filterable placeholder="请选择单位名称" clearable @change="searchSelect">
          <el-option v-for="dict in CompanyList" :key="dict.drugManufacturerId" :label="dict.cnName" :value="dict"/>
        </el-select>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" size="mini" @click="submitForm">搜索</el-button>
        <el-button  size="mini" @click="resetQuery">重置</el-button>
      </el-form-item>
    </el-form>
    <el-row :gutter="10" class="mb8" style="margin-left:14px ;">
      <el-col :span="1.5">
        <el-button type="primary"
          size="mini"
          @click="radioChange"
          v-hasPermi="['system:notice:add']"
        >核收</el-button>
      </el-col>
    </el-row>
    <template>
      <el-table
        v-loading="loading"
        :data="checkList"
        ref="table"
        border
        style="margin: 20px; width: 98%"
      >
      <el-table-column type="selection" width="40px" align="center" fixed="left" />
        <!-- <template slot="empty">数据正在加载中</template> -->
        <el-table-column
          label="体检号"
          align="center"
          prop="tjNumber"
          :show-overflow-tooltip="true"
          width="160px"
          fixed="left"
        />
        <el-table-column
          label="姓名"
          align="center"
          prop="cusName"
          :show-overflow-tooltip="true"
          width="100px"
          fixed="left"
        />
        <el-table-column
          label="性别"
          align="center"
          prop="cusSex"
          :show-overflow-tooltip="true"
          width="55px"
        >
          <template slot-scope="scope">
            <span v-if="scope.row.cusSex == '0'">男</span>
            <span v-if="scope.row.cusSex == '1'">女</span>
            <span v-if="scope.row.cusSex == '2'">未知</span>
            <span v-if="scope.row.cusSex == '9'">未说明性别</span>
          </template>
        </el-table-column>
        <el-table-column
          label="出生日期"
          align="center"
          prop="cusBrithday"
          :show-overflow-tooltip="true"
          width="110px"
        />
        <el-table-column
          label="电话"
          align="center"
          prop="cusPhone"
          :show-overflow-tooltip="true"
          width="130px"
        />
        <el-table-column
          label="体检时间"
          align="center"
          prop="tjTime"
          :show-overflow-tooltip="true"
          width="110px"
        />
        <el-table-column
          label="完成时间"
          align="center"
          prop="finishTime"
          :show-overflow-tooltip="true"
          width="160px"
        />
        <el-table-column
          label="状态"
          align="center"
          prop="tjStatus"
          :show-overflow-tooltip="true"
          width="50px"
        >
          <template slot-scope="scope">
            <span>{{ scope.row.tjStatus == "1" ? "已检" : "未检" }}</span>
          </template>
        </el-table-column>
        <el-table-column
          label="单位名称"
          align="center"
          prop="tjCompName"
          :show-overflow-tooltip="true"
        />
      </el-table>
      <div class="pag">
        <div class="pag1">
          <pagination
            v-show="total > 0"
            :total="total"
            :page.sync="queryParams.page"
            :limit.sync="queryParams.pageSize"
            @pagination="getList"
          />
        </div>
      </div>
    </template>
  </div>
</template>
<script>
import {
  getcheckList,
  getTjdetailList,
  getupdateCheckType,
  getModifiedState,
  getfiedState,
  getState,
  getforceIn,
  gettoPdf,
  getModified,
} from "@/api/doctor/checkAll";
import { getInfo } from "@/api/login";
import { getCompany, queryCompany } from "@/api/team/tuanti";
// import { getDeptAdvice } from "@/api/doctor/check";
import { getPdf, revoke } from "@/api/hosp/order";
import ViewPdf from "@/components/ViewPdf";
export default {
  components: {
    ViewPdf,
  },
  name: "checkAll",
  data() {
    return {
      remarks: "",
      remark: "",
      proIds: "",
      xiaojie: "",
      isdisabled: false,
      dialogVisible: false,
      src: "",
      url: "",
      userId: "",
      flag: true,
      bill: null,
      numberList: [],
      dialogVisible: false,
      pickerOptions: {
        shortcuts: [
          {
            text: "最近一周",
            onClick(picker) {
              const end = new Date();
              const start = new Date();
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
              picker.$emit("pick", [start, end]);
            },
          },
          {
            text: "最近一个月",
            onClick(picker) {
              const end = new Date();
              const start = new Date();
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
              picker.$emit("pick", [start, end]);
            },
          },
          {
            text: "最近三个月",
            onClick(picker) {
              const end = new Date();
              const start = new Date();
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
              picker.$emit("pick", [start, end]);
            },
          },
        ],
      },
      // 页面全部数据
      checkList: [],
      // 绑定单选按钮
      tjStatus: "1",
      total: 0,
      value2: [],
      CompanyList: [],
      CheckBox: {},
      startTime: [],
      textarea1: "",
      loading: true,
      // 当前用户选中的值
      selectLettercurrent: " ",
      // 抽屉打开方式
      drawer: false,
      tableAll: {},
      tjNumber: "",
      // 全部小结
      DeptadviceAll: [],
      MsgId: "",
      Deptobj: "",
      // 点击参数
      changedate: [],
      status: {},
      // 查询参数
      queryParams: {
        page: 1,
        pageSize: 10,
        tjNumber: "",
        beginTime: null,
        endTime: null,
        compId: null,
        name: null,
        checkStatus:null,
      },
      // 查询参数
      queryParam: {
        pageNum: 1,
        pageSize: 10,
        company: undefined,
        companyId: undefined,
        pacId: undefined,
        pacName: undefined,
        jobNo: undefined,
        name: undefined,
        sex: undefined,
        idCard: undefined,
        age: undefined,
        birthday: undefined,
        position: undefined,
        department: undefined,
        departmentId: undefined,
        phoe: undefined,
        address: undefined,
        marriage: undefined,
        nation: undefined,
        email: undefined,
        tjCategory: undefined,
        payType: undefined,
      },
    };
  },
  created() {
    this.getNowTime();
    this.getList();
  },
  mounted() {
    this.$nextTick(() => {
      this.$refs.inputName.focus();
    });
  },
  methods: {
    // / 处理默认选中当前日期
    getNowTime() {
      var curDate = new Date().getTime();
      var dayNum = 7 * 24 * 3600 * 1000;
      var threeDays = curDate - dayNum;
      var sDay = this.getLocalTime(threeDays);
      var end = this.getLocalTime(curDate);
      this.startTime = [sDay, end];
    },
    add0(m) {
      return m < 10 ? "0" + m : m;
    },
    getLocalTime(nS) {
      var time = new Date(nS);
      var y = time.getFullYear();
      var m = time.getMonth() + 1;
      var d = time.getDate();
      var h = time.getHours();
      var mm = time.getMinutes();
      return (
        y +
        "-" +
        this.add0(m) +
        "-" +
        this.add0(d) +
        " " +
        this.add0(h) +
        ":" +
        this.add0(mm)
      );
    },
    getList() {
      this.loading = true;
      this.queryParams.compId = this.CheckBox.drugManufacturerId;
      this.queryParams.checkStatus = this.tjStatus;
      if (this.startTime) {
        this.queryParams.beginTime = this.startTime[0];
        this.queryParams.endTime = this.startTime[1];
      } else {
        this.queryParams.beginTime = null;
        this.queryParams.endTime = null;
      }
      // 页面数据
      getcheckList(this.queryParams).then((response) => {
        if (response.data) {
          if (response.data.date) {
            this.checkList = response.data.date;
          } else {
            this.checkList = response.data.customers;
          }
          this.loading = false;
          this.total = response.data.total;
        } else {
          this.checkList = [];
        }
      }),
        // 获取单位信息集合
        getCompany(this.queryParam).then((response) => {
          this.CompanyList = response.data;
          this.loading = false;
        });
    },
    viewReport(row) {
      const tjNumber = row.tjNumber;
      const flag = true;
      getPdf(tjNumber, flag).then((response) => {
        if (response.size === 0) {
          const loading = this.$loading({
          lock: true,
          text: 'Loading',
          spinner: 'el-icon-loading',
          background: 'rgba(0, 0, 0, 0.7)'
        });
        setTimeout(() => {
          loading.close();
        }, 3000);
          this.$message.msgSuccess("报告正在生成,请两分钟后预览!");
        } else {
          this.dialogVisible = true;
          this.url = window.webkitURL.createObjectURL(response); //将后端返回的blob文件读取出url
        }
      });
    },
    // viewReport(row) {
    //   const tjNumber = row.tjNumber;
    //   const viewNum = "792997692059705344";
    //   const params = { viewNum, tjNumber };
    //   hasReportEnd(tjNumber).then((res) => {
    //     if (res == 1) {
    //       this.$tab.openPage("体检报告", "/report/viewReport", params);
    //     } else {
    //       this.$message.error("该用户体检暂未完成,无法打印体检报告!");
    //     }
    //   });
    // },
    downLoadFileImg(row) {
      const tjNumber = row.tjNumber;
      const flag = true;
      getPdf(tjNumber, flag).then((response) => {
        this.url = window.webkitURL.createObjectURL(response); //将后端返回的blob文件读取出url
      });
    },
    // 单选按钮
    radioChange(value) {
      this.loading = true;
      this.queryParams.checkStatus = value;
      getcheckList(this.queryParams).then((response) => {
        if (response.data) {
          this.checkList = response.data.customers;
          this.total = response.data.total;
        } else {
          this.checkList = [];
        }
        this.loading = false;
      });
    },
    // 体检公司拼音搜索
    getRemoteData(query) {
      if (query) {
        let compName = query;
        queryCompany(compName).then((response) => {
          this.CompanyList = response.data;
        });
      }
    },
    // 选框数据
    searchSelect(val) {
      this.CheckBox = val;
    },
    // 时间
    dateChangebirthday1(val) {
      this.startTime = val;
    },
    // 搜索
    submitForm() {
      this.queryParams.compId = this.CheckBox.drugManufacturerId;
      this.queryParams.checkStatus = this.tjStatus;
      if (this.startTime) {
        this.queryParams.beginTime = this.startTime[0];
        this.queryParams.endTime = this.startTime[1];
      } else {
        this.queryParams.beginTime = null;
        this.queryParams.endTime = null;
      }
      // 页面数据
      getcheckList(this.queryParams).then((response) => {
        if (response.data.customers != null) {
          this.checkList = response.data.customers;
          this.checkList.forEach((item) => {
            this.tjStatus = item.tjStatus.toString();
          });
          this.loading = false;
          this.total = response.data.total;
        } else {
          this.checkList = [];
        }
      });
    },
    // 重置
    resetQuery() {
      this.resetForm("tableList");
      this.submitForm();
    },
    // 点击详情
    handleClick(row) {
      this.tableAll = row;
      if (this.tableAll.cusSex === 0) {
        this.tableAll.cusSex = "男";
      }
      if (this.tableAll.cusSex === 1) {
        this.tableAll.cusSex = "女";
      }
      this.tjNumber = this.tableAll.tjNumber;
      getState(this.tjNumber).then((res) => {
        this.status = res.data;
        if (this.status.status === "1") {
          getInfo().then((response) => {
            this.userId = response.user.userId;
            if (this.userId) {
              let data = {
                userId: this.userId,
                tjNumber: this.tjNumber,
                state: 0,
              };
              getModifiedState(data).then((res) => {
                this.MsgId = res.msg;
                this.drawer = true;
                getupdateCheckType(this.tjNumber).then((response) => {
                  this.changedate = response.data;
                  this.changedate.forEach((item) => {
                    this.textarea1 = item.checkAdvice;
                  });
                  if (this.changedate) {
                    for (let i = 0; i < this.changedate.length; i++) {
                      this.remark = this.changedate[i].remark;
                    }
                    this.changedate.forEach((item) => {
                      // this.remark = item.remark;
                      item.sons.forEach((item3) => {
                        if (item3.standard.tjStandardGtValue === null) {
                          item3.standard.tjStandardGtValue = "";
                        }
                        if (item3.standard.tjStandardLtValue === null) {
                          item3.standard.tjStandardLtValue = "";
                        }
                      });
                      // item.remark = "";
                    });
                  } else {
                    this.$message({
                      type: "warning ",
                      message: "该客户没有体检项目数据",
                    });
                  }
                });
              });
            }
          });
        } else {
          this.$confirm(
            "" + this.status.name + "正在修改该信息, 是否强制进去?",
            "提示",
            {
              confirmButtonText: "是",
              cancelButtonText: "否",
              type: "warning",
            }
          )
            .then(() => {
              getInfo().then((response) => {
                this.userId = response.user.userId;
                if (this.userId) {
                  let data = {
                    userId: this.userId,
                    tjNumber: this.tjNumber,
                    state: 0,
                  };
                  getforceIn(data).then((res) => {
                    this.MsgId = res.msg;
                    this.drawer = true;
                    getupdateCheckType(this.tjNumber).then((response) => {
                      this.changedate = response.data;
                      if (this.changedate) {
                        for (let i = 0; i < this.changedate.length; i++) {
                          this.remark = this.changedate[i].remark;
                        }
                        this.changedate.forEach((item) => {
                          this.textarea1 = item.checkAdvice;
                          // this.remark = item.remark;
                          item.sons.forEach((item3) => {
                            if (item3.standard.tjStandardGtValue === null) {
                              item3.standard.tjStandardGtValue = "";
                            }
                            if (item3.standard.tjStandardLtValue === null) {
                              item3.standard.tjStandardLtValue = "";
                            }
                          });
                          // item.remark = "";
                        });
                      } else {
                        this.$message({
                          type: "warning ",
                          message: "该客户没有体检项目数据",
                        });
                      }
                    });
                  });
                }
              });
            })
            .catch(() => {
              this.$message({
                type: "info",
                message: "已取消进入",
              });
            });
          this.drawer = false;
        }
      });
      // 获取小结
      // getDeptAdvice().then((response) => {
      //   response.data.forEach((item) => {
      //     this.DeptadviceAll = item;
      //   });
      // });
    },
    // 撤销
    getRevoke(row) {
      const tjNumber = row.tjNumber;
      revoke(tjNumber).then((response) => {
        this.$modal.msgSuccess("撤回成功");
      });
    },
    // 是否关闭弹窗
    handleClose(done) {
      if (this.loading) {
        return;
      }
      this.$confirm("确定要提交吗?")
        .then((_) => {
          this.loading = true;
          this.timer = setTimeout(() => {
            done();
            this.determine();
            // 动画关闭需要一定的时间
            setTimeout(() => {
              this.loading = false;
            }, 400);
          }, 2000);
        })
        .catch((_) => {
          this.drawer = false;
          let data = {
            userId: this.userId,
            tjNumber: this.tjNumber,
            state: 1,
            id: this.MsgId,
          };
          getfiedState(data).then((res) => {});
        });
    },
    // 生成报告
    // generate(row) {
    //   const tjNumber = row.tjNumber;
    //   getGenerate(tjNumber).then((response) => {
    //     this.$modal.msgSuccess("生成成功");
    //   });
    // },
    // xiAoJieChange(event) {
    //   if (event) {
    //     this.changedate.forEach((item) => {
    //       item.remark = "";
    //       item.parentAdvice.forEach((item1) => {
    //         event.forEach((item2) => {
    //           if (item2 == item1.id) {
    //             item.remark = item.remark + item1.advice + "。";
    //           }
    //         });
    //       });
    //     });
    //   }
    // },
    change(vale) {
      // console.log(this.changedate[index].remark);
    },
    determine() {
      let tjNumber = this.tableAll.tjNumber;
      let advice = this.textarea1;
      let data = {
        tjNumber,
        advice,
        checkStatus: 1,
      };
      getTjdetailList(data).then((response) => {
        if (response.code === 200) {
          this.$modal.msgSuccess("提交成功");
          let tjNumber = this.tjNumber;
          let data = {
            userId: this.userId,
            tjNumber: tjNumber,
            state: 1,
            id: this.MsgId,
          };
          gettoPdf(tjNumber).then((res) => {
            this.$modal.msgSuccess("已生成报告!请前往体检记录页面查看!");
          });
          getfiedState(data).then((res) => {
            this.drawer = false;
          });
        }
      });
      for (let i = 0; i < this.changedate.length; i++) {
        this.proIds = this.changedate[i].parentId;
        let remarks = this.changedate[i].remark;
        let updateOrderRemarkVos = [
          {
            tjNumber,
            proId: this.proIds.toString(),
            remarks,
          },
        ];
        getModified(updateOrderRemarkVos).then((response) => {});
      }
      this.submitForm()
      this.$forceUpdate()
      // this.changedate.forEach((item) => {
      //   this.proIds = item.parentId;
      //   // this.remark = item.remark;
      // });
    },
  },
};
</script>
<style scoped>
.btn {
  margin: 20px 0px;
}
.main {
  height: 700px;
  overflow: hidden;
}
#printIframe::-webkit-scrollbar {
  width: 6px;
}
/* 修改 滚动条的 下面 的 样式 */
#printIframe::-webkit-scrollbar-track {
  background-color: white;
  -webkit-border-radius: 2em;
  -moz-border-radius: 2em;
  border-radius: 2em;
}
/* 修改 滑块 */
#printIframe::-webkit-scrollbar-thumb {
  background-color: #dcdfe6;
  -webkit-border-radius: 2em;
  -moz-border-radius: 2em;
  border-radius: 2em;
}
/* .el-dialog {
  width: 1264px;
  height: 800px;
}
.el-dialog__header {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.el-dialog__body {
  padding: 0;
} */
.pag {
  width: 100%;
  display: flex;
  justify-content: center;
}
.pag1 {
  width: 30%;
}
.dialog-footers {
  /* margin-top: 5px; */
  margin-left: calc(100% - 15%);
}
textarea {
  background: #ffffff;
  border: none;
  outline: none;
}
</style>
src/views/doctor/check/index.vue
@@ -1,68 +1,41 @@
<template>
  <div>
    <el-form
      :model="queryParams"
      ref="tableList"
      :inline="true"
      label-width="76px"
      style="margin-top: 10px"
    >
    <el-form :model="queryParams" ref="tableList" :inline="true" label-width="76px" style="margin-top: 10px">
      <el-form-item label="姓名" prop="name">
        <el-input
          v-model="queryParams.name"
          style="width: 116px"
          placeholder="请输入姓名"
          clearable
          @keyup.enter.native="handleQuery"
        ></el-input>
        <el-input v-model="queryParams.name" style="width: 116px" placeholder="请输入姓名" clearable
          @keyup.enter.native="handleQuery"></el-input>
      </el-form-item>
      <el-form-item label="体检号" prop="tjNumber">
        <el-input
          ref="inputName"
          v-model="queryParams.tjNumber"
          style="width: 240px"
          placeholder="请输入体检号"
        ></el-input>
        <el-input ref="inputName" v-model="queryParams.tjNumber" style="width: 240px" placeholder="请输入体检号"></el-input>
      </el-form-item>
      <el-form-item>
        <el-button size="mini" type="primary" @click="submitForm"
          >搜索</el-button
        >
        <el-button size="mini" type="primary" @click="submitForm">搜索</el-button>
        <el-button size="mini" @click="resetQuery">重置</el-button>
      </el-form-item>
    </el-form>
    <el-radio-group
      v-model="tjStatus"
      @input="radioChange"
      style="margin-left: 30px"
    >
    <div style="display: flex;">
      <el-radio-group v-model="tjStatus" @input="radioChange" style="margin-left: 30px">
      <el-radio-button label="0">未检</el-radio-button>
      <el-radio-button label="1">已检</el-radio-button>
    </el-radio-group>
      <el-row :gutter="10" class="mb8" style="margin:8px 10px;">
      <el-col :span="1.5">
        <el-button type="primary"
          size="mini"
          @click="radioChange"
          v-hasPermi="['system:notice:add']"
        >会诊申请</el-button>
      </el-col>
    </el-row>
    </div>
    <template>
      <el-table
        :data="tableList"
        v-loading="loading"
        ref="table"
        height="536px"
        style="margin: 20px; width: 98%"
        border=""
      >
      <el-table :data="tableList" v-loading="loading" ref="table" height="536px" style="margin: 20px; width: 98%"
        border="">
        <!-- <template slot="empty">数据正在加载中</template> -->
        <el-table-column
          label="体检号"
          align="center"
          prop="tjNumber"
          width="180px"
        />
        <el-table-column
          label="姓名"
          align="center"
          prop="cusName"
          width="100px"
        />
        <el-table-column label="体检号" align="center" prop="tjNumber" width="180px" />
        <el-table-column label="姓名" align="center" prop="cusName" width="100px" />
        <el-table-column label="性别" align="center" prop="cusSex" width="60px">
          <template slot-scope="scope">
            <span v-if="scope.row.cusSex == '0'">男</span>
@@ -71,18 +44,8 @@
            <span v-if="scope.row.cusSex == '9'">未说明性别</span>
          </template>
        </el-table-column>
        <el-table-column
          label="出生日期"
          align="center"
          prop="cusBrithday"
          width="120px"
        />
        <el-table-column
          label="电话"
          align="center"
          prop="cusPhone"
          width="120px"
        />
        <el-table-column label="出生日期" align="center" prop="cusBrithday" width="120px" />
        <el-table-column label="电话" align="center" prop="cusPhone" width="120px" />
        <!-- <el-table-column
          label="状态"
          align="center"
@@ -95,63 +58,28 @@
          </template>
        </el-table-column> -->
        <el-table-column
          label="体检类型"
          align="center"
          prop="tjType"
          width="80px"
        />
        <el-table-column
          label="登记时间"
          align="center"
          prop="createTime"
          width="160px"
        />
        <el-table-column
          label="体检时间"
          align="center"
          prop="tjTime"
          width="120px"
        />
        <el-table-column
          label="未检项"
          prop="notCheckeds"
          :show-overflow-tooltip="true"
        />
        <el-table-column label="体检类型" align="center" prop="tjType" width="80px" />
        <el-table-column label="登记时间" align="center" prop="createTime" width="160px" />
        <el-table-column label="体检时间" align="center" prop="tjTime" width="120px" />
        <el-table-column label="未检项" prop="notCheckeds" :show-overflow-tooltip="true" />
        <el-table-column label="操作" align="center" width="80px">
          <template slot-scope="scope">
            <el-button
              type="primary"
              size="mini"
              @click="handleClick(scope.row)"
              >详情</el-button
            >
            <el-button type="primary" size="mini" @click="handleClick(scope.row)">详情</el-button>
          </template>
        </el-table-column>
      </el-table>
      <div class="pag">
        <div class="pag1">
          <pagination
            v-show="total > 0"
            :total="total"
            :page.sync="queryParams.page"
            :limit.sync="queryParams.pageSize"
            @pagination="getList"
          />
          <pagination v-show="total > 0" :total="total" :page.sync="queryParams.page" :limit.sync="queryParams.pageSize"
            @pagination="getList" />
        </div>
      </div>
    </template>
    <!-- 点击右边弹出层 -->
    <el-drawer
      :visible.sync="drawer"
      :with-header="false"
      size="70%"
      :before-close="handleClose"
    >
    <el-drawer :visible.sync="drawer" :with-header="false" size="70%" :before-close="handleClose">
      <div style="font-size: 14px">
        <table
          style="
        <table style="
            width: 96%;
            height:70px
            margin: 10px 10px;
@@ -159,19 +87,14 @@
            border: 1px solid #dfe6ec;
            border-collapse: collapse;
            font-size:16px
          "
          cellspacing="4"
        >
          " cellspacing="4">
          <caption style="background-color: #f8f8f9; font-size: 18px">
            填写{{
              tableAll.cusName
            }}的体检资料
          </caption>
          <tr style="border: 1px solid #dfe6ec; border-collapse: collapse">
            <td
              style="border: 1px solid #dfe6ec; border-collapse: collapse"
              align="right"
            >
            <td style="border: 1px solid #dfe6ec; border-collapse: collapse" align="right">
              姓名:
            </td>
            <td style="border: 1px solid #dfe6ec; border-collapse: collapse">
@@ -183,10 +106,7 @@
                <span v-if="scope.row.cusSex == '9'">未说明性别</span>
              </template>
            </td>
            <td
              style="border: 1px solid #dfe6ec; border-collapse: collapse"
              align="right"
            >
            <td style="border: 1px solid #dfe6ec; border-collapse: collapse" align="right">
              性别:
            </td>
            <td style="border: 1px solid #dfe6ec; border-collapse: collapse">
@@ -194,19 +114,13 @@
            </td>
          </tr>
          <tr style="border: 1px solid #dfe6ec; border-collapse: collapse">
            <td
              style="border: 1px solid #dfe6ec; border-collapse: collapse"
              align="right"
            >
            <td style="border: 1px solid #dfe6ec; border-collapse: collapse" align="right">
              体检单号:
            </td>
            <td style="border: 1px solid #dfe6ec; border-collapse: collapse">
              {{ tableAll.tjNumber }}
            </td>
            <td
              style="border: 1px solid #dfe6ec; border-collapse: collapse"
              align="right"
            >
            <td style="border: 1px solid #dfe6ec; border-collapse: collapse" align="right">
              体检时间:
            </td>
            <td style="border: 1px solid #dfe6ec; border-collapse: collapse">
@@ -218,25 +132,16 @@
      <template>
        <div style="margin-left: 10px">
          <el-radio-group
            v-model="radio"
            v-for="(item, index) in Parent"
            :key="index"
            @input="radioChange1(item.proId, item)"
          >
          <el-radio-group v-model="radio" v-for="(item, index) in Parent" :key="index"
            @input="radioChange1(item.proId, item)">
            <el-radio-button :label="item.proId">{{
              item.proName
            }}</el-radio-button>
          </el-radio-group>
        </div>
      </template>
      <el-table
        v-loading="loading"
        :data="proParentList.sons"
        border
        height="460px"
        style="width: 96%; margin: 10px 10px"
      >
      <el-table v-loading="loading" :data="proParentList.sons" border height="460px"
        style="width: 96%; margin: 10px 10px">
        <el-table-column prop="project.proName" label="检测项目" width="150">
          <!-- <template slot-scope="scope">
            {{ scope.row.project.proName }}
@@ -244,21 +149,13 @@
        </el-table-column>
        <el-table-column prop="proResult" label="检测结果" width="280">
          <template slot-scope="scope">
            <el-input
              size="mini"
              v-model="scope.row.proResult"
              autocomplete="off"
              placeholder="请输入检测结果"
              @blur="handleInputConfirm(scope.row)"
              @input="vale"
            ></el-input>
            <el-input size="mini" v-model="scope.row.proResult" autocomplete="off" placeholder="请输入检测结果"
              @blur="handleInputConfirm(scope.row)" @input="vale"></el-input>
          </template>
        </el-table-column>
        <el-table-column label="规则" width="55">
          <template slot-scope="scope">
            <el-button class="blue-button" @click="handleguize(scope.row)"
              >...</el-button
            >
            <el-button class="blue-button" @click="handleguize(scope.row)">...</el-button>
          </template>
        </el-table-column>
        <el-table-column prop="project.proMetering" label="单位">
@@ -270,75 +167,42 @@
        </el-table-column>
        <el-table-column prop="conclusion" label="结果结论" width="280">
          <template slot-scope="scope">
            <el-input
              size="mini"
              v-model="scope.row.conclusion"
              autocomplete="off"
              placeholder="请输入检测结果"
              disabled
            ></el-input>
            <el-input size="mini" v-model="scope.row.conclusion" autocomplete="off" placeholder="请输入检测结果"
              disabled></el-input>
          </template>
        </el-table-column>
        <el-table-column
          prop="exceptionDesc"
          label="是否异常"
          width="80px"
          align="center"
        >
        <el-table-column prop="exceptionDesc" label="是否异常" width="80px" align="center">
          <template slot-scope="scope">
            <el-checkbox v-model="scope.row.exceptionDesc"></el-checkbox>
          </template>
        </el-table-column>
        <el-table-column
          prop="isReturn"
          label="是否复诊"
          width="80px"
          align="center"
        >
        <el-table-column prop="isReturn" label="是否复诊" width="80px" align="center">
          <template slot-scope="scope">
            <el-checkbox v-model="scope.row.isReturn"></el-checkbox>
          </template>
        </el-table-column>
        <el-table-column prop="project.resultType" label="结果类型">
          <template slot-scope="scope">
            <dict-tag
              :options="dict.type.tj_result_type"
              :value="scope.row.project.resultType"
            />
            <dict-tag :options="dict.type.tj_result_type" :value="scope.row.project.resultType" />
          </template>
        </el-table-column>
      </el-table>
      <div style="font-size: 14px; overflow-y: auto; height: 286px">
        <table
          style="
        <table style="
            width: 96%;
            margin: 4px 10px;
            border: 1px solid #dfe6ec;
            border-collapse: collapse;
          "
          cellspacing="4"
        >
          " cellspacing="4">
          <tr style="border: 1px solid #dfe6ec; border-collapse: collapse">
            <td style="border: 1px solid #dfe6ec; border-collapse: collapse">
              病种选择:
            </td>
            <td style="border: 1px solid #dfe6ec; border-collapse: collapse">
              <el-select
                v-model="value"
                multiple
                placeholder="请选择"
                style="width: 100%; height: 45px"
                v-if="deptAdviceList"
                @change="sel"
                filterable
              >
                <el-option
                  v-for="item in deptAdviceList"
                  :key="item.id"
                  :label="item.title"
                  :value="item.id"
                >
              <el-select v-model="value" multiple placeholder="请选择" style="width: 100%; height: 45px"
                v-if="deptAdviceList" @change="sel" filterable>
                <el-option v-for="item in deptAdviceList" :key="item.id" :label="item.title" :value="item.id">
                </el-option>
              </el-select>
            </td>
@@ -346,20 +210,9 @@
              主检医师:
            </td>
            <td style="border: 1px solid #dfe6ec; border-collapse: collapse">
              <el-select
                v-model="doctorName"
                placeholder="请选择"
                style="width: 100%"
                v-if="deptAdviceList"
                @change="selName"
                filterable
              >
                <el-option
                  v-for="item in userList"
                  :key="item.userId"
                  :label="item.nickName"
                  :value="item.userId"
                >
              <el-select v-model="doctorName" placeholder="请选择" style="width: 100%" v-if="deptAdviceList"
                @change="selName" filterable>
                <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId">
                </el-option>
              </el-select>
            </td>
@@ -368,25 +221,15 @@
            <td style="border: 1px solid #dfe6ec; border-collapse: collapse">
              建议:
            </td>
            <td
              style="border: 1px solid #dfe6ec; border-collapse: collapse"
              colspan="2"
            >
              <el-input
                type="textarea"
                placeholder="请输入内容"
                v-model="proParentList.remark"
                rows="7"
              >
            <td style="border: 1px solid #dfe6ec; border-collapse: collapse" colspan="2">
              <el-input type="textarea" placeholder="请输入内容" v-model="proParentList.remark" rows="7">
              </el-input>
            </td>
          </tr>
        </table>
        <div slot="footer" class="dialog-footers">
          <el-button type="primary" @click="determine" v-show="tjStatus == '0'"
            >提 交</el-button
          >
          <el-button type="primary" @click="determine" v-show="tjStatus == '0'">提 交</el-button>
        </div>
      </div>
      <!-- <div style="background-color: #f3f3f3;font-size:14px;overflow-y:auto;height: calc(100% - 11%);">
src/views/hosp/restore/index.vue
New file
@@ -0,0 +1,601 @@
<template>
    <div class="app-container">
      <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
        <el-form-item label="姓名" prop="cusName">
          <el-input v-model="queryParams.cusName" placeholder="请输入姓名" clearable style="width:120px" @keyup.enter.native="handleQuery"/>
        </el-form-item>
        <el-form-item label="联系电话" prop="cusPhone">
          <el-input v-model="queryParams.cusPhone" placeholder="请输入联系电话" style="width:140px"  clearable @keyup.enter.native="handleQuery"/>
        </el-form-item>
        <el-form-item label="身份证号" prop="cusIdcard">
          <el-input
            v-model="queryParams.cusIdcard"
            placeholder="请输入身份证号"
            clearable
            @keyup.enter.native="handleQuery"
          />
        </el-form-item>
        <el-form-item>
          <el-button
            type="primary"
            icon="el-icon-search"
            size="mini"
            @click="handleQuery"
            >搜索</el-button
          >
          <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
            >重置</el-button
          >
        </el-form-item>
      </el-form>
      <el-row :gutter="10" class="mb8">
        <el-col :span="1.5">
          <el-button
          type="primary"
            icon="el-icon-plus"
            size="mini"
            @click="handleAdd"
            v-hasPermi="['hosp:customer:add']"
            >批量恢复</el-button
          >
        </el-col>
      </el-row>
      <el-table
        border
        v-loading="loading"
        :data="customerList"
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="40px" align="center" fixed="left" />
        <el-table-column
          label="序号"
          align="center"
          prop="newID"
          fixed="left"
          :show-overflow-tooltip="true"
          width="50px"
        />
        <el-table-column
          label="姓名"
          align="center"
          prop="cusName"
          width="90px"
          fixed="left"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="性别"
          align="center"
          prop="cusSex"
          :show-overflow-tooltip="true"
          width="60px"
        >
          <template slot-scope="scope">
            <dict-tag
              :options="dict.type.sys_user_sex"
              :value="scope.row.cusSex"
            />
          </template>
        </el-table-column>
        <el-table-column
          label="出生日期"
          align="center"
          prop="cusBrithday"
          width="100px"
          :show-overflow-tooltip="true"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.cusBrithday, "{y}-{m}-{d}") }}</span>
          </template>
        </el-table-column>
        <el-table-column
          label="身份证号"
          align="center"
          prop="cusIdcard"
          width="170px"
          :show-overflow-tooltip="true"
        />
         <el-table-column
          label="联系电话"
          align="center"
          prop="cusPhone"
          width="110px"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="现住址"
          align="center"
          prop="cusAddr"
          width="180px"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="邮政编码"
          align="center"
          prop="cusPostcode"
          width="80px"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="邮箱"
          align="center"
          prop="cusEmail"
          width="170px"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="民族"
          align="center"
          prop="cusNational"
          width="80px"
          :show-overflow-tooltip="true"
        >
          <template slot-scope="scope">
            <dict-tag
              :options="dict.type.dict_user_national"
              :value="scope.row.cusNational"
            />
          </template>
        </el-table-column>
        <el-table-column
          label="婚姻状况"
          align="center"
          prop="cusMarryStatus"
          :show-overflow-tooltip="true"
          width="80px"
        >
          <template slot-scope="scope">
            <dict-tag
              :options="dict.type.dict_user_marry"
              :value="scope.row.cusMarryStatus"
            />
          </template>
        </el-table-column>
        <el-table-column
          label="介绍人"
          align="center"
          prop="cusIntroduce"
          width="90px"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="次数"
          align="center"
          prop="cusNumber"
          width="55px"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="VIP"
          align="center"
          prop="cusIsvip"
          width="55px"
          :show-overflow-tooltip="true"
        >
          <template slot-scope="scope">
            <dict-tag
              :options="dict.type.sys_yes_no"
              :value="scope.row.cusIsvip"
            />
          </template>
        </el-table-column>
        <el-table-column
          label="索引卡号"
          align="center"
          prop="indexCard"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          fixed="right"
          label="操作"
          align="center"
          width="70px"
          class-name="small-padding fixed-width"
        >
          <template slot-scope="scope">
            <el-button
              size="mini"
              type="text"
              icon="el-icon-refresh-left"
              @click="handleUpdate(scope.row)"
              v-hasPermi="['hosp:customer:edit']"
              title="恢复"
            ></el-button>
          </template>
        </el-table-column>
      </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>
      <!-- 添加或修改信息对话框 -->
      <el-dialog
        :title="title"
        :visible.sync="open"
        width="1000px"
        append-to-body
      >
        <el-form
          ref="form"
          :model="form"
          :rules="rules"
          label-width="100px"
          :inline="true"
        >
          <el-form-item label="姓名" prop="cusName">
            <el-input
              v-model="form.cusName"
              placeholder="请输入姓名"
              style="width: 200px"
            />
          </el-form-item>
          <el-form-item label="性别" prop="cusSex">
            <el-select
              v-model="form.cusSex"
              placeholder="请选择性别"
              style="width: 200px"
            >
              <el-option
                v-for="dict in dict.type.sys_user_sex"
                :key="dict.value"
                :label="dict.label"
                :value="parseInt(dict.value)"
              ></el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="身份证号" prop="cusIdcard">
            <el-input
              v-model="form.cusIdcard"
              placeholder="请输入身份证号"
              style="width: 200px"
            />
          </el-form-item>
          <el-form-item label="出生日期" prop="cusBrithday">
            <el-date-picker
              clearable
              v-model="form.cusBrithday"
              type="date"
              value-format="yyyy-MM-dd"
              placeholder="请选择出生日期"
              style="width: 200px"
            >
            </el-date-picker>
          </el-form-item>
          <el-form-item label="现住址" prop="cusAddr">
            <el-input
              v-model="form.cusAddr"
              placeholder="请输入现居住地址"
              style="width: 200px"
            />
          </el-form-item>
          <el-form-item label="联系电话" prop="cusPhone">
            <el-input
              v-model="form.cusPhone"
              placeholder="请输入联系电话"
              style="width: 200px"
            />
          </el-form-item>
          <!-- <el-form-item label="账号密码" prop="cusPassword">
            <el-input v-model="form.cusPassword" placeholder="请输入账号密码" style="width: 220px" />
          </el-form-item> -->
          <!-- <el-form-item label="邮政编码" prop="cusPostcode">
            <el-input v-model="form.cusPostcode" placeholder="请输入邮政编码"  />
          </el-form-item> -->
          <el-form-item label="邮箱" prop="cusEmail">
            <el-input
              v-model="form.cusEmail"
              placeholder="请输入邮箱"
              style="width: 200px"
            />
          </el-form-item>
          <!-- <el-form-item label="索引卡号" prop="indexCard">
            <el-input v-model="form.indexCard" placeholder="请输入索引卡号" style="width: 220px" />
          </el-form-item> -->
          <el-form-item label="民族" prop="cusNational">
            <el-select
              v-model="form.cusNational"
              placeholder="请选择民族"
              style="width: 200px"
              filterable
            >
              <el-option
                v-for="dict in dict.type.dict_user_national"
                :key="dict.value"
                :label="dict.label"
                :value="dict.value"
              ></el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="婚姻状况" prop="cusMarryStatus">
            <el-select
              v-model="form.cusMarryStatus"
              placeholder="请选择婚姻状况"
              style="width: 200px"
            >
              <el-option
                v-for="dict in dict.type.dict_user_marry"
                :key="dict.value"
                :label="dict.label"
                :value="dict.value"
              ></el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="介绍人" prop="cusIntroduce">
            <el-input
              v-model="form.cusIntroduce"
              placeholder="请输入介绍人"
              style="width: 200px"
            />
          </el-form-item>
          <el-form-item label="是否VIP" prop="cusIsvip">
            <el-select
              v-model="form.cusIsvip"
              placeholder="请选择是否VIP"
              style="width: 200px"
            >
              <el-option
                v-for="dict in dict.type.sys_yes_no"
                :key="dict.value"
                :label="dict.label"
                :value="dict.value"
              ></el-option>
            </el-select>
          </el-form-item>
        </el-form>
        <div slot="footer" class="dialog-footer">
          <el-button type="primary" @click="submitForm">确 定</el-button>
          <el-button @click="cancel">取 消</el-button>
        </div>
      </el-dialog>
    </div>
  </template>
  <script>
  import {
    listCustomer,
    getCustomer,
    delCustomer,
    addCustomer,
    updateCustomer,
  } from "@/api/hosp/customer";
  export default {
    name: "Customer",
    dicts: [
      "dict_user_national",
      "dict_user_marry",
      "sys_yes_no",
      "sys_user_sex",
    ],
    data() {
      return {
        // 遮罩层
        loading: true,
        // 选中数组
        ids: [],
        // 非单个禁用
        single: true,
        // 非多个禁用
        multiple: true,
        // 显示搜索条件
        showSearch: true,
        // 总条数
        total: 0,
        // 信息表格数据
        customerList: [],
        // 弹出层标题
        title: "",
        // 是否显示弹出层
        open: false,
        // 查询参数
        queryParams: {
          pageNum: 1,
          pageSize: 10,
          cusName: null,
          cusSex: null,
          cusBrithday: null,
          cusAddr: null,
          cusPhone: null,
          cusPostcode: null,
          cusEmail: null,
          indexCard: null,
          cusNational: null,
          cusMarryStatus: null,
          cusIdcard: null,
          cusIntroduce: null,
          cusNumber: null,
          cusIsvip: null,
        },
        // 表单参数
        form: {},
        // 表单校验
        rules: {
          cusName: [{ required: true, message: "姓名不能为空", trigger: "blur" }],
          cusSex: [
            { required: true, message: "性别不能为空", trigger: "change" },
          ],
          cusBrithday: [
            { required: true, message: "出生日期不能为空", trigger: "blur" },
          ],
          cusAddr: [
            { required: true, message: "现居住地址不能为空", trigger: "blur" },
          ],
          cusPhone: [
            { required: true, message: "联系电话不能为空", trigger: "blur" },
          ],
          cusPassword: [
            { required: true, message: "账号密码不能为空", trigger: "blur" },
          ],
          // cusNational: [
          //   { required: true, message: "民族不能为空", trigger: "change" }
          // ],
          cusIdcard: [
            { required: true, message: "身份证号不能为空", trigger: "blur" },
          ],
          deleted: [
            { required: true, message: "删除标志不能为空", trigger: "blur" },
          ],
        },
      };
    },
    created() {
      this.getList();
    },
    methods: {
      /** 查询信息列表 */
      getList() {
        this.loading = true;
        listCustomer(this.queryParams).then((response) => {
          this.customerList = response.rows;
          response.rows.forEach((item, index) => {
            item.newID =
              (this.queryParams.pageNum - 1) * this.queryParams.pageSize +
              index +
              1;
          });
          this.total = response.total;
          this.loading = false;
        });
      },
      // 取消按钮
      cancel() {
        this.open = false;
        this.reset();
      },
      // 表单重置
      reset() {
        this.form = {
          cusId: null,
          cusName: null,
          cusSex: null,
          cusBrithday: null,
          cusAddr: null,
          cusPhone: null,
          cusPassword: null,
          cusPostcode: null,
          cusEmail: null,
          indexCard: null,
          cusNational: null,
          cusMarryStatus: null,
          cusIdcard: null,
          cusIntroduce: null,
          cusNumber: null,
          cusIsvip: null,
          createBy: null,
          createTime: null,
          updateBy: null,
          updateTime: null,
          deleted: null,
        };
        this.resetForm("form");
      },
      /** 搜索按钮操作 */
      handleQuery() {
        this.queryParams.pageNum = 1;
        this.getList();
      },
      /** 重置按钮操作 */
      resetQuery() {
        this.resetForm("queryForm");
        this.handleQuery();
      },
      // 多选框选中数据
      handleSelectionChange(selection) {
        this.ids = selection.map((item) => item.cusId);
        this.single = selection.length !== 1;
        this.multiple = !selection.length;
      },
      /** 新增按钮操作 */
      handleAdd() {
        this.reset();
        this.open = true;
        this.title = "客户信息维护";
      },
      /** 修改按钮操作 */
      handleUpdate(row) {
        this.reset();
        const cusId = row.cusId || this.ids;
        getCustomer(cusId).then((response) => {
          this.form = response.data;
          this.open = true;
          this.title = "客户信息维护";
        });
      },
      /** 提交按钮 */
      submitForm() {
        this.$refs["form"].validate((valid) => {
          if (valid) {
            if (this.form.cusId != null) {
              updateCustomer(this.form).then((response) => {
                this.$modal.msgSuccess("修改成功");
                this.open = false;
                this.getList();
              });
            } else {
              addCustomer(this.form).then((response) => {
                this.$modal.msgSuccess("新增成功");
                this.open = false;
                this.getList();
              });
            }
          }
        });
      },
      /** 删除按钮操作 */
      handleDelete(row) {
        const cusIds = row.cusId || this.ids;
        this.$modal
          .confirm('是否确认删除信息编号为"' + cusIds + '"的数据项?')
          .then(function () {
            return delCustomer(cusIds);
          })
          .then(() => {
            this.getList();
            this.$modal.msgSuccess("删除成功");
          })
          .catch(() => {});
      },
      /** 导出按钮操作 */
      handleExport() {
        this.download(
          "hosp/order/export",
          {
            ...this.queryParams,
          },
          `customer_${new Date().getTime()}.xlsx`
        );
      },
    },
  };
  </script>
  <style scoped>
  .pag {
    width: 100%;
    display: flex;
    justify-content: center;
  }
  .pag1 {
    width: 30%;
  }
  .dialog-footer {
    display: flex;
    justify-content: center;
  }
  </style>
src/views/jmreport/richengtongji/index.vue
New file
@@ -0,0 +1,43 @@
<template>
    <div v-loading="loading" :style="'height:' + height">
      <iframe :src="src" frameborder="no" style="width: 100%;height: 100%" scrolling="auto" />
    </div>
  </template>
  <script>
  import {
    getToken
  } from '@/utils/auth'
  import { view } from "@/api/jmreport/jimu";
  export default {
    name: "Ureport",
    data() {
      return {
        src: "",
        height: document.documentElement.clientHeight - 94.5 + "px;",
        loading: true,
        viewNum:"884667016862707712",
      };
    },
    created() {
      view().then((res) => {
        this.src =
          res +
          "/" +
          this.viewNum +
          "?token=Bearer" +
          getToken();
      });
      // this.src = "http://192.168.0.99:8080/ltkj-admin/jmreport/view/815468234724306944?token=Bearer " + getToken();
    },
    mounted: function () {
      setTimeout(() => {
        this.loading = false;
      }, 230);
      const that = this;
      window.onresize = function temp() {
        that.height = document.documentElement.clientHeight - 94.5 + "px;";
      };
    }
  };
  </script>
src/views/jmreport/tijianrenshu/index.vue
New file
@@ -0,0 +1,43 @@
<template>
    <div v-loading="loading" :style="'height:' + height">
      <iframe :src="src" frameborder="no" style="width: 100%;height: 100%" scrolling="auto" />
    </div>
  </template>
  <script>
  import {
    getToken
  } from '@/utils/auth'
  import { view } from "@/api/jmreport/jimu";
  export default {
    name: "Ureport",
    data() {
      return {
        src: "",
        height: document.documentElement.clientHeight - 94.5 + "px;",
        loading: true,
        viewNum:"884675348172320768",
      };
    },
    created() {
      view().then((res) => {
        this.src =
          res +
          "/" +
          this.viewNum +
          "?token=Bearer" +
          getToken();
      });
      // this.src = "http://192.168.0.99:8080/ltkj-admin/jmreport/view/815468234724306944?token=Bearer " + getToken();
    },
    mounted: function () {
      setTimeout(() => {
        this.loading = false;
      }, 230);
      const that = this;
      window.onresize = function temp() {
        that.height = document.documentElement.clientHeight - 94.5 + "px;";
      };
    }
  };
  </script>
src/views/jmreport/tuanduitiji/index.vue
New file
@@ -0,0 +1,43 @@
<template>
    <div v-loading="loading" :style="'height:' + height">
      <iframe :src="src" frameborder="no" style="width: 100%;height: 100%" scrolling="auto" />
    </div>
  </template>
  <script>
  import {
    getToken
  } from '@/utils/auth'
  import { view } from "@/api/jmreport/jimu";
  export default {
    name: "Ureport",
    data() {
      return {
        src: "",
        height: document.documentElement.clientHeight - 94.5 + "px;",
        loading: true,
        viewNum:"858579252534800384",
      };
    },
    created() {
      view().then((res) => {
        this.src =
          res +
          "/" +
          this.viewNum +
          "?token=Bearer" +
          getToken();
      });
      // this.src = "http://192.168.0.99:8080/ltkj-admin/jmreport/view/815468234724306944?token=Bearer " + getToken();
    },
    mounted: function () {
      setTimeout(() => {
        this.loading = false;
      }, 230);
      const that = this;
      window.onresize = function temp() {
        that.height = document.documentElement.clientHeight - 94.5 + "px;";
      };
    }
  };
  </script>
src/views/jmreport/yingxingtongji/index.vue
New file
@@ -0,0 +1,43 @@
<template>
    <div v-loading="loading" :style="'height:' + height">
      <iframe :src="src" frameborder="no" style="width: 100%;height: 100%" scrolling="auto" />
    </div>
  </template>
  <script>
  import {
    getToken
  } from '@/utils/auth'
  import { view } from "@/api/jmreport/jimu";
  export default {
    name: "Ureport",
    data() {
      return {
        src: "",
        height: document.documentElement.clientHeight - 94.5 + "px;",
        loading: true,
        viewNum:"884679290784526336",
      };
    },
    created() {
      view().then((res) => {
        this.src =
          res +
          "/" +
          this.viewNum +
          "?token=Bearer" +
          getToken();
      });
      // this.src = "http://192.168.0.99:8080/ltkj-admin/jmreport/view/815468234724306944?token=Bearer " + getToken();
    },
    mounted: function () {
      setTimeout(() => {
        this.loading = false;
      }, 230);
      const that = this;
      window.onresize = function temp() {
        that.height = document.documentElement.clientHeight - 94.5 + "px;";
      };
    }
  };
  </script>
src/views/paiban/beiwanglu/index.vue
New file
@@ -0,0 +1,245 @@
<template>
    <div>
        <div style="margin-top: 10px;">
            <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
                label-width="68px">
                <el-form-item label="月份" prop="deptName">
                    <el-date-picker v-model="value1" type="date" placeholder="选择日期">
                    </el-date-picker>
                </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>
        </div>
        <div>
            <el-calendar v-model="value">
                <template slot="dateCell" slot-scope="{date, data}">
                    <div class="main-cd" @click="addPlan(date)">
                        <div class="calendar-day">
                            {{ data.day.split("-").slice(2).join("-") }} {{ data.isSelected ? '✔️' : '' }}
                        </div>
                        <div v-for="(item, index) in calendarData" :key="index" class="is-selected"
                            @click.stop="addPlan(item)">
                            <span v-if="item.day == data.day && item.timeDetailsList">
                                <el-tooltip placement="top">
                                    <div slot="content">
                                        <div v-for="items in item.timeDetailsList" :key="items.day">
                                            {{ items.channelName }} :
                                            {{ items.wechatNumber }}个微信号,
                                            计划投放{{ items.planNumber }},
                                            实际加人
                                            {{ items.realityNumber }}
                                        </div>
                                    </div>
                                    // 这里写两遍是因为一个是框里展示,一个是悬浮组件内展示的内容
                                    <div v-for="items in item.timeDetailsList" :key="items.day">
                                        {{ items.channelName }} :
                                        {{ items.wechatNumber }}个微信号,
                                        计划投放{{ items.planNumber }},
                                        实际加人
                                        {{ items.realityNumber }}
                                    </div>
                                </el-tooltip>
                            </span>
                        </div>
                    </div>
                </template>
            </el-calendar>
        </div>
        <!-- 添加或修改规则+病种对话框 -->
        <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
            <div style="margin-bottom: 10px;">时间:{{ time }}</div>
            <el-form ref="form" :model="form" :rules="rules" label-width="80px" :inline="true">
                <el-form-item label="标题" prop="title">
                    <el-input v-model="form.title" placeholder="请输入标题" style="width:200px" />
                </el-form-item>
                <el-form-item label="事件" prop="event">
                    <el-input v-model="form.event" placeholder="请输入事件" style="width:200px" />
                </el-form-item>
                <el-form-item label="日期类型" prop="dateType">
                    <el-select v-model="form.dateType" style="width: 94%">
                        <el-option v-for="dict in dict.type.memo_date_type" :key="dict.value" :label="dict.label"
                            :value="dict.value"></el-option>
                    </el-select>
                </el-form-item>
                <el-form-item label="时间点" prop="mTime" v-if="form.dateType == 1">
                    <el-time-picker v-model="form.mTime" :picker-options="{
                        selectableRange: '18:30:00 - 20:30:00'
                    }" placeholder="任意时间点">
                    </el-time-picker>
                </el-form-item>
                <el-form-item label="重复提醒" prop="isRepeat">
                    <el-select v-model="form.isRepeat" style="width: 94%">
                        <el-option v-for="dict in dict.type.sys_yes_no" :key="dict.value" :label="dict.label"
                            :value="dict.value"></el-option>
                    </el-select>
                </el-form-item>
                <el-form-item label="提醒间隔" prop="repeatTime" v-if="form.isRepeat == 'Y'">
                    <el-input type="number" v-model="form.repeatTime" placeholder="请输入提醒间隔" style="width:200px"
                    oninput="value=value.replace(/[^0-9.]/g,'')" />
                </el-form-item>
                <el-form-item label="备忘状态" prop="mFlag">
                    <el-select v-model="form.mFlag" style="width: 94%">
                        <el-option v-for="dict in dict.type.memo_status" :key="dict.value" :label="dict.label"
                            :value="dict.value"></el-option>
                    </el-select>
                </el-form-item>
                <el-form-item label="紧急状态" prop="stateLevel">
                    <el-select v-model="form.stateLevel" style="width: 94%">
                        <el-option v-for="dict in dict.type.memo_state_level" :key="dict.value" :label="dict.label"
                            :value="dict.value"></el-option>
                    </el-select>
                </el-form-item>
                <el-form-item label="备注" prop="remark">
                    <el-input v-model="form.remark" placeholder="请输入备注" style="width:200px" />
                </el-form-item>
            </el-form>
            <el-button style="margin: 10px 10px" type="primary" plain size="mini" icon="el-icon-plus"
                @click="hableadd">添加</el-button>
            <el-table :data="cateringList" border>
                <el-table-column type="selection" width="55" align="center" />
                <el-table-column label="序号" align="center" prop="newID" width="55px" />
                <el-table-column label="标题" align="center" prop="title" />
                <el-table-column label="事件" align="center" prop="event" />
                <el-table-column label="日期类型" align="center" prop="dateType" />
                <el-table-column label="时间点" align="center" prop="mTime" />
                <el-table-column label="重复提醒" align="center" prop="isRepeat" width="150px" />
                <el-table-column label="提醒间隔" align="center" prop="repeatTime" width="150px" />
                <el-table-column label="备忘状态" align="center" prop="mFlag" width="150px" />
                <el-table-column label="紧急状态" align="center" prop="stateLevel" width="150px" />
                <el-table-column label="备注" align="center" prop="remark" width="150px" />
                <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right"
                    width="80px">
                    <template slot-scope="scope">
                        <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
                            v-hasPermi="['catering:catering:edit']" title="修改">
                        </el-button>
                        <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete1(scope.row)"
                            v-hasPermi="['catering:catering:remove']" title="删除">
                        </el-button>
                    </template>
                </el-table-column>
            </el-table>
            <div slot="footer" class="dialog-footer">
                <el-button type="primary" @click="submitForm">确 定</el-button>
                <el-button @click="cancel">取 消</el-button>
            </div>
        </el-dialog>
    </div>
</template>
<script>
export default {
    dicts: [
        "memo_state_level",
        "memo_status",
        "memo_date_type",
        "sys_yes_no",
        "reservation_pay_type",
        "sys_normal_disable"
    ],
    data() {
        return {
            // 显示搜索条件
            showSearch: true,
            queryParams: {
            },
            title: "",
            value1: '',
            time: '',
            open: false,
            value: new Date(),
            calendarData: [],
            form: {
                mTime: new Date(2016, 9, 10, 18, 40),
            },
            cateringList: [],
            // 表单校验
            rules: {
                title: [
                    { required: true, message: "标题不能为空", trigger: "change" },
                ],
            },
        }
    },
    monthChange(val) {
        // 这里是监听时间变化 => @change="monthChange",然后传入日历组件
        this.value = val;
        // 时间切换的时候,顺便调个接口查询当月数据
        this.editDetail();
    },
    methods: {
        editDetail() {
        },
        handleQuery() {
        },
        addPlan(val) {
            this.open = true
            this.title = "新增日计划"
            this.timestampToTime(val)
        },
        timestampToTime(timestamp) {
            var date = new Date(timestamp);
            var y = date.getFullYear();
            var m = date.getMonth() + 1;
            m = m < 10 ? ('0' + m) : m;
            var d = date.getDate();
            d = d < 10 ? ('0' + d) : d;
            var h = date.getHours();
            var minute = date.getMinutes();
            minute = minute < 10 ? ('0' + minute) : minute;
            var second = date.getSeconds();
            second = second < 10 ? ('0' + second) : second;
            this.time = y + '-' + m + '-' + d;
        },
        hableadd() {
            this.cateringList.push(this.form)
            this.form = {}
        },
        cancel() {
            this.open = false
        },
        submitForm() {
        },
        handleDelete1(row) {
            this.cateringList.splice(row, 1)
        },
    }
}
</script>
<style>
::v-deep .el-calendar-table:not(.is-range) td.next {
    display: none;
}
::v-deep .el-calendar-table:not(.is-range) td.prev {
    visibility: hidden;
}
::v-deep .el-calendar__button-group {
    display: none;
}
/* 取消[type='number']的input的上下箭头 */
input::-webkit-inner-spin-button {
    -webkit-appearance: none !important;
}
input::-webkit-outer-spin-button {
    -webkit-appearance: none !important;
}
input[type='number'] {
    -moz-appearance: textfield;
}
</style>
src/views/paiban/gerenpaiban/index.vue
New file
@@ -0,0 +1,280 @@
<template>
    <div class="app-container">
          <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
            <el-form-item label="医生姓名" prop="proName">
              <el-input v-model="queryParams.proName" placeholder="请输入医生姓名" clearable @keyup.enter.native="handleQuery" />
            </el-form-item>
            <el-form-item label="登记时间">
                <el-date-picker clearable v-model="createTimeList" style="width: 240px" value-format="yyyy-MM-dd"
                    type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
                    :picker-options="pickerOptions"></el-date-picker>
            </el-form-item>
            <el-form-item>
              <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
              <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
            </el-form-item>
          </el-form>
          <el-row :gutter="10" class="mb8">
            <el-col :span="1.5">
              <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd"
                v-hasPermi="['hosp:rules:add']">新增
              </el-button>
            </el-col>
            <el-col :span="1.5">
              <el-button type="primary" icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
                v-hasPermi="['hosp:rules:edit']">修改
              </el-button>
            </el-col>
            <el-col :span="1.5">
              <el-button type="primary" icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
                v-hasPermi="['hosp:rules:remove']">删除
              </el-button>
            </el-col>
            <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
          </el-row>
          <el-table border v-loading="loading" :data="dataList" @selection-change="handleSelectionChange">
            <el-table-column type="selection" width="55" align="center" />
            <el-table-column label="序号" align="center" prop="newID" width="55" />
            <el-table-column label="医生姓名" align="center" prop="name"  />
            <el-table-column label="性别" align="center" prop="sex" :show-overflow-tooltip="true">
              <template slot-scope="scope">
                <dict-tag :options="dict.type.tj_rule_sex" :value="scope.row.sex" />
              </template>
            </el-table-column>
            <el-table-column label="排班日期" align="center" prop="time"  />
            <el-table-column label="星期" align="center" prop="week"  />
            <el-table-column label="上午/下午" align="center" prop="daty"  />
            <el-table-column label="出诊科室" align="center" prop="dept"  />
            <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
              <template slot-scope="scope">
                <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
                  v-hasPermi="['hosp:rules:edit']" title="修改">
                </el-button>
                <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
                  v-hasPermi="['hosp:rules:remove']" title="删除">
                </el-button>
              </template>
            </el-table-column>
          </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>
      <!-- 添加或修改规则+病种对话框 -->
      <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
        <el-form ref="form" :model="form" :rules="rules" label-width="80px" :inline="true">
            <el-form-item label="医生姓名" prop="name">
            <el-input v-model="form.name" placeholder="请输入年龄-" style="width:200px" />
          </el-form-item>
          <el-form-item label="性别" prop="sex">
            <el-select v-model="form.sex" placeholder="请选择性别" style="width:200px">
              <el-option v-for="dict in dict.type.tj_rule_sex" :key="dict.value" :label="dict.label"
                :value="dict.value"></el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="排班日期" prop="time">
            <el-input v-model="form.time" placeholder="请输入排班日期" style="width:200px" />
          </el-form-item>
          <el-form-item label="星期" prop="week">
            <el-input v-model="form.week" placeholder="请输入星期" style="width:200px" />
          </el-form-item>
          <el-form-item label="上午/下午" prop="daty">
            <el-input v-model="form.daty" placeholder="请输入上午/下午" style="width:200px" />
          </el-form-item>
          <el-form-item label="出诊科室" prop="dept">
            <el-input v-model="form.dept" placeholder="请输入出诊科室" style="width:200px" />
          </el-form-item>
        </el-form>
        <div slot="footer" class="dialog-footer">
          <el-button type="primary" @click="submitForm">确 定</el-button>
          <el-button @click="cancel">取 消</el-button>
        </div>
      </el-dialog>
    </div>
  </template>
  <script>
  import {
  } from "@/api/hosp/rules";
  export default {
    name: "Rules",
    dicts: ["tj_rule_sex"],
    data() {
      return {
        dataList:[{
            newID:1,
            name:"小张",
            sex:"1",
            dept:"外科",
            time:"2023-11-15",
            daty:"全天",
            week:"星期五"
        }],
        // 遮罩层
        loading: true,
        // 选中数组
        ids: [],
        // 非单个禁用
        single: true,
        // 非多个禁用
        multiple: true,
        // 显示搜索条件
        showSearch: true,
        // 总条数
        total: 0,
        createTimeList: null,
        // 弹出层标题
        title: "",
        // 是否显示弹出层
        open: false,
        // 查询参数
        queryParams: {
          pageNum: 1,
          pageSize: 10,
        },
        // 表单参数
        form: {},
        // 表单校验
        rules: {
          ageGt: [
            { required: true, message: "项目名不能为空", trigger: "change" },
          ],
        },
        pickerOptions: {
                shortcuts: [
                    {
                        text: "近一周",
                        onClick(picker) {
                            const end = new Date();
                            const start = new Date();
                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
                            picker.$emit("pick", [start, end]);
                        },
                    },
                    {
                        text: "近一个月",
                        onClick(picker) {
                            const end = new Date();
                            const start = new Date();
                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
                            picker.$emit("pick", [start, end]);
                        },
                    },
                    {
                        text: "近三个月",
                        onClick(picker) {
                            const end = new Date();
                            const start = new Date();
                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
                            picker.$emit("pick", [start, end]);
                        },
                    },
                ],
            },
      };
    },
    watch: {
    },
    created() {
        this.getNowTime();
      this.getList();
    },
    methods: {
          //处理默认选中当前日期
          getNowTime() {
            var curDate = new Date().getTime();
            var dayNum = 3 * 24 * 3600 * 1000;
            var threeDays = curDate - dayNum;
            var sDay = this.getLocalTime(threeDays);
            var end = this.getLocalTime(curDate);
            this.finishTimeList = [sDay, end];
        },
        add0(m) {
            return m < 10 ? "0" + m : m;
        },
        getLocalTime(nS) {
            var time = new Date(nS);
            var y = time.getFullYear();
            var m = time.getMonth() + 1;
            var d = time.getDate();
            return y + "-" + this.add0(m) + "-" + this.add0(d);
        },
      getList() {
      this.loading = false
      },
      // 取消按钮
      cancel() {
        this.open = false;
        this.reset();
      },
      // 表单重置
      reset() {
        this.form = {
        };
        this.resetForm("form");
      },
      /** 搜索按钮操作 */
      handleQuery() {
        this.queryParams.pageNum = 1;
        this.getList();
      },
      /** 重置按钮操作 */
      resetQuery() {
        this.resetForm("queryForm");
        this.handleQuery();
      },
      // 多选框选中数据
      handleSelectionChange(selection) {
        this.ids = selection.map((item) => item.aid);
        this.single = selection.length !== 1;
        this.multiple = !selection.length;
      },
      /** 新增按钮操作 */
      handleAdd() {
       this.open = true
      },
      /** 修改按钮操作 */
      handleUpdate(row) {
        this.open = true
        this.form = row
      },
      /** 提交按钮 */
      submitForm() {
      },
      /** 删除按钮操作 */
      handleDelete(row) {
      },
    },
  };
  </script>
  <style scoped>
  .pag {
    width: 100%;
    display: flex;
    justify-content: center;
  }
  .pag1 {
    width: 30%;
  }
  </style>
src/views/paiban/pilpaiban/index.vue
New file
@@ -0,0 +1,267 @@
<template>
    <div class="app-container">
          <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
            <el-form-item label="科室" prop="deptName">
              <el-input v-model="queryParams.proName" placeholder="请输入医生姓名" clearable @keyup.enter.native="handleQuery" />
            </el-form-item>
            <el-form-item label="医生姓名" prop="proName">
              <el-input v-model="queryParams.proName" placeholder="请输入医生姓名" clearable @keyup.enter.native="handleQuery" />
            </el-form-item>
            <el-form-item label="登记时间">
                <el-date-picker clearable v-model="createTimeList" style="width: 240px" value-format="yyyy-MM-dd"
                    type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
                    :picker-options="pickerOptions"></el-date-picker>
            </el-form-item>
            <el-form-item>
              <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
              <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
            </el-form-item>
          </el-form>
          <el-row :gutter="10" class="mb8">
            <el-col :span="1.5">
              <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd"
                v-hasPermi="['hosp:rules:add']">新增
              </el-button>
            </el-col>
            <el-col :span="1.5">
              <el-button type="primary" icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
                v-hasPermi="['hosp:rules:edit']">修改
              </el-button>
            </el-col>
            <el-col :span="1.5">
              <el-button type="primary" icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
                v-hasPermi="['hosp:rules:remove']">删除
              </el-button>
            </el-col>
            <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
          </el-row>
          <el-table border v-loading="loading" :data="dataList" @selection-change="handleSelectionChange">
            <el-table-column type="selection" width="55" align="center" />
            <el-table-column label="序号" align="center" prop="newID" width="55" />
            <el-table-column label="出诊科室" align="center" prop="dept"  />
            <el-table-column label="医生姓名" align="center" prop="name"  />
            <el-table-column label="排班日期" align="center" prop="time"  />
            <el-table-column label="星期" align="center" prop="week"  />
            <el-table-column label="上午/下午" align="center" prop="daty"  />
            <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
              <template slot-scope="scope">
                <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
                  v-hasPermi="['hosp:rules:edit']" title="修改">
                </el-button>
                <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
                  v-hasPermi="['hosp:rules:remove']" title="删除">
                </el-button>
              </template>
            </el-table-column>
          </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>
      <!-- 添加或修改规则+病种对话框 -->
      <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
        <el-form ref="form" :model="form" :rules="rules" label-width="80px" :inline="true">
          <el-form-item label="出诊科室" prop="dept">
            <el-input v-model="form.dept" placeholder="请输入出诊科室" style="width:200px" />
          </el-form-item>
          <el-form-item label="排班日期" prop="time">
            <el-input v-model="form.time" placeholder="请输入排班日期" style="width:200px" />
          </el-form-item>
          <el-form-item label="星期" prop="week">
            <el-input v-model="form.week" placeholder="请输入星期" style="width:200px" />
          </el-form-item>
          <el-form-item label="上午/下午" prop="daty">
            <el-input v-model="form.daty" placeholder="请输入上午/下午" style="width:200px" />
          </el-form-item>
        </el-form>
        <div slot="footer" class="dialog-footer">
          <el-button type="primary" @click="submitForm">确 定</el-button>
          <el-button @click="cancel">取 消</el-button>
        </div>
      </el-dialog>
    </div>
  </template>
  <script>
  import {
  } from "@/api/hosp/rules";
  export default {
    name: "Rules",
    dicts: ["tj_rule_sex"],
    data() {
      return {
        dataList:[{
            newID:1,
            name:"小张",
            sex:"1",
            dept:"外科",
            time:"2023-11-15",
            daty:"全天",
            week:"星期五"
        }],
        // 遮罩层
        loading: true,
        // 选中数组
        ids: [],
        // 非单个禁用
        single: true,
        // 非多个禁用
        multiple: true,
        // 显示搜索条件
        showSearch: true,
        // 总条数
        total: 0,
        createTimeList: null,
        // 弹出层标题
        title: "",
        // 是否显示弹出层
        open: false,
        // 查询参数
        queryParams: {
          pageNum: 1,
          pageSize: 10,
        },
        // 表单参数
        form: {},
        // 表单校验
        rules: {
          ageGt: [
            { required: true, message: "项目名不能为空", trigger: "change" },
          ],
        },
        pickerOptions: {
                shortcuts: [
                    {
                        text: "近一周",
                        onClick(picker) {
                            const end = new Date();
                            const start = new Date();
                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
                            picker.$emit("pick", [start, end]);
                        },
                    },
                    {
                        text: "近一个月",
                        onClick(picker) {
                            const end = new Date();
                            const start = new Date();
                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
                            picker.$emit("pick", [start, end]);
                        },
                    },
                    {
                        text: "近三个月",
                        onClick(picker) {
                            const end = new Date();
                            const start = new Date();
                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
                            picker.$emit("pick", [start, end]);
                        },
                    },
                ],
            },
      };
    },
    watch: {
    },
    created() {
        this.getNowTime();
      this.getList();
    },
    methods: {
          //处理默认选中当前日期
          getNowTime() {
            var curDate = new Date().getTime();
            var dayNum = 3 * 24 * 3600 * 1000;
            var threeDays = curDate - dayNum;
            var sDay = this.getLocalTime(threeDays);
            var end = this.getLocalTime(curDate);
            this.finishTimeList = [sDay, end];
        },
        add0(m) {
            return m < 10 ? "0" + m : m;
        },
        getLocalTime(nS) {
            var time = new Date(nS);
            var y = time.getFullYear();
            var m = time.getMonth() + 1;
            var d = time.getDate();
            return y + "-" + this.add0(m) + "-" + this.add0(d);
        },
      getList() {
      this.loading = false
      },
      // 取消按钮
      cancel() {
        this.open = false;
        this.reset();
      },
      // 表单重置
      reset() {
        this.form = {
        };
        this.resetForm("form");
      },
      /** 搜索按钮操作 */
      handleQuery() {
        this.queryParams.pageNum = 1;
        this.getList();
      },
      /** 重置按钮操作 */
      resetQuery() {
        this.resetForm("queryForm");
        this.handleQuery();
      },
      // 多选框选中数据
      handleSelectionChange(selection) {
        this.ids = selection.map((item) => item.aid);
        this.single = selection.length !== 1;
        this.multiple = !selection.length;
      },
      /** 新增按钮操作 */
      handleAdd() {
       this.open = true
      },
      /** 修改按钮操作 */
      handleUpdate(row) {
        this.open = true
        this.form = row
      },
      /** 提交按钮 */
      submitForm() {
      },
      /** 删除按钮操作 */
      handleDelete(row) {
      },
    },
  };
  </script>
  <style scoped>
  .pag {
    width: 100%;
    display: flex;
    justify-content: center;
  }
  .pag1 {
    width: 30%;
  }
  </style>
src/views/standard/renshunum/index.vue
New file
@@ -0,0 +1,134 @@
<template>
    <div>
        <el-form :model="queryParams" ref="tableList" :inline="true" label-width="76px" style="margin: 10px 10px">
            <el-form-item label="体检时间" prop="date">
                <el-date-picker v-model="value1" type="date" placeholder="选择日期">
                </el-date-picker>
            </el-form-item>
            <el-form-item>
                <el-button type="primary" @click="submitForm">搜索</el-button>
            </el-form-item>
        </el-form>
        <div class="data-view">
            <div id="main"></div>
        </div>
    </div>
</template>
<script>
import { GetChartByDate } from "@/api/count/chart";
const echarts = require("echarts/lib/echarts");
require("echarts/lib/component/title");
require("echarts/lib/component/tooltip");
require("echarts/lib/component/legend");
require("echarts/lib/chart/pie");
export default {
    name: "chart",
    data() {
        return {
            pickerOptions: {
                shortcuts: [{
                    text: '最近一周',
                    onClick(picker) {
                        const end = new Date();
                        const start = new Date();
                        start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
                        picker.$emit('pick', [start, end]);
                    }
                }, {
                    text: '最近一个月',
                    onClick(picker) {
                        const end = new Date();
                        const start = new Date();
                        start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
                        picker.$emit('pick', [start, end]);
                    }
                }, {
                    text: '最近三个月',
                    onClick(picker) {
                        const end = new Date();
                        const start = new Date();
                        start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
                        picker.$emit('pick', [start, end]);
                    }
                }]
            },
            value1: "",
            DateList: [],
            startTime: "",
            dateAll: [],
            queryParams: {
                date: null,
                startDate: null,
                endDate: null,
            },
        };
    },
    methods: {
        getList() {
            this.queryParams.startDate = this.startTime[0];
            this.queryParams.endDate = this.startTime[1];
            let myChart = this.$echarts.init(document.getElementById("main"));
            //你进入页面先把图表渲染了  然后才获取的数据把
            myChart.setOption({
                color: ['#5470c6'],
                legend: {},
                tooltip: {},
                xAxis: {
                    type: 'category',
                    data: ['体检人数', '男生数量', '女生数量', '收入', '个检人数', '单位体检人数']
                },
                yAxis: {
                    type: 'value'
                },
                series: [
                    {
                        data: [120, 80, 40, {
                            value: 380,
                            itemStyle: {
                                color: '#a90000'
                            }
                        }, 100, 200],
                        type: 'bar'
                    }
                ]
            });
        },
        // 时间
        dateChangebirthday1(val) {
            this.startTime = val;
        },
        // 搜索
        submitForm() {
            this.queryParams.pageNum = 1;
            this.getList();
        },
    },
    mounted() {
        this.getList();
    },
};
</script>
<style>
.data-view {
    margin: 5px 15px;
    height: 580px;
}
#main {
    padding: 10px;
    height: 580px;
    background-color: #fff;
}
</style>
src/views/standard/tijiancom/index.vue
New file
@@ -0,0 +1,150 @@
<template>
    <div>
        <el-form :model="queryParams" ref="tableList" :inline="true" label-width="76px" style="margin: 10px 10px">
            <el-form-item label="统计区间" prop="date">
                <el-date-picker v-model="value1" type="datetimerange" align="right" start-placeholder="开始日期"
                    :picker-options="pickerOptions" end-placeholder="结束日期" :default-time="['00:00:00', '23:00:00']"
                    format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" @change="dateChangebirthday1">
                </el-date-picker>
            </el-form-item>
            <el-form-item>
                <el-button type="primary" @click="submitForm">搜索</el-button>
            </el-form-item>
        </el-form>
        <div class="data-view">
            <div id="main"></div>
        </div>
    </div>
</template>
<script>
import { GetChartByDate } from "@/api/count/chart";
const echarts = require("echarts/lib/echarts");
require("echarts/lib/component/title");
require("echarts/lib/component/tooltip");
require("echarts/lib/component/legend");
require("echarts/lib/chart/pie");
export default {
    name: "chart",
    data() {
        return {
            pickerOptions: {
                shortcuts: [{
                    text: '最近一周',
                    onClick(picker) {
                        const end = new Date();
                        const start = new Date();
                        start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
                        picker.$emit('pick', [start, end]);
                    }
                }, {
                    text: '最近一个月',
                    onClick(picker) {
                        const end = new Date();
                        const start = new Date();
                        start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
                        picker.$emit('pick', [start, end]);
                    }
                }, {
                    text: '最近三个月',
                    onClick(picker) {
                        const end = new Date();
                        const start = new Date();
                        start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
                        picker.$emit('pick', [start, end]);
                    }
                }]
            },
            value1: "",
            DateList: [],
            startTime: "",
            dateAll: [],
            queryParams: {
                date: null,
                startDate: null,
                endDate: null,
            },
        };
    },
    methods: {
        getList() {
            this.queryParams.startDate = this.startTime[0];
            this.queryParams.endDate = this.startTime[1];
            let myChart = this.$echarts.init(document.getElementById("main"));
            //你进入页面先把图表渲染了  然后才获取的数据把
            myChart.setOption({
                tooltip: {},
                xAxis: {
                    type: 'category',
                    data: ['一般检查','外科','内科', '化验科', '检验科', '心电图室','妇科','B超室','新生儿科', '儿童科']
                },
                yAxis: {
                    type: 'value'
                },
                legend: {
                    data: ['剩余体检人数', '已完成体检人数']
                },
                series: [{
                    name: '剩余体检人数',
                    color: ['#2f4554'],
                    data: [100, 150, 120, 90, 50, 130, 110,80,90,100],
                    type: 'bar',
                    label: {
                        // show: true,
                        position: 'right'
                    }
                },
                {
                    name: '已完成体检人数',
                    color: ['#c23531'],
                    data: [120, 130, 110, 70, 60, 110, 140,80,90,80],
                    type: 'bar',
                    label: {
                        // show: true,
                        position: 'right'
                    }
                }]
            });
        },
        // 时间
        dateChangebirthday1(val) {
            this.startTime = val;
        },
        // 搜索
        submitForm() {
            this.queryParams.pageNum = 1;
            this.getList();
        },
    },
    mounted() {
        this.getList();
    },
};
</script>
<style>
.data-view {
    margin: 5px 15px;
    height: 580px;
}
#main {
    padding: 10px;
    height: 580px;
    background-color: #fff;
}
</style>
src/views/standard/tijianxinxi/index.vue
New file
@@ -0,0 +1,388 @@
<template>
    <div class="app-container">
      <el-row :gutter="18">
        <el-col :span="6" :xs="18">
          <div class="head-container">
            <el-input v-model="deptName" placeholder="请输入部门名称" clearable size="small" prefix-icon="el-icon-search"
              style="margin-bottom: 15px" />
          </div>
          <div class="head-container">
            <el-tree :data="deptOptions" :props="defaultProps" :expand-on-click-node="false"
              :filter-node-method="filterNode" ref="tree" node-key="id" :default-expanded-keys="treeId" highlight-current
              @node-click="handleNodeClick" />
          </div>
        </el-col>
        <el-col :span="18" :xs="18">
          <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
            <!-- <el-form-item label="项目名称" prop="proName">
              <el-input v-model="queryParams.proName" placeholder="请输入项目名称" clearable @keyup.enter.native="handleQuery" />
            </el-form-item>
            <el-form-item label="检查类别" prop="checkType">
              <el-input v-model="queryParams.checkType" placeholder="请输入检查类别" clearable @keyup.enter.native="handleQuery" />
            </el-form-item>
            <el-form-item>
              <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
              <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
            </el-form-item> -->
          </el-form>
          <el-table v-if="refreshTable" v-loading="loading" :data="projectList" ref="tableRef" border row-key="proId"
            :expand-row-keys="ListId" :row-class-name="selectSingleRow"
            :tree-props="{ children: 'tjProjectList', hasChildren: 'tjProjectList.length>0', }">
            <el-table-column label="项目名称" align="center" prop="proName"  />
            <el-table-column label="已检人数" align="center" prop="a"  />
            <el-table-column label="未检人数" align="center" prop="b"  />
            <el-table-column label="延期人数" align="center" prop="c"  />
            <el-table-column label="弃检人数" align="center" prop="d" />
          </el-table>
        </el-col>
      </el-row>
    </div>
  </template>
  <script>
  import {
    getProject,
    delProject,
    addProject,
    updateProject,
    ProjectTree,
    deptTree,
  } from "@/api/hosp/project";
  import { listDept } from "@/api/system/dept";
  import Treeselect from "@riophae/vue-treeselect";
  import "@riophae/vue-treeselect/dist/vue-treeselect.css";
  import IconSelect from "@/components/IconSelect";
  import { listConsumables } from "@/api/hosp/consumables";
  import { Message } from "element-ui";
  import {
    listSfxm,
    getSfxm,
    delSfxm,
    addSfxm,
    updateSfxm,
    gettreeList,
    getListByXmId
  } from "@/api/system/sfxm";
  export default {
    name: "Project",
    dicts: ["sys_normal_disable", "dict_personnel_type", "sys_user_sex", "tj_result_type", "dis_sampling_tab", "sys_dict_specimen", "sys_dict_position", "tj_result_type","sys_yes_no"],
    components: { Treeselect, IconSelect },
    data() {
      return {
        // 部门树选项
        deptOptions: undefined,
        dialogTableVisible: false,
        sfxmList: [],
        deptOptionstree: [],
        defaultPropstree: {
          children: "dictSfxms",
          label: "xmmc",
        },
        xmmc: "",
        chargeId: [],
        List: false,
        // 部门名称
        deptName: "",
        deptOption: [],
        ChangeList: [],
        // 遮罩层
        loading: true,
        key: "",
        // 选中数组
        ids: [],
        // 非单个禁用
        single: true,
        // 非多个禁用
        multiple: true,
        // 显示搜索条件
        showSearch: true,
        // 总条数
        total: 0,
        treeId: [],
        ListId: [],
        // 体检耗材表格数据
        consumableList: [],
        tjStandardList: [],
        // 表格树数据
        deptList: [],
        parentNameList: [],
        sfxmId:null,
        // 体检项目表格数据
        projectList: [],
        // 菜单树选项
        projectOptions: [],
        // 弹出层标题
        title: "",
        // 是否显示弹出层
        open: false,
        // 是否展开,默认全部折叠
        isExpandAll: false,
        showPrise: false,
        showRentPrise: false,
        defaultProps: {
          children: "children",
          label: "label",
        },
        id:"",
        // 重新渲染表格状态
        refreshTable: true,
        // 查询参数
        queryParams: {
          // pageNum: 1,
          // pageSize: 10,
          proName: null,
          proEngName: null,
          checkType: null,
          deptId: undefined,
        },
        querycharge: {
          pageNum: 1,
          pageSize: 50,
          xmmc: null,
          pym: null,
        },
        queryParam: {
          page: 1,
          pageSize: 10,
          id: null,
        },
        // 表单参数
        form: {},
        // 表单校验
        rules: {
          createTime: [
            { required: true, message: "创建时间不能为空", trigger: "blur" },
          ],
          updateTime: [
            { required: true, message: "修改时间不能为空", trigger: "blur" },
          ],
          deleted: [
            { required: true, message: "删除标记不能为空", trigger: "blur" },
          ],
          proName: [
            { required: true, message: "项目名称不能为空", trigger: "blur" },
          ],
          proPrice: [
            { required: true, message: "项目价格不能为空", trigger: "blur" },
          ],
          deptName: [
            { required: true, message: "科室名称不能为空", trigger: "blur" },
          ],
          // proStandard: [
          //   { required: true, message: "项目标准值不能为空", trigger: "blur" },
          // ],
        },
      };
    },
    watch: {
      // 根据名称筛选部门树
      deptName(val) {
        this.$refs.tree.filter(val);
      },
      treeId(newVal, oldVal) {
        if (newVal) {
          this.$nextTick(() => {
            document
              .querySelector('.el-tree-node__children .el-tree-node__content')
              .click();
          });
        }
      },
      // 根据名称筛选部门树
      xmmc(val) {
        this.$refs.tree.filter(val);
      },
      chargeId(newVal, oldVal) {
        if (newVal) {
          this.$nextTick(() => {
            // document.getElementById("changtree").click();;
            document
              .querySelector('#changtree .el-tree-node__children .el-tree-node.is-focusable .el-tree-node__content')
              .click();
          });
        }
      }
    },
    created() {
      this.getDeptList();
      this.getDeptTree();
    },
    methods: {
      //是否显示选中的值
      display(value) { },
      /** 查询体检项目列表 */
      getList() {
        this.loading = true;
        let data = {
          proName: this.queryParams.proName,
          checkType: this.queryParams.checkType,
          deptId: this.queryParams.deptId,
        };
        ProjectTree(data).then((response) => {
          this.projectList = this.handleTree(response.data.list, "proId");
          this.projectList.forEach(element => {
            element.a="0"
            element.b=0
            element.c="0"
            element.d="0"
            element.tjProjectList.forEach(item => {
                item.a="0"
                item.b=0
                item.c="0"
                item.d="0"
            })
          });
          this.loading = false;
        });
      },
      // // 查询体检项目列表(树形结构)
      getData() {
        /** 查询部门下拉树结构 */
        ProjectTree().then((response) => {
          this.projectOptions = [];
          const project = { proId: 0, proName: "主类目", children: [] };
          project.children = this.handleTree(response.data.list, "proId");
          this.key = response.data.key
          // if (this.key == "Y") {
          //   this.key = response.data.key
          // } else if (response.data.key == "N") {
          //   this.key = response.data.key
          // }
          this.projectOptions.push(project);
        });
      },
      /** 查询部门列表 */
      getDeptList() {
        listDept(this.queryParams).then((response) => {
          console.log(response)
          this.parentNameList = response.data;
          this.deptList = this.handleTree(response.data, "proId");
        });
      },
      /** 查询部门下拉树结构 */
      getDeptTree() {
        deptTree().then((response) => {
          this.deptOptions = response.data;
          this.treeId.push(this.deptOptions[0].id)
        });
      },
      // 筛选节点
      filterNode2(value, data) {
        if (!value) return true;
        return data.xmmc.indexOf(value) !== -1;
      },
      // 筛选节点
      filterNode(value, data) {
        if (!value) return true;
        return data.label.indexOf(value) !== -1;
      },
      // 节点单击事件
      handleNodeClick(date) {
        this.id = date.id;
        this.queryParams.deptId = date.id;
        let data = {
          deptId: this.queryParams.deptId,
        };
        ProjectTree(data).then((response) => {
          this.projectList = this.handleTree(response.data.list, "proId");
          this.projectList.forEach(element => {
            element.a="0"
            element.b=0
            element.c="0"
            element.d="0"
            element.tjProjectList.forEach(item => {
                item.a="0"
                item.b=0
                item.c="0"
                item.d="0"
            })
          });
          this.ListId.push(this.projectList[0].proId)
          this.key = response.data.key
          // if (this.key == "Y") {
          //   this.key = response.data.key
          // } else if (response.data.key == "N") {
          //   this.key = response.data.key
          // }
          this.loading = false;
        });
      },
      selectSingleRow({ row, rowIndex }) {
        if (rowIndex === 1) {
          return 'warning-row';
        }
        return '';
      },
      // 表单重置
      reset() {
        this.form = {
          proParentId: null,
          proName: null,
          proEngName: null,
          proPrice: "0.00",
          proRemark: null,
          createBy: null,
          createTime: null,
          updateBy: null,
          updateTime: null,
          deleted: null,
          proCheckType: null,
          proMeaning: null,
          proCheckMethod: null,
          proStandard: null,
          proScope: null,
          proType: null,
          deptId: null,
          deptName: null,
          consumablesList: [],
          tjStandardList: [],
          proStatus: "启用",
        };
        this.resetForm("form");
      },
    },
  }
  </script>
  <style scoped>
  .el-table__header-wrapper .el-checkbox {
    display: none;
  }
  .pag {
    display: flex;
    justify-content: center;
  }
  .pag1 {
    width: 40%;
  }
  .dialog-footer {
    position: absolute;
    left: 40%;
    bottom: 3%;
  }
  .el-table .warning-row {
    background: #e5f3ff;
  }
  .el-tree-node.is-current>.el-tree-node__content {
    background-color: #e5f3ff !important;
    color: #333 !important
  }
  </style>
src/views/standard/tijianxinxichakan/index.vue
New file
@@ -0,0 +1,618 @@
<template>
    <div class="app-container">
        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
            <el-form-item label="体检号" prop="tjNum">
                <el-input ref="inputName" v-model="queryParams.tjNum" placeholder="请输入体检号" style="width: 170px" clearable
                    @keyup.enter.native="handleQuery" />
            </el-form-item>
            <el-form-item>
                <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
                <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
            </el-form-item>
        </el-form>
        <template>
            <h4 v-if="tjCustomerName">姓名:{{tjCustomerName }}</h4>
            <el-table border v-loading="loading" :data="orderList" >
                <el-table-column label="序号" align="center" prop="newID"  />
                <el-table-column label="体检号" align="center" prop="tjNumber" />
                <el-table-column label="已完成项目" align="center" prop="tjNumber" /> <el-table-column label="未完成项目"
                    align="center" prop="tjNumber" />
                    <el-table-column label="弃检项目" align="center" prop="tjNumber" />
                <el-table-column label="延期项目" align="center" prop="tjNumber" />
            </el-table>
        </template>
        <div class="pag">
            <div class="pag1">
                <el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange"
                    :current-page="queryParams.pageNum" :page-sizes="[10, 20, 30, 40]" :page-size="queryParams.pageSize"
                    layout="total, sizes, prev, pager, next, jumper" :total="total">
                </el-pagination>
                <!-- <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
            @pagination="getList" /> -->
            </div>
        </div>
    </div>
</template>
<script>
import {
    listOrder,
    getNumber,
    hasReportEnd,
    hasReport,
    gettoPdf,
    getPdf,
    getOrderList,
} from "@/api/hosp/order";
import { getwater } from "@/api/hosp/customer";
import ViewPdf from "@/components/ViewPdf";
import { projectGetList, getaddtTransition } from "@/api/system/tijian";
export default {
    components: {
        ViewPdf,
    },
    dicts: ["dict_pay_type"],
    name: "Order",
    data() {
        return {
            tjCustomerName: "",
            orderIds: "",
            tjnumbers: "",
            cusIds: "",
            userIds: "",
            cusIdcard: "",
            cusName: "",
            cusPhone: "",
            cusSex: "",
            reportTimeList: "",
            createTimeList: "",
            cusId: "",
            payType: "0",
            dialogVisible: false,
            daoZhenDan: false,
            Projectopen: false,
            Projectopen1: false,
            src: "",
            url: "",
            flag: true,
            bill: null,
            Treedata: [],
            defaultProps: {
                children: "tjProjectList",
                label: "proName",
            },
            discount: 10,
            DataList: [],
            // 套餐提交按钮
            confirm: false,
            list1: true,
            activeName: "1",
            proIds: [],
            TotalPrice1: 0,
            numberList: [],
            dialogVisible: false,
            // 遮罩层
            loading: false,
            // 选中数组
            ids: [],
            // 非单个禁用
            single: true,
            // 非多个禁用
            multiple: true,
            // 显示搜索条件
            showSearch: true,
            userId: "",
            // 总条数
            total: 0,
            // 体检记录表格数据
            orderList: [],
            // 弹出层标题
            title: "",
            orderId: "",
            // 是否显示弹出层
            open: false,
            // 日期范围
            datetimerange: [],
            // 查询参数
            queryParams: {
                pageNum: 1,
                pageSize: 10,
                djbeginTime: null,
                djendTime: null,
                tjNum: null,
                bgbeginTime: null,
                bgendTime: null,
            },
            startTime: "",
            startTime1: "",
            // 表单参数
            form: {
                tjType: 2,
            },
            // 表单校验
            rules: {},
            pickerOptions: {
                shortcuts: [
                    {
                        text: "最近一周",
                        onClick(picker) {
                            const end = new Date();
                            const start = new Date(new Date().setHours(0, 0, 0, 0));
                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
                            picker.$emit("pick", [start, end]);
                        },
                    },
                    {
                        text: "最近一个月",
                        onClick(picker) {
                            const end = new Date();
                            const start = new Date(new Date().setHours(0, 0, 0, 0));
                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
                            picker.$emit("pick", [start, end]);
                        },
                    },
                    {
                        text: "最近三个月",
                        onClick(picker) {
                            const end = new Date();
                            const start = new Date(new Date().setHours(0, 0, 0, 0));
                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
                            picker.$emit("pick", [start, end]);
                        },
                    },
                ],
            },
        };
    },
    created() {
    //    this.getList()
    },
    mounted() {
        this.$nextTick(() => {
            this.$refs.inputName.focus();
        });
    },
    methods: {
        // / 处理默认选中当前日期
        getNowTime() {
            var curDate = new Date(new Date().setHours(0, 0, 0, 0)).getTime();
            var dayNum = 7 * 24 * 3600 * 1000;
            var threeDays = curDate - dayNum;
            var sDay = this.getLocalTime(threeDays);
            var end = this.getLocalTime(curDate);
            this.createTimeList = [sDay, end];
        },
        add0(m) {
            return m < 10 ? "0" + m : m;
        },
        getLocalTime(nS) {
            var time = new Date(nS);
            var y = time.getFullYear();
            var m = time.getMonth() + 1;
            var d = time.getDate();
            var h = time.getHours();
            var mm = time.getMinutes();
            return (
                y +
                "-" +
                this.add0(m) +
                "-" +
                this.add0(d) +
                " " +
                this.add0(h) +
                ":" +
                this.add0(mm)
            );
        },
        dateChangebirthday1(val) {
            this.startTime = val;
        },
        dateChangebirthday2(val) {
            this.startTime1 = val;
        },
        /** 查询体检记录列表 */
        getList() {
            this.queryParams.djbeginTime = this.startTime[0];
            this.queryParams.djendTime = this.startTime[1];
            this.loading = true;
            getOrderList(this.queryParams).then((response) => {
                this.orderList = response.data.list;
                if (this.orderList) {
                    this.orderList.forEach((item, index) => {
                        if(this.queryParams.tjNum){
                            this.tjCustomerName = item.tjCustomerName
                        }else{
                            this.tjCustomerName = ""
                        }
                        item.newID =
                            (this.queryParams.pageNum - 1) * this.queryParams.pageSize +
                            index +
                            1;
                    });
                }
                this.total = response.data.total;
                this.loading = false;
            });
        },
        /** 点击显示导检单报表*/ //lige    开始
        handleReport(row) {
            const tjNumber = row.tjNumber;
            const viewNum = "792931586196398080";
            const params = { viewNum, tjNumber };
            hasReport(tjNumber).then((res) => {
                if (res == 1) {
                    this.$tab.openPage("导诊单", "/report/breDailyReport", params);
                } else {
                    this.$message.error("该用户暂无项目!");
                }
            });
        },
        /** 点击显示导检单报表*/ //lige    开始
        handleReport1(row) {
            const tjNumber = this.tjnumbers;
            const viewNum = "792931586196398080";
            const params = { viewNum, tjNumber };
            hasReport(tjNumber).then((res) => {
                if (res == 1) {
                    this.$tab.openPage("导诊单", "/report/breDailyReport", params);
                } else {
                    this.$message.error("该用户暂无项目!");
                }
            });
        },
        //lige   结束
        viewReport(row) {
            const tjNumber = row.tjNumber;
            const flag = true;
            getPdf(tjNumber, flag).then((response) => {
                if (response.size === 0) {
                    this.$message.error("该用户体检报告暂未完成!");
                    this.dialogVisible = false;
                } else {
                    this.dialogVisible = true;
                    this.url = window.webkitURL.createObjectURL(response); //将后端返回的blob文件读取出url
                }
            });
        },
        handleSizeChange(val) {
            this.queryParams.pageNum = 1;
            this.queryParams.pageSize = val;
            this.getList();
        },
        handleCurrentChange(val) {
            this.queryParams.pageNum = val;
            this.getList();
        },
        // 取消按钮
        cancel() {
            this.open = false;
            this.reset();
        },
        // 表单重置
        reset() {
            this.form = {
                orderId: null,
                userId: null,
                tjType: null,
                tjNumber: null,
                tjSerialNumber: null,
                pacId: null,
                createTime: null,
                finishTime: null,
                updateTime: null,
                reportTime: null,
                createBy: null,
                updateBy: null,
                deleted: null,
                firmId: null,
                firmDeptName: null,
                firmWorkId: null,
                photo: null,
                djbeginTime: null,
                djendTime: null,
                bgbeginTime: null,
                bgendTime: null,
            };
            this.resetForm("form");
        },
        /** 搜索按钮操作 */
        handleQuery() {
            this.queryParams.pageNum = 1;
            this.getList();
        },
        /** 重置按钮操作 */
        resetQuery() {
            this.resetForm("queryForm");
            this.orderList =[];
            this.tjCustomerName= ""
        },
        // 多选框选中数据
        handleSelectionChange(selection) {
            selection.forEach((item) => {
                this.orderIds = item.orderId;
                this.tjnumbers = item.tjNumber;
                this.cusIds = item.tjCusIdCard;
                this.userIds = item.userId;
                this.cusIdcard = item.tjCusIdCard;
                this.cusName = item.tjCustomerName;
                this.cusPhone = item.tjCustomerPhone;
                this.cusSex = item.tjCustomerSex;
            });
            this.ids = selection.map((item) => item.orderId);
            // this.tjNumbers = selection.map((item) => item.tjNumber);
            this.single = selection.length !== 1;
            this.multiple = !selection.length;
        },
        /** 新增按钮操作 */
        // handleAdd() {
        //   this.reset();
        //   this.open = true;
        //   this.title = "添加体检记录";
        // },
        /** 订单流水按钮 */
        handleUpdate(row) {
            const tjNumber = row.tjNumber;
            this.open = true;
            getNumber(tjNumber).then((response) => {
                // this.form = response.data;
                this.numberList = response.data.charging;
                this.bill = response.data.water;
                this.title = "订单流水";
            });
        },
        /** 订单明细按钮 */
        handleUpdate1(row) {
            const tjNumber = this.tjnumbers;
            this.open = true;
            getNumber(tjNumber).then((response) => {
                // this.form = response.data;
                this.numberList = response.data.charging;
                this.bill = response.data.water;
                this.title = "订单流水";
            });
        },
        // 补录项目
        handleProject(row) {
            this.orderId = row.orderId;
            this.cusId = row.tjCusIdCard;
            this.userId = row.userId;
            this.customer = {
                cusIdcard: row.tjCusIdCard,
                cusName: row.tjCustomerName,
                cusPhone: row.tjCustomerPhone,
                cusSex: row.tjCustomerSex,
            };
            if (row.tjType) {
                this.form.tjType = parseInt(row.tjType);
            } else {
                this.form.tjType = 0;
            }
            /** 查询部门下拉树结构 */
            projectGetList().then((response) => {
                this.Treedata = response.data.list;
            });
            this.Projectopen = true;
            this.title = "补录项目";
        },
        // 补录项目
        handleProject1(row) {
            this.orderId = this.ids;
            this.cusId = this.cusIds;
            this.userId = this.userIds;
            this.customer = {
                cusIdcard: this.cusIdcard,
                cusName: this.cusName,
                cusPhone: this.cusPhone,
                cusSex: this.cusSex,
            };
            if (row.tjType) {
                this.form.tjType = parseInt(row.tjType);
            } else {
                this.form.tjType = 0;
            }
            /** 查询部门下拉树结构 */
            projectGetList().then((response) => {
                this.Treedata = response.data.list;
            });
            this.Projectopen1 = true;
            this.title = "补录项目";
        },
        // 点击获取每个树节点
        handleCurrentChecked(data, checked, checkedNodes) {
            if (!data.tjProjectList) {
                return;
            }
            if (checked === true) {
                this.DataList.push(data);
            } else {
                this.DataList.pop(data);
                this.list1 = true;
            }
            // let DataList = selectedobj.checkedNodes
            // if (DataList.length>0) {
            //   DataList.forEach(item => {
            //     if (nodeobj.proId === item.proId) {
            //       this.DataList = []
            //       this.DataList.push(item)
            //       this.list1 = false;
            //     }
            //   })
            // }else{
            //   this.DataList = []
            //   this.list1 = true;
            // }
            this.TotalPrice1 = 0;
            this.proIds = [];
            if (this.DataList.length != 0) {
                this.list1 = false;
                this.DataList.forEach((item) => {
                    this.TotalPrice1 = item.proPrice + this.TotalPrice1;
                    this.proIds.push(item.proId);
                });
            }
        },
        // 收费按钮
        submitPrice() {
            let data = {
                cusId: this.cusId,
                proIds: this.proIds,
            };
            getaddtTransition(data).then((response) => {
                if (response.code === 200) {
                    let tjType = this.form.tjType;
                    let copeWith = this.TotalPrice1;
                    let paidIn = copeWith * (this.discount / 10);
                    let discount = this.discount;
                    let data = {
                        customer: this.customer,
                        paidIn,
                        discount,
                        copeWith,
                        tjType,
                        orderId: this.orderId,
                        tjProIds: this.proIds,
                        payType: this.payType,
                    };
                    getwater(data).then((res) => {
                        this.$modal.msgSuccess("提交成功");
                        this.mobanId = res.data.mobanId;
                        this.waterId = res.data.waterId;
                        const tjnumber = this.waterId;
                        const viewNum = this.mobanId;
                        const params = { viewNum, tjnumber };
                        this.$tab.openPage("收款小票", "/report/charge", params);
                        this.Projectopen = false;
                    });
                }
            });
        },
        // 收费按钮
        submitPrice1() {
            let data = {
                cusId: this.cusIds,
                proIds: this.proIds,
            };
            getaddtTransition(data).then((response) => {
                if (response.code === 200) {
                    let tjType = this.form.tjType;
                    let copeWith = this.TotalPrice1;
                    let paidIn = copeWith * (this.discount / 10);
                    let discount = this.discount;
                    let data = {
                        customer: this.customer,
                        paidIn,
                        discount,
                        copeWith,
                        tjType,
                        orderId: this.orderIds,
                        tjProIds: this.proIds,
                        payType: this.payType,
                    };
                    getwater(data).then((res) => {
                        this.$modal.msgSuccess("提交成功");
                        this.mobanId = res.data.mobanId;
                        this.waterId = res.data.waterId;
                        const tjnumber = this.waterId;
                        const viewNum = this.mobanId;
                        const params = { viewNum, tjnumber };
                        this.$tab.openPage("收款小票", "/report/charge", params);
                        this.Projectopen1 = false;
                    });
                }
            });
        },
        /** 导出按钮操作 */
        handleExport() {
            this.download(
                "hosp/order/export",
                {
                    ...this.queryParams,
                },
                `order_${new Date().getTime()}.xlsx`
            );
        },
    },
};
</script>
<style lang="scss">
.pag {
    width: 100%;
    display: flex;
    justify-content: center;
    margin-top: 15px;
}
.pag1 {
    width: 30%;
}
.main {
    height: 700px;
    overflow: hidden;
}
#printIframe::-webkit-scrollbar {
    width: 6px;
}
/* 修改 滚动条的 下面 的 样式 */
#printIframe::-webkit-scrollbar-track {
    background-color: white;
    -webkit-border-radius: 2em;
    -moz-border-radius: 2em;
    border-radius: 2em;
}
/* 修改 滑块 */
#printIframe::-webkit-scrollbar-thumb {
    background-color: #dcdfe6;
    -webkit-border-radius: 2em;
    -moz-border-radius: 2em;
    border-radius: 2em;
}
// .el-dialog {
//   width: 1264px;
//   min-height: 800px;
// }
// .el-dialog__header {
//   display: flex;
//   justify-content: space-between;
//   align-items: center;
// }
// .el-dialog__body {
//   padding: 20px;
// }
.outside {
    width: 700px;
    display: flex;
    margin-top: 8px;
}
.outside1 {
    width: 700px;
    display: flex;
    margin-top: 8px;
}
</style>
src/views/system/notice/index.vue
@@ -136,7 +136,12 @@
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="24">
          <el-col :span="12" v-if="form.noticeType == 1">
            <el-form-item label="通知人员" prop="noticeType">
              <el-input v-model="form.noticeTitle" placeholder="请输入通知人员" />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="状态">
              <el-radio-group v-model="form.status">
                <el-radio
vue.config.js
@@ -36,9 +36,9 @@
      // detail: https://cli.vuejs.org/config/#devserver-proxy
      [process.env.VUE_APP_BASE_API]: {
        //target: `https://ltpeis.xaltjdkj.cn:5501/prod-api/getInfo`,
        target: `http://192.168.0.101:5011`,
        // target: `http://192.168.0.100:5011`,
        // // target: `http://192.168.0.99:8080/ltkj-admin`,
        // target: `https://ltpeis.xaltjdkj.cn:5011/ltkj-admin`,
        target: `https://ltpeis.xaltjdkj.cn:5011/ltkj-admin`,
        changeOrigin: true,
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: ''