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