feat:修改token失效

This commit is contained in:
lixg
2022-11-29 13:45:02 +08:00
parent dc1f46a19c
commit 556ad2d54d
3 changed files with 505 additions and 442 deletions

View File

@@ -41,7 +41,7 @@ export default defineComponent({
const store = useStore(); const store = useStore();
const isLogin = ref(false); const isLogin = ref(false);
// console.log("router", router.getRoutes(), route); // console.log("router", router.getRoutes(), route);
console.log("版本0.01------------"); console.log("版本0.02------------");
const routes = computed(() => { const routes = computed(() => {
return router.getRoutes().filter((e) => e.meta?.isLink); return router.getRoutes().filter((e) => e.meta?.isLink);
}); });

View File

@@ -2,7 +2,7 @@
* @Author: lixg lixg@dongwu-inc.com * @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-21 14:32:52 * @Date: 2022-11-21 14:32:52
* @LastEditors: lixg lixg@dongwu-inc.com * @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2022-11-29 13:07:24 * @LastEditTime: 2022-11-29 13:44:40
* @FilePath: /fe-manage/src/api/config.js * @FilePath: /fe-manage/src/api/config.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/ */
@@ -52,7 +52,10 @@ http.interceptors.response.use(
if (code === 0 || code === 200) { if (code === 0 || code === 200) {
return response; return response;
} else { } else {
if (code === 1000) {
window.open("https://u-pre.boe.com/web/", '_self'); window.open("https://u-pre.boe.com/web/", '_self');
}
// window.open("https://u-pre.boe.com/web/", '_self');
console.log("api %o", msg); console.log("api %o", msg);
} }
return response; return response;

View File

@@ -5,11 +5,12 @@
<img class="img" src="../../assets/images/projectadd/picture.png" /> <img class="img" src="../../assets/images/projectadd/picture.png" />
</div> </div>
<div class="imgfor"> <div class="imgfor">
<div class="forz">{{projectInfo.name || '-'}}</div> <div class="forz">{{ projectInfo.name || "-" }}</div>
<div class="fort"> <div class="fort">
<div class="fort1">项目经理{{projectInfo.manager || '-'}}</div> <div class="fort1">项目经理{{ projectInfo.manager || "-" }}</div>
<div class="fort2"> <div class="fort2">
起止时间{{projectInfo.beginTime || '-'}} {{projectInfo.endTime || '-'}} 起止时间{{ projectInfo.beginTime || "-" }}
{{ projectInfo.endTime || "-" }}
</div> </div>
</div> </div>
</div> </div>
@@ -54,7 +55,7 @@
<div class="split"></div> <div class="split"></div>
<div class="onerow"> <div class="onerow">
<div class="taskmain">任务大纲</div> <div class="taskmain">任务大纲</div>
<button class="btn" @click="showFaceIn">批量面授报名</button> <!-- <button class="btn" @click="showFaceIn">批量面授报名</button> -->
<router-link to="/temTask" class="edit"> <router-link to="/temTask" class="edit">
<img <img
class="editimg" class="editimg"
@@ -272,14 +273,17 @@
</div> </div>
</a-tab-pane> </a-tab-pane>
<a-tab-pane key="2" tab="公告" force-render> <a-tab-pane key="2" tab="公告" force-render>
<div class="split"></div> <div class="split"></div>
<a-tabs v-model:activeKey="activeKeyNotice"> <a-tabs v-model:activeKey="activeKeyNotice">
<a-tab-pane key="11" tab="公告"> <a-tab-pane key="11" tab="公告">
<div class="notice"> <div class="notice">
<div class="ntc_body"> <div class="ntc_body">
<div class="ntc_switch"> <div class="ntc_switch">
<a-switch size="small" v-model:checked="checked" @click="changeopclo" /> <a-switch
size="small"
v-model:checked="checked"
@click="changeopclo"
/>
<div <div
class="opclo" class="opclo"
:style="{ display: hideshow ? 'block' : 'none' }" :style="{ display: hideshow ? 'block' : 'none' }"
@@ -317,9 +321,7 @@
</div> </div>
</div> </div>
</a-tab-pane> </a-tab-pane>
</a-tabs> </a-tabs>
</a-tab-pane> </a-tab-pane>
<a-tab-pane key="3" tab="项目积分"> <a-tab-pane key="3" tab="项目积分">
<div class="split"></div> <div class="split"></div>
@@ -331,7 +333,7 @@
<div class="pjc_body"> <div class="pjc_body">
<div class="groupright"> <div class="groupright">
<div class="spandiv"><span class="spantext">规则</span></div> <div class="spandiv"><span class="spantext">规则</span></div>
<div v-if="edit" class="btns" style="display:none"> <div v-if="edit" class="btns" style="display: none">
<div class="btn1" @click="edit = !edit"> <div class="btn1" @click="edit = !edit">
<img src="../../assets/images/projectadd/edit1.png" /> <img src="../../assets/images/projectadd/edit1.png" />
<span class="btn1text">编辑</span> <span class="btn1text">编辑</span>
@@ -505,26 +507,33 @@
<div class="setc_name"><span>项目时间</span></div> <div class="setc_name"><span>项目时间</span></div>
<div class="setc_main"> <div class="setc_main">
<span style="color: #999999" <span style="color: #999999"
>{{ projectInfo.beginTime }} {{ projectInfo.endTime }}</span >{{ projectInfo.beginTime }}
{{ projectInfo.endTime }}</span
> >
</div> </div>
</div> </div>
<div class="set_content"> <div class="set_content">
<div class="setc_name"><span>项目经理</span></div> <div class="setc_name"><span>项目经理</span></div>
<div class="setc_main"> <div class="setc_main">
<span style="color: #999999">{{ projectInfo.manager }}</span> <span style="color: #999999">{{
projectInfo.manager
}}</span>
</div> </div>
</div> </div>
<div class="set_content"> <div class="set_content">
<div class="setc_name"><span>资源归属</span></div> <div class="setc_name"><span>资源归属</span></div>
<div class="setc_main"> <div class="setc_main">
<span style="color: #999999">{{ projectInfo.sourceBelong }}</span> <span style="color: #999999">{{
projectInfo.sourceBelong
}}</span>
</div> </div>
</div> </div>
<div class="set_content"> <div class="set_content">
<div class="setc_name"><span>项目说明</span></div> <div class="setc_name"><span>项目说明</span></div>
<div class="setc_main"> <div class="setc_main">
<span style="color: #999999">{{ projectInfo.remark }}</span> <span style="color: #999999">{{
projectInfo.remark
}}</span>
</div> </div>
</div> </div>
<div class="set_content"> <div class="set_content">
@@ -540,13 +549,17 @@
<div class="set_content"> <div class="set_content">
<div class="setc_name"><span>项目级别</span></div> <div class="setc_name"><span>项目级别</span></div>
<div class="setc_main"> <div class="setc_main">
<span style="color: #999999">{{ projectInfo.level }}</span> <span style="color: #999999">{{
projectInfo.level
}}</span>
</div> </div>
</div> </div>
<div class="set_content"> <div class="set_content">
<div class="setc_name"><span>培训体系</span></div> <div class="setc_name"><span>培训体系</span></div>
<div class="setc_main"> <div class="setc_main">
<span style="color: #999999">{{ projectInfo.systemId }}</span> <span style="color: #999999">{{
projectInfo.systemId
}}</span>
</div> </div>
</div> </div>
<div class="set_content"> <div class="set_content">
@@ -569,32 +582,51 @@
<div class="box"></div> <div class="box"></div>
<div class="onetitle">上传共享文档</div> <div class="onetitle">上传共享文档</div>
<div class="oneedi"> <div class="oneedi">
<a-switch v-model:checked="docChecked" ></a-switch> <a-switch v-model:checked="docChecked"></a-switch>
</div> </div>
</div> </div>
<div class="btnbox" style="margin:20px;"> <div class="btnbox" style="margin: 20px">
<a-upload <a-upload
v-model:file-list="fileList" v-model:file-list="fileList"
name="file" name="file"
action="/api/file/upload" action="/api/file/upload"
@change="handleChange" @change="handleChange"
> >
<span class="xkbtn" style="cursor: pointer; font-size: 17px" >上传</span> <span
<img src="@/assets/images/basicinfo/cloud.png" style="cursor: pointer; class="xkbtn"
width:34px;height:34px; style="cursor: pointer; font-size: 17px"
" alt=""> >上传</span
>
<img
src="@/assets/images/basicinfo/cloud.png"
style="cursor: pointer; width: 34px; height: 34px"
alt=""
/>
</a-upload> </a-upload>
<div class="btnbox" style="margin:20px;"> <div class="btnbox" style="margin: 20px">
<span style="color: #999999"> <span style="color: #999999">
支持pdf.ppt.pptx.doc.docx.xls.xlsx.jpeg.png.gif.zip 支持pdf.ppt.pptx.doc.docx.xls.xlsx.jpeg.png.gif.zip
</span> </span>
</div> </div>
<div v-for="item in docList" :key="item.src" class="docListStyle"> <div
<img src="@/assets/images/basicinfo/download.png" style="cursor: pointer; v-for="item in docList"
width:40px;height:40px;margin-right:40px; :key="item.src"
" alt=""> class="docListStyle"
<span style="font: oblique 16px Sans-serif">{{item.name}}</span> >
<span style="color: #4ea6ff;float:right;">删除</span> <img
src="@/assets/images/basicinfo/download.png"
style="
cursor: pointer;
width: 40px;
height: 40px;
margin-right: 40px;
"
alt=""
/>
<span style="font: oblique 16px Sans-serif">{{
item.name
}}</span>
<span style="color: #4ea6ff; float: right">删除</span>
</div> </div>
</div> </div>
</div> </div>
@@ -646,11 +678,18 @@
</template> </template>
<script> <script>
import { ref, reactive, defineComponent, toRefs, onMounted,computed} from "vue"; import {
ref,
reactive,
defineComponent,
toRefs,
onMounted,
computed,
} from "vue";
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
import * as api from "@/api/indexTemplate" import * as api from "@/api/indexTemplate";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import {scoreRule,setScoreRule} from "@/api/indexTaskadd" import { scoreRule, setScoreRule } from "@/api/indexTaskadd";
export default defineComponent({ export default defineComponent({
name: "LibraryAdd", name: "LibraryAdd",
setup() { setup() {
@@ -736,27 +775,27 @@ export default defineComponent({
}, },
], ],
// 模板编辑列表 // 模板编辑列表
managerOptions:[ managerOptions: [
{ value: "李俊国"}, { value: "李俊国" },
{ value: "将小米"}, { value: "将小米" },
{ value: "刘孟君"}, { value: "刘孟君" },
], ],
sourceBelongOptions:[ sourceBelongOptions: [
{ value: "项目一"}, { value: "项目一" },
{ value: "项目二"}, { value: "项目二" },
{ value: "项目三"}, { value: "项目三" },
], ],
levelOptions:[ levelOptions: [
{ value: "集团级"}, { value: "集团级" },
{ value: "组织级"}, { value: "组织级" },
{ value: "现地级"}, { value: "现地级" },
{ value: "部门级"}, { value: "部门级" },
], ],
systemOptions:[ systemOptions: [
{ value: "集团级"}, { value: "集团级" },
{ value: "组织级"}, { value: "组织级" },
{ value: "现地级"}, { value: "现地级" },
{ value: "部门级"}, { value: "部门级" },
], ],
taskSyllabusActive: 0, taskSyllabusActive: 0,
//在线管理等页面传递参数 //在线管理等页面传递参数
@@ -768,7 +807,7 @@ export default defineComponent({
checked: true, checked: true,
checked2: false, checked2: false,
checked3: false, checked3: false,
docChecked:true, docChecked: true,
value3: false, value3: false,
value4: false, value4: false,
hideshow: true, hideshow: true,
@@ -787,25 +826,25 @@ export default defineComponent({
seven2: null, seven2: null,
edit: true, edit: true,
// 共享文档列表 // 共享文档列表
docList:[ docList: [
{ {
name:'测试文档1.doc', name: "测试文档1.doc",
src:"", src: "",
}, },
{ {
name:'测试文档2.doc', name: "测试文档2.doc",
src:"", src: "",
}, },
{ {
name:'测试文档3.doc', name: "测试文档3.doc",
src:"", src: "",
} },
], ],
isEdit:false, // 是否处于编辑状态 isEdit: false, // 是否处于编辑状态
// 基本信息 // 基本信息
projectInfo:{ projectInfo: {
beginTime:null, beginTime: null,
endTime:null, endTime: null,
name: null, name: null,
manager: null, manager: null,
notice: null, notice: null,
@@ -815,10 +854,10 @@ export default defineComponent({
level: null, level: null,
systemId: null, systemId: null,
boeFlag: false, boeFlag: false,
status:null, status: null,
picUrl: null, picUrl: null,
noticeFlag: null, noticeFlag: null,
} },
}); });
const value = ref(""); const value = ref("");
const textnum = "150"; const textnum = "150";
@@ -881,30 +920,38 @@ export default defineComponent({
}); });
// 获取详情 // 获取详情
const getDetail = () => { const getDetail = () => {
api.templateDetail(localStorage.getItem('projectTemplateId')).then(res => { api
state.taskSyllabus = [] .templateDetail(localStorage.getItem("projectTemplateId"))
.then((res) => {
state.taskSyllabus = [];
console.log(res); console.log(res);
state.projectInfo.name = res.data.data.projectTemplateInfo.name state.projectInfo.name = res.data.data.projectTemplateInfo.name;
state.projectInfo.beginTime = res.data.data.projectTemplateInfo.beginTime state.projectInfo.beginTime =
state.projectInfo.endTime = res.data.data.projectTemplateInfo.endTime res.data.data.projectTemplateInfo.beginTime;
state.projectInfo.manager = res.data.data.projectTemplateInfo.manager state.projectInfo.endTime = res.data.data.projectTemplateInfo.endTime;
state.projectInfo.notice = res.data.data.projectTemplateInfo.notice state.projectInfo.manager = res.data.data.projectTemplateInfo.manager;
state.projectInfo.sourceBelongId = res.data.data.projectTemplateInfo.sourceBelongId state.projectInfo.notice = res.data.data.projectTemplateInfo.notice;
state.projectInfo.managerId = res.data.data.projectTemplateInfo.managerId state.projectInfo.sourceBelongId =
state.projectInfo.remark = res.data.data.stageList.remark res.data.data.projectTemplateInfo.sourceBelongId;
state.projectInfo.courseSyncFlag = res.data.data.projectTemplateInfo.courseSyncFlag state.projectInfo.managerId =
state.projectInfo.level = res.data.data.projectTemplateInfo.level res.data.data.projectTemplateInfo.managerId;
state.projectInfo.systemId = res.data.data.projectTemplateInfo.systemId state.projectInfo.remark = res.data.data.stageList.remark;
state.projectInfo.boeFlag = res.data.data.projectTemplateInfo.boeFlag state.projectInfo.courseSyncFlag =
state.projectInfo.noticeFlag = res.data.data.projectTemplateInfo.noticeFlag res.data.data.projectTemplateInfo.courseSyncFlag;
state.projectInfo.remark = res.data.data.projectTemplateInfo.remark state.projectInfo.level = res.data.data.projectTemplateInfo.level;
state.projectInfo.status = res.data.data.projectTemplateInfo.status state.projectInfo.systemId =
state.projectInfo.picUrl = res.data.data.projectTemplateInfo.picUrl res.data.data.projectTemplateInfo.systemId;
state.projectInfo.boeFlag = res.data.data.projectTemplateInfo.boeFlag;
state.projectInfo.noticeFlag =
res.data.data.projectTemplateInfo.noticeFlag;
state.projectInfo.remark = res.data.data.projectTemplateInfo.remark;
state.projectInfo.status = res.data.data.projectTemplateInfo.status;
state.projectInfo.picUrl = res.data.data.projectTemplateInfo.picUrl;
let data = res.data.data.stageList; let data = res.data.data.stageList;
console.log("data=====",data); console.log("data=====", data);
for(let i in data) { for (let i in data) {
state.taskSyllabus.push({text: data[i].name,children:[]}); state.taskSyllabus.push({ text: data[i].name, children: [] });
for(let j in data[i].taskList) { for (let j in data[i].taskList) {
state.taskSyllabus[i].children.push({ state.taskSyllabus[i].children.push({
course: checkType(data[i].taskList[j].type), course: checkType(data[i].taskList[j].type),
name: data[i].taskList[j].name, name: data[i].taskList[j].name,
@@ -913,65 +960,75 @@ export default defineComponent({
total: 0, //总人数 total: 0, //总人数
complete: 0, //完成人数 complete: 0, //完成人数
percent: 0, percent: 0,
});
}
}
}) })
} .catch((err) => {
} message.error("操作失败" + err);
}).catch(err => { console.log(err);
message.error("操作失败"+err) });
console.log(err) };
})
}
// 发布公告 // 发布公告
const addNotice = () => { const addNotice = () => {
let obj = { let obj = {
"name": state.projectInfo.name, name: state.projectInfo.name,
"category": state.projectInfo.category, category: state.projectInfo.category,
"picUrl": state.projectInfo.picUrl, picUrl: state.projectInfo.picUrl,
"beginTime": new Date(state.projectInfo.beginTime).getTime(), beginTime: new Date(state.projectInfo.beginTime).getTime(),
"endTime": new Date(state.projectInfo.endTime).getTime(), endTime: new Date(state.projectInfo.endTime).getTime(),
"manager": state.projectInfo.manager, manager: state.projectInfo.manager,
"managerId": state.projectInfo.managerId || 0, managerId: state.projectInfo.managerId || 0,
"sourceBelongId": state.projectInfo.sourceBelongId, sourceBelongId: state.projectInfo.sourceBelongId,
"level": state.projectInfo.level, level: state.projectInfo.level,
"systemId": state.projectInfo.systemId, systemId: state.projectInfo.systemId,
"boeFlag": state.projectInfo.boeFlag ? 1:0, boeFlag: state.projectInfo.boeFlag ? 1 : 0,
"courseSyncFlag": state.projectInfo.courseSyncFlag? 1:0, courseSyncFlag: state.projectInfo.courseSyncFlag ? 1 : 0,
"notice": state.projectInfo.notice, notice: state.projectInfo.notice,
"noticeFlag": 0, noticeFlag: 0,
"projectTemplateId": localStorage.getItem('projectTemplateId'), projectTemplateId: localStorage.getItem("projectTemplateId"),
"remark": state.projectInfo.remark, remark: state.projectInfo.remark,
"status": state.projectInfo.status, status: state.projectInfo.status,
}; };
api.templateEdit(obj).then(res => { api
message.success("公告发布成功") .templateEdit(obj)
console.log(res) .then((res) => {
}).catch(err => { message.success("公告发布成功");
message.error("公告发布失败"+err) console.log(res);
console.log(err)
}) })
} .catch((err) => {
message.error("公告发布失败" + err);
console.log(err);
});
};
// 删除阶段 // 删除阶段
const stateDel = (id) => { const stateDel = (id) => {
api.deleteStage(id).then(res => { api
message.success("删除阶段成功") .deleteStage(id)
console.log(res) .then((res) => {
}).catch(err => { message.success("删除阶段成功");
message.error("删除阶段失败"+err) console.log(res);
console.log(err)
}) })
} .catch((err) => {
message.error("删除阶段失败" + err);
console.log(err);
});
};
// 删除任务 // 删除任务
const taskDel = (id) => { const taskDel = (id) => {
api.deleteTask(id).then(res => { api
message.success("删除任务成功") .deleteTask(id)
console.log(res) .then((res) => {
}).catch(err => { message.success("删除任务成功");
message.error("删除任务失败"+err) console.log(res);
console.log(err)
}) })
} .catch((err) => {
message.error("删除任务失败" + err);
console.log(err);
});
};
const toEdit = () => { const toEdit = () => {
routered.push({ routered.push({
path: "/templateAdd", path: "/templateAdd",
@@ -980,47 +1037,53 @@ export default defineComponent({
name: state.name, name: state.name,
}, },
}); });
} };
// 新建或编辑阶段 // 新建或编辑阶段
const stateEdit = () => { const stateEdit = () => {
let obj={ let obj = {
"name": "", name: "",
"projectTemplateId": localStorage.getItem('projectTemplateId'), projectTemplateId: localStorage.getItem("projectTemplateId"),
"remark": "", remark: "",
"stageId": 0 stageId: 0,
} };
api.editStagek(obj).then(res => { api
message.success("编辑阶段成功") .editStagek(obj)
console.log(res) .then((res) => {
}).catch(err => { message.success("编辑阶段成功");
message.error("编辑阶段失败"+err) console.log(res);
console.log(err)
}) })
} .catch((err) => {
message.error("编辑阶段失败" + err);
console.log(err);
});
};
//新建或编辑阶段任务 //新建或编辑阶段任务
const taskEdit = () => { const taskEdit = () => {
let obj = { let obj = {
"courseId": 0, courseId: 0,
"duration": 0, duration: 0,
"flag": true, flag: true,
"name": "", name: "",
"projectTaskId": 0, projectTaskId: 0,
"projectTemplateId": localStorage.getItem('projectTemplateId'), projectTemplateId: localStorage.getItem("projectTemplateId"),
"stageId": 0, stageId: 0,
"type": 0 type: 0,
} };
api.editTask(obj).then(res => { api
message.success("编辑任务成功") .editTask(obj)
console.log(res) .then((res) => {
}).catch(err => { message.success("编辑任务成功");
message.error("编辑任务失败"+err) console.log(res);
console.log(err)
}) })
} .catch((err) => {
message.error("编辑任务失败" + err);
console.log(err);
});
};
const getScoreRule = () => { const getScoreRule = () => {
scoreRule({ scoreRule({
projectId: localStorage.getItem('projectTemplateId'), projectId: localStorage.getItem("projectTemplateId"),
}) })
.then((res) => { .then((res) => {
console.log("获取了项目积分规则", res.data.data); console.log("获取了项目积分规则", res.data.data);
@@ -1075,7 +1138,7 @@ export default defineComponent({
}, },
], ],
leaderScore: state.seven1, leaderScore: state.seven1,
projectId: localStorage.getItem('projectTemplateId'), projectId: localStorage.getItem("projectTemplateId"),
signScore: state.six1, signScore: state.six1,
topCompleteCourseItem: [ topCompleteCourseItem: [
{ {
@@ -1125,7 +1188,7 @@ export default defineComponent({
editRule, editRule,
scoresum, scoresum,
}; };
} },
}); });
</script> </script>
<style lang="scss"> <style lang="scss">
@@ -1194,13 +1257,13 @@ export default defineComponent({
} }
} }
} }
} }
.editBtn { .editBtn {
float:right; float: right;
margin-right: 150px; margin-right: 150px;
color:#4ea6ff; color: #4ea6ff;
cursor: pointer; cursor: pointer;
} }
.clearfix:before, .clearfix:before,
.clearfix:after { .clearfix:after {
content: " "; content: " ";
@@ -1607,14 +1670,12 @@ export default defineComponent({
} }
.notice { .notice {
.ntc_tit { .ntc_tit {
padding-top:22px; padding-top: 22px;
margin-left: 34px; margin-left: 34px;
font-size: 18px; font-size: 18px;
font-weight: 500; font-weight: 500;
color: #232425; color: #232425;
} }
.ntc_body { .ntc_body {
margin-left: 35px; margin-left: 35px;
@@ -1636,7 +1697,6 @@ export default defineComponent({
.btnarea { .btnarea {
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
} }
.area_btn { .area_btn {
width: 100px; width: 100px;
@@ -1671,7 +1731,7 @@ export default defineComponent({
} }
.projectscore { .projectscore {
padding-top:22px; padding-top: 22px;
.pjc_tit { .pjc_tit {
margin-left: 34px; margin-left: 34px;
font-size: 18px; font-size: 18px;
@@ -1750,7 +1810,7 @@ export default defineComponent({
} }
.setting { .setting {
padding-top:22px; padding-top: 22px;
.set_tit { .set_tit {
margin-left: 34px; margin-left: 34px;
font-size: 18px; font-size: 18px;