diff --git a/src/App.vue b/src/App.vue
index f3620e3e..63fa31ce 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -42,18 +42,50 @@ export default defineComponent({
});
const currentRouteName = computed(() => route.name);
+
//获取组织树
const orgTree = () => {
+ let obj = {
+ id: 0,
+ keyWord: "",
+ pageNo: 0,
+ pageSize: 20,
+ };
api
- .orgtree()
+ .getOrgInfo(obj)
.then((res) => {
- console.log("获取集团组织成功", res);
if (res.status === 200) {
- store.commit("getOrgtreeList", res.data.data);
+ // console.log("获取组织树成功", res.data.data);
+ // state.orgtreeList = res.data.data;
+ if (res.status === 200) {
+ let arr = res.data.data.rows;
+ for (let i = 0; i < arr.length; i++) {
+ let object = {
+ keyWord: "",
+ id: arr[i].id,
+ pageNo: 1,
+ pageSize: 20,
+ };
+ api
+ .getOrgInfo(object)
+ .then((res) => {
+ // console.log("获取子元素", res);
+ if (res.status === 200) {
+ arr[i].treeChildList = res.data.data.rows;
+ if (i === arr.length - 1) {
+ store.commit("getOrgtreeList", arr);
+ }
+ }
+ })
+ .catch((err) => {
+ console.log("获取子元素失败", err);
+ });
+ }
+ }
}
})
.catch((err) => {
- console.log("获取集团组织失败", err);
+ console.log("获取组织树失败", err);
});
};
orgTree();
diff --git a/src/api/index1.js b/src/api/index1.js
index 720203bd..be062ef2 100644
--- a/src/api/index1.js
+++ b/src/api/index1.js
@@ -2,7 +2,7 @@
* @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-04 22:45:31
* @LastEditors: lixg lixg@dongwu-inc.com
- * @LastEditTime: 2022-11-22 18:04:47
+ * @LastEditTime: 2022-11-24 15:11:25
* @FilePath: /fe-manage/src/api/index1.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
@@ -44,7 +44,7 @@ import qs from "qs";
//上传文件
export const uploadFile = (obj) =>
- http.post("/test/testRequest", qs.stringify({ obj }));
+ http.post("/test/testRequest", qs.stringify({ obj }));
// 接口-请求
@@ -56,7 +56,7 @@ export const getLearnPath = (obj) => http.post("/admin/router/list", obj);
export const handleLearnPath = (obj) => http.post("/admin/router/handle", obj);
//获取路径图统计数据
export const getLearnCount = (routerId) =>
- http.get("/admin/router/getCount", { params: { routerId: routerId } });
+ http.get("/admin/router/getCount", { params: { routerId: routerId } });
//新建或编辑关卡
export const editChapter = (obj) => http.post("/admin/router/editChapter", obj);
@@ -66,19 +66,19 @@ export const setConfig = (obj) => http.post("/admin/router/setConfig", obj);
export const getStudent = (obj) => http.post("/admin/router/studentList", obj);
//获取路径图详情-包含关卡及任务列表
export const getRouterDetail = (routerId) =>
- http.get("/admin/router/detail", {
- params: {
- routerId: routerId,
- },
- });
+ http.get("/admin/router/detail", {
+ params: {
+ routerId: routerId,
+ },
+ });
//添加学员
export const addStudent = (obj) => http.post("/admin/router/addStudent", obj);
//删除学员
export const delStudent = (obj) =>
- http.post("/admin/router/deleteStudent", obj);
+ http.post("/admin/router/deleteStudent", obj);
// 获取学员路径图进度明细
export const stuProgress = (obj) =>
- http.post("/admin/router/studentProcess", obj);
+ http.post("/admin/router/studentProcess", obj);
//项目基础信息-----------------------------------
//项目积分榜单
@@ -88,20 +88,35 @@ export const billboard = (obj) => http.post("/admin/project/billboard", obj);
//项目基础信息-----------------------------------
//获取字典信息
-export const getDict = (obj) => http.post("/dict/getList", obj);
-//获取组织树
-export const getOrgTree = (obj) => http.post("/admin/router/orgList", obj);
+export const getDict = (obj) => http.post('/dict/getList', obj)
+//获取组织树一级列表
+export const getOrgTree = (obj) => http.post('/admin/router/orgList', obj)
+//根据id获取组织树一级元素下所有子元素
+export const orgTreeList = (obj) => http.post('/admin/router/orgTreeList', obj)
+//根据id获取部门下学员
+export const searchUsersByOrgId = (obj) => http.post('/admin/router/searchUsersByOrgId', obj)
+
+//获取组织信息(修改版)
+export const getOrgInfo = (obj) => http.post('/admin/orgStruct/getOrgInfo', obj)
+//获取员工(修改版)
+export const getMemberInfo = (obj) => http.post('/admin/orgStruct/getMemberInfo', obj)
+//获取受众(修改版)
+export const getAudienceInfo = (obj) => http.post('/admin/orgStruct/getAudienceInfo', obj)
+//获取授权(修改版)
+export const optionAuthPerm = (obj) => http.post('/admin/AuthPerm/optionAuthPerm', obj)
+
+
// 获取组织结构树
export const orgtree = () => http.get("/org/tree");
//获取积分列表
export const noticeList = (projectId) =>
- http.post(
- `http://localhost:8080/api/admin/project/noticeList?projectId=` +
- projectId +
- ``
- );
+ http.post(
+ `http://localhost:8080/api/admin/project/noticeList?projectId=` +
+ projectId +
+ ``
+ );
// 测试方法
// import * as api from '../../api/index'
diff --git a/src/api/indexAudit.js b/src/api/indexAudit.js
index 4e03e356..fc1aa0a1 100644
--- a/src/api/indexAudit.js
+++ b/src/api/indexAudit.js
@@ -16,4 +16,7 @@ export const courseListView = (obj) => http.post('/admin/offcourse/listReview',
export const auditList = (obj) => http.post('/admin/project/auditList', obj)
//项目审核
-export const auditView = (obj) => http.post('/admin/project/auditView', obj)
\ No newline at end of file
+export const auditView = (obj) => http.post('/admin/project/auditView', obj)
+
+//面授课审核
+export const courseAuditView = (obj) => http.post('/admin/offcourse/auditView', obj)
\ No newline at end of file
diff --git a/src/api/indexInvist.js b/src/api/indexInvist.js
index 31bb417f..77be057e 100644
--- a/src/api/indexInvist.js
+++ b/src/api/indexInvist.js
@@ -38,16 +38,15 @@ import http from "./config";
// 接口-请求
//创建评估
-export const createAppraiseMessage = (obj) => http.post('/survey/createAppraiseMessage', obj,);
-//删除评估信息
-export const deleteAppraise = (obj) => http.post('/survey/deleteAppraise', { params: obj })
//根据ID获取评估信息详情
-export const queryAppraiseDetailById = (obj) => http.post('/survey/queryAppraiseDetailById', { params: obj })
-
-//修改评估信息
-export const updateAppraiseMessage = (obj) => http.post('/survey/updateAppraiseMessage', obj)
+export const queryAppraiseDetailById = (obj) => http.post('/assessment/queryAssessmentDetailById', obj,{
+ headers: {
+ 'token': '123',
+ 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
+ }
+ })
//获取全部评估信息接口
export const queryAssessmentDetailList = (obj) => http.post('/assessment/queryAssessmentDetailList', obj)
diff --git a/src/api/indexTaskadd.js b/src/api/indexTaskadd.js
index b88140e7..3a4567d3 100644
--- a/src/api/indexTaskadd.js
+++ b/src/api/indexTaskadd.js
@@ -25,4 +25,6 @@ export const setScoreRule = (obj) => http.post('/admin/project/setScoreRule', ob
export const planList = (obj) => http.post('/admin/offcourse/planList', obj)
//获取面授课列表
-export const list = (obj) => http.post('/admin/offcourse/list', obj)
\ No newline at end of file
+export const list = (obj) => http.post('/admin/offcourse/list', obj)
+
+export const addTempTask = (obj) => http.post('/admin/project//template/editTask', obj)
\ No newline at end of file
diff --git a/src/api/indexTemplate.js b/src/api/indexTemplate.js
index be42523c..ef8b4745 100644
--- a/src/api/indexTemplate.js
+++ b/src/api/indexTemplate.js
@@ -19,3 +19,6 @@ export const editTask = (obj) => http.post('/admin/project/template/editTask',ob
export const handleTemplates = (obj) => http.post('/admin/project/template/handle',obj);
// 模板库列表
export const templateList = (obj) => http.post(`/admin/project/template/list`,obj);
+// 发布项目公告
+export const publishNotice = (obj) => http.post(`/admin/project/template/publishNotice`,obj);
+
diff --git a/src/api/method.js b/src/api/method.js
index 07bba27f..ef5ccc81 100644
--- a/src/api/method.js
+++ b/src/api/method.js
@@ -162,6 +162,7 @@ function autoComma(number) {
return 0;
}
}
+//新建延迟
const commonData = {
timeout: 50
}
@@ -368,6 +369,8 @@ const commonData = {
//组织树
const organizationalTree = []
+
+const iframeUrl = "https://u-pre.boe.com/pc/iframe"
export {
toDate,
getWeek,
@@ -375,4 +378,5 @@ export {
formatNumber,
commonData,
organizationalTree,
+ iframeUrl,
}
\ No newline at end of file
diff --git a/src/components/Modals/addOnlineCourse.vue b/src/components/Modals/addOnlineCourse.vue
new file mode 100644
index 00000000..69d053fa
--- /dev/null
+++ b/src/components/Modals/addOnlineCourse.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/drawers/ AssessmentList.vue b/src/components/drawers/ AssessmentList.vue
index 234da65a..bb3b9803 100644
--- a/src/components/drawers/ AssessmentList.vue
+++ b/src/components/drawers/ AssessmentList.vue
@@ -86,6 +86,10 @@ export default {
type: Number,
default: null,
},
+ titleTag: {
+ type: Boolean,
+ default: false,
+ }
},
setup(props, ctx) {
const state = reactive({
@@ -100,9 +104,10 @@ export default {
});
const closeDrawer = () => {
ctx.emit("update:assessmentVisible", false);
+ ctx.emit("update:titleTag", true);
};
const afterVisibleChange = (bool) => {
- console.log("state getAllInvistText", bool);
+ console.log("state getAllInvistText", bool,"======",props.titleTag);
if (props.assessmentVisible) {
getAllInvistText();
}
diff --git a/src/components/drawers/AddActive.vue b/src/components/drawers/AddActive.vue
index 3951753b..16281b21 100644
--- a/src/components/drawers/AddActive.vue
+++ b/src/components/drawers/AddActive.vue
@@ -380,6 +380,23 @@ export default {
message.error(`${props.edit ? "编辑" : "新增"}阶段任务失败`);
});
} else if (props.isLevel == 3) {
+ apiTask
+ .addTempTask({
+ courseId: res.data.data.activityId,
+ duration: res.data.data.activityDuration,
+ name: res.data.data.activityName,
+ projectTemplateId: props.projectTemplateId,
+ projectTaskId: props.projectTaskId || 0,
+ stageId: props.chooseStageId,
+ type: 9,
+ })
+ .then(() => {
+ message.success(`${props.edit ? "编辑" : "新增"}阶段任务成功`);
+ })
+ .catch(() => {
+ message.error(`${props.edit ? "编辑" : "新增"}阶段任务失败`);
+ });
+
console.log("");
}
};
diff --git a/src/components/drawers/AddDiscuss.vue b/src/components/drawers/AddDiscuss.vue
index ca05cb6c..f2440d46 100644
--- a/src/components/drawers/AddDiscuss.vue
+++ b/src/components/drawers/AddDiscuss.vue
@@ -192,10 +192,12 @@ export default {
});
} else if (props.isLevel == 2) {
apiTask.addTask({
- courseId: res.data.data.discussId,
- name: res.data.data.discussName,
- routerId: props.routerId,
- routerTaskId: props.routerTaskId || 0,
+ courseId: res.data.data.discussId,
+ duration: res.data.data.discussExplain,
+ name: res.data.data.discussName,
+ projectId: props.projectId,
+ projectTaskId: props.projectTaskId || 0,
+ stageId: props.chooseStageId,
type: 8,
});
} else if (props.isLevel == 3) {
diff --git a/src/components/drawers/AddFaceteach.vue b/src/components/drawers/AddFaceteach.vue
index 6acf985d..5bca4104 100644
--- a/src/components/drawers/AddFaceteach.vue
+++ b/src/components/drawers/AddFaceteach.vue
@@ -385,6 +385,7 @@ import { queryFaceDetailById, editPlan } from "../../api/indexFace";
import dayjs from "dayjs";
import AssessmentList from "../drawers/ AssessmentList.vue";
// import { toDate } from "../../api/method";
+import { queryWorkDetailById } from "../../api/indexWork";
export default {
name: "AddFaceteach",
components: {
@@ -465,6 +466,7 @@ export default {
face: true, //面授传给配置作业的标识
chooseWork: null, //配置的work
chooseWorkName: null, //配置的work名字
+ chooseWorkId: null, //配置的work ID
chooseMent: null,
chooseMentName: null,
assessmentVisible: false,
@@ -486,7 +488,10 @@ export default {
state.checkedAssessment = false;
state.chooseMent = null;
state.chooseWork = null;
+ state.chooseWorkId = null;
+ state.chooseWorkName = null;
state.chooseCourse = null;
+ state.chooseCourseName = null;
};
const closeDrawer = () => {
ctx.emit("update:addfaceteachVisible", false);
@@ -501,7 +506,6 @@ export default {
// 该页面显示同时 edit为true 时,发送查询请求,
queryFaceTeach();
}
- // queryFaceTeach();
};
const showDrawerSelFacet = () => {
state.selfacetvisible = true;
@@ -546,6 +550,7 @@ export default {
state.inputV6 = result.afterStart;
state.inputV7 = result.beforeEnd;
state.fileList = JSON.parse(result.attach);
+ state.chooseWorkId = result.homeWorkId;
// state.radioV1 = result.
state.checkedHolidy =
result.completeType == 1
@@ -568,6 +573,12 @@ export default {
state.radioV1 = "2";
}
state.checkedAssessment = result.evalFlag == 1 ? true : false;
+ if (state.chooseWorkId) {
+ queryWorkDetailById({ workId: state.chooseWorkId }).then((res) => {
+ state.chooseWork = res.data.data;
+ state.chooseWorkName = res.data.data.workName;
+ });
+ }
});
};
@@ -603,7 +614,7 @@ export default {
evalFlag: state.checkedAssessment == true ? 1 : 0,
evaluateId:
state.chooseMent == null ? 0 : state.chooseMent.assessmentId,
- homeWorkId: 0,
+ homeWorkId: state.chooseWorkId || 0,
name: state.inputV1,
noProjectMember: state.radioV2 == "1" ? 0 : 1,
offcourseId: 0,
@@ -613,6 +624,7 @@ export default {
signWordFlag: 0,
teacherId: 0,
testId: 0,
+ teacher: state.inputV2,
};
if (props.edit) {
@@ -697,12 +709,15 @@ export default {
const closeTagWork = () => {
state.chooseWork = null;
state.chooseWorkName = null;
+ state.chooseWorkId = null;
};
const getWork = (value) => {
console.log("getWork", value);
state.chooseWork = value;
state.chooseWorkName = value.workName;
- console.log("getWorkName", value.workName);
+ state.chooseWorkId = value.workId;
+
+ // console.log("getWorkName", value.workName);
};
const handleChange = ({ file, fileList }) => {
if (file.status !== "uploading") {
diff --git a/src/components/drawers/AddHomework.vue b/src/components/drawers/AddHomework.vue
index 0f2a48df..7a8fa48c 100644
--- a/src/components/drawers/AddHomework.vue
+++ b/src/components/drawers/AddHomework.vue
@@ -368,8 +368,18 @@ export default {
const cle = () => {
console.log("xx", formState);
+ let obj = {
+ submitEndTime: dayjs(formState.choosedTime[1]).format("YYYY-MM-DD"),
+ submitStartTime: dayjs(formState.choosedTime[0]).format("YYYY-MM-DD"),
+ workEnclosureAddress: "",
+ workId: props.edit ? props.EditWorkId : 0,
+ workName: formState.workName,
+ workRequirement: formState.workRequirement,
+ };
if (props.face) {
- ctx.emit("getWork", formState);
+ createWorkTask(obj).then((res) => {
+ ctx.emit("getWork", res.data.data);
+ });
}
};
diff --git a/src/components/drawers/AddInvist.vue b/src/components/drawers/AddInvist.vue
index 2ba29abd..4c02bc58 100644
--- a/src/components/drawers/AddInvist.vue
+++ b/src/components/drawers/AddInvist.vue
@@ -23,27 +23,54 @@
-
+
已选择 0 条
-
已选择 1 条;
-
名称: {{ assessment.name }}
-
-
题数: {{ assessment.num }}
-
-
创建人: {{ assessment.creator }}
-
-
创建时间: {{ assessment.time }}
-
+
+ 已选择 1 条;
+ 名称: {{ assessment.name }}
+
+ 题数: {{ assessment.num }}
+
+ 创建人:
+ {{ assessment.creator }}
+
+ 创建时间:
+ {{ assessment.time }}
+
+
+
+ 已选择 1 条;
+ 名称:
+ {{ assessment1.createName }}
+
+ 题数:
+ {{
+ assessment1.essayQuestionVoList.length
+ }}
+
+ 创建人:
+ {{ assessment1.createUser }}
+
+ 创建时间:
+ {{ assessment1.createTime }}
+
+
@@ -55,6 +82,7 @@
@@ -77,6 +105,7 @@ import * as apiTask from "../../api/indexTaskadd";
import { message } from "ant-design-vue";
import AssessmentList from "./ AssessmentList.vue";
import { RouterEditTask } from "@/api/indexTask";
+import * as api from "../../api/indexInvist";
export default {
name: "AddInvist",
components: {
@@ -139,10 +168,13 @@ export default {
assessmentId: null,
assessmentName: "",
assessment: null,
+ assessment1: null,
assessmentVisible: false,
+ titleTag: false,
});
const getCheckedAss = (ass) => {
state.assessment = ass;
+ state.assessment1 = null;
};
const closeDrawer = () => {
ctx.emit("update:addinvistVisible", false);
@@ -159,8 +191,21 @@ export default {
state.assessmentId = null;
state.assessmentName = "";
state.assessment = null;
+ queryInfo();
+ };
+ const queryInfo = () => {
+ if (props.edit) {
+ state.titleTg = false;
+ //编辑讨
+ api
+ .queryAppraiseDetailById({ assessmentId: props.EditInvistId })
+ .then((res) => {
+ //更新讨论信息
+ state.assessment1 = res.data.data;
+ })
+ .catch(() => {});
+ }
};
-
const updateTask = () => {
if (state.assessment == null) {
return message.warning("请选择评估");
diff --git a/src/components/drawers/AddProject.vue b/src/components/drawers/AddProject.vue
new file mode 100644
index 00000000..4622d2c4
--- /dev/null
+++ b/src/components/drawers/AddProject.vue
@@ -0,0 +1,890 @@
+
+
+
+
+
+
+
+
+
+
+ 已选择
+ {{ 0 }}
+ 条
+
+
+
+ 已选择
+ {{
+ selectedRows.length
+ }}
+ 条
+ 名称:
+ {{ selectedRows[0].name }}
+
+ 项目经理:
+ {{ selectedRows[0].manager }}
+
+ 创建人:
+ {{ selectedRows[0].creater }}
+
+ 创建时间:
+ {{
+ selectedRows[0].time
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 项目已存在,是否重复添加?
+
+
+
+
+
+
+
+
+
diff --git a/src/components/drawers/NoticeHis.vue b/src/components/drawers/NoticeHis.vue
index 023a452c..f7b4334f 100644
--- a/src/components/drawers/NoticeHis.vue
+++ b/src/components/drawers/NoticeHis.vue
@@ -69,7 +69,7 @@ export default {
};
noticeList(obj)
.then((res) => {
- console.log("获取公告列表成功");
+ console.log("获取公告列表成功", res.data.data);
let result = res.data.data;
if (result.total > 0) {
setNoticeData(result.rows);
diff --git a/src/components/drawers/ProjCheckPower.vue b/src/components/drawers/ProjCheckPower.vue
index 40c3f78d..db4e9b53 100644
--- a/src/components/drawers/ProjCheckPower.vue
+++ b/src/components/drawers/ProjCheckPower.vue
@@ -493,7 +493,7 @@
-
+
+ if (state.name !== "" || state.projectName !== "") {
+ api
+ .taskStudentList(objser)
+ .then((res) => {
+ state.pageNo = res.data.data.pageNo;
+ state.pageSize = res.data.data.pageSize;
+ state.pageSize = res.data.data.pageSize;
+ let newArr = [];
+ for (let i = 0; i < res.data.data.rows.length; i++) {
+ if (res.data.data.rows[i].userInfoBo.userName == state.name)
+ newArr.push(res.data.data.rows[i].userInfoBo);
+ }
+ state.tabledata = newArr;
+ })
+ .catch(() => {});
+ }
+ };
+
+ //重置任务列表
+ const resetTaskList = () => {
+ state.inputPname = "";
+ state.inputCname = "";
+ state.tableData = [];
+ state.selectedRowKeys = [];
+ state.SelectTestData = [];
+ state.currentPage = 1;
+ getManageList();
+ };
+ return {
+ ...toRefs(state),
+ closeDrawer,
+ afterVisibleChange,
+ getTableDate,
+ onSelectChange,
+ CreatSTText,
+ newTest,
+ tableDataFunc,
+ onChange,
+ getManageList,
+ searchTaskList,
+ resetTaskList,
+ };
+ },
+};
+
+}
+
+.addExamModal {
+ .ant-modal {
+ width: 80% !important;
+ }
+}
+
\ No newline at end of file
diff --git a/src/store/index.js b/src/store/index.js
index 9b93baab..038e0ec4 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -2,12 +2,12 @@
* @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-09 09:26:26
* @LastEditors: lixg lixg@dongwu-inc.com
- * @LastEditTime: 2022-11-21 17:43:07
+ * @LastEditTime: 2022-11-23 17:25:31
* @FilePath: /fe-manage/src/store/index.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import { createStore } from "vuex";
-
+// import * as api from '../api/index1'
export default createStore({
state: {
openpages: localStorage.getItem("openpages")
@@ -22,7 +22,7 @@ export default createStore({
assessmentName: "",
routerId: null,
- projectTemplateId:null,
+ projectTemplateId: null,
orgtreeList: [],
},
getters: {},
@@ -41,12 +41,15 @@ export default createStore({
console.log("state.assessmentName");
console.log(state.assessmentName);
},
- getOrgtreeList(state, orgtreeList) {
- state.orgtreeList = orgtreeList;
+ //获取组织树
+ getOrgtreeList(state, data) {
+ state.orgtreeList = data
},
- SET_projectTemplateId (state,projectTemplateId) {
+ SET_projectTemplateId(state, projectTemplateId) {
state.projectTemplateId = projectTemplateId;
}
+
+
},
actions: {},
modules: {},
diff --git a/src/views/courselibrary/CourseManage.vue b/src/views/courselibrary/CourseManage.vue
index c128f5d5..b0db9bb5 100644
--- a/src/views/courselibrary/CourseManage.vue
+++ b/src/views/courselibrary/CourseManage.vue
@@ -2,7 +2,7 @@
* @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-09 09:26:26
* @LastEditors: lixg lixg@dongwu-inc.com
- * @LastEditTime: 2022-11-22 20:13:01
+ * @LastEditTime: 2022-11-24 16:16:10
* @FilePath: /fe-manage/src/views/courselibrary/CourseManage.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
@@ -11,8 +11,8 @@
@@ -20,12 +20,14 @@