<template>
  <view
    class="content"
    :class="`${options.type == 'detail' ? 'content_detail' : ''}`"
  >
    <z-nav-bar
      :title="options.navTitle"
      :bgColor="options.type == 'detail' ? '#d8e6ff73' : '#5188e5'"
      :fontColor="options.type == 'detail' ? '#5188e5' : '#fff'"
    >
      <template v-slot:right>
        <view
          class="top_right"
          @tap="handleOpenShowSubmit"
          v-if="options.type == 'add'"
        >
          <text
            style="
              padding: 4rpx 10rpx;
              margin-right: 10rpx;
              border-radius: 20rpx;
              line-height: 40rpx;
              color: #fff;
            "
            >提交</text
          >
        </view>
        <view
          v-if="options.type == 'detail'"
          class="top_right"
          @tap="showDel = true"
          style="display: flex; align-items: center"
        >
          <uni-icons
            type="trash-filled"
            size="22"
            style="color: #aa3629; margin-left: 40rpx"
          ></uni-icons>

          <text
            style="letter-spacing: 4rpx; color: #aa3629; margin-right: 20rpx"
            >删除</text
          >
        </view>
      </template>
    </z-nav-bar>

    <view
      class="home_wrap home_wrap_analysis"
      v-if="options.type != 'detail'"
      :style="`height: calc(100% - ${48 + statusBarHeight}px);`"
    >
      <view class="home_form" style="position: relative">
        <view
          class="form_item"
          style="
            height: 100%;
            display: flex;
            align-items: flex-start;
            justify-content: space-between;
          "
        >
          <!-- <text>医案信息</text> -->

          <!-- 固定标题和输入框部分 -->
          <view class="analysis_box">
            <view class="analysis_title" style="margin-bottom: 10rpx">
              <textarea
                auto-height
                v-model="formData.title"
                maxlength="-1"
                placeholder="请输入标题"
                placeholder-class="custom-placeholder"
              />
            </view>

            <!-- 固定的输入框部分 -->
            <view
              style="
                min-height: calc(100% - 380rpx);
                height: calc(100% - 380rpx);
                height: auto;
              "
            >
              <commonEditor
                @saveContens="saveContens"
                :content="formData.content"
                placeholder="请输入文章正文内容"
                height="calc(100% - 25px)"
              ></commonEditor>
            </view>
            <view style="padding: 0 26rpx">
              <u-upload
                :max-count="9"
                :fileList="fileList1"
                @afterRead="addPic"
                @delete="deletePic"
                multiple
                width="120"
                height="120"
                :previewFullImage="true"
              >
              </u-upload>
            </view>
          </view>
          <!-- <view class="submit_btn" @click="submit">解析医案</view> -->
        </view>
      </view>

      <!-- 搜索结果列表 -->
      <scroll-view
        scroll-y
        class="result-list"
        v-if="searchResultStatus && searchResults.length > 0"
      >
        <view
          v-for="item in searchResults"
          :key="item.id"
          @click="selectItem(item)"
          class="result-item"
        >
          {{ item.name }}
        </view>
      </scroll-view>
    </view>

    <view
      class="home_wrap home_wrap_analysis"
      v-if="options.type == 'detail'"
      :style="`height: calc(100% - ${
        48 + statusBarHeight + 60
      }px);padding:40rpx 20rpx;text-align: justify;`"
    >
      <view class="analysis_box" style="height: auto">
        <view class="analysis_img_box">
          <view class="analysis_img">
            <image
              v-if="
                articleInfo &&
                articleInfo.taihuTalent &&
                articleInfo.taihuTalent.icon
              "
              :src="articleInfo.taihuTalent.icon"
            />
            <image v-else src="/static/icon/noIcon.png" />

            <view class="taihuTalentBox">
              <view class="taihuTalent_name" style="color: #5a6988">{{
                articleInfo &&
                articleInfo.taihuTalent &&
                articleInfo.taihuTalent.name
                  ? articleInfo.taihuTalent.name
                  : "普通用户"
              }}</view>
              <view
                class="taihuTalent_title"
                style="margin-top: 20rpx"
                v-if="
                  articleInfo &&
                  articleInfo.taihuTalent &&
                  articleInfo.taihuTalent.title
                "
                ><text class="zhicheng">{{
                  articleInfo.taihuTalent.title
                }}</text></view
              >
            </view>
          </view>
          <view style="color: #aaacab; text-align: right">
            {{ articleInfo.readCount }}人阅读</view
          >
        </view>
        <view
          class="analysis_title analysis_title_detail"
          style="color: #302f35; font-size: 32rpx"
        >
          {{ articleInfo.title }}
        </view>
        <rich-text
          :nodes="articleInfo.content"
          style="
            height: auto;
            margin-bottom: 260rpx;
            color: #4b4b4b;
            text-align: justify;
            white-space: pre-wrap;
            word-wrap: break-word;
          "
        />
      </view>
      <view class="allImage">
        <view class="imgList">
          <view
            class="images"
            :class="`${fileList1.length > 4 ? 'images3' : ''}`"
            v-for="(item, index) in fileList1"
            :key="index"
          >
            <image
              @click.stop="previewImg(index)"
              class="oneimg"
              :src="item"
              mode="aspectFill"
              :style="{
                width: imgWidth + 'px',
                'max-height': imgHeight + 'px',
              }"
            ></image>
          </view>
        </view>
      </view>
      <view
        style="letter-spacing: 1rpx; color: #aaacab; margin-top: 20rpx"
        v-if="articleInfo.createTime"
        >{{ articleInfo.createTime }}
      </view>
      <view class="likeList" v-if="likeList.length > 0" style="color: #5188e5">
        <uni-icons
          type="heart"
          size="20"
          style="color: #5188e5; margin-right: 10rpx"
        ></uni-icons>
        <view class="">{{
          likeList
            .map((item) =>
              item.user.nickname ? item.user.nickname : "普通用户"
            )
            .join(" , ")
        }}</view>
      </view>
      <!-- 显示聊天记录 -->
      <!-- <articleDetail
        :loading="loading"
        :type="options.type"
        :page="options.page ? options.page : ''"
        :statusId="options.statusId"
        :medicalRecords="medicalRecords"
        @editableMap="updateEditableMap"
        @formData="updateMedicalForm"
        @record="updateRecord"
        @fileList1="updateFileList1"
        ref="commonMedicalDetail"
      ></articleDetail> -->

      <view class="footer_box">
        <template>
          <view
            class="footer_item"
            style="color: #9a9a9a"
            @click.stop="clickLike"
          >
            <view class="footer_item_icon"
              ><uni-icons
                type="hand-up-filled"
                size="30"
                style="color: #9a9a9a"
                :style="{ color: articleInfo.likeFlag ? '#ff4949' : '#9a9a9a' }"
              ></uni-icons>
              <view class="footer_item_count" style="text-align: center">{{
                articleInfo.likeCount ? articleInfo.likeCount : "0"
              }}</view>
            </view>
            <text style="letter-spacing: 4rpx">点赞</text>
          </view>
          <view
            class="footer_item"
            style="color: #9a9a9a"
            @click.stop="onHandleClickOpenComment"
          >
            <view class="footer_item_icon"
              ><uni-icons
                type="chat-filled"
                size="30"
                style="color: #9a9a9a"
              ></uni-icons>
              <view class="footer_item_count" style="text-align: center">{{
                articleInfo.commentCount ? articleInfo.commentCount : "0"
              }}</view>
            </view>
            <text style="letter-spacing: 4rpx">评论</text>
          </view>
          <view
            class="footer_item"
            style="color: #9a9a9a"
            @click.stop="newOnShare"
          >
            <view class="footer_item_icon"
              ><uni-icons
                type="redo-filled"
                size="30"
                style="color: #9a9a9a"
              ></uni-icons>
            </view>
            <text style="letter-spacing: 4rpx">分享</text>
          </view>
        </template>
      </view>
    </view>
    <view style="padding-bottom: 20px">
      <uni-popup ref="share" type="share" safeArea backgroundColor="#fff">
        <uni-popup-share :bottom="500" @select="haveSelected"></uni-popup-share>
      </uni-popup>
    </view>

    <!-- <z-navigation></z-navigation> -->
    <u-popup
      @close="orderModalShow = false"
      :show="orderModalShow"
      mode="bottom"
      :round="8"
      :background="'#fff'"
      style="background: #fff"
      backgroundColor="#fff"
    >
      <view class="orderModalShow popup_box">
        <view style="text-align: center; padding-bottom: 20rpx"
          >全部 {{ articleInfo.commentCount }} 条评论</view
        >

        <u-icon
          name="close"
          color="#333"
          size="18"
          @click="closeOrderModalShow"
          style="
            display: inline-block;
            position: absolute;
            right: 20rpx;
            top: 20rpx;
          "
        ></u-icon>
        <hb-comment
          style="padding-top: 40rpx; overflow: auto; padding-bottom: 100rpx"
          :user="currentUser"
          ref="hbComment"
          @add="sendComment"
          @del="del"
          @focusOn="focusOn"
          :deleteTip="'确认删除？'"
          :cmData="commentData"
          v-if="commentData"
        ></hb-comment>
      </view>
    </u-popup>
    <u-modal
      :show="showDel"
      @confirm="confirmDel"
      @cancel="showDel = false"
      ref="uModalDel"
      :asyncClose="true"
      :showCancelButton="true"
      confirmText="删除"
      confirmColor="#aa3629"
      title="提示"
    >
      <view class="slot-content"> 您确定要删除该文章吗？ </view>
    </u-modal>
    <u-modal
      :show="showSubmit"
      @confirm="confirmSubmit"
      @cancel="showSubmit = false"
      ref="uModalSubmit"
      :asyncClose="true"
      :showCancelButton="true"
      confirmText="发布"
      confirmColor="#5188e5"
      title="提示"
    >
      <view class="slot-content"> 是否立即发布文章？ </view>
    </u-modal>
  </view>
</template>

<script>
import $http from "@/config/requestConfig.js";
import { mapState, mapMutations } from "vuex";
import articleDetail from "./articleDetail.vue";
import commonEditor from "./common-editor.vue";
import qs from "qs";
import text from "uview-ui/libs/config/props/text";
import { debounce, throttle } from "@/common/debounce.js";

export default {
  components: {
    articleDetail,
    commonEditor,
  },
  data() {
    return {
      currentUser: {},
      likeList: [],

      orderModalShow: false,
      showDel: false,
      showSubmit: false,
      commentData: [],
      articleInfo: {},
      editorOption: {},
      options: {},

      fileList1: [],

      containerHeight: null,
      pollInterval: null,
      formData: {
        message: "",
      },
      medicalForm: {},
      chatId: null, //选择助手的id
      chatName: "",
      chatAssistants: [],
      activeIndex: null,
      sessionId: "", //对话id
      medicalId: "", //医案id

      eventSource: null,
      showMessages: false,
      loading: true,
      question: "", //传递的问题
      messages: [],
      record: [],
      previousAnswer: null, //存储上一条回答内容
      question_send: "",
      pauseStatus: false, //暂停操作
      record_list: [], //对话列表
      null_text: "",
      activeRecord: null,
      tishi: false, //提示语
      folderList: [], //病历夹列表
      folderName: "", //病历夹名称
      chatAssistantName: "",
      patientName: "",
      pageData: {},
      pageType: "", //从患者列表过来的type
      isChecked: true,

      medicalRecords: [], //模糊已选项
      selectedItems: [], //模糊已选项
      selectedId: [],
      searchResults: [], //模糊搜索结果
      searchResultStatus: false,
      vipCount: null,
      vipText: "",
      vipStatus: null,
      freeCount: null,
      freeText: "",
      freeStatus: null,
      flag: null,
      scrollIntoView: "",
      recordData: {},
      editableMap: {},
      isRefreshing: false, //刷新状态
      windowWidth: 0, //屏幕可用宽度
      windowHeight: 0, //屏幕可用高度
      imgWidth: 0, //图片宽度
      imgHeight: 0, //图片高度
    };
  },
  computed: {
    ...mapState(["userInfo"]),
  },
  async onLoad(options) {
    this.options = options;
    this.medicalId = options.id;

    uni.hideTabBar();
    uni.removeStorageSync("homeParams");
    //获取设备信息
    const systemInfo = uni.getSystemInfoSync();
    this.containerHeight = systemInfo.windowHeight; //获取设备的窗口高度
    // this.sendQuestion();
    this.windowHeight = systemInfo.windowHeight;
    this.windowWidth = systemInfo.windowWidth;
    if (this.options.type == "add") {
      this.loading = true;
    } else {
      this.loading = true;

      await this.getMedicalDetail(() => {
        if (this.options.open) {
          // if (this.options.open == "查看文章") {
          //   this.onHandleClickOpenComment();
          // }
          if (this.options.open == "查看评论") {
            this.onHandleClickOpenComment();
          }
          if (this.options.open == "分享文章") {
            this.newOnShare();
          }
          delete this.options.open;
        }
      });

      //   this.tishi=true
    }
  },

  async onShow() {},
  async onPullDownRefresh() {
    this.isRefreshing = true;
    console.log("下拉刷新");

    setTimeout(async () => {
      if (this.options.type == "add") {
        this.showMessages = false;
        this.loading = true;
      } else {
        this.showMessages = true;
        this.loading = true;
        await this.getMedicalDetail();

        //   this.tishi=true
      }

      uni.stopPullDownRefresh();
      this.isRefreshing = false;
      console.log("下拉刷新已停止");
    }, 800);
  },
  methods: {
    confirmDel: throttle(function () {
      this.delArticle();
    }, 2000),
    handleOpenShowSubmit() {
      if (!this.formData.title) {
        this.$commonJS.showToast("请输入文章标题");
        return;
      }
      if (!this.formData.message) {
        this.$commonJS.showToast("请输入文章正文内容");
        return;
      }
      if (this.fileList1.length == 0) {
        this.$commonJS.showToast("请至少上传一张图片");
        return;
      }
      this.showSubmit = true;
    },

    confirmSubmit: throttle(function () {
      this.handleSubmit("submit");
    }, 2000),

    delArticle() {
      var that = this;
      uni.showLoading({
        title: "加载中",
      });
      this.$http
        .request({
          url: "common/taihuTalentArticle/delArticle",
          method: "POST",
          data: {
            id: this.articleInfo.id,
          },
          header: {
            "Content-Type": "application/json",
          },
        })
        .then((res) => {
          uni.hideLoading();
          if (res.code == 0) {
            uni.showToast({
              title: "删除成功",
              icon: "success",
              duration: 2000,
            });

            this.$commonJS.refreshPrevPageData();
          } else {
            uni.showToast({
              title: "删除失败",
              icon: "success",
              duration: 2000,
            });
          }
        });
    },
    newOnShare() {
      this.$refs.share.open();
    },
    haveSelected(data) {
      if (!this.articleInfo) {
        return false;
      }
      let image = "";
      this.articleInfo.img && this.articleInfo.img != ""
        ? (image = this.articleInfo.img.split(",")[0])
        : (image = "static/logo_zi.png");
      console.log(data, " 选择的是");
      if (data.index == 0) {
        // 分享到好友
        uni.share({
          provider: "weixin",
          scene: "WXSceneSession",
          type: 0,
          href: this.$apkUrl,
          title: `我在【太湖云医】发布了文章 “ ${this.articleInfo.title} ”`,
          // summary: `${this.productInfo.content}`,
          imageUrl: image,
          success: function (res) {
            console.log("success:" + JSON.stringify(res));
          },
          fail: function (err) {
            console.log("fail:" + JSON.stringify(err));
          },
        });
      } else if (data.index == 1) {
        // 分享到朋友圈
        uni.share({
          provider: "weixin",
          scene: "WXSceneTimeline",
          type: 0,
          href: this.$apkUrl,
          title: `我在【太湖云医】发布了文章 “ ${this.articleInfo.title} ”`,
          // summary: `${this.taskInfo.content}`,
          imageUrl: image,
          success: function (res) {
            console.log("success:" + JSON.stringify(res));
          },
          fail: function (err) {
            console.log("fail:" + JSON.stringify(err));
          },
        });
      }
    },
    // 自适应判断
    judgeImg() {
      if (this.fileList1.length == 1) {
        this.imgWidth = ((this.windowWidth - 10) * 2) / 3;
        this.imgHeight = (this.windowHeight * 3) / 5;
      } else if (this.fileList1.length == 4) {
        this.imgWidth = (this.windowWidth - 10) / 3.3;
        this.imgHeight = this.imgWidth;
      } else {
        this.imgWidth = (this.windowWidth - 10) / 3.4;
        this.imgHeight = this.imgWidth;
      }
    },
    previewImg(index) {
      uni.previewImage({
        urls: this.fileList1,
        // longPressActions: {
        //   itemList: ["保存图片"],
        // },
        current: index, // 设置当前预览的图片索引
      });
    },
    clickLike() {
      console.log("childThumbsup");

      this.$http
        .request({
          url: "common/taihuTalentArticle/addOrCancelArticleLike",
          method: "POST",
          data: {
            articleId: this.articleInfo.id,
          },
          header: {
            "Content-Type": "application/json",
          },
        })
        .then((res) => {
          console.log("res at line 308:", res);
          this.getMedicalDetail();
          this.$forceUpdate();
        });
      // common/taihuTalentArticle/addOrCancelArticleLike
    },
    onHandleClickOpenComment() {
      console.log("111 at line 384:", 111);
      console.log(
        "this.currentUser at line 365:",
        this.articleInfo.taihuTalent
      );

      this.orderModalShow = true;
    },
    closeOrderModalShow() {
      this.orderModalShow = false;
    },
    saveContens(content) {
      this.formData.message = content;
    },
    handleSubmit: throttle(function (type, isNewSave) {
      var data = {
        img:
          this.fileList1.length > 0
            ? this.fileList1.map((e) => e.url).toString()
            : "",
        title: this.formData.title ? this.formData.title : "",
        content: this.formData.message ? this.formData.message : "",
      };
      // debounce(() => {
      this.$http
        .request({
          url: "common/taihuTalentArticle/addArticle",
          method: "POST",
          data: {
            ...data,
          },
          header: {
            "Content-Type": "application/json",
          },
        })
        .then((res) => {
          if (res.code == 0) {
            this.$commonJS.refreshPrevPageData(1);
          } else {
            this.$commonJS.showToast(res.msg);
          }
        })
        .catch((err) => {});
    }, 3000),

    async addPic(e) {
      let that = this;
      for (var i = 0; i < e.file.length; i++) {
        uni.uploadFile({
          url: this.$baseUrl + "/oss/fileoss",
          filePath: e.file[i].url,
          name: "file",
          formData: {},
          success: (res) => {
            that.fileList1.push({
              url: JSON.parse(res.data).url,
            });
          },
          fail: (error) => {},
        });
      }
    },
    deletePic(event) {
      this.fileList1.splice(event.index, 1);
    },
    //更新子组件内容
    updateEditableMap(val) {
      this.editableMap = val;
    },
    updateMedicalForm(val) {
      console.log("val at line 232:", val);
      this.medicalForm = val;
    },
    updateRecord(val) {
      this.record = val;
    },
    updateFileList1(val) {
      this.fileList1 = val;
    },

    // 判断内容是否为空或无效

    async checkPermision() {
      var result = await permission.premissionCheck("CAMERA_EXTERNAL_STORAGE");
      if (result != 1) {
        return false;
      }
    },

    clickCourseInfo(val) {
      console.log(val);
      this.formData.labelId = val.id;
      this.formData.labelTitle = val.title;
      this.$forceUpdate();
    },

    //设置滚动到最底部
    scrollToBottom() {
      this.scrollIntoView = "";
      setTimeout(() => {
        this.scrollIntoView = "bottom-anchor";
      }, 50);
    },
    //基因
    handleInput(val) {
      let name = val.detail.value;
      this.getGenes(name);
    },
    //模糊搜索选中
    selectItem(item) {
      if (!this.selectedItems.some((i) => i.id === item.id)) {
        this.selectedItems.push(item.name);
        this.selectedId.push(item.id);
      }
      this.formData.genetic = "";
      this.searchResultStatus = false;
      console.log(this.selectedItems);
      console.log(this.selectedId);
    },
    //删除标签
    removeTag(index) {
      this.selectedItems.splice(index, 1);
      this.selectedId.splice(index, 1);
      console.log(this.selectedItems);
      console.log(this.selectedId);
    },

    //勾选
    toggleCheck() {
      this.isChecked = !this.isChecked;
    },
    //获取病症种类数据

    //获取对话记录数据
    getRecordsData() {
      this.record_list = [];
      this.$http
        .request({
          url: "common/ragFlowApi/getChats",
          method: "POST",
          data: {
            chatId: "",
            sessionId: "",
            page: 1,
            pageSize: 300,
          },
          header: {
            "Content-Type": "application/json",
          },
        })
        .then((res) => {
          if (res.code == 0) {
            console.log("请求最新列表");
            if (res.list && res.list.length > 0) {
              this.record_list = res.list;

              //患者列表跳转来的
              const index = res.list.findIndex(
                (item) =>
                  item.chatAssistantId === this.pageData.chatAssistantId &&
                  item.chatId === this.pageData.chatId
              );
              if (this.pageType && this.pageType == "patient") {
                this.clickRecord(this.pageData, index);
              }
            } else {
              this.record_list = [];
              this.null_text = "暂无数据";
            }
          }
        })
        .catch((e) => {
          console.log(e);
        });
    },

    //点击每个记录
    clickRecord(item, index) {
      //重新定义id
      this.chatId = item.chatAssistantId;
      this.sessionId = item.chatId;
      //助手类型
      this.chatName = item.chatAssistantName;
      this.patientName = item.patientName;
      console.log("我是:" + this.patientName);
      uni.setStorageSync("homeParams", { data: item, index: index });
      this.activeRecord = index;
      this.messages = [];
      this.showMessages = true;
      //请求病历夹接口
      this.getRecordFolderList();
      //如果正在回答的时候切换需要中断回答
      this.closeWebSocket();

      uni.showLoading({
        title: "加载中",
      });
      this.$http
        .request({
          url: "common/ragFlowApi/getChats",
          method: "POST",
          data: {
            chatId: item.chatAssistantId,
            sessionId: item.chatId,
            page: 1,
            pageSize: 300,
          },
          header: {
            "Content-Type": "application/json",
          },
        })
        .then((res) => {
          if (res.code == 0) {
            uni.hideLoading();
            if (res.list && res.list.length > 0) {
              this.messages = res.list.map((item) => {
                let content = item.content.replace(/##\d+$$/g, "");
                content = item.content.replace(/<\/?think>/g, "");
                content = content.replace(
                  /\*\*(.*?)\*\*/g,
                  '<b class="bold-text">$1</b>'
                );
                content = content.replace(
                  /\*(.*?)\*/g,
                  '<span class="red-text">$1</span>'
                );
                content = content.replace(/\n\n/g, "\n");
                content = content.replace(/\n/g, "<br>");
                //content = content.replace(/^#{3,4}.*(\r?\n)?/gm, '');

                return {
                  ...item,
                  type: item.type === 1 ? "answer" : "question",
                  content: content,
                };
              });
              //滚动到最底部锚点
              this.$nextTick(() => {
                this.scrollToBottom();
              });
            }

            this.tishi = false; //提示语不用展示
            this.$refs.drawer.close();
          }
        });
    },

    //选中科目类别
    clickAssistants(item, index) {
      this.activeIndex = index;
      this.chatId = item.id;
      this.chatName = item.name;
    },
    //提交
    submit() {
      let content = "";
      let confirmText = "确定";
      //没有次数的时候要求购买vip
      if (!this.formData.message) {
        this.$commonJS.showToast("请输入医案详情");
        return;
      }
      //创建对话 获取sessionId
    },
    //创建新对话
    createChat() {
      this.$http
        .request({
          url: "common/medicalRecords/medicalRecordsSplit",
          method: "POST",
          data: {
            message: this.formData.message,
          },
          header: {
            "Content-Type": "application/json",
          },
        })
        .then((res) => {
          console.log("res at line 713:", res);
          if (res.code == 0) {
            this.medicalId = res.data;

            this.sendQuestion();
          }
        });
    },
    //创建新对话
    sendComment(comment, pid) {
      this.$http
        .request({
          url: "common/taihuTalentArticle/addArticleComment",
          method: "POST",
          data: {
            pid: pid ? pid : 0, //第一条评论为0
            articleId: this.options.id, //文章id
            content: comment, //内容
          },
          header: {
            "Content-Type": "application/json",
          },
        })
        .then((res) => {
          console.log("res at line 713:", res);
          if (res.code == 0) {
            this.getMedicalDetail();
          } else {
            this.$commonJS.showToast("评论失败");
          }
        });
    },

    //交谈请求，获取回答
    getTree(data) {
      let result = [];
      let map = {};
      data.forEach((item) => {
        map[item.id] = item;
      });
      data.forEach((item) => {
        let parent = map[item.parentId];
        if (parent) {
          (parent.children || (parent.children = [])).push(item);
        } else {
          result.push(item);
        }
      });
      return result;
    },
    getMedicalDetail(fn) {
      //清空消息记录

      this.$http
        .request({
          url: "common/taihuTalentArticle/getArticleInfo",
          method: "POST",
          data: {
            articleId: this.medicalId,
          },
          header: {
            "Content-Type": "application/json",
          },
        })
        .then((res) => {
          console.log("res at line 682:", res);
          if (res.code == 0) {
            this.loading = false;

            this.articleInfo = res.article;
            this.medicalForm = { ...this.articleInfo };
            console.log("this.medicalForm at line 193:", this.articleInfo);
            if (this.articleInfo.img) {
              this.fileList1 = this.articleInfo.img.split(",");
            }
            this.$nextTick(() => {
              // if (this.userInfo.id == this.articleInfo.userId) {
              //   this.currentUser = this.articleInfo.taihuTalent;
              // } else {
              this.currentUser = {
                ...this.userInfo,
                icon: this.userInfo.avatar,
              };

              console.log("this.currentUser at line 823:", this.currentUser);
              // }
            });
            this.likeList = res.article.likeList;
            this.commentData = res.comments;
            this.commentData = {
              commentSize: res.commentCount,
              comment: this.getTree(this.commentData),
            };
            this.judgeImg();
            this.$forceUpdate();
            if (fn) {
              fn();
            }
            // 滚动到最底部锚点
            //   that.$nextTick(() => {
            //     that.scrollToBottom();
            //   });
            // 停止轮询
          }
        })
        .catch((error) => {
          console.log("请求出错:", error);
        });

      //调用后端 SSE 接口，发送问题并接收实时回答
      // this.startSSE(params);
    },
  },
  onHide() {},
  onUnload() {},
};
</script>

<style lang="scss" scoped>
@import "@/static/mixin.scss";

.content {
  height: 100%;
  background: linear-gradient(to bottom, #d8e6ff 0%, #d8e6ff57 90%, #fff 98%);
}

.home_top {
  width: 100%;
  background: #fff;
  position: fixed;
  top: 0;
  left: 0;
  padding: 90rpx 50rpx 30rpx;
  text-align: center;
  box-sizing: border-box;
  z-index: 999;

  .home_top_icon {
    position: absolute;
    left: 40rpx;
    top: 85rpx;
    display: flex;
    align-items: center;

    .home_top_left,
    .home_top_right {
      width: 60rpx;
      height: 60rpx;
      padding: 10rpx;
      box-sizing: border-box;
    }

    .home_top_right {
      margin-left: 30rpx;
    }
  }

  text {
    font-size: 43rpx;
    line-height: 44rpx;
    font-weight: bold;
    color: $themeColor;
  }

  .home_top_folder {
    padding: 12rpx;
    position: absolute;
    right: 40rpx;
    top: 75rpx;

    image {
      width: 50rpx;
      height: 50rpx;
    }
  }
}

.home_wrap {
  // padding-bottom: 300rpx;
  overflow-y: auto;

  .home_logo {
    padding-top: 40rpx;

    image {
      display: block;
      width: 130rpx;
      height: 130rpx;
      margin: 0 auto;
    }

    .logo_main {
      text-align: center;
      display: block;
      padding-top: 30rpx;
      font-size: 35rpx;
      color: $themeColor;
      line-height: 46rpx;
    }

    .logo_con {
      display: block;
      width: 510rpx;
      margin: 30rpx auto;
      font-size: 28rpx;
      color: #303030;
      line-height: 40rpx;
      text-indent: 2em;
    }
  }
}

.home_form {
  height: 100%;
  // margin-top: 60rpx;

  position: relative;

  .form_item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 30rpx;

    text {
      line-height: 68rpx;
      font-size: 38rpx;
      color: #fff;
      background: $themeBgColor;
      text-align: center;
      border-radius: 20rpx;
      padding: 0 25rpx;
      border: 1rpx solid $themeBgColor;
      box-sizing: border-box;
    }

    textarea,
    input {
      display: inline-block;
      width: calc(100%);
      height: 70rpx;
      line-height: 44rpx;
      padding: 0 20rpx;
      // padding: 17rpx 30rpx;
      font-size: 38rpx;
      color: #303030;

      box-sizing: border-box;
      resize: none;

      overflow-y: scroll;
    }
  }
}

.custom-placeholder {
  font-size: 38rpx;
  font-weight: 500 !important;
  color: #8b8c90 !important;
}

.submit_form {
  width: 100%;
  height: 90px;
  background: #fff;
  position: fixed;
  left: 0;
  bottom: 120rpx;
  padding: 0 50rpx;
  z-index: 999;
}

.submit_btn {
  position: absolute;
  right: 0rpx;
  bottom: 10rpx;

  image {
    width: 55rpx;
    height: 55rpx;
  }
}

.active {
  text {
    color: $themeBgColor;
  }

  .assistants_img_1 {
    display: none !important;
  }

  .assistants_img_2 {
    display: block !important;
  }
}

.message_wrap {
  position: relative;
  width: 100%;
  //   background: #fff;
  z-index: 99;
  padding: 0 30rpx;
  height: 85vh;
}

.message_title {
  text-align: center;
  font-size: 30rpx;
  color: #333;
  line-height: 50rpx;
  display: block;
  font-weight: bold;
  padding: 10rpx 0;
}

.message-container-block {
  padding-top: 20rpx;
  padding-bottom: 80px;
  font-size: 30rpx;
}

.message-container {
  display: inline;
  line-height: 48rpx;
}

/* 自定义的loading效果 */
.loading-spinner {
  margin-top: 10rpx;
  border: 2px solid #f3f3f3;
  /* 灰色背景 */
  border-top: 2px solid #3498db;
  /* 蓝色顶部 */
  border-radius: 50%;
  width: 16px;
  height: 16px;
  animation: spin 1s linear infinite;
  /* 旋转动画 */
}

/* 旋转动画 */
@keyframes spin {
  0% {
    transform: rotate(0deg);
  }

  100% {
    transform: rotate(360deg);
  }
}

.bold-text {
  display: block;
  font-weight: bold;
  font-size: 28rpx;
  /* 增大字号 */
}

h3 {
  font-size: 36rpx;
  font-weight: bold;
}

h3 {
  font-size: 32rpx;
}

.red-text {
  color: red;
  font-size: 28rpx;
  /* 增大字号 */
}

.message-right {
  display: block;
  text-align: right;
  margin: 30rpx 0;

  text {
    display: inline-block;
    padding: 20rpx;
    line-height: 38rpx;
    background-color: rgba(81, 136, 229, 0.2);
    border-radius: 15rpx;
    color: #333;
    font-size: 28rpx;
    text-align: left;
  }
}

.drawer-content {
  height: 100vh;
  display: flex;
  flex-direction: column;
}

.list_content {
  padding: 70rpx 20rpx 30rpx;
  overflow-y: auto;
}

.list_item {
  padding: 18rpx 10rpx;
}

.text_item {
  display: block;
  width: 100%;
  font-size: 30rpx;
  line-height: 40rpx;
  padding: 0 10rpx;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.null_text {
  display: block;
  text-align: center;
  font-size: 30rpx;
  color: #999;
  padding-top: 150rpx;
}

.active_item {
  background: #d8e6ff;
  border-radius: 15rpx;

  text {
    color: #5188e5;
  }
}

.folder_popup {
  z-index: 9999;

  .popup-content {
    padding: 30rpx;
    width: 550rpx;
    background: #fff;
    border-radius: 10rpx;

    .popup-top {
      padding: 15rpx;
      display: flex;
      align-items: center;
      background: #5188e5;
      border-radius: 10rpx;
      color: #fff;
      font-size: 28rpx;
      line-height: 45rpx;

      .uni-icons {
        margin-right: 2rpx;
      }
    }

    .popup-list {
      .item-list {
        padding: 15rpx;
        background: #d8e6ff;
        border-radius: 10rpx;
        font-size: 28rpx;
        line-height: 45rpx;
        color: #5188e5;
        margin-top: 15rpx;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        position: relative;

        text {
          position: absolute;
          right: 20rpx;
          top: 12rpx;
          font-size: 22rpx;
          line-height: 45rpx;
          color: #ff7800;
        }
      }

      .popup-scroll {
        max-height: 330rpx;
      }
    }
  }
}

.aiFlag {
  position: absolute;
  bottom: 55px;
  left: 20px;
  width: calc(100% - 40px);
  font-size: 11px;
  line-height: 16px;
  color: #f69e12;
  z-index: 999;
  background: rgba(254, 243, 225, 0.8);
  border: 1px solid #f2d7aa;
  padding: 5px;
  border-radius: 6px;
}
.in {
  border: 1rpx solid #eeeeee;
  border-radius: 8rpx;

  width: calc(100% - 200rpx);
}
.shangpin_editor {
  width: 100%;
}
/deep/.h1_box {
  height: 24px;
  margin-top: 40rpx;
  h1 {
    margin: 0 !important;
    font-size: 20px;
    line-height: 24px;
  }
}
#editor {
  height: 300px;
  border: 1px solid #ccc;
}
.ql-container {
  height: auto;
  min-height: auto;
}
.editor-wrapper {
  //   background-color: #f0f0f080;
  padding: 20rpx;
  box-sizing: border-box;
  border-radius: 20rpx;
  border: 0.5px solid #777778;
}

.footer_box {
  background: #fff;
  padding-top: 10rpx;
  height: 80rpx;
  position: fixed;
  bottom: 0;
  left: 0;
  width: 100%;
  /* #ifndef APP-NVUE */
  display: flex;
  /* #endif */
  flex-direction: row;
  z-index: 10 !important;
  box-sizing: content-box;
  padding-bottom: constant(safe-area-inset-bottom);
  padding-bottom: env(safe-area-inset-bottom);
  box-shadow: 0 1px 15px rgba(0, 0, 0, 0.1);
}

.footer_bg {
  background-color: #fff;
  box-shadow: 0 0px 10px 1px #0000001a;
}

.footer_item {
  position: relative;
  flex: 1;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.footer_item .footer_item_icon {
  display: flex;
  align-items: center;
  margin-bottom: 4rpx;
  // justify-content: space-around;
}
.footer_item_count {
  margin-left: 10rpx;
}
/deep/.u-upload__button {
  background-color: #fff;
  .uicon-camera-fill {
    color: #5188e5 !important;
  }
}
.analysis_box {
  height: 100%;
  // padding-top: 20rpx;
  width: 100%;

  box-sizing: border-box !important;
  uni-textarea {
    border: none !important;
  }
  .analysis_title {
    margin-top: 30rpx;
    margin-bottom: 20rpx;
    // color: #1781ff;
    font-size: 32rpx;
    font-weight: 700;
  }
  .analysis_title_detail {
    margin-top: 10rpx;
    margin-bottom: 10rpx;
    // color: #1781ff;
    font-size: 42rpx;
    font-weight: 700;
  }
}
/deep/.home_wrap_analysis {
  .home_form {
    padding-bottom: 0px;
  }
  .form_item {
    margin-bottom: 0 !important;
    textarea {
      //     padding-top: 20rpx;
      //   height: 80vh !important;
    }
    .uni-textarea-wrapper {
      //   height: 100% !important;
    }
  }
  .submit_btn {
    padding: 0 40rpx;
    position: absolute;
    right: 24rpx;
    bottom: 24rpx;
    background-color: #1985fd;
    margin: auto auto;
    margin-top: 10rpx;
    border-radius: 20rpx;
    line-height: 62rpx;
    height: 62rpx;
    text-align: center;
    color: #fff;
    // font-weight: bold;
  }
}
.content_detail {
  background: #fff;
  padding: 0 20rpx;
}
.message_wrap_detail {
  padding: 0;
}
.analysis_img_box {
  margin-bottom: 4rpx;
}
.analysis_img {
  display: flex;
  align-items: center;
  // margin-bottom: 10rpx;
  image {
    width: 80rpx;
    height: 80rpx;
    border-radius: 80rpx;
    margin-right: 20rpx;
  }
}
.taihuTalentBox {
  width: calc(100% - 100rpx);
  color: #1b1b1b;
  .taihuTalent_name {
    font-size: 32rpx;
    font-weight: 600;
  }
  .zhicheng {
    background: #e4f0ff;
    color: #1985fd;
    padding: 4rpx 20rpx;
    border-radius: 10rpx;
    font-size: 24rpx;
    line-height: 28rpx;
  }
}
.orderModalShow {
  width: 100%;
  // max-height: 48vh;
  // padding-bottom: 120rpx;
}

.popup_box {
  padding: 20rpx;

  box-sizing: border-box;
  .curriulum_title_box {
    .title {
      text-align: center;
      font-size: 34rpx !important;
    }
  }
}
.allImage {
  margin-top: 40rpx;
  display: flex;

  flex-wrap: wrap;
  justify-content: flex-start;
}
.imgList {
  // margin: 0 30rpx;
}
.images:not(:nth-child(3n)) {
  /* margin-right: 10rpx; */
}
.text {
  margin: 1% 3% 2%;
}
.images {
  margin-right: 10rpx;
  display: inline-block;
}
.images3:nth-child(3n) {
  margin-right: 0rpx;
}
.likeList {
  background: #f7f7f7;
  border-radius: 4rpx;
  padding: 8rpx 20rpx;
  box-sizing: border-box;
  margin: 20rpx 0;
  display: flex;
  align-items: center;
}
</style>
