提交 6d58eb4e 编写于 作者: guofeng.chen's avatar guofeng.chen

添加学科页面和职称考页面

上级 edb5358d
...@@ -29,7 +29,6 @@ ...@@ -29,7 +29,6 @@
"jsencrypt": "^3.0.0-rc.1", "jsencrypt": "^3.0.0-rc.1",
"jspdf": "^1.5.3", "jspdf": "^1.5.3",
"node-sass": "^4.9.2", "node-sass": "^4.9.2",
"jspdf": "^1.5.3",
"pdfh5": "^1.3.9", "pdfh5": "^1.3.9",
"qrcode": "^1.3.3", "qrcode": "^1.3.3",
"showdown": "^1.6.4", "showdown": "^1.6.4",
......
...@@ -13,6 +13,9 @@ const editManager = r => require.ensure([], () => r(require('../views/education/ ...@@ -13,6 +13,9 @@ const editManager = r => require.ensure([], () => r(require('../views/education/
const itemRole = r => require.ensure([], () => r(require('../views/system/item-role.vue')), 'item-role') const itemRole = r => require.ensure([], () => r(require('../views/system/item-role.vue')), 'item-role')
const msgPush = r => require.ensure([], () => r(require('../views/msgpush/msg-push.vue')), 'msg-push') const msgPush = r => require.ensure([], () => r(require('../views/msgpush/msg-push.vue')), 'msg-push')
const editCme = r => require.ensure([], () => r(require('../views/education/edit-cme.vue')), 'edit-cme') const editCme = r => require.ensure([], () => r(require('../views/education/edit-cme.vue')), 'edit-cme')
const editProfessionalExam = r => require.ensure([], () => r(require('../views/education/edit-professional-exam.vue')), 'edit-professional-exam')
const subjectManager = r => require.ensure([], () => r(require('../views/education/subject-manager.vue')), 'subject-manager')
const editSubject = r => require.ensure([], () => r(require('../views/education/edit-subject.vue')), 'edit-subject')
import patientsRouters from './patients' import patientsRouters from './patients'
import followRouters from './follow' import followRouters from './follow'
...@@ -91,6 +94,15 @@ export default [{ ...@@ -91,6 +94,15 @@ export default [{
},{ },{
path: '/edit-cme', path: '/edit-cme',
component: editCme component: editCme
},{
path: '/edit-professional-exam',
component: editProfessionalExam
},{
path: '/subject-manager',
component: subjectManager
},{
path: '/edit-subject',
component: editSubject
},{ },{
path: '/item-component', path: '/item-component',
component: itemComponent component: itemComponent
......
...@@ -5,7 +5,7 @@ export const containObject = function(...obj1) { ...@@ -5,7 +5,7 @@ export const containObject = function(...obj1) {
return obj return obj
} }
// 获取页面自适应高度 // 获取页面自适应高度
export function resizeHeight(cMinusHeight = 152, iMinuxHeight = 210, refHeightId = 'slidebar-container', export function resizeHeight(cMinusHeight = 152, iMinuxHeight = 210, refHeightId = 'slidebar-container',
containerHeightId = 'screenSet'){ containerHeightId = 'screenSet'){
let containerHeight = p_getElm(refHeightId).getBoundingClientRect().height - 15 let containerHeight = p_getElm(refHeightId).getBoundingClientRect().height - 15
p_getElm(containerHeightId).style.height = containerHeight - cMinusHeight + 'px' p_getElm(containerHeightId).style.height = containerHeight - cMinusHeight + 'px'
...@@ -305,7 +305,8 @@ const GetLocalIPAddress = () => { ...@@ -305,7 +305,8 @@ const GetLocalIPAddress = () => {
// // check(); // // check();
// }); // });
// $.getScript('http://pv.sohu.com/cityjson?ie=utf-8', function () { // $.getScript('http://pv.sohu.com/cityjson?ie=utf-8', function () {
return returnCitySN["cip"]; // return returnCitySN["cip"];
return '';
// }); // });
// return ip; // return ip;
}; };
......
...@@ -54,9 +54,9 @@ service.interceptors.request.use(config => { ...@@ -54,9 +54,9 @@ service.interceptors.request.use(config => {
} }
if( process.env.BUILD_ENV == "development" ){ // 本地开发环境qgit if( process.env.BUILD_ENV == "development" ){ // 本地开发环境qgit
// console.log('环境变量>>>> ', process.env.BUILD_ENV); // console.log('环境变量>>>> ', process.env.BUILD_ENV);
config.headers['token'] = '28731437A7EF482ABC5DF4D4DB13B3ED'; // config.headers['token'] = '28731437A7EF482ABC5DF4D4DB13B3ED';
// config.headers['token'] = localStorage.getItem('storageToken') config.headers['token'] = localStorage.getItem('storageToken')
}else{ }else{
config.headers['token'] = localStorage.getItem('storageToken') config.headers['token'] = localStorage.getItem('storageToken')
} }
......
...@@ -7,7 +7,7 @@ import axios from 'axios'; ...@@ -7,7 +7,7 @@ import axios from 'axios';
// } // }
// 获取页面自适应高度 // 获取页面自适应高度
export function resizeHeight(cMinusHeight = 152, iMinuxHeight = 210, refHeightId = 'slidebar-container', export function resizeHeight(cMinusHeight = 152, iMinuxHeight = 210, refHeightId = 'slidebar-container',
containerHeightId = 'screenSet'){ containerHeightId = 'screenSet'){
let containerHeight = p_getElm(refHeightId).getBoundingClientRect().height - 15 let containerHeight = p_getElm(refHeightId).getBoundingClientRect().height - 15
p_getElm(containerHeightId).style.height = containerHeight - cMinusHeight + 'px' p_getElm(containerHeightId).style.height = containerHeight - cMinusHeight + 'px'
...@@ -307,7 +307,8 @@ const GetLocalIPAddress = () => { ...@@ -307,7 +307,8 @@ const GetLocalIPAddress = () => {
// // check(); // // check();
// }); // });
// $.getScript('http://pv.sohu.com/cityjson?ie=utf-8', function () { // $.getScript('http://pv.sohu.com/cityjson?ie=utf-8', function () {
return returnCitySN["cip"]; // return returnCitySN["cip"];
return '';
// }); // });
// return ip; // return ip;
}; };
...@@ -803,3 +804,7 @@ export const setOptionLabel = (self,selfModel,selfEId,selfEName,list,listEId,lis ...@@ -803,3 +804,7 @@ export const setOptionLabel = (self,selfModel,selfEId,selfEName,list,listEId,lis
} }
return; return;
}; };
export function deepCopy(obj) {
return obj ? JSON.parse(JSON.stringify(obj)) : obj;
}
...@@ -89,39 +89,56 @@ ...@@ -89,39 +89,56 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-form-item label="项目时间:" required> <el-row>
<el-col :span="5"> <el-col :span="13">
<el-form-item prop="projectBegintime"> <el-form-item label="项目时间:" required>
<el-date-picker <el-col :span="10">
v-model="formData.projectBegintime" <el-form-item prop="projectBegintime">
size="small" <el-date-picker
type="datetime" v-model="formData.projectBegintime"
placeholder="请选择开始时间" size="small"
value-format="yyyy-MM-dd HH:mm:ss" type="datetime"
:picker-options="pickerOptions0" placeholder="请选择开始时间"
style="width: 100%;" value-format="yyyy-MM-dd HH:mm:ss"
:disabled="peopleLevel == 'L3'" :picker-options="pickerOptions0"
></el-date-picker> style="width: 100%;"
:disabled="peopleLevel == 'L3'"
></el-date-picker>
</el-form-item>
</el-col>
<el-col class="line" :span="2">~</el-col>
<el-col :span="10">
<el-form-item label prop="projectEndtime">
<el-date-picker
v-model="formData.projectEndtime"
size="small"
type="datetime"
placeholder="请选择结束时间"
value-format="yyyy-MM-dd HH:mm:ss"
:picker-options="pickerOptions1"
default-time="23:59:59"
style="width: 100%;"
:disabled="peopleLevel == 'L3'"
></el-date-picker>
</el-form-item>
</el-col>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col class="line" :span="1">~</el-col> <el-col :span="10">
<el-col :span="5"> <el-form-item label="卡类型:" prop="cardType">
<el-form-item label prop="projectEndtime"> <el-select size="small" v-model="formData.cardType" placeholder="请选择卡类型">
<el-date-picker <el-option
v-model="formData.projectEndtime" v-for="item in cardTypeList"
size="small" :key="item.value"
type="datetime" :label="item.label"
placeholder="请选择结束时间" :value="item.value"
value-format="yyyy-MM-dd HH:mm:ss" ></el-option>
:picker-options="pickerOptions1" </el-select>
default-time="23:59:59"
style="width: 100%;"
:disabled="peopleLevel == 'L3'"
></el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-form-item> </el-row>
<el-form-item label="项目简介:" prop="projectIntro">
<el-form-item label="简介:" prop="projectIntro">
<el-col :span="13"> <el-col :span="13">
<el-input <el-input
size="small" size="small"
...@@ -290,10 +307,9 @@ ...@@ -290,10 +307,9 @@
</el-form-item> --> </el-form-item> -->
<el-form-item label="项目类型:"> <el-form-item label="项目类型:">
<el-radio-group v-model="formData.cmeType" :disabled="projectId && projectStatus != 1" size="small"> <el-radio-group v-model="formData.cmeType" :disabled="projectId && projectStatus != 1" size="small">
<el-radio :label="1">自营项目</el-radio> <el-radio :label="3">职称考项目</el-radio>
<el-radio :label="2">中华医学会二类</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item v-show="formData.cmeType == 1" label="学分名称:" prop="creditId"> <el-form-item v-show="formData.cmeType == 1" label="学分名称:" prop="creditId">
<el-col :span="11"> <el-col :span="11">
<el-select <el-select
...@@ -342,7 +358,7 @@ ...@@ -342,7 +358,7 @@
<!-- <span class="word-num">{{(formData.mustKnow).replace(/\s+/g,"").length}}/250</span> --> <!-- <span class="word-num">{{(formData.mustKnow).replace(/\s+/g,"").length}}/250</span> -->
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item label="项目结束后:"> <el-form-item label="项目结束后:">
<el-radio-group size="small" v-model="formData.allowLearn" :disabled="showAllowType()"> <el-radio-group size="small" v-model="formData.allowLearn" :disabled="showAllowType()">
<el-radio :label="1">允许继续学习(停止发证)</el-radio> <el-radio :label="1">允许继续学习(停止发证)</el-radio>
...@@ -360,7 +376,7 @@ ...@@ -360,7 +376,7 @@
<el-radio :label="1">使用小生态范围</el-radio> <el-radio :label="1">使用小生态范围</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="人员权限设定" v-show="projectType != 2"> <el-form-item label="人员权限设定" v-show="projectType != 5">
<el-radio-group <el-radio-group
size="small" size="small"
v-model="formData.authorityType" v-model="formData.authorityType"
...@@ -1085,7 +1101,7 @@ ...@@ -1085,7 +1101,7 @@
</div> </div>
</div> </div>
<el-form-item required label="配置证书:" v-show="projectType != 2"> <el-form-item required label="配置证书:" v-show="projectType != 5">
<el-col :span="10"> <el-col :span="10">
<el-radio-group <el-radio-group
class="el-configure" class="el-configure"
...@@ -1385,11 +1401,12 @@ export default { ...@@ -1385,11 +1401,12 @@ export default {
//cme新增 //cme新增
projectNo: "", projectNo: "",
projectLevel: "", projectLevel: "",
cardType: "",
projectLeaderId: "", projectLeaderId: "",
projectSubject: "", projectSubject: "",
mustKnow: "", mustKnow: "",
creditId: "", creditId: "",
cmeType: 1, cmeType: 3,
cmeCredit: '', cmeCredit: '',
examBtnUrl: '', examBtnUrl: '',
}, },
...@@ -1581,6 +1598,7 @@ export default { ...@@ -1581,6 +1598,7 @@ export default {
uploadType: "", uploadType: "",
//cme新增 //cme新增
projectLevelList: [], projectLevelList: [],
cardTypeList: [],
projectLeaderList: [], projectLeaderList: [],
creditList: [], creditList: [],
creditTip: "", creditTip: "",
...@@ -1762,22 +1780,25 @@ export default { ...@@ -1762,22 +1780,25 @@ export default {
// projectNo: [ // projectNo: [
// { required: true, message: "请输入项目编号", trigger: "blur" }, // { required: true, message: "请输入项目编号", trigger: "blur" },
// ], // ],
projectLevel: [ // projectLevel: [
{ required: true, message: "请选择项目等级", trigger: "change" } // { required: true, message: "请选择项目等级", trigger: "change" }
// ],
cardType: [
{ required: true, message: "请选择卡类型", trigger: "change" }
], ],
// projectLeaderId: [ // projectLeaderId: [
// { required: true, message: "请选择项目负责人", trigger: "change" }, // { required: true, message: "请选择项目负责人", trigger: "change" },
// ], // ],
projectSubject: [ // projectSubject: [
{ required: true, message: "请输入项目所属学科", trigger: "blur" } // { required: true, message: "请输入项目所属学科", trigger: "blur" }
], // ],
mustKnow: [ // mustKnow: [
{ required: true, message: "请输入学习须知", trigger: "blur" }, // { required: true, message: "请输入学习须知", trigger: "blur" },
{ min: 1, max: 200, message: "超出可输入的最大长度", trigger: "blur" } // { min: 1, max: 200, message: "超出可输入的最大长度", trigger: "blur" }
], // ],
creditId: [ // creditId: [
{ required: true, validator: checkCmeCreditId, trigger: "change,blur" } // { required: true, validator: checkCmeCreditId, trigger: "change,blur" }
], // ],
cmeCredit: [ cmeCredit: [
{ required: true, validator: checkCmeCredit, trigger: "blur" }, { required: true, validator: checkCmeCredit, trigger: "blur" },
// { min: 0.1, max: 100, message: "请输入0.1100数字,可小数", trigger: "blur" } // { min: 0.1, max: 100, message: "请输入0.1100数字,可小数", trigger: "blur" }
...@@ -1797,7 +1818,7 @@ export default { ...@@ -1797,7 +1818,7 @@ export default {
(this.projectId = vm.getUrlSearch(window.location.href, "projectId")), (this.projectId = vm.getUrlSearch(window.location.href, "projectId")),
(this.peopleLevel = vm.getUrlSearch(window.location.href, "level")); (this.peopleLevel = vm.getUrlSearch(window.location.href, "level"));
if (this.projectType == 2) { if (this.projectType == 5) {
//CME情况下 //CME情况下
this.rules = this.rules2; this.rules = this.rules2;
this.formData.learnableFlag = 1; this.formData.learnableFlag = 1;
...@@ -1975,6 +1996,7 @@ export default { ...@@ -1975,6 +1996,7 @@ export default {
//cme新增 //cme新增
projectNo: editData.projectData.projectNo, projectNo: editData.projectData.projectNo,
projectLevel: editData.projectData.projectLevel, projectLevel: editData.projectData.projectLevel,
cardType: editData.projectData.cardType,
projectLeaderId: editData.projectData.projectLeaderId, projectLeaderId: editData.projectData.projectLeaderId,
projectSubject: editData.projectData.projectSubject, projectSubject: editData.projectData.projectSubject,
mustKnow: editData.projectData.mustKnow, mustKnow: editData.projectData.mustKnow,
...@@ -1983,7 +2005,7 @@ export default { ...@@ -1983,7 +2005,7 @@ export default {
cmeCredit: editData.projectData.cmeCredit || '', cmeCredit: editData.projectData.cmeCredit || '',
examBtnUrl: editData.projectData.examBtnUrl || '', examBtnUrl: editData.projectData.examBtnUrl || '',
}; };
if (vm.projectType == 2) { if (vm.projectType == 5) {
vm.formData.learnableFlag = 1; vm.formData.learnableFlag = 1;
vm.initCreditTip(); vm.initCreditTip();
} }
...@@ -2113,6 +2135,7 @@ export default { ...@@ -2113,6 +2135,7 @@ export default {
projectType: this.projectType, projectType: this.projectType,
projectNo: this.formData.projectNo, projectNo: this.formData.projectNo,
projectLevel: this.formData.projectLevel, projectLevel: this.formData.projectLevel,
cardType: this.formData.cardType,
projectLeaderId: this.formData.projectLeaderId, projectLeaderId: this.formData.projectLeaderId,
projectSubject: this.formData.projectSubject, projectSubject: this.formData.projectSubject,
mustKnow: this.formData.mustKnow, mustKnow: this.formData.mustKnow,
...@@ -2156,13 +2179,13 @@ export default { ...@@ -2156,13 +2179,13 @@ export default {
} }
//} //}
//creditId学分id的特殊处理 //creditId学分id的特殊处理
if (this.projectType == 2) { if (this.projectType == 5) {
if (option == "add" || option == "storage") { if (option == "add" || option == "storage") {
projectModel.creditId = this.formData.creditId; projectModel.creditId = this.formData.creditId;
} }
} }
if (option == "edit" || option == "storageEdit") { if (option == "edit" || option == "storageEdit") {
if (this.projectType == 2) { if (this.projectType == 5) {
projectModel.creditId = this.beforeCreditId; projectModel.creditId = this.beforeCreditId;
} }
//编辑 //编辑
...@@ -2505,9 +2528,9 @@ export default { ...@@ -2505,9 +2528,9 @@ export default {
}, },
//点击下一步 //点击下一步
nextStep(moveType) { nextStep(moveType) {
if(this.formData.cmeType == 2) { // if(this.formData.cmeType == 2) {
moveType = 2; // moveType = 2;
} // }
if (this.active == 0) { if (this.active == 0) {
let formName = "formData"; let formName = "formData";
let removeState = this.submitForm(formName); let removeState = this.submitForm(formName);
...@@ -2538,7 +2561,7 @@ export default { ...@@ -2538,7 +2561,7 @@ export default {
if (res.code == "000000") { if (res.code == "000000") {
//移动到第二页 选择范围 //移动到第二页 选择范围
// this.operationLast(); // this.operationLast();
if (moveType == 1 && vm.projectType == 2) { if (moveType == 1 && vm.projectType == 5) {
this.dialogCme = true; this.dialogCme = true;
return; return;
} }
...@@ -3693,7 +3716,7 @@ export default { ...@@ -3693,7 +3716,7 @@ export default {
}, },
showScopeTypeCME() { showScopeTypeCME() {
if (this.projectStatus == "" || this.projectStatus == 1) { if (this.projectStatus == "" || this.projectStatus == 1) {
if (this.peopleLevel != "L3" && this.projectType != 2) { if (this.peopleLevel != "L3" && this.projectType != 5) {
return false; return false;
} }
} }
...@@ -3719,7 +3742,7 @@ export default { ...@@ -3719,7 +3742,7 @@ export default {
this.projectStatus == 1 || this.projectStatus == 1 ||
this.projectStatus == 2 this.projectStatus == 2
) { ) {
if (this.peopleLevel != "L3" && this.projectType != 2) { if (this.peopleLevel != "L3" && this.projectType != 5) {
return false; return false;
} }
} }
...@@ -3730,7 +3753,7 @@ export default { ...@@ -3730,7 +3753,7 @@ export default {
if (this.peopleLevel == "L3" || this.peopleLevel == "L0") { if (this.peopleLevel == "L3" || this.peopleLevel == "L0") {
return true; return true;
} }
if (this.projectType == 2) { if (this.projectType == 5) {
return true; return true;
} }
return false; return false;
......
<template>
<div class="notice-editor-wrap" id="screenSet">
<bread-crumb :curmbFirst="curmbFirst" :curmbSecond="curmbSecond" :curmbThird="curmbThird" :jumPathThird="jumPathThird"></bread-crumb>
<div class="add-content screenSet" >
<el-form
ref="formData"
:model="formData"
:rules="rules"
label-width="160px"
class="basic-form"
>
<el-form-item label="所属职称:" prop="titleCode">
<el-select size="small" v-model="formData.titleCode" placeholder="请选择职称">
<el-option
v-for="item in gradeList"
:key="item.code"
:label="item.name"
:value="item.code"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="学科名称:" prop="name">
<el-col :span="13">
<el-input
size="small"
v-model="formData.name"
placeholder="请输入学科名称"
style="width:70%;"
></el-input>
<span class="word-num">{{(formData.name).replace(/\s+/g,"").length}}/20</span>
</el-col>
</el-form-item>
<el-row>
<el-col :span="13">
<el-button type="primary" size="small" @click="addSecondList">添加二级分类</el-button>
</el-col>
</el-row>
<template v-for="(item, index) in formData.titleTestSubjectSecondModelList">
<div class="list-block" :key="index">
<el-form-item
label="二级分类名称:"
:prop="`titleTestSubjectSecondModelList.${index}.name`"
:rules="secondNameRules">
<el-col :span="13">
<el-input
size="small"
v-model="item.name"
placeholder="请输入二级分类名称"
style="width:70%;"
></el-input>
<span class="word-num">{{(item.name).replace(/\s+/g,"").length}}/20</span>
</el-col>
</el-form-item>
<el-form-item
label="二级分类代码:"
:prop="`titleTestSubjectSecondModelList.${index}.code`"
:rules="secondCodeRules">
<el-col :span="13">
<el-input
size="small"
v-model="item.code"
placeholder="请输入二级分类代码"
style="width:70%;"
></el-input>
<span class="word-num">{{(item.code).replace(/\s+/g,"").length}}/8</span>
</el-col>
</el-form-item>
<el-form-item
label="是否已在项目配置课程:"
:prop="`titleTestSubjectSecondModelList.${index}.openFlag`"
:rules="{ required: true, message: '请选择是否已在项目配置课程', trigger: 'change'}">
<el-col :span="13">
<el-radio-group v-model="item.openFlag">
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
</el-radio-group>
</el-col>
</el-form-item>
<el-form-item
v-if="item.openFlag"
label="选择项目:"
:prop="`titleTestSubjectSecondModelList.${index}.projectId`"
:rules="{ required: true, message: '请选择项目', trigger: 'change'}">
<el-select size="small" v-model="item.projectId" placeholder="请选择项目">
<el-option
v-for="item in projectList"
:key="item.projectId"
:label="item.projectName"
:value="item.projectId"
></el-option>
</el-select>
</el-form-item>
<el-form-item
v-else
label="选择预计上线时间:"
:prop="`titleTestSubjectSecondModelList.${index}.predictTime`"
:rules="{ required: true, message: '请选择预计上线时间', trigger: 'change'}">
<el-date-picker
v-model="item.predictTime"
type="month"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择月">
</el-date-picker>
</el-form-item>
<i v-show="index !== 0" class="el-icon-delete icon-delete" @click="deleteSecondList(index)"></i>
</div>
</template>
<el-form-item style="margin-top: 30px">
<el-button type="primary" @click="onSubmit">提交</el-button>
<el-button @click="onReset">取消</el-button>
</el-form-item>
</el-form>
</div>
</div>
</template>
<script>
import BreadCrumb from "@/components/breadcrumb.vue";
import { openLoading, closeLoading, deepCopy } from "@/utils/utils";
import * as commonUtil from "@/utils/utils";
let checkProjectStr = (rule, value, callback) => {
if (value.indexOf("\\") != -1) {
//存在
callback(new Error("请勿输入字符“ \\ "));
} else if (value.indexOf(".") != -1) {
callback(new Error("请勿输入字符“ . "));
} else {
callback();
}
};
export default {
components: {
BreadCrumb
},
data() {
return {
curmbFirst: "教培项目",
curmbSecond: "学科管理",
jumPathThird: '/subject-manager',
curmbThird: '新建学科',
detailInfo: {}, // 接口返回
formData: {
// deleteFlag: 0,
id: 0,
name: '',
seqNo: 0,
status: 2,
titleCode: '',
titleTestSubjectSecondModelList: [
{
code: '',
// deleteFlag: 0,
id: 0,
name: '',
openFlag: 1,
predictTime: '',
seqNo: '',
subjectFirstId: '',
projectId: '',
titleTestSubjectSecondResourceModelList: [{
// deleteFlag: 0,
id: 0,
resourceId: 0,
seqNo: 0,
subjectSecondId: 0,
type: 0
}]
}
],
},
gradeList: [], // 职称列表
projectList: [], // 项目列表
rules: {
titleCode: [
{ required: true, message: "请输入选择职称", trigger: "change" },
],
name: [
{ required: true, message: "请输入学科名称", trigger: "blur" },
{ min: 1, max: 20, message: "输入长度为1-20的科学名称", trigger: "blur" },
{ validator: checkProjectStr, trigger: "blur" }
],
},
secondNameRules: [
{ required: true, message: "请输入二级分类名称", trigger: "blur" },
{ min: 1, max: 20, message: "输入长度为1-20的二级分类名称", trigger: "blur" },
{ validator: checkProjectStr, trigger: "blur" }
],
secondCodeRules: [
{ required: true, message: "请输入二级分类代码", trigger: "blur" },
{ min: 1, max: 8, message: "输入长度为1-8的二级分类代码", trigger: "blur" },
]
}
},
created() {
const { id } = this.$route.query;
if (id) {
this.getSubjectDetail(id);
}
this.getGradeList();
this.getProjectList();
},
mounted() {
commonUtil.resizeHeight();
},
methods: {
// 学科详情
getSubjectDetail(id) {
openLoading(this);
this.GET(`portal/titleTest/info/${id}`).then(res => {
closeLoading(this);
if (res.code == "000000") {
console.log('_______data_______', res.data);
this.detailInfo = res.data;
this.onReset();
}
});
},
// 获取职称列表
getGradeList() {
openLoading(this);
this.GET("portal/titleTest/grade/list").then(res => {
closeLoading(this);
if (res.code == "000000") {
const { titleGradeModelList = [] } = res.data;
this.gradeList = titleGradeModelList;
}
});
},
// 获取项目列表
getProjectList() {
openLoading(this);
this.GET("portal/titleTest/cme/list").then(res => {
closeLoading(this);
if (res.code == "000000") {
this.projectList = res.data;
}
});
},
// 添加二级分类
addSecondList() {
this.formData.titleTestSubjectSecondModelList.push({
code: '',
// deleteFlag: 0,
id: 0,
name: '',
openFlag: 1,
predictTime: '',
seqNo: '',
subjectFirstId: '',
projectId: '',
titleTestSubjectSecondResourceModelList: [{
// deleteFlag: 0,
id: 0,
resourceId: 0,
seqNo: 0,
subjectSecondId: 0,
type: 0
}]
});
},
// 删除二级分类
deleteSecondList(index) {
this.$confirm('确定删除此二级分类吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.formData.titleTestSubjectSecondModelList.splice(index, 1);
}).catch(() => {
});
},
onSubmit() {
this.$refs['formData'].validate((valid) => {
if (!valid) {
return false;
}
const params = deepCopy(this.formData);
for (let item of params.titleTestSubjectSecondModelList) {
let id = item.projectId;
item.titleTestSubjectSecondResourceModelList[0]['resourceId'] = id || 0;
delete item.projectId;
}
// params.createdName = this.$store.state.reservationManage.userName;
openLoading(this);
this.POST("portal/titleTest/insertOrUpdate", params).then(res => {
closeLoading(this);
if (res.code == "000000") {
this.$message.success('提交成功')
}
});
});
},
// 重置
onReset() {
if (this.detailInfo.id) {
const result = deepCopy(this.detailInfo);
const modelList = [];
for (let item of result.secondSubjectModelList) {
if (item.resourceModelList && item.resourceModelList[0]) {
item.projectId = item.resourceModelList[0]['resourceId']
item.titleTestSubjectSecondResourceModelList = item.resourceModelList;
delete item.resourceModelList;
} else {
item.projectId = 0;
item.titleTestSubjectSecondResourceModelList = [{
// deleteFlag: 0,
id: 0,
resourceId: 0,
seqNo: 0,
subjectSecondId: 0,
type: 0
}]
}
modelList.push(item);
}
result.titleTestSubjectSecondModelList = modelList;
delete result.secondSubjectModelList;
this.formData = result;
} else {
this.formData = {
// deleteFlag: 0,
id: 0,
name: '',
seqNo: 0,
status: 2,
titleCode: '',
titleTestSubjectSecondModelList: [
{
code: '',
// deleteFlag: 0,
id: 0,
name: '',
openFlag: 1,
predictTime: '',
seqNo: '',
subjectFirstId: '',
projectId: '',
titleTestSubjectSecondResourceModelList: [{
// deleteFlag: 0,
id: 0,
resourceId: 0,
seqNo: 0,
subjectSecondId: 0,
type: 0
}]
}
],
}
}
}
},
}
</script>
<style lang="scss" scoped>
.notice-editor-wrap {
background: #fff;
}
.prot-dialog-tips-1 {
text-align: center !important;
}
.add-content{
padding: 30px 0;
}
.list-block{
position: relative;
padding: 20px 10px 0px;
border: 1px solid #cdcdcd;
border-radius: 5px;
margin-top: 25px;
}
.icon-delete{
position: absolute;
right: 20px;
top: 20px;
font-size: 30px;
color: red;
cursor: pointer;
}
</style>
...@@ -223,6 +223,7 @@ ...@@ -223,6 +223,7 @@
<el-radio :label="1">普通项目</el-radio> <el-radio :label="1">普通项目</el-radio>
<el-radio :label="2">CME项目</el-radio> <el-radio :label="2">CME项目</el-radio>
<el-radio :label="3">开放模板</el-radio> <el-radio :label="3">开放模板</el-radio>
<el-radio :label="5">职称考试</el-radio>
</el-radio-group> </el-radio-group>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="centerDialogVisible = false">取 消</el-button> <el-button @click="centerDialogVisible = false">取 消</el-button>
...@@ -465,6 +466,9 @@ export default { ...@@ -465,6 +466,9 @@ export default {
toTemplatePage(isPreview = 0) { toTemplatePage(isPreview = 0) {
this.$router.push("template-open?projectType=3&isPreview=" + isPreview); this.$router.push("template-open?projectType=3&isPreview=" + isPreview);
}, },
toProfessionalExamPage(isPreview = 0) {
this.$router.push("edit-professional-exam?projectType=5&isPreview=" + isPreview);
},
toEditCustomPage(isPreview = 0) { toEditCustomPage(isPreview = 0) {
this.setKind(0); this.setKind(0);
this.$router.push("edit-custom?projectType=4&isPreview=" + isPreview); this.$router.push("edit-custom?projectType=4&isPreview=" + isPreview);
...@@ -478,12 +482,14 @@ export default { ...@@ -478,12 +482,14 @@ export default {
}, },
handleCreateProject() { handleCreateProject() {
if (this.newProjectType == 1) { if (this.newProjectType == 1) {
// 1 普通项目 2 CME项目 // 1 普通项目 2 CME项目 5 职称考试
this.toPage(); this.toPage();
} else if (this.newProjectType == 2) { } else if (this.newProjectType == 2) {
this.toCmePage(); this.toCmePage();
} else if (this.newProjectType == 3) { } else if (this.newProjectType == 3) {
this.toTemplatePage(); this.toTemplatePage();
} else if (this.newProjectType == 5) {
this.toProfessionalExamPage();
} }
}, },
...@@ -716,6 +722,15 @@ export default { ...@@ -716,6 +722,15 @@ export default {
projectId + "&level=" + level + "&pageNum=" + this.formInline.pageNo + projectId + "&level=" + level + "&pageNum=" + this.formInline.pageNo +
"&projectStatus=" + row.projectStatus "&projectStatus=" + row.projectStatus
); );
} else if (row.projectType === 5) {
this.$router.push(
"edit-professional-exam?projectType=5&projectId=" +
projectId +
"&level=" +
level +
"&pageNum=" +
this.formInline.pageNo
);
} }
} else if (type === 7) { } else if (type === 7) {
//提醒审核 //提醒审核
......
因为 它太大了无法显示 源差异 。您可以改为 查看blob
<template>
<div class="item-manager-wrap">
<bread-crumb :curmbFirst="curmbFirst" :curmbSecond="curmbSecond"></bread-crumb>
<div class="component-content screenSet" id="screenSet">
<div class="header-title">学科管理</div>
<el-row :gutter="30" class="row" type="flex" style="margin-top: 10px;">
<el-form ref="formInline" :model="formInline" label-width="75px" style="min-width:1200px;">
<el-col style="width: 300px">
<el-form-item label="学科名称:">
<el-input style="width: 192px;" v-model="formInline.subjectName" size="small" placeholder="请输入学科名称"></el-input>
</el-form-item>
</el-col>
<el-col style="width: 600px">
<el-form-item label="发布状态:">
<el-select size="small" v-model="formInline.status" placeholder="请选择发布状态">
<el-option
v-for="item in optionStatus"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4" style="padding:0;text-align:right;padding-right:15px;">
<el-button type="primary" size="small" @click="searchList">查询</el-button>
<el-button type="default" size="small" @click="resetForm" style="margin-left:0;">重置</el-button>
</el-col>
</el-form>
</el-row>
<el-form :model="formInline" class="demo-form-inline">
<el-form-item >
<el-button class="add-button" size="small" type="primary" @click="openProject()">新建项目</el-button>
</el-form-item>
</el-form>
<el-table class="item-table" :data="tableData" style="width: 100%">
<el-table-column prop="id" label="ID编号" min-width="100" align="center"></el-table-column>
<el-table-column prop="firstSubjectName" label="学科名称" align="center"></el-table-column>
<!-- <el-table-column prop="title" label="所属职称" align="center"></el-table-column> -->
<el-table-column prop="createdName" label="创建人" align="center"></el-table-column>
<el-table-column prop="statusText" label="状态" align="center"></el-table-column>
<el-table-column fixed="right" label="操作" min-width="250" align="center">
<template slot-scope="scope">
<el-button
v-for="btn in scope.row.btns"
:key="btn.type"
@click="onBtnClick(scope.row, btn)"
type="primary"
size="small"
>{{ btn.name }}</el-button>
</template>
</el-table-column>
<div slot="empty">
<div class="table-empty">
<img src="../../assets/image/no-content1.png" />
<p>没有查询到相关结果</p>
</div>
</div>
</el-table>
<div class="pagination">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="formInline.pageNo"
:page-sizes="[10, 30, 50, 100]"
:page-size="formInline.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalRows"
></el-pagination>
</div>
<!-- 初审 弹窗 -->
<el-dialog
title="项目初审"
:visible.sync="firstCheckVisible"
width="600px"
:close-on-click-modal="false"
center
>
<span style="margin: 0 20px;">{{ `项目《${currentRow.projectName}》初审结果为?` }}</span>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleCheckLeft">通 过</el-button>
<el-button @click="handleCheckRight">不通过</el-button>
</span>
</el-dialog>
<!-- 复审 弹窗 -->
<el-dialog
title="项目复审"
:visible.sync="secondCheckVisible"
width="600px"
:close-on-click-modal="false"
center
>
<span style="margin: 0 20px;">{{ `项目《${currentRow.projectName}》复审结果为?` }}</span>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleCheckLeft">通 过</el-button>
<el-button @click="handleCheckRight">不通过</el-button>
</span>
</el-dialog>
<!-- 删除 弹窗 -->
<el-dialog
title="确认删除"
:show-close="false"
:visible.sync="deleteVisible"
:close-on-click-modal="false"
width="600px"
center
>
<p style="text-align: center;">删除后将不可撤销,确认删除吗?</p>
<span slot="footer" class="dialog-footer">
<el-button @click="confirmDelete">删 除</el-button>
<el-button type="primary" @click="hideDeleteFrom">取 消</el-button>
</span>
</el-dialog>
<!-- 修改状态 -->
<el-dialog
:title="changeStatusConfig.title"
:show-close="false"
:visible.sync="changeStatusVisible"
:close-on-click-modal="false"
width="600px"
center
>
<p style="text-align: center;">{{changeStatusConfig.message}}</p>
<span slot="footer" class="dialog-footer">
<el-button @click="changeStatusVisible=false">取 消</el-button>
<el-button type="primary" @click="changeStatusPre">确 认</el-button>
</span>
</el-dialog>
</div>
</div>
</template>
<script>
import BreadCrumb from "../../components/breadcrumb.vue";
import { create } from "domain";
import { mapGetters, mapActions } from "vuex";
import { returnData } from "../../utils/mock";
import { openLoading, closeLoading } from "../../utils/utils";
import * as commonUtil from "../../utils/utils";
let vm = null;
export default {
components: {
BreadCrumb
},
data() {
return {
changeStatusVisible: false,
currentRow: null,
currentType: 4,
changeStatusConfig: {
title: "确认通过该项目模版审核吗?",
message: "下架后,用户新建项目则无法看到该模版"
},
idValue: "",
curmbFirst: "教培项目",
curmbSecond: "学科管理",
firstCheckVisible: false, // 各种操作的确认弹窗
secondCheckVisible: false,
searchParam: {
name: "",
status: "",
pageNo: 1,
pageSize: 10
},
cmeBtnText: "",
currentRow: {},
optionStatus: [
{ value: "", label: "全部" },
{ value: 1, label: "草稿" },
{ value: 2, label: "未上架" },
{ value: 3, label: "审核中/待审核" },
{ value: 4, label: "已上架" },
{ value: 5, label: "已下架" },
{ value: 6, label: "已拒绝/未上架" }
],
tableData: [],
totalRows: 0,
loading: true,
timingTime: "",
currentPage: 1,
formInline: {
subjectName: "",
status: "",
pageNo: 1,
pageSize: 10
},
idType: "",
deleteVisible: false,
isRoleOfOuter: 0
};
},
computed: {
...mapGetters([
"_token"
// "idType",
])
},
created() {
vm = this;
vm.idType = localStorage.getItem("storageIdType"); //
vm.isRoleOfOuter = localStorage.getItem("isRoleOfOuter") - 0; // 内部管理员权限
let pageSize = vm.formInline.pageSize;
console.log("idType:", vm.idType);
if (this.$route.query.pageNum) {
this.formInline = { ...this.$store.state.common.itemManager };
this.formInline.pageNo = parseInt(this.$route.query.pageNum);
this.formInline.pageSize = pageSize;
}
this.$nextTick(function() {
this.getProjectList();
});
},
// 挂载到Dom完成时
mounted: function() {
commonUtil.resizeHeight();
},
methods: {
...mapActions(["updateItemManager", "setKind"]),
hideDeleteFrom() {
this.deleteVisible = false;
},
// 打开新建页面
openProject() {
this.$router.push("edit-subject");
},
toEditCustomPage(isPreview = 0) {
this.setKind(0);
this.$router.push("edit-custom?projectType=4&isPreview=" + isPreview);
},
hanldeCmeClick(row) {
this.currentRow = row;
let status = row.projectStatus;
// 7.待初审 8.初审未通过 9.待复审 10.复审未通过 11.复审通过
if (status == 7 || status == 8) {
// 按钮显示 初审
this.firstCheckVisible = true;
} else if (status == 9 || status == 10) {
// 按钮显示 复审
this.secondCheckVisible = true;
} else if (status == 11) {
// 按钮显示 发布
this.changeStatus(row, 3);
}
},
handleCheckLeft() {
// 左边通过
this.goToCheckAuth(1);
},
handleCheckRight() {
this.goToCheckAuth(2);
},
goToCheckAuth(refuse) {
let row = this.currentRow;
let req = {};
openLoading(vm);
// refuse = 1 : 同意 refuse = 2:拒绝
vm.GET(
`portal/cme/verifyProject?projectId=${row.id}&refuse=${refuse}`,
req
).then(res => {
closeLoading(vm);
// debugger;
vm.firstCheckVisible = false;
vm.secondCheckVisible = false;
if (res.code == "000000") {
vm.getProjectList();
this.$message({
message: "审核成功",
type: "success"
});
} else {
this.$message.error(res.message);
}
});
},
searchList() {
this.formInline.pageNo = 1;
this.getProjectList();
},
//查询项目列表
getProjectList() {
let req = {};
req = this.formInline;
openLoading(vm);
vm.GET("portal/titleTest/list", req).then(res => {
closeLoading(vm);
if (res.code == "000000") {
const { list = [], total } = res.data;
vm.tableData = list.map(item => {
let statusText = '';
let btns = [];
// 设置按钮名称、类型、操作之后的status
let [edit, publish, accept, reject, outOf, del] = [
{ name: '编辑', type: 'edit' },
{ name: '发布', type: 'publish', next: 3 },
{ name: '通过', type: 'accept', next: 4 },
{ name: '拒绝', type: 'reject', next: 6 },
{ name: '下架', type: 'outOf', next: 5 },
{ name: '删除', type: 'del', next: 7 },
];
switch (item.status) {
case 1:
statusText = '草稿';
btns = [edit, publish, del];
break;
case 2:
statusText = '未上架';
btns = [edit, publish, del];
break;
case 3:
statusText = '审核中/待审核';
btns = [accept, reject];
break;
case 4:
statusText = '已上架';
btns = [edit, outOf];
break;
case 5:
statusText = '已下架';
btns = [edit, del];
break;
case 6:
statusText = '已拒绝/未上架';
btns = [edit, publish, del];
break;
default:
//
}
return {
...item,
statusText,
btns,
}
});
//console.log(vm.tableData);
vm.totalRows = total;
}
});
},
changeStatusPre() {
this.changeStatus(this.currentRow, this.currentType);
this.changeStatusVisible = false;
},
changeStatusForSP(row, type) {
this.currentRow = row;
this.currentType = type;
if (type == 4) {
this.changeStatusConfig.title = "确认通过该项目审核吗?";
this.changeStatusConfig.message =
"审核通过后,该项目范围内的学员可在云鹊医App进行培训学习";
} else if (type == 6) {
this.changeStatusConfig.title = "确认要拒绝该项目吗?";
this.changeStatusConfig.message = "";
}
this.changeStatusVisible = true;
},
onBtnClick(item, btn) {
if (btn.type === 'edit') {
this.$router.push(
"edit-subject?projectId=" +
item.id +
"&level=" +
item.level +
"&pageNum=" +
this.formInline.pageNo
);
} else {
this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.changeStatus(item.id, btn.next);
}).catch(() => {
});
}
},
// 修改状态
changeStatus(id, status) {
this.POST("portal/titleTest/changeSubjectStatus", { id, status }).then(res => {
this.$message.info(res.message);
if (res.code == "000000") {
console.log(res);
this.getProjectList();
}
});
},
//改变状态
changeStatus(row, type) {
let projectId = row.id;
let level = row.level;
if (type === 0) {
this.updateItemManager(this.formInline);
//编辑
if (row.projectType === 1) {
this.$router.push(
"edit-manager?projectType=1&projectId=" +
projectId +
"&level=" +
level +
"&pageNum=" +
this.formInline.pageNo
);
} else if (row.projectType === 2) {
this.$router.push(
"edit-cme?projectType=2&projectId=" +
projectId +
"&level=" +
level +
"&pageNum=" +
this.formInline.pageNo
);
} else if (row.projectType === 3) {
this.$router.push(
"template-open?projectType=3&projectId=" +
projectId +
"&level=" +
level +
"&pageNum=" +
this.formInline.pageNo
);
} else if (row.projectType === 4) {
this.$router.push(
"edit-custom?projectType=4&projectId=" +
projectId + "&level=" + level + "&pageNum=" + this.formInline.pageNo +
"&projectStatus=" + row.projectStatus
);
}
} else if (type === 7) {
//提醒审核
let req = {
portalProjectId: projectId,
warnType: 1
};
vm.GET("portal/portalCheck/remindPortalCheck", req).then(res => {
vm.$message.info(res.message);
vm.getProjectList();
// if (res.code == "000000") {
// console.log(res);
// vm.getProjectList();
// } else {
// vm.$message.info(res.message);
// }
});
} else {
let req = {
projectId: projectId,
changeStatus: vm.getType(type)
};
vm.POST("portal/portalInfo/changeStatus", req).then(res => {
vm.$message.info(res.message);
if (res.code == "000000") {
console.log(res);
vm.getProjectList();
//changeStatus之后remindPortalCheck
if (type == 4 || type == 6 || type == 8) {
//发送消息
let warnType = "";
if (type == 4) {
warnType = 3;
} else if (type == 6) {
warnType = 4;
} else if (type == 8) {
warnType = 5;
}
let req = {
portalProjectId: projectId,
warnType: warnType
};
vm.GET("portal/portalCheck/remindPortalCheck", req).then(res => {
vm.$message.info(res.message);
if (res.code == "000000") {
vm.getProjectList();
}
});
}
}
});
}
},
getType(value) {
let data = value;
if (data == 8) {
data = 2;
}
return data;
},
delItem(row) {
this.deleteVisible = true;
this.currentRow = row;
},
hideDeleteFrom() {
this.deleteVisible = false;
},
// 删除项目
confirmDelete() {
let req = {};
vm.DELETE("portal/portalInfo/delete/" + this.currentRow.id, req).then(
res => {
vm.$message.info(res.message);
if (res.code == "000000") {
this.deleteVisible = false;
vm.getProjectList();
}
}
);
},
// 重置表单
resetForm() {
vm.formInline = Object.assign(
{},
{
subjectName: "",
status: "",
pageNo: 1,
pageSize: 10,
duringTime: ""
}
);
vm.getProjectList();
},
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
this.formInline.pageSize = val;
this.handleCurrentChange(this.searchParam.pageNo);
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.formInline.pageNo = val;
this.getProjectList();
//需要判断是否检索
// if (!this.flag) {
// this.currentChangePage(this.tableDataEnd);
// } else {
// this.currentChangePage(this.filterTableDataEnd);
// }
}, //组件自带监控当前页码
currentChangePage(list) {
let from = (this.currentPage - 1) * this.pageSize;
let to = this.currentPage * this.pageSize;
this.tableDataEnd = [];
for (; from < to; from++) {
if (list[from]) {
this.tableDataEnd.push(list[from]);
}
}
},
}
};
</script>
<style lang="scss">
.item-table .el-button {
margin: 5px 0;
}
.item-manager-wrap {
.component-content {
background: #fff;
padding: 10px;
.header-title {
padding: 10px 12px;
font-size: 12px;
color: #449284;
border-bottom: 1px solid #efefef;
}
.demo-form-inline {
margin-right: 20px;
.add-button {
float: right;
margin-right: 10px;
}
}
.table-empty {
img {
width: 100px;
}
p {
margin-top: -50px;
}
}
}
}
.el-tooltip__popper {
max-width: 50%;
}
</style>
...@@ -191,7 +191,7 @@ ...@@ -191,7 +191,7 @@
// index: 'credit-send-manage' // index: 'credit-send-manage'
// }, // },
// ] // ]
// }, // },
], ],
outsideItems: [ // 外部用户 路由 outsideItems: [ // 外部用户 路由
{ {
...@@ -361,7 +361,7 @@ ...@@ -361,7 +361,7 @@
} }
] ]
} }
const message = { const message = {
title: '消息推送', title: '消息推送',
icon: 'el-icon-message', icon: 'el-icon-message',
...@@ -410,6 +410,12 @@ ...@@ -410,6 +410,12 @@
index: 'advert-simple-manage' index: 'advert-simple-manage'
}; };
const subjectManager = {
title: '学科管理',
icon: 'el-icon-setting',
index: 'subject-manager'
};
const eduRole = { const eduRole = {
title: '角色权限', title: '角色权限',
icon: 'el-icon-menu', icon: 'el-icon-menu',
...@@ -441,7 +447,7 @@ ...@@ -441,7 +447,7 @@
title: '学分发放管理', title: '学分发放管理',
icon: 'el-icon-document', icon: 'el-icon-document',
index: 'credit-send-manage' index: 'credit-send-manage'
}, },
// { // {
// title: '外部资源管理', // title: '外部资源管理',
// icon: 'el-icon-document', // icon: 'el-icon-document',
...@@ -469,7 +475,8 @@ ...@@ -469,7 +475,8 @@
] ]
}; };
vm.items[1].subs.push(subjectManager);
vm.items[1].subs.push(itemComponent); vm.items[1].subs.push(itemComponent);
vm.items[1].subs.push(templateManager); vm.items[1].subs.push(templateManager);
vm.items[1].subs.push(followSider); vm.items[1].subs.push(followSider);
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册