--fix 内容分类 改成从字典取值

This commit is contained in:
yuping
2023-01-13 18:17:07 +08:00
parent 05e9732e3d
commit 29582b6beb
6 changed files with 829 additions and 955 deletions

View File

@@ -32,6 +32,7 @@ export default createStore({
projectSys: [],//培训分类 projectSys: [],//培训分类
pathmapPic: [],//学习路径背景图 pathmapPic: [],//学习路径背景图
memberInitInfo: [],//学员默认 memberInitInfo: [],//学员默认
sysType: [],//学员默认
}, },
getters: {}, getters: {},
mutations: { mutations: {

View File

@@ -54,7 +54,7 @@
tree-default-expand-all tree-default-expand-all
:fieldNames="{ :fieldNames="{
children: 'children', children: 'children',
label: 'name', label: 'dictCode',
value: 'dictName', value: 'dictName',
}" }"
:tree-data="sysTypeOptions" :tree-data="sysTypeOptions"

View File

@@ -5,11 +5,11 @@
width="80%" @cancel="handleCancel" @ok="handleCancel"> width="80%" @cancel="handleCancel" @ok="handleCancel">
<div class="modalHeader"> <div class="modalHeader">
<div class="headerLeft"> <div class="headerLeft">
<img style="width: 17px; height: 18px; margin-right: 8px" src="@/assets/images/basicinfo/add.png" /> <img style="width: 17px; height: 18px; margin-right: 8px" src="@/assets/images/basicinfo/add.png"/>
<span class="headerLeftText">预览</span> <span class="headerLeftText">预览</span>
</div> </div>
<div style="margin-right: 57px; cursor: pointer"> <div style="margin-right: 57px; cursor: pointer">
<img @click="handleCancel" style="width: 22px; height: 22px" src="@/assets/images/basicinfo/close22.png" /> <img @click="handleCancel" style="width: 22px; height: 22px" src="@/assets/images/basicinfo/close22.png"/>
</div> </div>
</div> </div>
<div class="modalMain"> <div class="modalMain">
@@ -20,7 +20,7 @@
<div class="mbl_items"> <div class="mbl_items">
<div class="item_nam"> <div class="item_nam">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img src="@/assets/images/coursewareManage/asterisk.png" alt="img" /> <img src="@/assets/images/coursewareManage/asterisk.png" alt="img"/>
</div> </div>
<span style="margin-right: 14px">课程名称</span> <span style="margin-right: 14px">课程名称</span>
</div> </div>
@@ -33,17 +33,17 @@
<div class="mbl_items2"> <div class="mbl_items2">
<div class="item_nam"> <div class="item_nam">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img src="@/assets/images/coursewareManage/asterisk.png" alt="img" /> <img src="@/assets/images/coursewareManage/asterisk.png" alt="img"/>
</div> </div>
<span style="margin-right: 14px">封面图</span> <span style="margin-right: 14px">封面图</span>
</div> </div>
<img :src="detail.picUrl" alt="img" style="width: 100px; height: 100px" /> <img :src="detail.picUrl" alt="img" style="width: 100px; height: 100px"/>
</div> </div>
<div class="mbl_items"> <div class="mbl_items">
<div class="item_nam"> <div class="item_nam">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img style="width: 10px; height: 10px" src="@/assets/images/coursewareManage/asterisk.png" <img style="width: 10px; height: 10px" src="@/assets/images/coursewareManage/asterisk.png"
alt="img" /> alt="img"/>
</div> </div>
<span style="margin-right: 14px">目标人群</span> <span style="margin-right: 14px">目标人群</span>
</div> </div>
@@ -66,13 +66,13 @@
<div class="mbl_items"> <div class="mbl_items">
<div class="item_nam"> <div class="item_nam">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img src="@/assets/images/coursewareManage/asterisk.png" alt="img" /> <img src="@/assets/images/coursewareManage/asterisk.png" alt="img"/>
</div> </div>
<span style="margin-right: 14px">内容分类</span> <span style="margin-right: 14px">内容分类</span>
</div> </div>
<div class="item_inp"> <div class="item_inp">
<div class="select i6_input"> <div class="select i6_input">
{{ filterClassTxt(detail.categoryId) }} {{ categoryName }}
</div> </div>
</div> </div>
</div> </div>
@@ -99,7 +99,7 @@
<div class="mbl_items"> <div class="mbl_items">
<div class="item_nam"> <div class="item_nam">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img src="@/assets/images/coursewareManage/asterisk.png" alt="asterisk" /> <img src="@/assets/images/coursewareManage/asterisk.png" alt="asterisk"/>
</div> </div>
<span style="margin-right: 14px">授课教师</span> <span style="margin-right: 14px">授课教师</span>
</div> </div>
@@ -112,7 +112,7 @@
<div class="mbl_items2" v-if="detail.intro"> <div class="mbl_items2" v-if="detail.intro">
<div class="item_nam"> <div class="item_nam">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img src="@/assets/images/coursewareManage/asterisk.png" alt="asterisk" /> <img src="@/assets/images/coursewareManage/asterisk.png" alt="asterisk"/>
</div> </div>
<span style="margin-right: 14px">课程简介</span> <span style="margin-right: 14px">课程简介</span>
</div> </div>
@@ -129,19 +129,19 @@
item.indexOf('jpg') !== -1 || item.indexOf('jpg') !== -1 ||
item.indexOf('jpeg') !== -1 || item.indexOf('jpeg') !== -1 ||
item.indexOf('png') !== -1 item.indexOf('png') !== -1
" src="@/assets/images/coursewareManage/pngpic.png" /> " src="@/assets/images/coursewareManage/pngpic.png"/>
<div v-else> <div v-else>
<img v-if="item.indexOf('doc') !== -1" src="@/assets/images/coursewareManage/docpic.png" /> <img v-if="item.indexOf('doc') !== -1" src="@/assets/images/coursewareManage/docpic.png"/>
<div v-else> <div v-else>
<img v-if="item.indexOf('xls') !== -1" src="@/assets/images/coursewareManage/xlspic.png" /> <img v-if="item.indexOf('xls') !== -1" src="@/assets/images/coursewareManage/xlspic.png"/>
<div v-else> <div v-else>
<img v-if="item.indexOf('ppt') !== -1" src="@/assets/images/coursewareManage/pptpic.png" /> <img v-if="item.indexOf('ppt') !== -1" src="@/assets/images/coursewareManage/pptpic.png"/>
<div v-else> <div v-else>
<img v-if="item.indexOf('pdf') !== -1" src="@/assets/images/coursewareManage/pdfpic.png" /> <img v-if="item.indexOf('pdf') !== -1" src="@/assets/images/coursewareManage/pdfpic.png"/>
<div v-else> <div v-else>
<img v-if="item.indexOf('zip') !== -1" <img v-if="item.indexOf('zip') !== -1"
src="@/assets/images/coursewareManage/zippic.png" /> src="@/assets/images/coursewareManage/zippic.png"/>
<img v-else src="@/assets/images/coursewareManage/docpic.png" /> <img v-else src="@/assets/images/coursewareManage/docpic.png"/>
</div> </div>
</div> </div>
</div> </div>
@@ -169,7 +169,7 @@
item.lastIndexOf("-") item.lastIndexOf("-")
) + item.slice(item.lastIndexOf(".")) ) + item.slice(item.lastIndexOf("."))
: item : item
}} }}
</span> </span>
</div> </div>
@@ -196,7 +196,7 @@
</div> </div>
<div class="fotarea"> <div class="fotarea">
<div style="border: 1px solid #ccc"> <div style="border: 1px solid #ccc">
<div v-html="detail.outline" /> <div v-html="detail.outline"/>
</div> </div>
</div> </div>
</div> </div>
@@ -211,8 +211,9 @@
</a-modal> </a-modal>
</template> </template>
<script> <script>
import { reactive, toRefs, defineComponent, ref } from "vue"; import {reactive, toRefs, defineComponent, ref, watch, computed} from "vue";
import * as api1 from "../../../api/index1"; import * as api1 from "../../../api/index1";
import {useStore} from "vuex";
export default defineComponent({ export default defineComponent({
props: { props: {
@@ -222,11 +223,13 @@ export default defineComponent({
}, },
detail: { detail: {
type: Object, type: Object,
default: () => { }, default: () => ({}),
}, },
}, },
setup(props, { emit }) { setup(props, {emit}) {
console.log("props", props); console.log("props", props);
const store = useStore();
const state = reactive({ const state = reactive({
imgList: [], imgList: [],
options2222: [ options2222: [
@@ -359,15 +362,25 @@ export default defineComponent({
], ],
} }
], ],
categoryName: '',
ceshi: "https://u-pre.boe.com/upload/测试下载ppt2-1671002026755.pptx", ceshi: "https://u-pre.boe.com/upload/测试下载ppt2-1671002026755.pptx",
ceshi2: "http://111.231.196.214:12016/测试下载ppt3-1671001683026.pptx", ceshi2: "http://111.231.196.214:12016/测试下载ppt3-1671001683026.pptx",
locationHref: location.href.indexOf('http://') !== -1 ? 'http://111.231.196.214:12016/' : location.href.slice(0, location.href.indexOf('/m')) + '/upload/' locationHref: location.href.indexOf('http://') !== -1 ? 'http://111.231.196.214:12016/' : location.href.slice(0, location.href.indexOf('/m')) + '/upload/'
}); });
// item.slice( const sysTypeOptions = computed(() => store.state.sysType);
// item.lastIndexOf("/") + 1,
// item.indexOf("-") watch(() => props.detail.categoryId, () => {
// ) + item.slice(item.lastIndexOf(".")) state.categoryName = findClassFullName(sysTypeOptions.value)
})
function findClassFullName(list, name = '') {
return list && list.length && list
.map(e => props.detail.categoryId == e.dictCode ? name ? name + '-' + e.dictName : e.dictName : findClassFullName(e.children, name ? name + '-' + e.dictName : e.dictName))
.filter(name => name)
.join('') || ''
}
const filterTxt = (txt) => { const filterTxt = (txt) => {
if (txt) { if (txt) {
return txt; return txt;
@@ -375,49 +388,6 @@ export default defineComponent({
return "-"; return "-";
} }
}; };
const filterClassTxt = (txt) => {
let str = "-";
if (txt) {
for (let i = 0; i < options2.value.length; i++) {
for (let j = 0; j < options2.value[i].children.length; j++) {
str = changeTreeSelectValue(String(txt))
// if (String(options2.value[i].children[j].value) === String(txt)) {
// str = options2.value[i].children[j].title;
// }
}
}
}
return str;
};
// 格式化树型结构选择数据
const changeTreeSelectValue = (values) => {
let data = state.options2222;
console.log(values, data)
let str = ''
for (let i = 0; i < data.length; i++) {
if (data[i].value == values) {
str = data[i].title
} else {
for (let j = 0; j < data[i].children.length; j++) {
if (data[i].children[j].value == values) {
str = data[i].title + '/' + data[i].children[j].title
} else {
if (data[i].children[j].children) {
for (let k = 0; k < data[i].children[j].children.length; k++) {
if (data[i].children[j].children[k].value == values) {
str = data[i].title + '/' + data[i].children[j].title + '/' + data[i].children[j].children[k].title
}
}
}
}
}
}
}
console.log('str-str-str-str', str)
state.fen_lei1 = str;
return str;
}
const filterSenceTxt = (txt) => { const filterSenceTxt = (txt) => {
let str = "-"; let str = "-";
@@ -483,7 +453,6 @@ export default defineComponent({
return { return {
...toRefs(state), ...toRefs(state),
filterTxt, filterTxt,
filterClassTxt,
filterSenceTxt, filterSenceTxt,
handleCancel, handleCancel,
}; };

View File

@@ -138,26 +138,15 @@
</div> </div>
<div class="item_inp"> <div class="item_inp">
<div class="select i6_input"> <div class="select i6_input">
<!-- <a-select-->
<!-- :getPopupContainer="-->
<!-- (triggerNode) => {-->
<!-- return triggerNode.parentNode || document.body;-->
<!-- }-->
<!-- "-->
<!-- v-model:value="fen_lei"-->
<!-- dropdownClassName="dropdown-style"-->
<!-- style="width: 440px"-->
<!-- placeholder="请选择"-->
<!-- :options="options2"-->
<!-- allowClear-->
<!-- showSearch-->
<!-- />-->
<a-tree-select style="width: 440px" placeholder="请选择内容分类" :treeDefaultExpandAll="true" <a-tree-select style="width: 440px" placeholder="请选择内容分类" :treeDefaultExpandAll="true"
:getPopupContainer=" :getPopupContainer="triggerNode => triggerNode.parentNode || document.body"
(triggerNode) => { v-model:value="fen_lei"
return triggerNode.parentNode || document.body; :tree-data="sysTypeOptions"
} :fieldNames="{
" @change="changeTreeSelectValue" v-model:value="fen_lei" :tree-data="options2222"> children: 'children',
label: 'dictName',
value: 'dictCode',
}">
</a-tree-select> </a-tree-select>
</div> </div>
</div> </div>
@@ -326,8 +315,7 @@ import {
defineComponent, defineComponent,
ref, ref,
shallowRef, shallowRef,
// onMounted, onUnmounted, computed, watch,
onUnmounted,
} from "vue"; } from "vue";
import { validateName } from "@/api/index1"; import { validateName } from "@/api/index1";
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
@@ -336,11 +324,11 @@ import { fileUp } from "../../api/indexEval";
import * as api1 from "../../api/index1"; import * as api1 from "../../api/index1";
import "@wangeditor/editor/dist/css/style.css"; import "@wangeditor/editor/dist/css/style.css";
import { Editor, Toolbar } from "@wangeditor/editor-for-vue"; import { Editor, Toolbar } from "@wangeditor/editor-for-vue";
//import ProjectManager from "@/components/project/ProjectManagerNew";
import NameInput from "@/components/project/NameInput"; import NameInput from "@/components/project/NameInput";
import FJUpload from "@/components/common/FJUpload"; import FJUpload from "@/components/common/FJUpload";
import * as moment from "moment"; import * as moment from "moment";
import * as api2 from "../../api/indexAudit"; import * as api2 from "../../api/indexAudit";
import {useStore} from "vuex";
export default defineComponent({ export default defineComponent({
components: { components: {
@@ -348,7 +336,6 @@ export default defineComponent({
Toolbar, Toolbar,
FJUpload, FJUpload,
NameInput, NameInput,
//ProjectManager,
}, },
props: { props: {
xzinputV1: { xzinputV1: {
@@ -514,6 +501,19 @@ export default defineComponent({
} }
], ],
}); });
const store = useStore();
const sysTypeOptions = computed(() => store.state.sysType);
watch(()=>state.fen_lei,()=>{
state.fen_lei1 = findClassFullName(sysTypeOptions.value)
})
function findClassFullName(list,name=''){
return list && list.length && list.map(e=>{
return state.fen_lei == e.dictCode ? name?name+'-'+e.dictName:e.dictName : findClassFullName(e.children,name?name+'-'+e.dictName:e.dictName)
}).filter(name=>name).join('')
}
// 删除文件返回参数 // 删除文件返回参数
const changevalue = (e) => { const changevalue = (e) => {
@@ -855,8 +855,7 @@ export default defineComponent({
state.feng_mian_1 = item.picUrl; state.feng_mian_1 = item.picUrl;
state.qdms_inputV2 = item.targetUser; state.qdms_inputV2 = item.targetUser;
state.qdms_inputV3 = item.meaning; state.qdms_inputV3 = item.meaning;
state.fen_lei = String(item.categoryId); state.fen_lei = item.categoryId;
state.fen_lei1 = changeTreeSelectValue(String(item.categoryId));
state.chang_jin = String(item.sceneContent ? item.sceneContent : ''); state.chang_jin = String(item.sceneContent ? item.sceneContent : '');
state.tags_val = item.tips ? item.tips.split(",") : []; state.tags_val = item.tips ? item.tips.split(",") : [];
state.qdms_inputV6 = item.intro; state.qdms_inputV6 = item.intro;
@@ -911,37 +910,9 @@ export default defineComponent({
}); });
}; };
// 格式化树型结构选择数据
const changeTreeSelectValue = (values) => {
let data = state.options2222;
console.log(values, data)
let str = ''
for (let i = 0; i < data.length; i++) {
if (data[i].value == values) {
str = data[i].title
} else {
for (let j = 0; j < data[i].children.length; j++) {
if (data[i].children[j].value == values) {
str = data[i].title + '/' + data[i].children[j].title
} else {
if (data[i].children[j].children) {
for (let k = 0; k < data[i].children[j].children.length; k++) {
if (data[i].children[j].children[k].value == values) {
str = data[i].title + '/' + data[i].children[j].title + '/' + data[i].children[j].children[k].title
}
}
}
}
}
}
}
console.log('str-str-str-str', str)
state.fen_lei1 = str;
return str;
}
return { return {
...toRefs(state), ...toRefs(state),
sysTypeOptions,
moment, moment,
options2, options2,
options3, options3,
@@ -963,7 +934,6 @@ export default defineComponent({
handleCreated, handleCreated,
choicePic, choicePic,
changevalue, changevalue,
changeTreeSelectValue
}; };
}, },
}); });

View File

@@ -107,9 +107,10 @@
</div> </div>
</template> </template>
<script> <script>
import { reactive, toRefs, onMounted } from "vue"; import {reactive, toRefs, onMounted, computed} from "vue";
import { courseListView } from "../../api/indexAudit"; import { courseListView } from "../../api/indexAudit";
import * as api1 from "@/api/index1"; import * as api1 from "@/api/index1";
import {useStore} from "vuex";
export default { export default {
name: "CoursereViewed", name: "CoursereViewed",
@@ -398,48 +399,19 @@ export default {
], ],
}); });
// 课程三级分类回显 const store = useStore();
const sHX = (data) => {
let str = '-' const sysTypeOptions = computed(() => store.state.sysType);
let sdata = state.options2222
for (let i = 0; i < sdata.length; i++) { function findClassFullName(list,classify,name=''){
for (let j = 0; j < sdata[i].children.length; j++) { return list && list.length && list.map(e=>{
str = changeTreeSelectValue(String(data)) return classify == e.dictCode ? name?name+'-'+e.dictName:e.dictName : findClassFullName(e.children,classify,name?name+'-'+e.dictName:e.dictName)
{/* if (String(sdata[i].children[j].value) === String(data)) { }).filter(name=>name).join('')
str = sdata[i].children[j].title;
} */}
}
}
return str
} }
// 格式化树型结构选择数据 // 课程三级分类回显
const changeTreeSelectValue = (values) => { const sHX = (classify) => {
let data = state.options2222; return findClassFullName(sysTypeOptions.value,classify) || '-'
console.log(values, data)
let str = ''
for (let i = 0; i < data.length; i++) {
if (data[i].value == values) {
str = data[i].title
} else {
for (let j = 0; j < data[i].children.length; j++) {
if (data[i].children[j].value == values) {
str = data[i].title + '/' + data[i].children[j].title
} else {
if (data[i].children[j].children) {
for (let k = 0; k < data[i].children[j].children.length; k++) {
if (data[i].children[j].children[k].value == values) {
str = data[i].title + '/' + data[i].children[j].title + '/' + data[i].children[j].children[k].title
}
}
}
}
}
}
}
console.log('str-str-str-str', str)
state.fen_lei1 = str;
return str;
} }
const getList = () => { const getList = () => {

View File

@@ -22,16 +22,8 @@
...calssifyList, ...calssifyList,
]" ]"
/>--> />-->
<a-tree-select :getPopupContainer=" <a-tree-select :getPopupContainer="triggerNode => triggerNode.parentNode || document.body" v-model:value="valueproj" show-search :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
" v-model:value="valueproj" show-search :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
placeholder="请选择内容分类" tree-default-expand-all :tree-data="options2222"> placeholder="请选择内容分类" tree-default-expand-all :tree-data="options2222">
<template #title="{ value: val, title }">
<b v-if="val === '11111'" style="color: #08c">sss</b>
<template v-else>{{ title }}</template>
</template>
</a-tree-select> </a-tree-select>
</div> </div>
<div class="inpbox1"> <div class="inpbox1">
@@ -130,12 +122,13 @@
</div> </div>
</template> </template>
<script> <script>
import { reactive, toRefs, onMounted, ref } from "vue"; import {reactive, toRefs, onMounted, ref, computed} from "vue";
import { list, courseAuditView, courseDetail } from "../../api/indexAudit"; import { list, courseAuditView, courseDetail } from "../../api/indexAudit";
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
import SeeModal from "../courselibrary/components/seeModal.vue"; import SeeModal from "../courselibrary/components/seeModal.vue";
import { iframeUrl } from "../../api/method"; import { iframeUrl } from "../../api/method";
import * as api1 from "@/api/index1"; import * as api1 from "@/api/index1";
import {useStore} from "vuex";
export default { export default {
name: "CoursereViewedN", name: "CoursereViewedN",
@@ -171,7 +164,7 @@ export default {
chooseCreater: null, chooseCreater: null,
chooseOffId: null, chooseOffId: null,
lookCourseModal: false, //预览 lookCourseModal: false, //预览
faceDetailObj: null, faceDetailObj: {},
columns1: [ columns1: [
// { // {
// title: "序号", // title: "序号",
@@ -257,7 +250,6 @@ export default {
<span <span
onClick={() => { onClick={() => {
getFaceDetail(value.record.offId); getFaceDetail(value.record.offId);
console.log(value.record);
}} }}
style="cursor:pointer;color:#387DF7" style="cursor:pointer;color:#387DF7"
> >
@@ -406,20 +398,19 @@ export default {
} }
], ],
}); });
const store = useStore();
const sysTypeOptions = computed(() => store.state.sysType);
function findClassFullName(list,classify,name=''){
return list && list.length && list.map(e=>{
return classify == e.dictCode ? name?name+'-'+e.dictName:e.dictName : findClassFullName(e.children,classify,name?name+'-'+e.dictName:e.dictName)
}).filter(name=>name).join('')
}
// 课程三级分类回显 // 课程三级分类回显
const sHX = (data) => { const sHX = (classify) => {
let str = '-' return findClassFullName(sysTypeOptions.value,classify) || '-'
let sdata = state.options2222
for (let i = 0; i < sdata.length; i++) {
for (let j = 0; j < sdata[i].children.length; j++) {
str = changeTreeSelectValue(String(data))
// if (String(sdata[i].children[j].value) === String(data)) {
// str = sdata[i].children[j].title;
// }
}
}
return str
} }
/* /*
@@ -642,35 +633,6 @@ export default {
})); }));
}); });
// 格式化树型结构选择数据
const changeTreeSelectValue = (values) => {
let data = state.options2222;
console.log(values, data)
let str = ''
for (let i = 0; i < data.length; i++) {
if (data[i].value == values) {
str = data[i].title
} else {
for (let j = 0; j < data[i].children.length; j++) {
if (data[i].children[j].value == values) {
str = data[i].title + '/' + data[i].children[j].title
} else {
if (data[i].children[j].children) {
for (let k = 0; k < data[i].children[j].children.length; k++) {
if (data[i].children[j].children[k].value == values) {
str = data[i].title + '/' + data[i].children[j].title + '/' + data[i].children[j].children[k].title
}
}
}
}
}
}
}
console.log('str-str-str-str', str)
state.fen_lei1 = str;
return str;
}
// 禁止用户编辑文本框内容 // 禁止用户编辑文本框内容
const onEditorFocus = (event) => { const onEditorFocus = (event) => {
event.enable(false); event.enable(false);