2
lkk
2025-01-17 d23ab1d66456d5dd8aa8645bb262deef4e70a9eb
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,59 @@
          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,6 +141,24 @@
        >
      </el-form-item>
    </el-form>
    <div v-if="shijianlist.length > 0" style="margin-bottom: 20px">
      {{ findNameByTjnum(shijianlist[shijianlist.length - 1].tjNUm) }}
      <el-steps
        :space="200"
        :active="shijianlist[shijianlist.length - 1].sjz"
        finish-status="success"
        align-center
      >
        <el-step title="未检"></el-step>
        <el-step title="在检"></el-step>
        <el-step title="已完成"></el-step>
        <el-step title="已审核"></el-step>
        <el-step title="生成报告"></el-step>
        <el-step title="报告核收"></el-step>
        <el-step title="已出报告"></el-step>
      </el-steps>
    </div>
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
@@ -165,6 +230,16 @@
          :disabled="single"
          v-hasPermi="['hosp:order:export']"
          >打印补录单</el-button
        >
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="primary"
          size="mini"
          @click="ForceChexiao"
          :disabled="single"
          v-hasPermi="['qzcx']"
          >强制撤销</el-button
        >
      </el-col>
      <right-toolbar
@@ -268,6 +343,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="所选套餐"
@@ -329,19 +416,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" /> -->
@@ -576,6 +658,7 @@
                      width="260px"
                    >
                    </el-table-column>
                    <el-table-column prop="proPrice" label="原价" width="56px">
                    </el-table-column>
@@ -680,7 +763,9 @@
                >
                  <el-table-column prop="propinName" label="检查项目">
                  </el-table-column>
                  <el-table-column prop="proPrice" label="原价" width="56px">
                  <el-table-column prop="sl" label="数量" width="56px">
                  </el-table-column>
                    <el-table-column prop="proPrice" label="原价" width="56px">
                  </el-table-column>
                  <el-table-column
                    prop="proName"
@@ -688,6 +773,7 @@
                    width="260px"
                  >
                  </el-table-column>
                  <el-table-column
                    label="操作"
@@ -759,7 +845,7 @@
                        style="width: 90px"
                      ></el-input>
                    </el-form-item>
                    <el-form-item label="付款类型" prop="payType">
                    <el-form-item label="付款类型">
                      <el-select
                        style="width: 120px"
                        v-model="payType"
@@ -1029,7 +1115,9 @@
          >
            <el-table-column prop="propinName" label="检查项目">
            </el-table-column>
            <el-table-column prop="proName" label="明细项目" width="260px">
            <el-table-column prop="proName" label="明细项目" width="200px">
            </el-table-column>
            <el-table-column prop="sl" label="数量" width="56px">
            </el-table-column>
            <el-table-column prop="proPrice" label="原价" width="56px">
            </el-table-column>
@@ -1056,7 +1144,90 @@
        </div>
      </div>
      <div class="heji">
      <el-form
        :model="form"
        inline
        style="display: flex; justify-content: space-between; margin-top: 20px"
      >
        <!-- 体检类型 -->
        <el-form-item label="体检类型" prop="tjType" style="display: flex">
          <div class="type">
            {{ { 1: "团队", 2: "个人", 3: "团体票" }[form.tjType] }}
          </div>
        </el-form-item>
        <!-- 原价 -->
        <el-form-item label="原价" style="display: flex">
          <el-input
            placeholder="原价"
            :value="TotalPrice1"
            disabled
            style="width: 90px"
          ></el-input>
        </el-form-item>
        <!-- 折扣设定 -->
        <el-form-item label="折扣" style="display: flex">
          <el-input
            style="width: 90px"
            type="number"
            v-model="discount"
            :value="discount"
          ></el-input>
        </el-form-item>
        <!-- 应付金额 -->
        <el-form-item label="应付" style="display: flex">
          <el-input
            placeholder="应付金额"
            :value="TotalPrice1 * (discount / 10)"
            style="width: 90px"
          ></el-input>
        </el-form-item>
        <!-- 付款类型 -->
        <el-form-item label="付款类型" prop="payType" style="display: flex">
          <el-select
            style="width: 120px"
            v-model="payType"
            placeholder="请选择付款类型"
            @change="onPayTypeChange"
          >
            <el-option
              v-for="dict in dict.type.dict_pay_type"
              :key="dict.value"
              :label="dict.label"
              :value="dict.value"
            ></el-option>
          </el-select>
        </el-form-item>
        <!-- 结算方式 -->
        <el-form-item label="结算方式" prop="jsType" style="display: flex">
          <el-select
            v-model="jsType"
            placeholder="请选择结算方式"
            style="width: 130px"
            clearable
          >
            <el-option
              v-for="dict in dict.type.reservation_pay_type"
              :key="dict.value"
              :label="dict.label"
              :value="dict.value"
            />
          </el-select>
        </el-form-item>
        <!-- 提交按钮 -->
        <el-form-item style="display: flex">
          <el-button type="primary" @click="submitPrice1" :disabled="confirm">
            提交
          </el-button>
        </el-form-item>
      </el-form>
      <!-- <div class="heji">
        <div class="o">
          <el-form
            :model="form"
@@ -1111,6 +1282,21 @@
                ></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="结算方式" prop="payType">
              <el-select
                v-model="payType"
                placeholder="请选择结算方式"
                style="width: 130px"
                clearable
              >
                <el-option
                  v-for="dict in dict.type.reservation_pay_type"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
                />
              </el-select>
            </el-form-item>
            <el-form-item style="display: flex">
              <el-button
                type="primary"
@@ -1121,7 +1307,7 @@
            </el-form-item>
          </el-form>
        </div>
      </div>
      </div> -->
    </el-dialog>
    <!-- 添加或修改体检记录对话框 -->
@@ -1434,6 +1620,7 @@
  getTransitionInfo,
  getBlproByTjh,
  revokeBlProByBldhAndTjh,
  getForceChexiao,
} from "@/api/hosp/order";
import moment from "moment";
import { getZhList, getlistByZhId } from "@/api/system/package";
@@ -1441,20 +1628,34 @@
import { getInfo } from "@/api/login";
import ViewPdf from "@/components/ViewPdf";
import {
  projectGetList,
  shijianzhou,
  getaddtTransition,
  getProParentIdDxList,
  getProSonDxList,
} from "@/api/system/tijian";
import { createLogger } from "vuex";
import {
  SubmitCompany,
  getCompany,
  queryCompany,
  addbatch,
} from "@/api/team/tuanti";
export default {
  components: {
    ViewPdf,
  },
  dicts: ["dict_pay_type", "dict_team"],
  dicts: ["dict_pay_type", "dict_team", "reservation_pay_type"],
  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 },
      ],
      DataList3: [],
      bldhid: "",
      budadaozhen: false,
@@ -1462,6 +1663,7 @@
      DataLists: [],
      infoList: [],
      bldhs: [],
      CompanyList: [],
      filterage: "",
      activeName1: "second",
      filterText: "",
@@ -1484,6 +1686,7 @@
      packagedataList: [],
      cusId: "",
      payType: "0",
      jsType: "0",
      packageList: [],
      checkedkeys: [],
      dialogVisible: false,
@@ -1509,6 +1712,7 @@
      TreedataList: [],
      discount: 10,
      DataList: [],
      shijianlist: [],
      // 套餐提交按钮
      confirm: false,
      list1: true,
@@ -1519,6 +1723,7 @@
      TotalPrice7: 0,
      numberList: [],
      dialogVisible: false,
      CheckBox: {},
      // 遮罩层
      loading: true,
      // 选中数组
@@ -1555,6 +1760,8 @@
        bgbeginTime: null,
        bgendTime: null,
        xmmc: null,
        tjCompName: "",
        dw: null,
      },
      startTime: "",
      startTime1: "",
@@ -1617,6 +1824,30 @@
    });
  },
  methods: {
    findNameByTjnum(tjnum) {
      const order = this.orderList.find(
        (orderItem) => orderItem.tjNumber === tjnum
      );
      return order ? order.tjCustomerName : "未找到"; // 如果找不到对应的项,返回一个默认值
    },
    // 搜索
    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;
@@ -1685,6 +1916,46 @@
    },
    /** 查询体检记录列表 */
    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;
        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];
@@ -1772,6 +2043,45 @@
        .catch(() => {
          this.$message.error("无法获取用户信息!");
        });
    },
    // 强制撤销按钮
    ForceChexiao() {
      const tjNum = this.tjnumbers;
      this.$confirm(
        "您是否需要强制撤销?撤销后该人员本次体检记录不可恢复!",
        "确认信息",
        {
          distinguishCancelAndClose: true,
          confirmButtonText: "确认",
          cancelButtonText: "取消",
          customClass: "custom-message-box",
        }
      )
        .then(() => {
          getForceChexiao(tjNum).then((res) => {
            this.$modal.msgSuccess("撤销成功");
            this.getList();
          });
        })
        .catch((action) => {
          if (action === "cancel") {
            this.$message({
              type: "warning",
              message: "已取消",
            });
          }
        });
      this.$nextTick(() => {
        // 确保弹框渲染后应用样式
        const messageBox = document.querySelector(
          ".custom-message-box .el-message-box__message"
        );
        if (messageBox) {
          messageBox.style.color = "red"; // 通过 JS 强制设置颜色
        }
      });
    },
    handleRevoke() {
@@ -1876,6 +2186,7 @@
        djendTime: null,
        bgbeginTime: null,
        bgendTime: null,
        dw: null,
      };
      this.resetForm("form");
    },
@@ -1887,7 +2198,8 @@
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
      // this.getList();
      this.sub();
    },
    renderContents(h, { node, data, store }) {
      return (
@@ -1942,10 +2254,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) {
      let tjNUms = selection.map((item) => item.tjNumber);
      selection.forEach((item) => {
        this.orderIds = item.orderId;
        this.tjnumbers = item.tjNumber;
@@ -1959,9 +2284,15 @@
      });
      this.ids = selection.map((item) => item.orderId);
      // this.tjNumbers = selection.map((item) => item.tjNumber);
      this.single = selection.length !== 1;
      this.multiple = !selection.length;
      if (tjNUms.length > 0) {
        shijianzhou(tjNUms).then((res) => {
          this.shijianlist = res.data;
        });
      } else {
        this.shijianlist = [];
      }
    },
    /** 新增按钮操作 */
    // handleAdd() {
@@ -1983,7 +2314,7 @@
        var discount = "";
        response.data.water.forEach((item) => {
          copeWith += item.copeWith;
          paidIn += item.copeWith;
          paidIn += item.paidIn;
          discount = item.discount;
        });
        this.bill.push({
@@ -2024,7 +2355,7 @@
        var discount = "";
        response.data.water.forEach((item) => {
          copeWith += item.copeWith;
          paidIn += item.copeWith;
          paidIn += item.paidIn;
          discount = item.discount;
        });
        this.bill.push({
@@ -2135,8 +2466,10 @@
        let datas = {
          zhId: data.id,
        };
        getlistByZhId(datas).then((res) => {
          this.packagedataList = res.data.tjProjectList;
          for (var i = 0; i < this.packagedataList.length; i++) {
            let proId = this.packagedataList[i].proId;
            getProSonDxList(proId).then((res) => {
@@ -2288,7 +2621,6 @@
            this.checkedListkey.push(item.proId);
            this.DataList.push(item);
            this.DataList3 = this.DataList.concat(this.Datalists);
            console.log(this.DataList, 77777);
            this.spliceData();
            this.DataList.forEach((item1) => {
              if (item1.proParentId == data.proId) {
@@ -2299,7 +2631,8 @@
          this.TotalPrice1 = 0;
          if (this.DataList3.length != 0) {
            this.DataList3.forEach((item) => {
              this.TotalPrice1 += item.proPrice;
              this.TotalPrice1 += item.proPrice * item.sl;
            });
          }
          // this.TotalPrice1 = 0;
@@ -2343,7 +2676,9 @@
            this.DataList.splice(index, 1);
            this.TotalPrice1 = 0;
            this.DataList.forEach((item1) => {
              this.TotalPrice1 = item1.proPrice + this.TotalPrice1;
            });
            if (this.marryalls != 0) {
              this.TotalPrice1 += this.marryalls;
@@ -2352,7 +2687,6 @@
        });
      } else if (checked == true) {
        this.DataList.push(data);
        console.log(this.DataList, 6666);
        this.DataList.forEach((item1) => {
          if (item1.proParentId == this.dataObj.proId) {
            item1.propinName = this.dataObj.proName;
@@ -2361,6 +2695,9 @@
        this.spliceData();
        this.TotalPrice1 = 0;
        this.DataList.forEach((item1) => {
          console.log(item1.proPrice,3322);
          console.log(this.TotalPrice1,1122);
          this.TotalPrice1 = item1.proPrice + this.TotalPrice1;
        });
        if (this.marryalls != 0) {
@@ -2566,10 +2903,12 @@
            discount,
            copeWith,
            tjType,
            payStasus:this.jsType,
            orderId: this.orderIds,
            tjProIds: this.proIds,
            payType: this.payType,
          };
          getwater(data).then((res) => {
            this.$modal.msgSuccess("提交成功");
            this.mobanId = res.data.mobanId;
@@ -2587,6 +2926,7 @@
    handleProjectssChange(selection) {
      this.DataListss = [];
      this.selection = [];
      this.bldhs = selection.map((item) => item.bldh);
      selection.forEach((item) => {
        item.projectList.forEach((item1) => {
@@ -2641,7 +2981,7 @@
  },
};
</script>
<style lang="scss">
<style lang="scss" scoped>
.pag {
  width: 100%;
  display: flex;
@@ -2692,6 +3032,12 @@
// .el-dialog__body {
//   padding: 20px;
// }
::v-deep .el-message-box__message {
  color: red !important; /* 强制设置颜色为红色 */
}
// .custom-message-box .el-message-box__message {
//   color: red !important; /* 设置文字为红色 */
// }
.o {
  margin-top: 8px;
}
@@ -2739,4 +3085,16 @@
  display: flex;
  flex-direction: column;
}
::v-deep .el-step__title.is-process {
  color: rgb(24, 144, 255);
}
::v-deep .el-step__head.is-process {
  color: rgb(24, 144, 255);
  border-color: rgb(24, 144, 255);
}
.shijian {
  display: flex;
  align-items: flex-start;
}
</style>