WXL
2024-08-30 c73a2c380aca7ac4ef16e76388b1a52356df8634
测试完成
已添加1个文件
已修改13个文件
1643 ■■■■ 文件已修改
src/api/system/dept.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/system/user.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/tasklist/index.vue 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/index copy.vue 929 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/index.vue 434 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/education/compilequer/index.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/education/index.vue 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/questionnaire/compilequer/index.vue 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/questionnaire/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/Missioncreation.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/QuestionnaireTask.vue 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/particty.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/templateku/configurat/index.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/user/index.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/system/dept.js
@@ -20,7 +20,7 @@
// æŸ¥è¯¢éƒ¨é—¨è¯¦ç»†
export function getDept(deptId) {
  return request({
    url: '/system/dept/' + deptId,
    url: '/system/dept/getInfo' + deptId,
    method: 'get'
  })
}
src/api/system/user.js
@@ -13,7 +13,7 @@
// æŸ¥è¯¢ç”¨æˆ·è¯¦ç»†
export function getUser(userId) {
  return request({
    url: '/system/user/' + parseStrEmpty(userId),
    url: '/system/user/getInfo/' + parseStrEmpty(userId),
    method: 'get'
  })
}
src/views/followvisit/tasklist/index.vue
@@ -546,6 +546,7 @@
      topqueryParams: {
        pageNum: 1,
        pageSize: 10,
        type: 3,
        userName: undefined,
        tagid: undefined,
        topic: undefined,
@@ -637,22 +638,24 @@
    /** æŸ¥è¯¢ä»»åŠ¡åˆ—è¡¨ */
    getList() {
      this.loading = true;
      let type = this.$route.query.type;
      this.tasktopic = this.$route.query.tasktopic
        ? this.$route.query.tasktopic
        : this.tasktopic;
      this.topqueryParams.serviceType = Number(this.tasktopic);
      this.topqueryParams.type = Number(this.type);
      if (this.tasktopic == 1 || this.tasktopic == 7 || this.tasktopic == 6) {
        this.topqueryParams.type = 2;
        this.TaskOperation.taskType = 2;
      } else if (this.tasktopic == 4 || this.tasktopic == 8) {
        this.topqueryParams.type = 1;
        this.topqueryParams.type = 3;
        this.TaskOperation.taskType = 3;
      } else if (
        this.tasktopic == 2 ||
        this.tasktopic == 3 ||
        this.tasktopic == 5
      ) {
        this.topqueryParams.type = 3;
        this.topqueryParams.type = 1;
        this.TaskOperation.taskType = 1;
      }
      // this.topqueryParams.typename = this.findLabelByValue(
@@ -746,7 +749,7 @@
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      if (this.topqueryParams.type == 3) {
      if (this.topqueryParams.type == 1) {
        this.$router.push({
          path: "/followvisit/particty",
          query: {
@@ -762,7 +765,7 @@
            serviceType: this.tasktopic,
          },
        });
      } else if (this.topqueryParams.type == 1) {
      } else if (this.topqueryParams.type == 3) {
        this.$router.push({
          path: "/followvisit/Missioncreation",
          query: {
@@ -774,29 +777,32 @@
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      // this.$router.push({
      //   path: "/followvisit/particty",
      //   query: { type: this.tasktopic, id: row.taskid },
      // });
      if (
        this.tasktopic == 2 ||
        this.tasktopic == 3 ||
        this.tasktopic == 4 ||
        this.tasktopic == 5
      ) {
      if (this.topqueryParams.type == 1) {
        this.$router.push({
          path: "/followvisit/particty",
          query: { type: 1, id: row.taskid },
          query: {
            id: row.taskid,
            type: this.topqueryParams.type,
            serviceType: this.tasktopic,
          },
        });
      } else if (this.tasktopic == 6) {
      } else if (this.topqueryParams.type == 2) {
        this.$router.push({
          path: "/followvisit/QuestionnaireTask",
          query: { type: 2, id: row.taskid },
          query: {
            id: row.taskid,
            type: this.topqueryParams.type,
            serviceType: this.tasktopic,
          },
        });
      } else if (this.tasktopic == 1) {
      } else if (this.topqueryParams.type == 3) {
        this.$router.push({
          path: "/followvisit/Missioncreation",
          query: { type: 3, id: row.taskid },
          query: {
            id: row.taskid,
            type: this.topqueryParams.type,
            serviceType: this.tasktopic,
          },
        });
      }
    },
@@ -806,7 +812,6 @@
    sponsor(row) {
      console.log(row, "任务信息");
      this.taskform = row;
      console.log(12);
      if (this.taskform.showDate && this.taskform.sendType != 2) {
        this.taskform.showDate = this.taskform.showDate.split(",");
      }
src/views/index copy.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,929 @@
<template>
  <div id="home">
    <div class="home" style="margin-top: 40px; margin-left: 20px">
      <!-- å¤´éƒ¨ä¸¤ä¸ª -->
      <el-row :gutter="20">
        <el-col :span="11">
          <!-- å°±è¯Šç»Ÿè®¡ç›’子 -->
          <div class="grid-content bg-purple headerBox bgc1">
            <div class="title">
              æ‚£è€…统计<span
                style="
                  font-size: 25px;
                  font-weight: 600;
                  text-shadow: 2px 4px 7px rgb(85 132 255 / 50%);
                  color: black;
                "
                >12322 (人)</span
              >
              <span>{{ endatd }} ~ {{ statd }}</span>
            </div>
            <el-row :gutter="20">
              <el-col :span="8">
                <div class="home-user-task-stats">
                  <p>{{ 11231 }}</p>
                  <div class="text-color2">
                    <p>门诊总数(人)</p>
                  </div>
                </div>
              </el-col>
              <el-col :span="7">
                <div class="home-user-task-stats">
                  <p>{{ 9207 }}</p>
                  <div class="text-color2">
                    <p>住院总数(人)</p>
                  </div>
                </div>
              </el-col>
              <el-col :span="7">
                <div class="home-user-task-stats">
                  <p>{{ 1209 }}</p>
                  <div class="text-color2">
                    <p>体检总数(人)</p>
                  </div>
                </div>
              </el-col>
            </el-row>
          </div>
        </el-col>
        <el-col :span="9">
          <div class="grid-content bg-purple headerBox bgc2">
            <div class="title">
              é—¨è¯ŠæœåŠ¡æ€»æ•°
              <span
                style="
                  font-size: 25px;
                  text-shadow: 2px 4px 7px rgb(255 99 85 / 50%);
                  font-weight: 600;
                  color: red;
                "
                >12322 (人)</span
              >
              <span>{{ endatd }} ~ {{ statd }}</span>
            </div>
            <el-row :gutter="20">
              <el-col :span="12">
                <div class="home-user-task-stats">
                  <p style="color: red">{{ 3453 }}</p>
                </div>
                <div class="text-color2">
                  <p>住院服务人数</p>
                </div>
              </el-col>
              <el-col :span="12">
                <div class="home-user-task-stats">
                  <p style="color: red">{{ 4213 }}</p>
                  <div class="text-color2">
                    <p>体检服务人数</p>
                  </div>
                </div>
              </el-col>
            </el-row>
          </div>
        </el-col>
      </el-row>
      <!-- ä¸­é—´å’Œå³è¾¹ -->
      <el-row :gutter="20">
        <el-col :span="20">
          <!-- echars数据可视化 -->
          <div class="grid-content bg-purple" style="min-height: 365px">
            <div class="title">
              å°±è¯Šç»Ÿè®¡
              <span>{{ endatd }} ~ {{ statd }}</span>
              <el-radio-group
                v-model="radio1"
                size="mini"
                style="margin-left: 390px"
                @change="changes"
              >
                <el-radio-button label="周" @click="dyat = 7"></el-radio-button>
                <el-radio-button
                  label="月"
                  @click="dyat = 30"
                ></el-radio-button>
                <el-radio-button
                  label="å¹´"
                  @click="dyat = 360"
                ></el-radio-button>
              </el-radio-group>
            </div>
            <!-- ä¸­é—´echars -->
            <div class="boxEchars">
              <div class="echars1" id="echars"></div>
              <div class="echars2" id="echars2"></div>
            </div>
          </div>
        </el-col>
        <!-- ä¸­é—´å’Œå³è¾¹ -->
        <el-col :span="4" class="aside">
          <div class="grid-content bg-purple" style="margin-top: -180px">
            <div class="title">
              å¥åº·å®£æ•™
              <span>{{ endatd }} ~ {{ statd }}</span>
            </div>
            <div style="max-height: 690px; width: 100%; overflow: auto">
              <el-table style="width: 100%" :data="SkuTop">
                <template v-for="(item, index) in SkuTop"></template>
                <el-table-column
                  prop="order"
                  width="30"
                  style="background: url(~@/assets/order/4.png)"
                  type="index"
                ></el-table-column>
                <el-table-column
                  prop="skuName"
                  width="88"
                  class-name="name"
                ></el-table-column>
                <el-table-column prop="count" class-name="count">
                  <template slot-scope="scope">
                    {{ scope.row.count }}次
                  </template>
                </el-table-column>
              </el-table>
            </div>
          </div>
        </el-col>
      </el-row>
      <!-- åº•部一个 -->
      <el-row :gutter="20" style="margin-bottom: 20px">
        <el-col :span="13">
          <div class="grid-content bg-purple" style="min-height: 300px">
            <div class="title">
              è¯ŠåŽç»Ÿè®¡
              <span class="el-icon-s-unfold moreIcon"></span>
            </div>
            <div class="cooperate">
              <!-- åˆä½œåŒºåŸŸ -->
              <div class="pieChart" id="pieCharts"></div>
              <div class="Points">
                <p>{{ 122 }}</p>
                <span>其中随访干预人次</span>
                <p>{{ 122 }}</p>
                <span>门诊随访</span>
                <p>{{ 122 }}</p>
                <span>出院随访</span>
              </div>
            </div>
          </div>
        </el-col>
        <el-col :span="10">
          <div class="grid-content bg-purple" style="min-height: 300px">
            <div class="title">
              å„项服务统计
              <span class="el-icon-s-unfold moreIcon2"></span>
            </div>
            <div class="empenty">
              <el-row>
                <el-col :span="4"
                  ><div class="grid-contents bg-purple">诊疗预约</div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple-light">123次</div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple">转诊服务</div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple-light">231次</div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple">信息推送</div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple-light">900次</div></el-col
                > </el-row
              ><el-row>
                <el-col :span="4"
                  ><div class="grid-contents bg-purple">标识与导航</div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple-light">23次</div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple">
                    æ‚£è€…便利保障服务
                  </div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple-light">13次</div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple">远程医疗</div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple-light">31次</div></el-col
                > </el-row
              ><el-row>
                <el-col :span="4"
                  ><div class="grid-contents bg-purple">患者反馈</div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple-light">150人</div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple">患者管理</div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple-light">231人</div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple">健康宣教</div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple-light">400</div></el-col
                >
              </el-row>
              <el-row>
                <el-col :span="4"
                  ><div class="grid-contents bg-purple">反馈占比</div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple-light">23%</div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple">管理占比</div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple-light">32%</div></el-col
                >
              </el-row>
            </div>
          </div>
        </el-col>
      </el-row>
    </div>
  </div>
</template>
<script>
// import {
//   getUserWork,
//   getregionCollect,
//   getregionOrderCount,
// } from "@/api/home";
import dayjs from "dayjs";
export default {
  name: "home",
  data() {
    return {
      NodeCount: "",
      PrtnerCount: "",
      NodeCount: "",
      radio1: "周",
      ticketStatistics: {},
      order: "",
      Count: "",
      datatni: [],
      series: [],
      tableData: [],
      nodeCollect: [],
      SkuTop: [],
      cylinderSeries: [],
      cylinderXAxis: [],
      dyat: 30,
    };
  },
  computed: {
    // æ—¶é—´åŒºåŸŸ
    td() {
      return dayjs().format("YYYY-MM-DD HH:mm:ss");
    },
    atd() {
      return dayjs().subtract(this.dyat, "day").format("YYYY-MM-DD HH:mm:ss");
    },
    statd() {
      return dayjs().format("YYYY-MM-DD");
    },
    endatd() {
      return dayjs().subtract(this.dyat, "day").format("YYYY-MM-DD");
    },
  },
  created() {
    this.$nextTick(function () {
      this.getregionAmountCollect();
      this.getUserWorks();
      this.getregionCollect();
      this.getregionOrderCount();
      this.getNodeCount();
      this.getPrtnerCount();
      this.getnodeCollect();
      this.getSkuTop();
      this.getOrderAmount();
    });
  },
  mounted() {},
  methods: {
    // æ”¹å˜æ—¶é—´äº‹ä»¶
    changes() {
      if (this.radio1 == "周") {
        this.dyat = 7;
      } else if (this.radio1 == "月") {
        this.dyat = 30;
      } else {
        this.dyat = 360;
      }
      this.getregionAmountCollect();
      this.getUserWorks();
      this.getregionCollect();
      this.getregionOrderCount();
      this.getNodeCount();
      this.getPrtnerCount();
      this.getnodeCollect();
      this.getSkuTop();
      this.getOrderAmount();
    },
    // æŸ±çж图
    async getOrderAmount() {
      // const res = await getOrderAmount(this.endatd, this.statd);
      // this.cylinderXAxis = res.data.xAxis;
      // this.cylinderSeries = res.data.series;
      this.cylinderXAxis = [
        "1月",
        "2月",
        "3月",
        "4月",
        "5月",
        "6月",
        "7月",
        "8月",
      ];
      this.cylinderSeries = [123, 123, 223, 212, 432, 123, 442, 234];
      this.myEcharts();
    },
    // èŽ·å–ç‚¹ä½æ€»æ•°
    async getNodeCount() {
      // const res = await getNodeCount();
      // this.NodeCount = res.data;
    },
    // èŽ·å–åˆä½œå•†æ€»æ•°
    async getPrtnerCount() {
      // const res = await getPrtnerCount();
      // this.PrtnerCount = res.data;
    },
    // åˆä½œå•†ç‚¹ä½æ±‡æ€»ç»Ÿè®¡é¥¼çж图
    async getnodeCollect() {
      // const res = await getnodeCollect();
      // this.nodeCollect = res.data;
      this.nodeCollect = [
        { name: "门诊随访", value: 1232 },
        { name: "出院随访", value: 342 },
      ];
      this.myPieChart();
    },
    // top排行
    async getSkuTop() {
      // const res = await getSkuTop(10, this.endatd, this.statd);
      // this.SkuTop = res.data;
      this.SkuTop = [
        { amount: 0, count: 123, skuId: "0", skuName: "心肺科" },
        { amount: 0, count: 122, skuId: "0", skuName: "肾脏科" },
        { amount: 0, count: 112, skuId: "0", skuName: "泌尿科" },
        { amount: 0, count: 111, skuId: "0", skuName: "男科" },
        { amount: 0, count: 102, skuId: "0", skuName: "妇产科" },
        { amount: 0, count: 98, skuId: "0", skuName: "外科" },
        { amount: 0, count: 89, skuId: "0", skuName: "急诊" },
        { amount: 0, count: 88, skuId: "0", skuName: "器械科" },
        { amount: 0, count: 87, skuId: "0", skuName: "骨科" },
        { amount: 0, count: 67, skuId: "0", skuName: "放射科" },
        { amount: 0, count: 89, skuId: "0", skuName: "急诊" },
        { amount: 0, count: 88, skuId: "0", skuName: "器械科" },
        { amount: 0, count: 87, skuId: "0", skuName: "骨科" },
        { amount: 0, count: 67, skuId: "0", skuName: "放射科" },
      ];
    },
    // èŽ·å–å·¥å•æ•°é‡
    async getUserWorks() {
      // const res = await getUserWork(this.atd, this.td);
      // this.ticketStatistics = res.data[0];
    },
    // èŽ·å–å°±è¯Šæ•°é‡
    async getregionOrderCount() {
      // const res = await getregionOrderCount({
      //   start: this.atd,
      //   end: this.td,
      // });
      // this.order = res.data;
    },
    // èŽ·å–æ€»é‡æ•°é‡
    async getregionCollect() {
      // const res = await getregionCollect({
      //   start: this.atd,
      //   end: this.td,
      // });
      // this.Count = (res.data / 1000000).toFixed(2);
    },
    // æŸ±çж图
    myEcharts() {
      // åŸºäºŽå‡†å¤‡å¥½çš„dom,初始化echarts实例
      var echarts = require("echarts");
      var myChart = echarts.init(document.getElementById("echars2"));
      // æŒ‡å®šå›¾è¡¨çš„配置项和数据
      var option = {
        title: {
          text: "诊中统计",
        },
        tooltip: {
          trigger: "axis",
        },
        legend: {
          data: ["院内推送", "宣教完成"],
        },
        toolbox: {
          show: true,
          feature: {
            dataView: { show: true, readOnly: false },
            magicType: { show: true, type: ["line", "bar"] },
            restore: { show: true },
            saveAsImage: { show: true },
          },
        },
        calculable: true,
        xAxis: [
          {
            type: "category",
            // prettier-ignore
            data: ["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月"],
          },
        ],
        yAxis: [
          {
            type: "value",
          },
        ],
        series: [
          {
            name: "院内推送",
            type: "bar",
            data: [20, 49, 70, 32, 56, 76, 56, 122, 26, 20, 64, 33],
            markPoint: {
              data: [
                { type: "max", name: "Max" },
                { type: "min", name: "Min" },
              ],
            },
            markLine: {
              data: [{ type: "average", name: "Avg" }],
            },
          },
          {
            name: "宣教完成",
            type: "bar",
            data: [26, 59, 90, 64, 87, 70, 75, 182, 87, 82, 60, 23],
            markPoint: {
              data: [
                { name: "Max", value: 182, xAxis: 7, yAxis: 183 },
                { name: "Min", value: 2.3, xAxis: 11, yAxis: 3 },
              ],
            },
            markLine: {
              data: [{ type: "average", name: "Avg" }],
            },
          },
        ],
      };
      // ä½¿ç”¨åˆšæŒ‡å®šçš„配置项和数据显示图表。
      myChart.setOption(option);
    },
    // èŽ·å–çº¿çŠ¶å›¾æ—¶é—´
    async getregionAmountCollect() {
      // const res = await getregionAmountCollect(1, this.endatd, this.statd);
      // this.xAxis = res.data.xAxis;
      // this.series = res.data.series;
      this.xAxis = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月"];
      this.series = [123, 123, 223, 212, 432, 123, 442, 234];
      this.myEcharts2();
    },
    // çº¿æ€§å›¾
    myEcharts2() {
      var echarts = require("echarts");
      var myChart2 = echarts.init(document.getElementById("echars"));
      var option2 = {
        title: {
          text: "诊前数据",
        },
        tooltip: {
          trigger: "axis",
        },
        dataset: {
          source: [
            ["product", "2018", "2019", "2020", "2021", "2022", "2023"],
            ["复诊", 256, 182, 388, 270, 253, 385],
            ["住院", 351, 451, 355, 353, 373, 468],
            ["手术", 440, 362, 569, 436, 445, 332],
            ["转诊", 525, 237, 541, 518, 433, 249],
          ],
        },
        xAxis: { type: "category" },
        yAxis: { gridIndex: 0 },
        grid: { top: "55%" },
        series: [
          {
            type: "line",
            smooth: true,
            seriesLayoutBy: "row",
            emphasis: { focus: "series" },
          },
          {
            type: "line",
            smooth: true,
            seriesLayoutBy: "row",
            emphasis: { focus: "series" },
          },
          {
            type: "line",
            smooth: true,
            seriesLayoutBy: "row",
            emphasis: { focus: "series" },
          },
          {
            type: "line",
            smooth: true,
            seriesLayoutBy: "row",
            emphasis: { focus: "series" },
          },
          {
            type: "pie",
            id: "pie",
            radius: "30%",
            center: ["50%", "25%"],
            emphasis: {
              focus: "self",
            },
            label: {
              formatter: "{b}: {@2018} ({d}%)",
            },
            encode: {
              itemName: "product",
              value: "2018",
              tooltip: "2018",
            },
          },
        ],
      };
      myChart2.on("updateAxisPointer", function (event) {
        const xAxisInfo = event.axesInfo[0];
        if (xAxisInfo) {
          const dimension = xAxisInfo.value + 1;
          myChart2.setOption({
            series: {
              id: "pie",
              label: {
                formatter: "{b}: {@[" + dimension + "]} ({d}%)",
              },
              encode: {
                value: dimension,
                tooltip: dimension,
              },
            },
          });
        }
      });
      myChart2.setOption(option2);
    },
    // é¥¼çж图
    myPieChart() {
      // åŸºäºŽå‡†å¤‡å¥½çš„dom,初始化echarts实例
      var echarts = require("echarts");
      var mypPieCharts = echarts.init(document.getElementById("pieCharts"));
      // æŒ‡å®šå›¾è¡¨çš„配置项和数据
      var optionPie = {
        // title: {
        //   left: "left",
        // },
        tooltip: {
          trigger: "item",
          formatter: "{b}<br/>总占比 : {d}% ",
        },
        toolbox: {
          show: true,
          feature: {
            mark: { show: true },
          },
        },
        legend: {
          top: "5%",
          left: "center",
        },
        series: [
          {
            name: "Access From",
            type: "pie",
            radius: ["40%", "70%"],
            avoidLabelOverlap: false,
            itemStyle: {
              borderRadius: 10,
              borderColor: "#fff",
              borderWidth: 2,
            },
            emphasis: {
              label: {
                show: true,
                fontSize: 40,
                fontWeight: "bold",
              },
            },
            labelLine: {
              show: false,
            },
            data: [
              { value: 580, name: "门诊随访" },
              { value: 484, name: "出院随访" },
            ],
          },
        ],
      };
      // ä½¿ç”¨åˆšæŒ‡å®šçš„配置项和数据显示图表。
      mypPieCharts.setOption(optionPie);
    },
  },
};
</script>
<style lang="scss" scoped>
* {
  padding: 0;
  margin: 0;
}
.boxEchars {
  width: 100%;
  height: 480px;
  margin-top: 45px;
  display: flex;
  .echars1 {
    flex: 1;
  }
  .echars2 {
    flex: 1;
  }
}
::v-deep .el-table {
  td:first-child {
    .cell {
      display: inline-block;
      text-align: center;
      width: 22px;
      height: 20px;
      margin-left: 2px;
      padding-left: 6px;
      text-align: center;
      white-space: nowrap;
      font-size: 12px;
      font-family: zihun143-zhengkuchaojihei, zihun143;
      font-weight: 400;
      line-height: 14px;
      background: url(~@/assets/order/4.png) no-repeat;
      color: #e9b499;
    }
  }
  td:nth-child(2) {
    .cell {
      height: 20px;
      font-size: 14px;
      font-family: PingFangSC-Medium, PingFang SC;
      font-weight: 500;
      color: #333;
      line-height: 20px;
      overflow: hidden;
      white-space: nowrap;
      text-overflow: ellipsis;
    }
  }
  td:last-child {
    height: 20px;
    font-size: 14px;
    font-family: PingFangSC-Regular, PingFang SC;
    font-weight: 400;
    color: #737589;
    line-height: 20px;
    text-align: right;
  }
}
::v-deep .el-table {
  tr:nth-child(1) {
    td:nth-child(1) {
      .cell {
        background: url(~@/assets/order/1.png);
        color: #8e5900;
      }
    }
  }
  tr:nth-child(2) {
    td:nth-child(1) {
      .cell {
        background: url(~@/assets/order/2.png);
        color: #494949;
      }
    }
  }
  tr:nth-child(3) {
    td:nth-child(1) {
      .cell {
        background: url(~@/assets/order/3.png);
        color: #cf6d3d;
      }
    }
  }
}
.moreIcon {
  font-size: 22px !important;
  margin-left: 400px !important;
  color: #5f84ff !important;
  cursor: pointer;
}
.moreIcon2 {
  font-size: 22px !important;
  margin-left: 250px !important;
  color: #5f84ff !important;
  cursor: pointer;
}
.empenty {
  width: 100%;
  padding: 20px 0;
  min-height: 280px;
}
.cooperate {
  width: 100%;
  height: 280px;
  margin-top: 25px;
  display: flex;
  .pieChart {
    flex: 3;
  }
  .Points {
    width: 154px;
    height: 230px;
    text-align: center;
    padding: 20px 0;
    background: linear-gradient(135deg, transparent, #f8f8f9 0) 0 0,
      linear-gradient(-135deg, transparent 12px, #f8f8f9 0) 100% 0,
      linear-gradient(-45deg, transparent, #f8f8f9 0) 100% 100%,
      linear-gradient(45deg, transparent 12px, #f8f8f9 0) 0 100%;
    background-size: 50% 50%;
    background-repeat: no-repeat;
    p {
      height: 33px;
      margin-bottom: 10px;
      font-size: 24px;
      font-family: PingFangSC-Semibold, PingFang SC;
      font-weight: 600;
      color: #072074;
      line-height: 33px;
    }
    span {
      height: 17px;
      margin-top: 6px;
      font-size: 12px;
      font-family: PingFangSC-Regular, PingFang SC;
      font-weight: 400;
      color: #000412;
      line-height: 17px;
    }
  }
}
.title {
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-flex: 1;
  -ms-flex: 1;
  flex: 1;
  font-size: 16px;
  font-family: PingFangSC-Semibold, PingFang SC;
  font-weight: 600;
  color: #333;
  padding-top: 17px;
  padding-bottom: -4px;
  span {
    margin-left: 10px;
    font-size: 12px;
    font-family: PingFangSC-Regular, PingFang SC;
    font-weight: 400;
    color: #999;
  }
}
.bgc2 {
  background: #fbefe8 url(~@/assets/dashboard/bg33.png) no-repeat
    calc(100% - 12px) 100% !important;
  .home-user-task-stats {
    margin-top: 10px;
    height: 50px;
    font-size: 36px;
    font-family: PingFangSC-Semibold, PingFang SC;
    font-weight: 600;
    line-height: 50px;
    text-shadow: 2px 4px 7px rgb(255 99 85 / 50%);
  }
  .text-color2 {
    height: 17px;
    margin-top: 3px;
    font-size: 12px;
    font-family: PingFangSC-Regular, PingFang SC;
    font-weight: 400;
    color: #ff5757;
    line-height: 17px;
  }
}
.bgc1 {
  background: #e9f3ff !important;
  background-image: url(~@/assets/dashboard/bg11.png),
    url(~@/assets/dashboard/bg22.png) !important;
  background-repeat: no-repeat, no-repeat !important;
  background-position: 0 0, calc(100% - 12px) 100% !important;
  .title {
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
    -webkit-box-flex: 1;
    -ms-flex: 1;
    flex: 1;
    font-size: 16px;
    font-family: PingFangSC-Semibold, PingFang SC;
    font-weight: 600;
    color: #333;
    span {
      margin-left: 10px;
      font-size: 12px;
      font-family: PingFangSC-Regular, PingFang SC;
      font-weight: 400;
      color: #999;
    }
  }
  .home-user-task-stats {
    margin-top: 10px;
    height: 50px;
    font-size: 36px;
    font-family: PingFangSC-Semibold, PingFang SC;
    font-weight: 600;
    line-height: 50px;
    text-shadow: 2px 4px 7px rgb(85 132 255 / 50%);
  }
  .text-color2 {
    height: 17px;
    margin-top: 3px;
    font-size: 12px;
    font-family: PingFangSC-Regular, PingFang SC;
    font-weight: 400;
    color: #91a7dc;
    line-height: 17px;
  }
}
::v-deep.aside .el-table__header-wrapper {
  overflow: hidden;
  display: none;
}
.headerBox {
  height: 150px;
  padding: 25px;
}
.el-row {
  margin-bottom: 20px;
  &:last-child {
    margin-bottom: 0;
  }
}
.el-col {
  border-radius: 4px;
}
.bg-purple-dark {
  background: #99a9bf;
}
.bg-purple {
  background: #fff;
}
.bg-purple-light {
  background: #e5e9f2;
  text-align: center;
  align-items: center;
  line-height: 36px;
}
.grid-content {
  min-height: 36px;
  border-radius: 20px;
  padding: 0 10px;
}
.grid-contents {
  min-height: 36px;
  border-radius: 20px;
  padding: 0 10px;
  padding-right: 0;
}
.row-bg {
  padding: 10px 0;
  background-color: #f9fafc;
}
</style>
src/views/index.vue
@@ -110,7 +110,6 @@
            <!-- ä¸­é—´echars -->
            <div class="boxEchars">
              <div class="echars1" id="echars"></div>
              <div class="echars2" id="echars2"></div>
            </div>
          </div>
        </el-col>
@@ -147,27 +146,19 @@
      </el-row>
      <!-- åº•部一个 -->
      <el-row :gutter="20" style="margin-bottom: 20px">
        <el-col :span="13">
        <el-col :span="15">
          <div class="grid-content bg-purple" style="min-height: 300px">
            <div class="title">
              è¯ŠåŽç»Ÿè®¡
              å®£æ•™ç»Ÿè®¡
              <span class="el-icon-s-unfold moreIcon"></span>
            </div>
            <div class="cooperate">
              <!-- åˆä½œåŒºåŸŸ -->
              <div class="pieChart" id="pieCharts"></div>
              <div class="Points">
                <p>{{ 122 }}</p>
                <span>其中随访干预人次</span>
                <p>{{ 122 }}</p>
                <span>门诊随访</span>
                <p>{{ 122 }}</p>
                <span>出院随访</span>
              </div>
            </div>
          </div>
        </el-col>
        <el-col :span="10">
        <el-col :span="9">
          <div class="grid-content bg-purple" style="min-height: 300px">
            <div class="title">
              å„项服务统计
@@ -179,19 +170,25 @@
                  ><div class="grid-contents bg-purple">诊疗预约</div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple-light">123次</div></el-col
                  ><div class="grid-contents bg-purple-light">
                    123次
                  </div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple">转诊服务</div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple-light">231次</div></el-col
                  ><div class="grid-contents bg-purple-light">
                    231次
                  </div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple">信息推送</div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple-light">900次</div></el-col
                  ><div class="grid-contents bg-purple-light">
                    900次
                  </div></el-col
                > </el-row
              ><el-row>
                <el-col :span="4"
@@ -219,13 +216,17 @@
                  ><div class="grid-contents bg-purple">患者反馈</div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple-light">150人</div></el-col
                  ><div class="grid-contents bg-purple-light">
                    150人
                  </div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple">患者管理</div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple-light">231人</div></el-col
                  ><div class="grid-contents bg-purple-light">
                    231人
                  </div></el-col
                >
                <el-col :span="4"
                  ><div class="grid-contents bg-purple">健康宣教</div></el-col
@@ -261,12 +262,7 @@
//   getUserWork,
//   getregionCollect,
//   getregionOrderCount,
//   getregionAmountCollect,
//   getNodeCount,
//   getPrtnerCount,
//   getnodeCollect,
//   getSkuTop,
//   getOrderAmount,
// } from "@/api/home";
import dayjs from "dayjs";
@@ -277,6 +273,10 @@
      NodeCount: "",
      PrtnerCount: "",
      NodeCount: "",
      myChart2: null,
      mypPieCharts: null,
      lastWidth: window.innerWidth,
      lastHeight: window.innerHeight,
      radio1: "周",
      ticketStatistics: {},
      order: "",
@@ -289,6 +289,7 @@
      cylinderSeries: [],
      cylinderXAxis: [],
      dyat: 30,
      intervalId: null,
    };
  },
@@ -317,10 +318,17 @@
      this.getPrtnerCount();
      this.getnodeCollect();
      this.getSkuTop();
      this.getOrderAmount();
    });
  },
  mounted() {},
  mounted() {
    this.setInterval();
    // window.addEventListener("resize", this.handleResize());
  },
  beforeDestroy() {
    if (this.intervalId) {
      clearInterval(this.intervalId); // æ¸…除定时器
    }
  },
  methods: {
    // æ”¹å˜æ—¶é—´äº‹ä»¶
    changes() {
@@ -339,26 +347,8 @@
      this.getPrtnerCount();
      this.getnodeCollect();
      this.getSkuTop();
      this.getOrderAmount();
    },
    // æŸ±çж图
    async getOrderAmount() {
      // const res = await getOrderAmount(this.endatd, this.statd);
      // this.cylinderXAxis = res.data.xAxis;
      // this.cylinderSeries = res.data.series;
      this.cylinderXAxis = [
        "1月",
        "2月",
        "3月",
        "4月",
        "5月",
        "6月",
        "7月",
        "8月",
      ];
      this.cylinderSeries = [123, 123, 223, 212, 432, 123, 442, 234];
      this.myEcharts();
    },
    // èŽ·å–ç‚¹ä½æ€»æ•°
    async getNodeCount() {
      // const res = await getNodeCount();
@@ -398,7 +388,6 @@
        { amount: 0, count: 88, skuId: "0", skuName: "器械科" },
        { amount: 0, count: 87, skuId: "0", skuName: "骨科" },
        { amount: 0, count: 67, skuId: "0", skuName: "放射科" },
      ];
    },
    // èŽ·å–å·¥å•æ•°é‡
@@ -423,80 +412,6 @@
      // this.Count = (res.data / 1000000).toFixed(2);
    },
    // æŸ±çж图
    myEcharts() {
      // åŸºäºŽå‡†å¤‡å¥½çš„dom,初始化echarts实例
      var echarts = require("echarts");
      var myChart = echarts.init(document.getElementById("echars2"));
      // æŒ‡å®šå›¾è¡¨çš„配置项和数据
      var option = {
        title: {
          text: "诊中统计",
        },
        tooltip: {
          trigger: "axis",
        },
        legend: {
          data: ["院内推送", "宣教完成"],
        },
        toolbox: {
          show: true,
          feature: {
            dataView: { show: true, readOnly: false },
            magicType: { show: true, type: ["line", "bar"] },
            restore: { show: true },
            saveAsImage: { show: true },
          },
        },
        calculable: true,
        xAxis: [
          {
            type: "category",
            // prettier-ignore
            data: ["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月"],
          },
        ],
        yAxis: [
          {
            type: "value",
          },
        ],
        series: [
          {
            name: "院内推送",
            type: "bar",
            data: [20, 49, 70, 32, 56, 76, 56, 122, 26, 20, 64, 33],
            markPoint: {
              data: [
                { type: "max", name: "Max" },
                { type: "min", name: "Min" },
              ],
            },
            markLine: {
              data: [{ type: "average", name: "Avg" }],
            },
          },
          {
            name: "宣教完成",
            type: "bar",
            data: [26, 59, 90, 64, 87, 70, 75, 182, 87, 82, 60, 23],
            markPoint: {
              data: [
                { name: "Max", value: 182, xAxis: 7, yAxis: 183 },
                { name: "Min", value: 2.3, xAxis: 11, yAxis: 3 },
              ],
            },
            markLine: {
              data: [{ type: "average", name: "Avg" }],
            },
          },
        ],
      };
      // ä½¿ç”¨åˆšæŒ‡å®šçš„配置项和数据显示图表。
      myChart.setOption(option);
    },
    // èŽ·å–çº¿çŠ¶å›¾æ—¶é—´
    async getregionAmountCollect() {
      // const res = await getregionAmountCollect(1, this.endatd, this.statd);
@@ -510,66 +425,145 @@
    myEcharts2() {
      var echarts = require("echarts");
      var myChart2 = echarts.init(document.getElementById("echars"));
      this.myChart2 = myChart2;
      var option2 = {
        title: {
          text: "诊前数据",
        },
        tooltip: {
          trigger: "axis",
          axisPointer: {
            type: "cross",
            crossStyle: {
              color: "#999",
        },
        dataset: {
          source: [
            ["product", "2018", "2019", "2020", "2021", "2022", "2023"],
            ["复诊", 256, 182, 388, 270, 253, 385],
            ["住院", 351, 451, 355, 353, 373, 468],
            ["手术", 440, 362, 569, 436, 445, 332],
            ["转诊", 525, 237, 541, 518, 433, 249],
          },
        },
        toolbox: {
          feature: {
            dataView: { show: true, readOnly: false },
            magicType: { show: true, type: ["line", "bar"] },
            restore: { show: true },
            saveAsImage: { show: true },
          },
        },
        legend: {
          data: [
            "出院随访量",
            "门诊随访量",
            "在院随访量",
            "门诊复诊通知",
            "出院复诊通知",
            "在院评估量",
          ],
        },
        xAxis: { type: "category" },
        yAxis: { gridIndex: 0 },
        grid: { top: "55%" },
        xAxis: [
          {
            type: "category",
            data: [
              "一月",
              "二月",
              "三月",
              "四月",
              "五月",
              "六月",
              "七月",
              "八月",
              "九月",
              "十月",
            ],
            axisPointer: {
              type: "shadow",
            },
          },
        ],
        yAxis: [
          {
            type: "value",
            name: "Precipitation",
            min: 0,
            max: 250,
            interval: 50,
            axisLabel: {
              formatter: "{value} ml",
            },
          },
          {
            type: "value",
            name: "Temperature",
            min: 0,
            max: 250,
            interval: 50,
            axisLabel: {
              formatter: "{value} æ¬¡",
            },
          },
        ],
        grid: { top: "35%" },
        series: [
          {
            type: "line",
            smooth: true,
            seriesLayoutBy: "row",
            emphasis: { focus: "series" },
            name: "出院随访量",
            type: "bar",
            tooltip: {
              valueFormatter: function (value) {
                return value + " ml";
              },
            },
            data: [120, 150, 165, 90, 140, 200, 130, 85, 175, 95, 110, 160],
          },
          {
            type: "line",
            smooth: true,
            seriesLayoutBy: "row",
            emphasis: { focus: "series" },
            name: "门诊随访量",
            type: "bar",
            tooltip: {
              valueFormatter: function (value) {
                return value + " ml";
              },
            },
            data: [102, 190, 135, 88, 175, 160, 83, 145, 200, 110, 97, 180],
          },
          {
            name: "在院随访量",
            type: "bar",
            tooltip: {
              valueFormatter: function (value) {
                return value + " ml";
              },
            },
            data: [145, 92, 178, 134, 167, 85, 199, 112, 156, 88, 120, 145],
          },
          {
            name: "出院复诊通知",
            type: "line",
            smooth: true,
            seriesLayoutBy: "row",
            emphasis: { focus: "series" },
            smooth: 0.3,
            yAxisIndex: 1,
            tooltip: {
              valueFormatter: function (value) {
                return value + " æ¬¡";
              },
            },
            data: [45, 123, 78, 156, 89, 34, 199, 112, 67, 145, 88, 175],
          },
          {
            name: "门诊复诊通知",
            type: "line",
            smooth: true,
            seriesLayoutBy: "row",
            emphasis: { focus: "series" },
            smooth: 0.3,
            yAxisIndex: 1,
            tooltip: {
              valueFormatter: function (value) {
                return value + " æ¬¡";
              },
            },
            data: [102, 190, 135, 88, 175, 160, 83, 145, 200, 110, 97, 180],
          },
          {
            type: "pie",
            id: "pie",
            radius: "30%",
            center: ["50%", "25%"],
            emphasis: {
              focus: "self",
            name: "在院评估量",
            type: "line",
            smooth: 0.3,
            yAxisIndex: 1,
            tooltip: {
              valueFormatter: function (value) {
                return value + " æ¬¡";
            },
            label: {
              formatter: "{b}: {@2018} ({d}%)",
            },
            encode: {
              itemName: "product",
              value: "2018",
              tooltip: "2018",
            },
            data: [120, 150, 165, 90, 140, 200, 130, 85, 175, 95, 110, 160],
          },
        ],
      };
@@ -581,7 +575,7 @@
            series: {
              id: "pie",
              label: {
                formatter: "{b}: {@[" + dimension + "]} ({d}%)",
                formatter: "{b}: {@[" + dimension + "]} ",
              },
              encode: {
                value: dimension,
@@ -598,59 +592,112 @@
      // åŸºäºŽå‡†å¤‡å¥½çš„dom,初始化echarts实例
      var echarts = require("echarts");
      var mypPieCharts = echarts.init(document.getElementById("pieCharts"));
      this.mypPieCharts = mypPieCharts;
      // æŒ‡å®šå›¾è¡¨çš„配置项和数据
      var optionPie = {
        // title: {
        //   left: "left",
        // },
        legend: {},
        tooltip: {
          trigger: "item",
          formatter: "{b}<br/>总占比 : {d}% ",
          trigger: "axis",
          showContent: true,
        },
        toolbox: {
          show: true,
          feature: {
            mark: { show: true },
        dataset: {
          source: [
            ["product", "2012", "2013", "2014", "2015", "2016", "2017"],
            ["出院宣教", 56.5, 82.1, 88.7, 70.1, 53.4, 85.1],
            ["在院宣教", 51.1, 51.4, 55.1, 53.3, 73.8, 68.7],
            ["门诊宣教", 40.1, 62.2, 69.5, 36.4, 45.2, 32.5],
          ],
          },
        },
        legend: {
          top: "5%",
          left: "center",
        },
        xAxis: { type: "category" },
        yAxis: { gridIndex: 0 },
        grid: { top: "25%", left: "10%", right: "40%", bottom: "10%" },
        series: [
          {
            name: "Access From",
            name: "出院宣教",
            type: "line",
            smooth: true,
            seriesLayoutBy: "row",
            emphasis: { focus: "series" },
          },
          {
            name: "在院宣教",
            type: "line",
            smooth: true,
            seriesLayoutBy: "row",
            emphasis: { focus: "series" },
          },
          {
            name: "门诊宣教",
            type: "line",
            smooth: true,
            seriesLayoutBy: "row",
            emphasis: { focus: "series" },
          },
          {
            type: "pie",
            id: "pie",
            radius: ["40%", "70%"],
            avoidLabelOverlap: false,
            center: ["80%", "50%"],
            emphasis: {
              focus: "self",
            },
            itemStyle: {
              borderRadius: 10,
              borderColor: "#fff",
              borderWidth: 2,
            },
            emphasis: {
              label: {
                show: true,
                fontSize: 40,
                fontWeight: "bold",
              formatter: "{b}: {@2012}",
              },
            encode: {
              itemName: "product",
              value: "2012",
              tooltip: "2012",
            },
            labelLine: {
              show: false,
            },
            data: [
              { value: 580, name: "门诊随访" },
              { value: 484, name: "出院随访" },
            ],
          },
        ],
      };
      mypPieCharts.on("updateAxisPointer", function (event) {
        const xAxisInfo = event.axesInfo[0];
        if (xAxisInfo) {
          const dimension = xAxisInfo.value + 1;
          mypPieCharts.setOption({
            series: {
              id: "pie",
              label: {
                formatter: "{b}: {@[" + dimension + "]} ",
              },
              encode: {
                value: dimension,
                tooltip: dimension,
              },
            },
          });
        }
      });
      // ä½¿ç”¨åˆšæŒ‡å®šçš„配置项和数据显示图表。
      mypPieCharts.setOption(optionPie);
    },
    // é¡µé¢å˜åŒ–调整大小
    handleResize() {
      console.log(111);
      // è°ƒæ•´ ECharts å›¾è¡¨å¤§å°
      if (this.myChart2) {
        this.myChart2.resize();
      }
      if (this.mypPieCharts) {
        this.mypPieCharts.resize();
      }
    },
    setInterval() {
      this.intervalId = setInterval(() => {
        if (window.innerWidth != this.lastWidth) {
          this.lastWidth = window.innerWidth;
          console.log("窗口大小可能被手动调整了");
          this.handleResize();
        }
      }, 1000);
    },
  },
};
@@ -664,13 +711,10 @@
.boxEchars {
  width: 100%;
  height: 480px;
  height: 40vh;
  margin-top: 45px;
  display: flex;
  .echars1 {
    flex: 1;
  }
  .echars2 {
    flex: 1;
  }
}
@@ -765,7 +809,7 @@
  margin-top: 25px;
  display: flex;
  .pieChart {
    flex: 3;
    flex: 1;
  }
  .Points {
    width: 154px;
src/views/knowledge/education/compilequer/index.vue
@@ -408,6 +408,7 @@
];
export default {
  name: "Educationinfo",
  components: { OptionalForm },
  data() {
    return {
@@ -542,6 +543,13 @@
      },
    };
  },
  activated() {
    if (this.id != this.$route.query.id) {
      this.gettabList();
      this.getList();
      this.illnessUpdate();
    }
  },
  created() {
    this.gettabList();
src/views/knowledge/education/index.vue
@@ -312,15 +312,15 @@
                      ><i class="el-icon-edit"></i>二维码</span
                    ></el-button
                  > -->
                  <!-- <el-button
                  <el-button
                    size="medium"
                    type="text"
                    @click="Vieweducation(scope.row)"
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-textck"
                      ><i class="el-icon-edit"></i>查看</span
                      ><i class="el-icon-edit"></i>预览</span
                    ></el-button
                  > -->
                  >
                  <el-button
                    size="medium"
                    type="text"
@@ -444,6 +444,16 @@
        <div class="qrcode-img"></div>
      </div>
    </el-dialog>
    <el-dialog title="模版预览" :visible.sync="previewtf" width="60%">
      <div class="preview-left">
        <!-- å•选 -->
        <div v-html="richText"></div>
      </div>
      <!-- <span slot="footer" class="dialog-footer">
        <el-button @click="previewGo">前往模版详情修改</el-button>
        <el-button type="primary" @click="previewFn">确认使用</el-button>
      </span> -->
    </el-dialog>
  </div>
</template>
@@ -465,7 +475,7 @@
import { listDept } from "@/api/system/dept";
import { getToken } from "@/utils/auth";
import store from "@/store";
import axios from "axios";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
@@ -491,8 +501,10 @@
      haoeducation: "",
      indexid: null,
      inputValue: "",
      richText: "",
      radio: "主分类",
      inputVisible: false,
      previewtf: false,
      illnessVisible: false, //指标疾病弹框
      deptOptions: [],
      courtyardlist: [],
@@ -628,23 +640,38 @@
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.$router.push({
        path: "/knowledge/education/compilequer/",
        path: "/knowledge/educationinfo/",
      });
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.$router.push({
        path: "/knowledge/education/compilequer/",
        path: "/knowledge/educationinfo/",
        query: { id: row.id },
      });
    },
    // æŸ¥çœ‹å®£æ•™
    Vieweducation() {
      this.$router.push({
        path: "/knowledge/education/examine/",
        query: { id: row.id },
    Vieweducation(row) {
      this.richText = null;
      this.previewtf = true;
      axios
        .get(row.richText)
        .then((response) => {
          console.log(response.data, "数据"); // è¾“出获取到的文件内容
          this.richText = response.data;
          this.richText = this.addStyleToImages(this.richText);
        })
        .catch((error) => {
          this.$modal.msgError("获取富文本失败");
          console.error("Failed to fetch file:", error);
      });
    },
    addStyleToImages(html) {
      return html.replace(
        /<img([^>]*)style=(['"])(?:(?!\2).)*\2([^>]*)>/g,
        '<img$1style="width:100%;height:auto;"$3>'
      );
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
src/views/knowledge/questionnaire/compilequer/index.vue
@@ -1149,7 +1149,7 @@
import { getToken } from "@/utils/auth";
export default {
  name: "Qcompilequer",
  name: "Questionnaireinfo",
  components: { OptionalForm },
@@ -1276,7 +1276,12 @@
      ],
    };
  },
  activated() {
    if (this.id != this.$route.query.id) {
      this.gettabList();
      this.getissueinfo();
    }
  },
  created() {
    this.gettabList();
    this.getissueinfo();
src/views/knowledge/questionnaire/index.vue
@@ -647,14 +647,14 @@
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.$router.push({
        path: "/knowledge/questionnaire/compilequer/",
        path: "/knowledge/questionnaireinfo/",
        query: { categoryid: this.queryParams.categoryid },
      });
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.$router.push({
        path: "/knowledge/questionnaire/compilequer/",
        path: "/knowledge/questionnaireinfo/",
        query: { id: row.svyid },
      });
    },
src/views/patient/propaganda/Missioncreation.vue
@@ -465,7 +465,7 @@
            >
              <el-form-item
                label="宣教名称"
                v-if="currenttype == 1 || currenttype == 8"
              >
                <el-input v-model="topqueryParams.preachname"></el-input>
              </el-form-item>
@@ -862,7 +862,6 @@
    submitForm(formName) {
      this.form.preachform = this.checkList.join(",");
      // this.formatFn(1);
      this.form.hospType = this.currenttype;
      if (!this.form.patTaskRelevances[0]) {
        this.$modal.msgError("请选择病人");
        return;
src/views/patient/propaganda/QuestionnaireTask.vue
@@ -14,7 +14,6 @@
            title="任务主体"
            description="在本部选择服务患者"
          ></el-step>
          <el-step icon="el-icon-user" title="模版确认"></el-step>
        </el-steps>
      </div>
    </div>
@@ -67,7 +66,7 @@
                    placeholder="请输入任务描述"
                  />
                </el-form-item>
                <el-form-item label="发送设置:" v-if="currenttype != 2">
                <el-form-item label="发送设置:">
                  <el-radio-group v-model="form.sendType">
                    <el-radio :label="1">时间段发送</el-radio>
                    <el-radio :label="3">时间点发送</el-radio>
@@ -462,86 +461,18 @@
              v-show="showSearch"
              label-width="98px"
            >
              <el-form-item
                label="宣教主题"
                v-if="currenttype == 1 || currenttype == 8"
              >
                <el-input v-model="topqueryParams.name"></el-input>
              </el-form-item>
              <el-form-item
                label="问卷名称"
                v-if="currenttype == 2 || currenttype == 3 || currenttype == 7"
              >
              <el-form-item label="问卷名称">
                <el-input
                  v-model="topqueryParams.name"
                ></el-input> </el-form-item
              ><el-form-item
                label="通知名称"
                v-if="currenttype == 4 || currenttype == 5"
              >
                <el-input
                  v-model="topqueryParams.name"
                ></el-input> </el-form-item
              ><el-form-item label="体检套餐" v-if="currenttype == 5">
              ><el-form-item label="通知名称">
                <el-input v-model="topqueryParams.name"></el-input>
              </el-form-item>
              <el-form-item label="问卷主题" v-if="currenttype == 6">
                <el-input v-model="topqueryParams.name"></el-input>
              </el-form-item>
              <el-form-item label="适用疾病" v-if="currenttype != 5">
              <el-form-item label="问卷主题">
                <el-input v-model="topqueryParams.name"></el-input>
              </el-form-item>
              <el-form-item
                label="宣教类型"
                prop="status"
                v-if="currenttype == 1 || currenttype == 8"
              >
                <el-select v-model="topqueryParams.topic" placeholder="请选择">
                  <el-option
                    v-for="item in taskoptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item
                label="通知类型"
                prop="status"
                v-if="currenttype == 4 || currenttype == 5"
              >
                <el-select v-model="topqueryParams.topic" placeholder="请选择">
                  <el-option
                    v-for="item in taskoptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item
                label="问卷类型"
                prop="status"
                v-if="currenttype == 2 || currenttype == 3 || currenttype == 7"
              >
                <el-select v-model="topqueryParams.topic" placeholder="请选择">
                  <el-option
                    v-for="item in taskoptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item
                label="问卷类型"
                prop="status"
                v-if="currenttype == 6"
              >
              <el-form-item label="问卷类型" prop="status">
                <el-select v-model="topqueryParams.topic" placeholder="请选择">
                  <el-option
                    v-for="item in taskoptions"
@@ -930,7 +861,6 @@
        this.$modal.msgError("请选择病人");
        return;
      }
      this.form.hospType = this.currenttype;
      const filteredArray = this.variableList.filter(
        (item) =>
          item.name !== "姓名" && item.name !== "电话" && item.name !== "地址"
@@ -1277,8 +1207,7 @@
      console.log(this.Tasktemplate);
        this.Tasktemplate.svyTemplateLibScripts.forEach((item) => {
          item.svyTaskTemplateTargetoptions =
          item.svyLibTemplateTargetoptions;
        item.svyTaskTemplateTargetoptions = item.svyLibTemplateTargetoptions;
      });
      this.Tasktemplate.svyTaskTemplateScriptVOS =
        this.Tasktemplate.svyTemplateLibScripts;
src/views/patient/propaganda/particty.vue
@@ -14,7 +14,6 @@
            title="任务主体"
            description="在本部选择服务患者"
          ></el-step>
          <el-step icon="el-icon-user" title="模版确认"></el-step>
        </el-steps>
      </div>
    </div>
@@ -67,7 +66,7 @@
                    placeholder="请输入任务描述"
                  />
                </el-form-item>
                <el-form-item label="发送设置:" v-if="currenttype != 2">
                <el-form-item label="发送设置:">
                  <el-radio-group v-model="form.sendType">
                    <el-radio :label="1">时间段发送</el-radio>
                    <el-radio :label="3">时间点发送</el-radio>
@@ -335,6 +334,17 @@
                  @keyup.enter.native="handleQuery"
                ></el-input>
              </el-form-item>
              <el-form-item label="创建时间">
                <el-date-picker
                  v-model="dateRange"
                  style="width: 240px"
                  value-format="yyyy-MM-dd"
                  type="daterange"
                  range-separator="-"
                  start-placeholder="开始日期"
                  end-placeholder="结束日期"
                ></el-date-picker>
              </el-form-item>
              <el-form-item>
                <el-button
@@ -348,7 +358,7 @@
                  icon="el-icon-refresh"
                  size="medium"
                  @click="resetQuery"
                  >取消创建</el-button
                  >重置</el-button
                >
              </el-form-item>
            </el-form>
@@ -437,16 +447,10 @@
              v-show="showSearch"
              label-width="98px"
            >
              <el-form-item
                label="随访主题"
                v-if="currenttype == 1 || currenttype == 8"
              >
              <el-form-item label="随访主题">
                <el-input v-model="topqueryParams.name"></el-input>
              </el-form-item>
              <el-form-item
                label="随访名称"
                v-if="currenttype == 2 || currenttype == 3 || currenttype == 7"
              >
              <el-form-item label="随访名称">
                <el-input v-model="topqueryParams.name"></el-input>
              </el-form-item>
@@ -523,13 +527,18 @@
export default {
  name: "ServiceDetails",
  data() {
    const endDate = new Date();
    const startDate = new Date();
    startDate.setDate(endDate.getDate() - 7); // è®¾ç½®å¼€å§‹æ—¥æœŸä¸ºå½“前日期前7天
    return {
      title: "随访内容列表",
      currenttype: 1, //1随访2门诊3出院4复诊5体检6问卷
      currenttype: 1, //1随访2问卷3通知宣教
      id: "", //
      previewid: "", //任务模版传递id
      libName: "",
      overallCase: [], //选择患者总
      // æ—¥æœŸèŒƒå›´
      dateRange: [startDate, endDate],
      allpids: [],
      libId: null, //模板库模版id
      nhh: null, //是否依照新增
@@ -545,12 +554,11 @@
      questionList: [],
      // æ‚£è€…表单
      tableLabelhz: [
        { label: "序号", width: "", prop: "patid" },
        { label: "患者名称", width: "", prop: "name" },
        { label: "性别", width: "", prop: "sex" },
        { label: "年龄", width: "", prop: "age" },
        { label: "就诊科室", width: "", prop: "deptName" },
        { label: "入院日期", width: "", prop: "inhosptime" },
        { label: "入院日期", width: "", prop: "birthdate" },
        { label: "创建人(缺)", width: "", prop: "update_by" },
      ],
@@ -723,7 +731,6 @@
        isavailable: "",
      };
      this.currenttype = this.$route.query.type;
      console.log(this.currenttype, "1");
      // å‡ºé™¢ã€é—¨è¯Šã€ä¸“病随访
      this.title = "随访内容列表";
      this.tableLabel = this.tableLabelmz;
@@ -887,7 +894,7 @@
          { label: "年龄", width: "", prop: "age" },
          { label: "主任医师", width: "", prop: "drname" },
          { label: "就诊科室", width: "", prop: "deptName" },
          { label: "入院日期", width: "", prop: "inhosptime" },
          { label: "入院日期", width: "", prop: "birthdate" },
          { label: "创建人", width: "", prop: "createBy" },
        ];
      } else if (this.patientqueryParams.allhosp == 2) {
@@ -898,7 +905,7 @@
          { label: "年龄", width: "", prop: "age" },
          { label: "诊断", width: "", prop: "diagname" },
          { label: "就诊科室", width: "", prop: "deptName" },
          { label: "入院日期", width: "", prop: "inhosptime" },
          { label: "入院日期", width: "", prop: "birthdate" },
          { label: "创建人", width: "", prop: "createBy" },
        ];
      }
@@ -909,8 +916,9 @@
        this.patientqueryParams.pids = null;
      }
      getTaskpatient(this.patientqueryParams).then((response) => {
        console.log(response);
      getTaskpatient(
        this.addDateRange(this.patientqueryParams, this.dateRange)
      ).then((response) => {
        this.patientuserList = response.rows;
        this.patienttotal = response.total;
        this.loading = false;
@@ -989,7 +997,18 @@
    handleQuery() {
      this.handleAddpatient();
    },
    resetQuery() {},
    resetQuery() {
      this.dateRange = [];
      // æŸ¥è¯¢å‚æ•°
      this.queryParams = {
        pageNum: 1,
        pageSize: 10,
        userName: undefined,
        phonenumber: undefined,
        status: undefined,
        deptId: undefined,
      };
    },
    handleClosehz() {
      this.dialogVisiblepatient = false;
    },
@@ -1130,6 +1149,7 @@
      }
      this.form.sendTimeslot = combinedData;
      // å±•示数据临时存储日期、早、中、晚
      console.log(this.daytime);
      this.form.showDate = this.daytime.join(",");
      if (this.time1) this.form.showTimeMorn = this.time1.join(",");
src/views/repositoryai/templateku/configurat/index.vue
@@ -75,9 +75,10 @@
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
          <el-form-item label="模版简介" prop="note">
            <div style="width: 50%">
                <div>
              <el-input
                type="textarea"
                placeholder="请输入简介"
@@ -85,6 +86,9 @@
              ></el-input>
            </div>
          </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="20">
            <el-col :span="12">
              <el-form-item label="版本号" prop="version">
@@ -808,7 +812,6 @@
            <!-- å•选 -->
            <div
              class="scriptTopic-dev"
              :key="item.sort"
              v-if="item.valueType == 1"
            >
@@ -829,7 +832,6 @@
            <!-- å¤šé€‰ -->
            <div
              class="scriptTopic-dev"
              :key="item.sort"
              v-if="item.valueType == 2"
            >
@@ -851,7 +853,6 @@
            <!-- å¡«ç©º -->
            <div
              class="scriptTopic-dev"
              :key="item.sort"
              v-if="item.valueType == 3"
            >
src/views/system/user/index.vue
@@ -307,8 +307,9 @@
          <el-col :span="12">
            <el-form-item label="归属部门" prop="deptId">
              <treeselect
                v-model="form.deptId"
                v-model="deptIds"
                :options="deptOptions"
                :multiple="true"
                :show-count="true"
                placeholder="请选择归属部门"
              />
@@ -536,6 +537,7 @@
      initPassword: undefined,
      // æ—¥æœŸèŒƒå›´
      dateRange: [],
      deptIds: [],
      // å²—位选项
      postOptions: [],
      // è§’色选项
@@ -746,9 +748,11 @@
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      this.deptIds = [];
      const userId = row.userId || this.ids;
      getUser(userId).then((response) => {
        this.form = response.data;
        this.postOptions = response.posts;
        this.roleOptions = response.roles;
        this.$set(this.form, "postIds", response.postIds);