1
lkk
2025-04-21 333626d05a8ce4cf553e2a1e3fed1259d0814fb1
src/views/hosp/order/index.vue
@@ -156,17 +156,27 @@
        <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">
      <!-- <el-col :span="1.5">
        <el-button
          type="primary"
          icon="el-icon-download"
          size="mini"
          @click="handleExport"
          v-hasPermi="['hosp:order:export']"
          >导出</el-button
        >
      </el-col> -->
      <el-col :span="1.5">
        <el-button
          type="primary"
          icon="el-icon-download"
          size="mini"
          @click="exportDialogVisible = true"
          v-hasPermi="['hosp:order:export']"
          >导出</el-button
        >
@@ -243,6 +253,15 @@
          >强制撤销</el-button
        >
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="primary"
          size="mini"
          @click="ResumeAppointment"
          :disabled="multiple"
          >恢复预约</el-button
        >
      </el-col>
      <right-toolbar
        :showSearch.sync="showSearch"
        @queryTable="getList"
@@ -254,6 +273,7 @@
        border
        v-loading="loading"
        :data="orderList"
        ref="tableRef"
        @selection-change="handleSelectionChange"
      >
        <el-table-column
@@ -795,13 +815,23 @@
          <el-table
            :data="DataList3"
            border
            style="width: 100%"
            style="width: 100%; table-layout: fixed"
            height="560"
            :span-method="objectspanmethod"
          >
            <el-table-column prop="propinName" label="检查项目">
            <el-table-column
              prop="propinName"
              label="检查项目"
              width="200px"
              :show-overflow-tooltip="true"
            >
            </el-table-column>
            <el-table-column prop="proName" label="明细项目" width="200px">
            <el-table-column
              prop="proName"
              label="明细项目"
              width="200px"
              :show-overflow-tooltip="true"
            >
            </el-table-column>
            <el-table-column prop="sl" label="数量" width="56px">
            </el-table-column>
@@ -944,15 +974,6 @@
              <div class="tab8">
                <el-row :gutter="20" style="width: 100%">
                  <el-col :span="22">
                    <!-- <div
                    style="
                      text-align: center;
                      margin-bottom: 10px;
                      margin-top: 10px;
                    "
                  >
                    项目列表
                  </div> -->
                    <el-input
                      placeholder="输入关键字进行过滤"
                      v-model="filterage"
@@ -975,29 +996,6 @@
                      </el-tree>
                    </div>
                  </el-col>
                  <!-- <el-col :span="11">
                  <div
                    style="
                      text-align: center;
                      margin-bottom: 10px;
                      margin-top: 10px;
                    "
                  >
                    明细项目列表
                  </div>
                  <div class="tab3">
                    <el-tree
                      class="filter-tree"
                      v-loading="loading"
                      :data="packagedataList"
                      node-key="proId"
                      :props="defaultpackProps"
                      :render-content="renderContent"
                    >
                    </el-tree>
                  </div>
                </el-col> -->
                  <!-- <el-col :span="11"> </el-col> -->
                </el-row>
              </div>
            </el-tab-pane>
@@ -1005,15 +1003,6 @@
              <div class="tab8">
                <el-row type="flex" class="row-bg" justify="space-around">
                  <el-col :span="22">
                    <!-- <div
                  style="
                    text-align: center;
                    margin-bottom: 10px;
                    margin-top: 10px;
                  "
                >
                  项目列表
                </div> -->
                    <el-input
                      placeholder="输入关键字进行过滤"
                      v-model="filterText"
@@ -1036,106 +1025,6 @@
                      </el-tree>
                    </div>
                  </el-col>
                  <!-- <el-col :span="11">
                <div
                  style="
                    text-align: center;
                    margin-bottom: 10px;
                    margin-top: 10px;
                  "
                >
                  明细项目列表
                </div>
                <div class="tab3">
                  <div class="outside1">
                    <el-tree
                      class="filter-tree"
                      v-loading="loading"
                      :data="TreedataList"
                      node-key="proId"
                      :props="defaultProps"
                      :filter-node-method="filterNode"
                      show-checkbox
                      @check-change="handleCurrentChecked1"
                      :default-checked-keys="checkedListkey"
                      :render-content="renderContent"
                    >
                    </el-tree>
                  </div>
                </div>
              </el-col> -->
                  <!-- <el-col :span="11">
              <div class="grid-content bg-purple">
                <div
                  style="
                    text-align: center;
                    margin-bottom: 10px;
                    margin-top: 10px;
                  "
                >
                  已选项目列表
                </div>
                <el-table
                  :data="DataList"
                  border
                  style="width: 100%"
                  height="400"
                  :span-method="objectSpanMethod"
                >
                  <el-table-column prop="propinName" label="检查项目">
                  </el-table-column>
                  <el-table-column prop="proPrice" label="原价" width="56px">
                  </el-table-column>
                  <el-table-column
                    prop="proName"
                    label="明细项目"
                    width="260px"
                  >
                  </el-table-column>
                  <el-table-column
                    label="操作"
                    align="center"
                    fixed="right"
                    class-name="small-padding fixed-width"
                    width="50px"
                  >
                    <template slot-scope="scope">
                      <el-button
                        size="mini"
                        type="text"
                        icon="el-icon-delete"
                        @click="handleDelete(scope.row)"
                        title="删除"
                      ></el-button>
                    </template>
                  </el-table-column>
                </el-table> -->
                  <!-- <el-collapse v-model="activeName" accordion v-if="list1">
                  <div>
                    <el-collapse-item title="请选择项目">
                      <el-table
                        :data="DataList"
                        border
                        style="width: 100%"
                        height="400"
                        :span-method="objectSpanMethod"
                      >
                        <el-table-column
                          prop="proName"
                          label="项目"
                          width="180"
                        >
                        </el-table-column>
                        <el-table-column prop="ordPrice" label="原价">
                        </el-table-column>
                      </el-table>
                    </el-collapse-item>
                  </div>
                </el-collapse> -->
                  <!-- </div>
            </el-col> -->
                </el-row>
              </div>
            </el-tab-pane>
@@ -1149,13 +1038,23 @@
          <el-table
            :data="DataList3"
            border
            style="width: 100%"
            style="width: 100%; table-layout: fixed"
            height="560"
            :span-method="objectspanmethod"
          >
            <el-table-column prop="propinName" label="检查项目">
            <el-table-column
              prop="propinName"
              label="检查项目"
              width="200px"
              :show-overflow-tooltip="true"
            >
            </el-table-column>
            <el-table-column prop="proName" label="明细项目" width="200px">
            <el-table-column
              prop="proName"
              label="明细项目"
              width="200px"
              :show-overflow-tooltip="true"
            >
            </el-table-column>
            <el-table-column prop="sl" label="数量" width="56px">
            </el-table-column>
@@ -1355,81 +1254,64 @@
      </div> -->
    </el-dialog>
    <!-- 添加或修改体检记录对话框 -->
    <el-dialog
      :title="title"
      :visible.sync="open"
      width="950px"
      width="1400px"
      append-to-body
      :close-on-click-modal="false"
      class="custom-dialog"
    >
      <el-tabs v-model="activeName1" type="card">
        <!-- <el-tab-pane label="订单流水" name="first">
          <el-table :data="numberList" style="width: 100%">
            <el-table-column prop="proName" label="项目/耗材" width="300">
            </el-table-column>
            <el-table-column prop="price" label="单价" width="300">
            </el-table-column>
            <el-table-column prop="count" label="数量" width="300">
            </el-table-column>
          </el-table>
          <el-table :data="bill" style="width: 100%">
            <el-table-column prop="copeWith" label="应付" width="180">
            </el-table-column>
            <el-table-column prop="discount" label="折扣" width="180">
            </el-table-column>
            <el-table-column prop="paidIn" label="实付" width="180">
            </el-table-column>
            <el-table-column prop="payType" label="付款方式" width="180">
              <template slot-scope="scope">
                <span v-if="scope.row.payType == '0'">现金支付</span>
                <span v-if="scope.row.payType == '1'">刷卡支付</span>
                <span v-if="scope.row.payType == '2'">支付宝支付</span>
                <span v-if="scope.row.payType == '3'">微信支付</span>
                <span v-if="scope.row.payType == '4'">云闪付支付</span>
              </template>
            </el-table-column>
            <el-table-column prop="payStasus" label="付款状态" width="180">
              <template slot-scope="scope">
                <span v-if="scope.row.payStasus == '0'">未付款</span>
                <span v-if="scope.row.payStasus == '1'">已付款</span>
                <span v-if="scope.row.payStasus == '2'">退费</span>
                <span v-if="scope.row.payStasus == '3'">预付款</span>
              </template>
            </el-table-column>
          </el-table>
        </el-tab-pane> -->
        <el-tab-pane label="项目汇总" name="second" style="height: 400px">
          <el-table :data="huizongList" style="width: 100%" max-height="200">
          <el-table :data="huizongList" style="width: 100%" max-height="350">
            <el-table-column
              align="center"
              type="index"
              label="序号"
              width="50"
            >
            </el-table-column>
            <el-table-column align="center" prop="parent_pro_name" label="项目">
            </el-table-column>
            <el-table-column align="center" prop="ks" label="科室">
            </el-table-column>
            <el-table-column align="center" prop="price" label="费用合计">
            </el-table-column>
            ></el-table-column>
            <el-table-column
              align="center"
              prop="parent_pro_name"
              label="项目"
            ></el-table-column>
            <el-table-column
              align="center"
              prop="ks"
              label="科室"
            ></el-table-column>
            <el-table-column
              align="center"
              prop="price"
              label="费用合计"
            ></el-table-column>
          </el-table>
          <h3>付款详情</h3>
          <el-table :data="bill" style="width: 100%; margin-top: 10px">
            <el-table-column align="center" prop="copeWith" label="应付">
            </el-table-column>
            <el-table-column align="center" prop="discount" label="折扣">
            </el-table-column>
            <el-table-column align="center" prop="paidIn" label="实付">
            </el-table-column>
            <el-table-column
              align="center"
              prop="copeWith"
              label="应付"
            ></el-table-column>
            <el-table-column
              align="center"
              prop="discount"
              label="折扣"
            ></el-table-column>
            <el-table-column
              align="center"
              prop="paidIn"
              label="实付"
            ></el-table-column>
          </el-table>
        </el-tab-pane>
        <el-tab-pane label="明细项目" name="third" style="height: 350px">
        <el-tab-pane label="明细项目" name="third" style="height: 450px">
          <!-- 移除 overflow-y: auto -->
          <el-table
            :data="infoList"
            style="width: 100%"
            max-height="330"
            style="width: 100"
            max-height="500"
            :span-method="objectSpanMethod1"
          >
            <el-table-column
@@ -1437,25 +1319,38 @@
              type="index"
              label="序号"
              width="50"
            >
            </el-table-column>
            <el-table-column align="center" prop="parent_pro_name" label="父项">
            </el-table-column>
            <el-table-column align="center" prop="pro_name" label="子项">
            </el-table-column>
            <el-table-column align="center" prop="danjia" label="单价">
            </el-table-column>
            <el-table-column align="center" prop="num" label="数量">
            </el-table-column>
            <el-table-column align="center" prop="zongjia" label="总价">
            </el-table-column>
            ></el-table-column>
            <el-table-column
              align="center"
              prop="parent_pro_name"
              label="父项"
            ></el-table-column>
            <el-table-column
              align="center"
              prop="pro_name"
              label="子项"
            ></el-table-column>
            <el-table-column
              align="center"
              prop="danjia"
              label="单价"
            ></el-table-column>
            <el-table-column
              align="center"
              prop="num"
              label="数量"
            ></el-table-column>
            <el-table-column
              align="center"
              prop="zongjia"
              label="总价"
            ></el-table-column>
            <el-table-column
              align="center"
              prop="time"
              label="开单时间"
              width="180"
            >
            </el-table-column>
            ></el-table-column>
          </el-table>
        </el-tab-pane>
      </el-tabs>
@@ -1651,6 +1546,21 @@
        <!-- <el-button @click="cancel">取 消</el-button> -->
      </div>
    </el-dialog>
    <el-dialog
      title="请选择导出范围"
      :visible.sync="exportDialogVisible"
      width="30%"
    >
      <el-radio-group v-model="exportType">
        <el-radio :label="'0'">当前页数据</el-radio>
        <el-radio :label="'1'">全部数据</el-radio>
      </el-radio-group>
      <span slot="footer" class="dialog-footer">
        <el-button @click="exportDialogVisible = false">取消</el-button>
        <el-button type="primary" @click="confirmExport">确定</el-button>
      </span>
    </el-dialog>
  </div>
</template>
@@ -1662,6 +1572,7 @@
  getOrderList,
  getNewDateList,
  revokeTjOrderByTjNum,
  huifuyuyuejilu,
  getTransitionInfo,
  getBlproByTjh,
  revokeBlProByBldhAndTjh,
@@ -1677,6 +1588,7 @@
  getaddtTransition,
  getProParentIdDxList,
  getProSonDxList,
  getaddtTransition1,
} from "@/api/system/tijian";
import {
  SubmitCompany,
@@ -1782,6 +1694,7 @@
      activeNames: "first",
      // 非多个禁用
      multiple: true,
      tjNUms: [],
      // 显示搜索条件
      showSearch: true,
      userId: "",
@@ -1798,6 +1711,8 @@
      // 日期范围
      datetimerange: [],
      marryalls: 0,
      exportDialogVisible: false, // 控制弹框
      exportType: "0", // dqyorqbsj 的值,默认当前页
      // 查询参数
      queryParams: {
        pageNum: 1,
@@ -2132,6 +2047,34 @@
      });
    },
    ResumeAppointment() {
      this.isLoading = true;
      this.$confirm("您确认要恢复预约?", "确认信息", {
        distinguishCancelAndClose: true,
        confirmButtonText: "确认",
        cancelButtonText: "取消",
      })
        .then(() => {
          huifuyuyuejilu(this.tjNUms).then((res) => {
            this.$modal.msgSuccess("恢复成功");
            // this.isLoading = false;
            this.getList();
          });
        })
        .catch((action) => {
          if (action === "cancel") {
            this.$message({
              type: "warning",
              message: "已取消",
            });
          }
        })
        .finally(() => {
          // 不论操作成功还是失败,都会执行
          this.isLoading = false;
        });
    },
    handleRevoke() {
      this.isLoading = true;
      this.$confirm("您确认要撤销?", "确认信息", {
@@ -2325,6 +2268,7 @@
    // 多选框选中数据
    handleSelectionChange(selection) {
      let tjNUms = selection.map((item) => item.tjNumber);
      this.tjNUms = selection.map((item) => item.tjNumber);
      selection.forEach((item) => {
        this.orderIds = item.orderId;
        this.tjnumbers = item.tjNumber;
@@ -2646,7 +2590,7 @@
    renderContent(h, { node, data, store }) {
      return (
        <span class="custom-tree-node">
            <span>{node.label}</span>
          <span>{node.label}</span>
          <span>({data.proPrice}元)</span>
        </span>
      );
@@ -2664,6 +2608,10 @@
      this.cusId = row.tjCusIdCard;
      this.userId = row.userId;
      console.log(row, 666);
      this.$nextTick(() => {
        this.$refs.tableRef.clearSelection(); // 清除所有选中
        this.$refs.tableRef.toggleRowSelection(row, true); // 选中当前行
      });
      this.customer = {
        cusIdcard: row.tjCusIdCard,
@@ -3109,7 +3057,9 @@
        cusId: this.cusIds,
        proIds: this.proIds,
      };
      getaddtTransition(data).then((response) => {
      getaddtTransition1(data).then((response) => {
        console.log(123456789);
        if (response.code === 200) {
          // this.DataList3 = [];
          //   this.DataList = [];
@@ -3191,14 +3141,47 @@
          this.Projectssopen = false;
        });
    },
    /** 导出按钮操作 */
    handleExport() {
      this.$confirm("请选择导出范围", "导出数据", {
        distinguishCancelAndClose: true,
        confirmButtonText: "导出全部",
        cancelButtonText: "仅导出当前页",
        type: "warning",
      })
        .then(() => {
          // 用户点击了“导出全部”
          this.exportData(true);
        })
        .catch((action) => {
          if (action === "cancel") {
            // 用户点击了“仅导出当前页”
            this.exportData(false);
          }
        });
    },
    /** 导出按钮操作 */
    /*  handleExport() {
      console.log(this.queryParams);
      this.download(
        "hosp/order/export",
        "/hosp/order/exportOrderList",
        {
          ...this.queryParams,
        },
        `order_${new Date().getTime()}.xlsx`
      );
    }, */
    confirmExport() {
      this.exportDialogVisible = false;
      const exportParams = {
        ...this.queryParams,
        dqyorqbsj: this.exportType, // 添加这个字段
      };
      this.download(
        "/hosp/order/exportOrderList",
        exportParams,
        `order_${new Date().getTime()}.xlsx`
      );
    },
@@ -3206,6 +3189,26 @@
};
</script>
<style lang="scss" scoped>
.custom-dialog {
  /* 自定义弹出框的最小高度 */
  min-height: 600px; /* 从默认高度增加到 600px,可以根据需要调整 */
}
/* 调整 el-tabs 的内容区域高度 */
::v-deep .el-tabs__content {
  min-height: 500px; /* 确保选项卡内容区域有足够高度 */
}
/* 调整对话框的主体部分 */
::v-deep .el-dialog__body {
  padding: 20px;
}
/* 可选:调整 footer 的样式 */
.dialog-footer {
  padding: 10px 20px;
  text-align: right;
}
.pag {
  width: 100%;
  display: flex;