lkk
2024-12-16 c7b33db117fd2893d7d1c93bf5d46e87d33e44d0
src/views/hosp/order/index.vue
@@ -13,7 +13,7 @@
          ref="inputName"
          v-model="queryParams.name"
          placeholder="请输入姓名"
          style="width: 120px"
          style="width: 150px"
          clearable
          @keyup.enter.native="handleQuery"
        />
@@ -23,7 +23,7 @@
          ref="inputName"
          v-model="queryParams.tjNum"
          placeholder="请输入体检号"
          style="width: 170px"
          style="width: 150px"
          clearable
          @keyup.enter.native="handleQuery"
          @blur="hb"
@@ -34,12 +34,60 @@
          ref="inputName"
          v-model="queryParams.xmmc"
          placeholder="请输入体检项目"
          style="width: 120px"
          style="width: 150px"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="登记时间" prop="createTimeList">
      <el-form-item
        label="单位名称"
        prop="tjCompName"
        style="margin-left: 20px;margin-right: 500px;"
      >
        <el-select
          :remote-method="getRemoteData"
          v-model="queryParams.tjCompName"
          value-key="drugManufacturerId"
          style="width: 200px"
          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
        label="状态"
        prop="zt"
      >
        <el-select
          :remote-method="getRemoteData"
          v-model="queryParams.zt"
          style="width: 150px"
          remote
          filterable
          placeholder="请选择状态"
          clearable
          @change="searchSelect"
        >
          <el-option
            v-for="item in ztList"
            :key="item.id"
            :label="item.name"
            :value="item.id"
          />
        </el-select>
      </el-form-item>
      <el-form-item label="登记时间" prop="createTimeList" style="margin-right: 107px;" >
        <el-date-picker
          v-model="createTimeList"
          type="datetimerange"
@@ -94,7 +142,20 @@
        >
      </el-form-item>
    </el-form>
    <!-- <div class="timeline-wrapper">
    <el-timeline :reverse="false" class="horizontal-timeline">
      <el-timeline-item
        v-for="(item, index) in timelineData"
        :key="index"
        :timestamp="item.timestamp"
        :position="index % 2 === 0 ? 'left' : 'right'">
        <el-card :body-style="{ padding: '20px' }">
          <h3>{{ item.title }}</h3>
          <p>{{ item.description }}</p>
        </el-card>
      </el-timeline-item>
    </el-timeline>
  </div> -->
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button
@@ -246,8 +307,12 @@
          :show-overflow-tooltip="true"
        >
          <template slot-scope="scope">
            <span v-if="scope.row.tjType == '2'">个人</span>
            <span v-if="scope.row.tjType == '1'">团队</span>
            <dict-tag
              :options="dict.type.dict_team"
              :value="scope.row.tjType"
            />
            <!-- <span v-if="scope.row.tjType == '2'">个人</span>
            <span v-if="scope.row.tjType == '1'">团队</span> -->
          </template>
        </el-table-column>
        <el-table-column
@@ -264,6 +329,18 @@
          :show-overflow-tooltip="true"
          width="160px"
        />
        <el-table-column
          label="单位名称"
          align="center"
          prop="dictCompName"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="状态"
          align="center"
          prop="zt"
          :show-overflow-tooltip="true"
        />
        <!-- <el-table-column label="流水号" align="center" prop="tjSerialNumber" /> -->
        <el-table-column
          label="所选套餐"
@@ -272,6 +349,18 @@
          :formatter="driver"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="导诊打印次数"
          align="center"
          prop="dycs"
          width="110px"
          :formatter="driver"
          :show-overflow-tooltip="true"
        >
          <template slot-scope="scope">
            {{ scope.row.dycs === null ? 0 : scope.row.dycs }}
          </template>
        </el-table-column>
        <el-table-column
          label="登记时间"
          align="center"
@@ -313,19 +402,14 @@
        </el-table-column>
        <!-- <el-table-column label="创建人" align="center" prop="createBy" /> -->
        <!-- <el-table-column label="更新人" align="center" prop="updateBy" /> -->
        <el-table-column
       <!--  <el-table-column
          label="单位工号"
          align="center"
          prop="firmWorkId"
          width="100px"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="单位名称"
          align="center"
          prop="dictCompName"
          :show-overflow-tooltip="true"
        />
        /> -->
        <!-- <el-table-column label="部门名" align="center" prop="firmDeptName" /> -->
        <!-- <el-table-column label="客户照片" align="center" prop="photo" /> -->
@@ -706,10 +790,14 @@
                <template>
                  <el-form :model="form">
                    <el-form-item label="体检类型" prop="tjType">
                      <el-radio-group v-model="form.tjType">
                      <div class="type">
                        {{ { 1: "团队", 2: "个人", 3: "团体票" }[form.tjType] }}
                      </div>
                      <!-- <el-radio-group v-model="form.tjType">
                        <el-radio :label="1">团队</el-radio>
                        <el-radio :label="2">个人</el-radio>
                      </el-radio-group>
                      </el-radio-group> -->
                    </el-form-item>
                  </el-form>
                </template>
@@ -744,6 +832,7 @@
                        style="width: 120px"
                        v-model="payType"
                        placeholder="请选择付款类型"
                        @change="onPayTypeChange"
                      >
                        <el-option
                          v-for="dict in dict.type.dict_pay_type"
@@ -856,9 +945,9 @@
            </el-tab-pane>
            <el-tab-pane label="单项" name="third">
              <div class="tab8">
              <el-row type="flex" class="row-bg" justify="space-around">
                <el-col :span="22">
                  <!-- <div
                <el-row type="flex" class="row-bg" justify="space-around">
                  <el-col :span="22">
                    <!-- <div
                  style="
                    text-align: center;
                    margin-bottom: 10px;
@@ -867,29 +956,29 @@
                >
                  项目列表
                </div> -->
                  <el-input
                    placeholder="输入关键字进行过滤"
                    v-model="filterText"
                  >
                  </el-input>
                  <div class="tab3">
                    <el-tree
                      class="filter-tree"
                      v-loading="loading"
                      :data="Treedata"
                      :props="defaultProps"
                      show-checkbox
                      node-key="proId"
                      @check="handleCurrentChecked"
                      :default-checked-keys="checkedkey"
                      :filter-node-method="filterNode"
                      ref="tree"
                      :render-content="renderContent"
                    <el-input
                      placeholder="输入关键字进行过滤"
                      v-model="filterText"
                    >
                    </el-tree>
                  </div>
                </el-col>
                <!-- <el-col :span="11">
                    </el-input>
                    <div class="tab3">
                      <el-tree
                        class="filter-tree"
                        v-loading="loading"
                        :data="Treedata"
                        :props="defaultProps"
                        show-checkbox
                        node-key="proId"
                        @check="handleCurrentChecked"
                        :default-checked-keys="checkedkey"
                        :filter-node-method="filterNode"
                        ref="tree"
                        :render-content="renderContent"
                      >
                      </el-tree>
                    </div>
                  </el-col>
                  <!-- <el-col :span="11">
                <div
                  style="
                    text-align: center;
@@ -917,7 +1006,7 @@
                  </div>
                </div>
              </el-col> -->
                <!-- <el-col :span="11">
                  <!-- <el-col :span="11">
              <div class="grid-content bg-purple">
                <div
                  style="
@@ -965,7 +1054,7 @@
                    </template>
                  </el-table-column>
                </el-table> -->
                <!-- <el-collapse v-model="activeName" accordion v-if="list1">
                  <!-- <el-collapse v-model="activeName" accordion v-if="list1">
                  <div>
                    <el-collapse-item title="请选择项目">
                      <el-table
@@ -987,16 +1076,16 @@
                    </el-collapse-item>
                  </div>
                </el-collapse> -->
                <!-- </div>
                  <!-- </div>
            </el-col> -->
              </el-row>
                </el-row>
              </div>
            </el-tab-pane>
          </el-tabs>
        </div>
        <div class="grid-content bg-purple">
          <div style="text-align: center; margin-bottom: 10px;margin-top:9px">
          <div style="text-align: center; margin-bottom: 10px; margin-top: 9px">
            已选项目列表
          </div>
          <el-table
@@ -1036,16 +1125,19 @@
      </div>
      <div class="heji">
        <template>
          <el-form :model="form" :inline="true">
        <div class="o">
          <el-form
            :model="form"
            :inline="true"
            style="display: flex; align-items: center"
          >
            <el-form-item label="体检类型" prop="tjType">
              <el-radio-group v-model="form.tjType">
                <el-radio :label="1">团队</el-radio>
                <el-radio :label="2">个人</el-radio>
              </el-radio-group>
              <div class="type">
                {{ { 1: "团队", 2: "个人", 3: "团体票" }[form.tjType] }}
              </div>
            </el-form-item>
          </el-form>
        </template>
        </div>
        <div class="outsides">
          <el-form :inline="true" class="outside2" label-width="80px">
@@ -1077,6 +1169,7 @@
                style="width: 120px"
                v-model="payType"
                placeholder="请选择付款类型"
                @change="onPayTypeChange"
              >
                <el-option
                  v-for="dict in dict.type.dict_pay_type"
@@ -1413,22 +1506,41 @@
import moment from "moment";
import { getZhList, getlistByZhId } from "@/api/system/package";
import { getwater } from "@/api/hosp/customer";
import { getInfo } from "@/api/login";
import ViewPdf from "@/components/ViewPdf";
import {
  projectGetList,
  shijianzhou,
  getaddtTransition,
  getProParentIdDxList,
  getProSonDxList,
} from "@/api/system/tijian";
import {
  SubmitCompany,
  getCompany,
  queryCompany,
  addbatch,
} from "@/api/team/tuanti";
import { createLogger } from "vuex";
export default {
  components: {
    ViewPdf,
  },
  dicts: ["dict_pay_type"],
  dicts: ["dict_pay_type", "dict_team"],
  name: "Order",
  data() {
    return {
      ztList: [
        {name:'未检',id: 0},{name:'在检',id: 1},{name:'已完成',id: 2},{name:'已审核',id: 3},{name:'生成报告',id: 4},{name:'报告核收',id: 5},{name:'已出报告',id: 6},
      ],
      timelineData: [
        { timestamp: '2024-01-01', title: '未检', description: 'This is event 1 description' },
        { timestamp: '2024-01-05', title: '在检', description: 'This is event 2 description' },
        { timestamp: '2024-01-10', title: '已完成', description: 'This is event 3 description' },
        { timestamp: '2024-01-15', title: '已审核', description: 'This is event 4 description' },
        { timestamp: '2024-01-15', title: '生成报告', description: 'This is event 4 description' },
        { timestamp: '2024-01-15', title: '报告核收', description: 'This is event 4 description' },
        { timestamp: '2024-01-15', title: '已出报告', description: 'This is event 4 description' },
      ],
      DataList3: [],
      bldhid: "",
      budadaozhen: false,
@@ -1436,6 +1548,7 @@
      DataLists: [],
      infoList: [],
      bldhs: [],
      CompanyList: [],
      filterage: "",
      activeName1: "second",
      filterText: "",
@@ -1483,6 +1596,7 @@
      TreedataList: [],
      discount: 10,
      DataList: [],
      tjNUms: [],
      // 套餐提交按钮
      confirm: false,
      list1: true,
@@ -1493,6 +1607,7 @@
      TotalPrice7: 0,
      numberList: [],
      dialogVisible: false,
      CheckBox: {},
      // 遮罩层
      loading: true,
      // 选中数组
@@ -1529,6 +1644,8 @@
        bgbeginTime: null,
        bgendTime: null,
        xmmc: null,
        tjCompName:'',
        dw:null
      },
      startTime: "",
      startTime1: "",
@@ -1571,6 +1688,7 @@
      },
    };
  },
  watch: {
    filterText(val) {
      this.$refs.tree.filter(val);
@@ -1590,6 +1708,34 @@
    });
  },
  methods: {
    // 搜索
    getRemoteData(query) {
      if (query) {
        let compName = query;
        queryCompany(compName).then((response) => {
          this.CompanyList = response.data;
          this.CompanyList.forEach((item) => {
            this.queryParams = item;
          });
        });
      }
    },
    // 选框数据
    searchSelect(val) {
      this.CheckBox = val;
      this.queryParams.dw = this.CheckBox.cnName;
      console.log(this.CheckBox,9999);
    },
    onPayTypeChange() {
      if (this.payType === "6" && this.form.tjType !== 3) {
        this.cannotSelectPayType = true;
        this.$message.warning("该付款类型在此体检类型下不允许选择!");
        this.payType = this.dict.type.dict_pay_type[0]?.value || null;
      } else {
        this.cannotSelectPayType = false;
      }
    },
    getdate() {
      getNewDateList().then((res) => {
        if (res.data) {
@@ -1649,6 +1795,47 @@
    },
    /** 查询体检记录列表 */
    getList() {
      this.queryParams.compId = this.CheckBox.drugManufacturerId;
      if (this.startTime) {
        this.queryParams.djbeginTime = this.startTime[0];
        this.queryParams.djendTime = this.startTime[1];
      } else if (this.createTimeList) {
        this.queryParams.djbeginTime = this.createTimeList[0];
        this.queryParams.djendTime = this.createTimeList[1];
      } else if (this.createTimeList == null) {
        this.queryParams.djbeginTime = null;
        this.queryParams.djendTime = null;
      }
      if (this.startTime1) {
        this.queryParams.bgbeginTime = this.startTime1[0];
        this.queryParams.bgendTime = this.startTime1[1];
      }
      this.loading = true;
      getOrderList(this.queryParams).then((response) => {
        this.orderList = response.data.list;
        if (this.orderList) {
          this.orderList.forEach((item, index) => {
            item.newID =
              (this.queryParams.pageNum - 1) * this.queryParams.pageSize +
              index +
              1;
          });
        }
        this.total = response.data.total;
        this.loading = false;
      });
       // 获取单位信息集合
       getCompany(this.queryParams).then((response) => {
        this.CompanyList = response.data;
        console.log( this.CompanyList,555);
        this.loading = false;
      });
    },
    sub() {
      this.queryParams.compId = this.CheckBox.drugManufacturerId;
      if (this.startTime) {
        this.queryParams.djbeginTime = this.startTime[0];
        this.queryParams.djendTime = this.startTime[1];
@@ -1696,9 +1883,13 @@
      });
    },
    /** 点击显示导检单报表*/ //lige    开始
    handleReport1(row) {
    /* handleReport1(row) {
      const tjNumber = this.tjnumbers;
      const viewNum = "792931586196398080";
      getInfo().then(((res)=>{
        console.log(res,123);
      }))
      const params = { viewNum, tjNumber };
      hasReport(tjNumber).then((res) => {
        if (res == 1) {
@@ -1707,6 +1898,31 @@
          this.$message.error("该用户暂无项目!");
        }
      });
    }, */
    handleReport1(row) {
      const tjNumber = this.tjnumbers;
      const viewNum = "792931586196398080";
      // 先调用 getInfo 获取 userId
      getInfo()
        .then((res) => {
          console.log(res, 1111);
          const dqdlr = res.user.userId; // 获取 userId
          console.log("User ID:", dqdlr);
          const params = { viewNum, tjNumber, dqdlr }; // 将 userId 加入 params
          // 再调用 hasReport 检查报告状态
          hasReport(tjNumber).then((reportRes) => {
            if (reportRes === 1) {
              this.$tab.openPage("导诊单", "/report/breDailyReport", params);
            } else {
              this.$message.error("该用户暂无项目!");
            }
          });
        })
        .catch(() => {
          this.$message.error("无法获取用户信息!");
        });
    },
    handleRevoke() {
@@ -1717,7 +1933,7 @@
      })
        .then(() => {
          revokeTjOrderByTjNum(this.tjnumbers).then((res) => {
            this.$modal.msgSuccess(res.msg);
            this.$modal.msgSuccess("撤销成功");
            this.getList();
          });
        })
@@ -1811,6 +2027,7 @@
        djendTime: null,
        bgbeginTime: null,
        bgendTime: null,
        dw: null
      };
      this.resetForm("form");
    },
@@ -1822,7 +2039,8 @@
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
      // this.getList();
      this.sub();
    },
    renderContents(h, { node, data, store }) {
      return (
@@ -1877,10 +2095,23 @@
      this.startTime1 = [];
      this.createTimeList = [];
      this.resetForm("queryForm");
      this.queryParams = {
        pageNum: 1,
        pageSize: 10,
        djbeginTime: null,
        djendTime: null,
        tjNum: null,
        bgbeginTime: null,
        bgendTime: null,
        xmmc: null,
        tjCompName:'',
        dw:null
      }
      this.handleQuery();
    },
    // 多选框选中数据
    handleSelectionChange(selection) {
      this.tjNUms = selection.map(item => item.tjNumber);
      selection.forEach((item) => {
        this.orderIds = item.orderId;
        this.tjnumbers = item.tjNumber;
@@ -1892,10 +2123,15 @@
        this.cusSex = item.tjCustomerSex;
        this.form.tjType = parseInt(item.tjType);
      });
      this.ids = selection.map((item) => item.orderId);
      // this.tjNumbers = selection.map((item) => item.tjNumber);
      this.single = selection.length !== 1;
      this.multiple = !selection.length;
      shijianzhou({
        tjNUms: this.tjNUms
      }).then((res) => {
        console.log(res)
      })
    },
    /** 新增按钮操作 */
    // handleAdd() {
@@ -2015,16 +2251,30 @@
      const tjNumber = this.tjnumbers;
      const viewNum = "983185234038140928";
      const jxbz = this.bldhid;
      const params = { viewNum, tjNumber, jxbz };
      console.log(params);
      hasReport(tjNumber).then((res) => {
      // const params = { viewNum, tjNumber, jxbz };
      // console.log(params);
      getInfo().then((res) => {
        console.log(res, 1111);
        const dqdlr = res.user.userId; // 获取 userId
        const params = { viewNum, tjNumber, jxbz, dqdlr };
        hasReport(tjNumber).then((res) => {
          if (res == 1) {
            this.$tab.openPage("导诊单", "/report/budabreDailyReport", params);
            this.budadaozhen = false;
          } else {
            this.$message.error("该用户暂无项目!");
          }
        });
      });
      /* hasReport(tjNumber).then((res) => {
        if (res == 1) {
          this.$tab.openPage("导诊单", "/report/budabreDailyReport", params);
          this.budadaozhen = false;
        } else {
          this.$message.error("该用户暂无项目!");
        }
      });
      }); */
    },
    handleClick(tab, event) {
@@ -2103,6 +2353,7 @@
    // 补录项目
    handleProject(row) {
      this.payType = "0";
      this.loading = true;
      this.DataList = [];
      this.DataList3 = [];
@@ -2172,6 +2423,7 @@
    },
    // 补录项目
    handleProject1() {
      this.payType = "0";
      this.loading = true;
      this.DataList = [];
      this.DataList3 = [];
@@ -2318,9 +2570,9 @@
        }
      });
      this.TotalPrice1 = 0;
      this.DataList3.forEach(item=>{
      this.DataList3.forEach((item) => {
        this.TotalPrice1 += item.proPrice;
      })
      });
    },
    /** 删除按钮操作 */
    handleDelete(row) {
@@ -2422,9 +2674,9 @@
      getaddtTransition(data).then((response) => {
        if (response.code === 200) {
          this.DataList = [];
      this.DataList3 = [];
      this.DataLists = [];
      this.TotalPrice1 = 0;
          this.DataList3 = [];
          this.DataLists = [];
          this.TotalPrice1 = 0;
          let tjType = this.form.tjType;
          let copeWith = this.TotalPrice1;
          let paidIn = copeWith * (this.discount / 10);
@@ -2505,6 +2757,7 @@
    handleProjectssChange(selection) {
      this.DataListss = [];
      this.selection = [];
      this.bldhs = selection.map((item) => item.bldh);
      selection.forEach((item) => {
        item.projectList.forEach((item1) => {
@@ -2610,7 +2863,9 @@
// .el-dialog__body {
//   padding: 20px;
// }
.o {
  margin-top: 8px;
}
.outside {
  width: 500px;
  display: flex;
@@ -2620,6 +2875,7 @@
  width: 500px;
  display: flex;
  // margin-top: 12px;
  // margin-right: 40%;
}
.tab3 {
@@ -2646,13 +2902,53 @@
  margin-top: 10px;
}
.box {
  display: flex;
  justify-content: space-between;
}
.box1{
.box1 {
  width: 50%;
  display: flex;
  flex-direction: column;
}
.timeline-wrapper {
  overflow-x: auto;
  padding: 20px;
  width: 100%;
}
.horizontal-timeline {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  flex-wrap: nowrap;
  padding: 20px 0;
  width: 100%;
}
.el-timeline-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin: 0 20px;
}
.el-timeline-item .el-card {
  width: 150px;
  border-radius: 10px;
}
.el-timeline-item .el-timeline-item-tail {
  display: none;
}
.el-timeline-item .el-timeline-item-dot {
  position: absolute;
  top: 10px;
  left: 50%;
  transform: translateX(-50%);
  width: 12px;
  height: 12px;
  background-color: #409EFF;
  border-radius: 50%;
}
</style>