From b73b5dd97cbda40d0584f579ed9f65f4fcffe23f Mon Sep 17 00:00:00 2001
From: WXL <1785969728@qq.com>
Date: 星期一, 31 三月 2025 15:33:02 +0800
Subject: [PATCH] 测试完成

---
 src/views/knowledge/education/index.vue |  371 ++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 311 insertions(+), 60 deletions(-)

diff --git a/src/views/knowledge/education/index.vue b/src/views/knowledge/education/index.vue
index de1d072..b692fc7 100644
--- a/src/views/knowledge/education/index.vue
+++ b/src/views/knowledge/education/index.vue
@@ -1,5 +1,6 @@
 <template>
   <div class="educationmanagement">
+
     <!-- 宸︿晶鏍� -->
     <div class="sidecolumn">
       <div class="sidecolumn-top">
@@ -68,72 +69,52 @@
               v-show="showSearch"
               label-width="98px"
             >
-              <el-form-item label="瀹f暀鏍囬" prop="userName">
+              <el-form-item label="閫氱煡鏍囬" prop="preachname">
                 <el-input
-                  v-model="queryParams.userName"
+                  v-model="queryParams.preachname"
                   placeholder="璇疯緭鍏�"
                   clearable
                   style="width: 200px"
                   @keyup.enter.native="handleQuery"
                 />
               </el-form-item>
-              <el-form-item label="閫傜敤绉戝" prop="region">
-                <el-cascader
-                  v-model="queryParams.administrative"
-                  :options="deptList"
-                  :props="props"
-                  :show-all-levels="false"
-                  clearable
-                >
-                  <template slot-scope="{ node, data }">
-                    <span>{{ data.deptName }}</span>
-                    <span v-if="!node.isLeaf">
-                      ({{ data.children.length }})
-                    </span>
-                  </template>
-                </el-cascader>
-              </el-form-item>
-              <el-form-item label="閫氱煡鍐呭" prop="userName">
-                <el-input
-                  v-model="queryParams.userNamevalue"
-                  placeholder="璇疯緭鍏�"
-                  clearable
-                  style="width: 200px"
-                  @keyup.enter.native="handleQuery"
-                />
-              </el-form-item>
-              <el-form-item label="閫傜敤鏂瑰紡" prop="shape">
-                <el-cascader
-                  v-model="queryParams.shapevalue"
-                  :options="optionss"
-                  :props="propss"
-                  clearable
-                ></el-cascader>
-              </el-form-item>
-              <el-form-item label="鍐呭褰㈠紡" prop="classify">
+              <el-form-item label="閫傜敤闄㈠尯" prop="region">
                 <el-select
-                  v-model="queryParams.classifyvalue"
-                  placeholder="璇烽�夋嫨"
+                  v-model="campus"
+                  size="medium"
+                  multiple
+                  filterable
+                  placeholder="璇烽�夋嫨鍒嗙被"
                 >
                   <el-option
-                    v-for="(item, index) in editabshape"
+                    v-for="item in courtyardlist"
                     :key="item.label"
                     :label="item.label"
-                    :value="item.value"
+                    :value="item.label"
                   >
                   </el-option>
                 </el-select>
               </el-form-item>
+              <el-form-item label="閫氱煡鍐呭" prop="userName">
+                <el-input
+                  v-model="queryParams.preachcontent"
+                  placeholder="璇疯緭鍏�"
+                  clearable
+                  style="width: 200px"
+                  @keyup.enter.native="handleQuery"
+                />
+              </el-form-item>
+
               <el-form-item label="鍙敤鐘舵��" prop="classify">
                 <el-select
-                  v-model="queryParams.classifyvalue"
+                  v-model="queryParams.isavailable"
                   placeholder="璇烽�夋嫨"
                 >
                   <el-option
-                    v-for="item in usable"
+                    v-for="(item, index) in qyoptions"
                     :key="item.value"
-                    :label="item.value"
-                    :value="item.label"
+                    :label="item.label"
+                    :value="item.value"
                   >
                   </el-option>
                 </el-select>
@@ -181,6 +162,16 @@
                   >鍒犻櫎</el-button
                 >
               </el-col>
+              <el-col :span="1.5">
+                <el-button
+                  type="success"
+                  plain
+                  icon="el-icon-data-line"
+                  size="medium"
+                  @click="statistics"
+                  >缁熻鍒嗘瀽</el-button
+                >
+              </el-col>
 
               <!-- <el-col :span="1.5"> </el-col> -->
             </el-row>
@@ -203,6 +194,7 @@
                 label="鏍囬"
                 fixed
                 align="center"
+                width="150"
                 key="preachname"
                 prop="preachname"
                 :show-overflow-tooltip="true"
@@ -217,6 +209,7 @@
               <el-table-column
                 label="涓昏鍐呭"
                 align="center"
+                width="260"
                 key="preachcontent"
                 prop="preachcontent"
                 :show-overflow-tooltip="true"
@@ -320,7 +313,7 @@
                 class-name="small-padding fixed-width"
               >
                 <template slot-scope="scope">
-                  <el-button
+                  <!-- <el-button
                     size="medium"
                     type="text"
                     @click="goQRCode(scope.row)"
@@ -329,14 +322,14 @@
                     <span class="button-text"
                       ><i class="el-icon-edit"></i>浜岀淮鐮�</span
                     ></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
@@ -462,6 +455,29 @@
         <div class="qrcode-img"></div>
       </div>
     </el-dialog>
+    <el-dialog title="妯℃澘棰勮" :visible.sync="previewtf" width="60%">
+      <div class="preview-left">
+        <!-- 鍗曢�� -->
+        <div v-html="htmlRichText"></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
+    >\
+    <!-- 缁熻鍥捐〃 -->
+    <el-dialog width="80%" title="绠¢ゲ瀹f暀缁熻" :visible.sync="statisticson">
+      <div class="grid-content bg-purple" style="min-height: 300px">
+        <div class="title">
+          瀹f暀缁熻
+          <span class="el-icon-s-unfold moreIcon"></span>
+        </div>
+        <div class="cooperate">
+          <!-- 鍚堜綔鍖哄煙 -->
+          <div class="pieChart" id="pieCharts"></div>
+        </div>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -479,11 +495,12 @@
   getillnesslist,
   illnesslistget,
   getillness,
+  deltargetillness,
 } from "@/api/AiCentre/index";
 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 {
@@ -507,15 +524,20 @@
       total: 0,
       nameeducation: "",
       haoeducation: "",
+      statisticson: false,
       indexid: null,
       inputValue: "",
+      htmlRichText: "",
       radio: "涓诲垎绫�",
       inputVisible: false,
+      previewtf: false,
       illnessVisible: false, //鎸囨爣鐤剧梾寮规
       deptOptions: [],
+      courtyardlist: [],
       optionsillness: [],
       illnesslistapi: [],
       illnesslist: [],
+      campus: [],
       defaultProps: {
         children: "heLibraryAssortList",
         label: "assortname",
@@ -559,6 +581,7 @@
       }, //绫诲埆琛ㄥ崟
       optionss: [],
       mode: [],
+      qyoptions: [],
       languagelist: [],
       editabshape: [],
       usable: [],
@@ -566,7 +589,9 @@
       xjxsoptions: [],
       deptList: [],
       props: { multiple: true, value: "deptId", label: "deptName" },
-
+      Collarr: [],
+      Collarrname: [],
+      Collarrvalue: [],
       //绫诲埆鍒楄〃
       editableTabs: [],
       // 鏌ヨ鍙傛暟
@@ -586,6 +611,8 @@
     this.usable = store.getters.usable;
     this.precedencetype = store.getters.precedencetype;
     this.editabshape = store.getters.editabshape;
+    this.qyoptions = store.getters.usable;
+    this.courtyardlist = store.getters.courtyardlist;
   },
 
   methods: {
@@ -613,6 +640,113 @@
       this.nameeducation = row.userName;
       this.haoeducation = row.nickName;
     },
+    // 鍚堜綔鍟嗙偣浣嶆眹鎬荤粺璁¢ゼ鐘跺浘
+    async getnodeCollect() {
+      // const res = await getnodeCollect();
+      // this.nodeCollect = res.data;
+      // this.nodeCollect = [
+      //   { name: "褰卞儚闅忚", value: 1232 },
+      //   { name: "鍑洪櫌闅忚", value: 342 },
+      // ];
+      this.myPieChart();
+    },
+    // 楗肩姸鍥�
+    myPieChart() {
+      // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥
+      var echarts = require("echarts");
+      var mypPieCharts = echarts.init(document.getElementById("pieCharts"));
+      this.mypPieCharts = mypPieCharts;
+      // 鎸囧畾鍥捐〃鐨勯厤缃」鍜屾暟鎹�
+      var optionPie = {
+        tooltip: {
+          trigger: "item",
+          formatter: "{a} <br/>{b} : {c} ({d}%)",
+        },
+        legend: {
+          left: "left",
+          orient: "horizontal", // 鍥句緥椤规按骞虫帓鍒�
+          top: "top", // 鍥句緥鏀剧疆鍦ㄩ《閮�
+          data: this.Collarrname,
+        },
+        toolbox: {
+          feature: {
+            magicType: {
+              type: ["stack"],
+            },
+            dataView: {},
+          },
+        },
+        xAxis: [
+          {
+            type: "category",
+            data: this.Collarrname,
+            axisLabel: {
+              formatter: "{value}",
+            },
+          },
+        ],
+        grid: { top: "30%", left: "10%", right: "40%", bottom: "10%" },
+        yAxis: [
+          {
+            type: "value",
+          },
+        ],
+        series: [
+          {
+            name: "鏌ョ湅娆℃暟",
+            type: "bar",
+            data: this.Collarrvalue,
+            seriesLayoutBy: "row",
+            smooth: true,
+            label: {
+              show: true,
+              position: "inside",
+            },
+            emphasis: { focus: "series" },
+          },
+          {
+            name: "鏌ョ湅娆℃暟姣旂巼",
+            type: "pie",
+            radius: "30%",
+            radius: ["40%", "70%"],
+            center: ["80%", "60%"],
+            data: this.Collarr,
+            emphasis: {
+              focus: "self",
+            },
+            itemStyle: {
+              borderRadius: 10,
+              borderColor: "#fff",
+              borderWidth: 2,
+            },
+            label: {
+              formatter: "{b}: {d}%",
+            },
+          },
+        ],
+      };
+      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);
+    },
     // 琛ㄥ崟閲嶇疆
     reset() {
       this.form = {};
@@ -621,6 +755,7 @@
     /** 鎼滅储鎸夐挳鎿嶄綔 */
     handleQuery() {
       this.queryParams.pageNum = 1;
+      this.queryParams.campus = this.campus.join(",");
       this.getList();
     },
     /** 閲嶇疆鎸夐挳鎿嶄綔 */
@@ -633,44 +768,82 @@
     },
     // 澶氶�夋閫変腑鏁版嵁
     handleSelectionChange(selection) {
-      this.ids = selection.map((item) => item.userId);
+      this.ids = selection.map((item) => item.id);
       this.single = selection.length != 1;
       this.multiple = !selection.length;
     },
     /** 鏂板鎸夐挳鎿嶄綔 */
     handleAdd() {
       this.$router.push({
-        path: "/knowledge/education/compilequer/",
+        path: "/knowledge/educationinfo/",
       });
     },
     /** 淇敼鎸夐挳鎿嶄綔 */
     handleUpdate(row) {
       this.$router.push({
-        path: "/knowledge/education/compilequer/",
-        query: { id: "1" },
+        path: "/knowledge/educationinfo/",
+        query: { id: row.id },
       });
     },
     // 鏌ョ湅瀹f暀
-    Vieweducation() {
-      this.$router.push({
-        path: "/knowledge/education/examine/",
-        query: { id: "1" },
-      });
+    Vieweducation(row) {
+      this.htmlRichText = null;
+      this.previewtf = true;
+      axios
+        .get(row.htmlRichText)
+        .then((response) => {
+          console.log(response.data, "鏁版嵁"); // 杈撳嚭鑾峰彇鍒扮殑鏂囦欢鍐呭
+          this.htmlRichText = response.data;
+          this.htmlRichText = this.addStyleToImages(this.htmlRichText);
+        })
+        .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) {
-      const userIds = row.userId || this.ids;
+      const userIds = row.id || this.ids;
       this.$modal
         .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�')
         .then(function () {
-          return delFollowupinfo(userIds);
+          return dellibraryinfo(userIds);
         })
         .then(() => {
           this.getList();
           this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
         })
         .catch(() => {});
+    },
+    // 鎵撳紑缁熻鍥捐〃
+    statistics() {
+      //鍙栨暟鎹�
+      let obj = { assortid: 13, isavailable: "", pageNum: 1, pageSize: 20 };
+      getlibrarylist(obj).then((response) => {
+        console.log(response.rows, "response.rows");
+        response.rows.forEach((item) => {
+          this.Collarr.push({ name: item.preachname, value: item.watchCount });
+        });
+        this.Collarrname = this.Collarr.map((item) => item.name);
+
+        // 鎻愬彇 value 灞炴�у埌涓�涓柊鏁扮粍
+        this.Collarrvalue = this.Collarr.map((item) =>
+          parseInt(item.value, 10)
+        );
+        this.statisticson = true;
+        this.$nextTick(function () {
+          this.getnodeCollect();
+        });
+        this.total = response.total;
+        this.loading = false;
+      });
     },
 
     // 鍒嗙被鏍�-----------------------------------------
@@ -716,6 +889,7 @@
       } else {
         return this.$modal.msgError("璇峰~鍐欏畬鏁翠俊鎭�");
       }
+      this.classifyform.hetype = 1;
       addheLibraryAssort(this.classifyform).then((res) => {
         this.getDeptTree();
         this.$modal.msgSuccess("鏂板鎴愬姛");
@@ -964,6 +1138,83 @@
     vertical-align: bottom;
   }
 }
+
+.bg-purple {
+  background: #fff;
+}
+
+.grid-content {
+  min-height: 36px;
+  border-radius: 20px;
+  padding: 0 10px;
+}
+.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;
+  }
+}
+.moreIcon {
+  font-size: 22px !important;
+  margin-left: 400px !important;
+  color: #5f84ff !important;
+  cursor: pointer;
+}
+.cooperate {
+  width: 100%;
+  height: 280px;
+  margin-top: 25px;
+  display: flex;
+  .pieChart {
+    flex: 1;
+  }
+  .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;
+    }
+  }
+}
 ::v-deep .el-tree-node__content {
   display: -webkit-box;
   display: -ms-flexbox;

--
Gitblit v1.9.3