Merge branch 'master' of ssh://gitlab.dongwu-inc.com:10022/BOE/fe-manage

This commit is contained in:
songwc
2022-11-09 11:45:32 +08:00
13 changed files with 613 additions and 133 deletions

98
package-lock.json generated
View File

@@ -13,7 +13,9 @@
"axios": "^1.1.3",
"core-js": "^3.8.3",
"element-plus": "^2.2.17",
"html2canvas": "^1.4.1",
"jquery": "^3.6.1",
"qrcode.vue": "^3.3.3",
"qs": "^6.11.0",
"sortablejs": "^1.15.0",
"vue": "^3.2.13",
@@ -3514,6 +3516,14 @@
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
"node_modules/base64-arraybuffer": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
"integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==",
"engines": {
"node": ">= 0.6.0"
}
},
"node_modules/base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
@@ -4279,6 +4289,14 @@
"node": "^10 || ^12 || >=14"
}
},
"node_modules/css-line-break": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz",
"integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
"dependencies": {
"utrie": "^1.0.2"
}
},
"node_modules/css-loader": {
"version": "6.7.1",
"resolved": "https://registry.npmmirror.com/css-loader/-/css-loader-6.7.1.tgz",
@@ -6332,6 +6350,18 @@
"node": ">=10.13.0"
}
},
"node_modules/html2canvas": {
"version": "1.4.1",
"resolved": "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz",
"integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
"dependencies": {
"css-line-break": "^2.1.0",
"text-segmentation": "^1.0.3"
},
"engines": {
"node": ">=8.0.0"
}
},
"node_modules/htmlparser2": {
"version": "6.1.0",
"resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz",
@@ -8757,6 +8787,14 @@
"node": ">=6"
}
},
"node_modules/qrcode.vue": {
"version": "3.3.3",
"resolved": "https://registry.npmmirror.com/qrcode.vue/-/qrcode.vue-3.3.3.tgz",
"integrity": "sha512-OsD4tQjIbxg/K6D5ZkWjBdYI9eg9K2i8qeYILdEAX5mdAydSAxV7xKmmZSP/hA12olLqEMZ9ryqDQrwa9jEMgw==",
"peerDependencies": {
"vue": "^3.0.0"
}
},
"node_modules/qs": {
"version": "6.11.0",
"resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz",
@@ -9911,6 +9949,14 @@
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true
},
"node_modules/text-segmentation": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz",
"integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
"dependencies": {
"utrie": "^1.0.2"
}
},
"node_modules/text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz",
@@ -10186,6 +10232,14 @@
"node": ">= 0.4.0"
}
},
"node_modules/utrie": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz",
"integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
"dependencies": {
"base64-arraybuffer": "^1.0.2"
}
},
"node_modules/uuid": {
"version": "8.3.2",
"resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz",
@@ -14091,6 +14145,11 @@
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
"base64-arraybuffer": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
"integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ=="
},
"base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
@@ -14733,6 +14792,14 @@
"integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==",
"dev": true
},
"css-line-break": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz",
"integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
"requires": {
"utrie": "^1.0.2"
}
},
"css-loader": {
"version": "6.7.1",
"resolved": "https://registry.npmmirror.com/css-loader/-/css-loader-6.7.1.tgz",
@@ -16424,6 +16491,15 @@
"tapable": "^2.0.0"
}
},
"html2canvas": {
"version": "1.4.1",
"resolved": "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz",
"integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
"requires": {
"css-line-break": "^2.1.0",
"text-segmentation": "^1.0.3"
}
},
"htmlparser2": {
"version": "6.1.0",
"resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz",
@@ -18387,6 +18463,12 @@
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true
},
"qrcode.vue": {
"version": "3.3.3",
"resolved": "https://registry.npmmirror.com/qrcode.vue/-/qrcode.vue-3.3.3.tgz",
"integrity": "sha512-OsD4tQjIbxg/K6D5ZkWjBdYI9eg9K2i8qeYILdEAX5mdAydSAxV7xKmmZSP/hA12olLqEMZ9ryqDQrwa9jEMgw==",
"requires": {}
},
"qs": {
"version": "6.11.0",
"resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz",
@@ -19358,6 +19440,14 @@
}
}
},
"text-segmentation": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz",
"integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
"requires": {
"utrie": "^1.0.2"
}
},
"text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz",
@@ -19578,6 +19668,14 @@
"integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
"dev": true
},
"utrie": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz",
"integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
"requires": {
"base64-arraybuffer": "^1.0.2"
}
},
"uuid": {
"version": "8.3.2",
"resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz",

View File

@@ -13,7 +13,9 @@
"axios": "^1.1.3",
"core-js": "^3.8.3",
"element-plus": "^2.2.17",
"html2canvas": "^1.4.1",
"jquery": "^3.6.1",
"qrcode.vue": "^3.3.3",
"qs": "^6.11.0",
"sortablejs": "^1.15.0",
"vue": "^3.2.13",

View File

@@ -2,7 +2,7 @@
* @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-07 17:06:45
* @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2022-11-07 20:11:23
* @LastEditTime: 2022-11-09 09:32:35
* @FilePath: /fe-manage/src/api/index.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
@@ -56,4 +56,12 @@ export const getProjectDetail = (obj) => http.get('/admin/project/detail', { par
//发布项目
export const releaseProject=(obj)=>http.post('/admin/project/publish',obj)
//获取项目学员
export const projectStudent=(obj)=>http.post('/admin/project/studentList',obj)
export const projectStudent=(obj)=>http.post('/admin/project/studentList',obj)
//撤回发布、结束
export const handleProject=(obj)=>http.post('/admin/project/handle',obj)
//获取讨论信息
export const getDiscussDetail=(obj)=>http.post('/discuss/getDiscussDetail',obj)

View File

@@ -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-06 16:48:50
* @LastEditTime: 2022-11-09 09:32:52
* @FilePath: /fe-manage/src/api/index1.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/

View File

@@ -12,6 +12,9 @@ export const deleteActivity = (obj) => http.post('/activity/deleteActivity', { p
//修改活动接口
export const updateActivity = (obj) => http.post('/activity/updateActivity', obj);
//修改阶段任务信息
export const updateTask=(obj)=>http.post('/admin/project/editTask',obj)
//修改活动是否为必修接口
export const updateActivityToCompulsory = (obj) => http.post('/activity/updateActivityToCompulsory', { params: obj });

View File

@@ -17,7 +17,7 @@
@click="closeDrawer"
/>
</div>
<div class="contentMain">
<div class="contentMain">
<div class="main_left">
<div class="main_item">
<div class="signbox">
@@ -214,11 +214,11 @@
</div>
</div>
</div>
</div>
</div>
<div class="main_btns">
<button class="btn1" @click="closeDrawer">取消</button>
<button class="btn2" @click="createActivity">确定</button>
</div>
<button class="btn1" @click="closeDrawer">取消</button>
<button class="btn2" @click="createActivity">确定</button>
</div>
</div>
</a-drawer>
</template>
@@ -277,6 +277,14 @@ export default {
edit: {
type: Boolean,
default: false,
},
editActivityId: {
type: Boolean,
default: false,
},
projectTaskId: {
type: Boolean,
default: false,
}
},
setup(props, ctx) {
@@ -309,13 +317,44 @@ export default {
};
const afterVisibleChange = (bool) => {
console.log("state", bool);
console.log("活动ID",props.editActivityId);
console.log("项目中任务ID",props.projectTaskId);
if(bool){
if(props.isStudiscuss == false){
if(props.edit){
//编辑讨论
console.log("props.editActivityId",props.editActivityId)
let obj = {
activityId: props.editActivityId,
}
api.getActivity(obj).then(res => {
console.log('获取讨论信息成功',res.data.data)
//更新讨论信息
state.inputV1 = res.data.data.activityName;
state.textV1 = res.data.data.activityNotice;
state.textV2 = res.data.data.activityExplain;
state.inputV2 = res.data.data.activityDuration;
state.inputV3 = res.data.data.activityAddress;
state.inputV5 = res.data.data.afterSignIn;
state.inputV4 = res.data.data.beforeSignIn;
state.radioV1 = res.data.data.standardSettings;
state.time[0] = res.data.data.activityStartTime;
state.time[1] = res.data.data.activityEndTime;
console.log(state.time[0])
}).catch(err=>{
console.log('获取讨论信息失败',err)
})
}
}
}
};
const cloradio1 = (value) => {
if (value != "") {
state.radioV1 = "";
}
};
//创建活动
const createActivity = () => {
if(!state.inputV1){
@@ -352,14 +391,16 @@ export default {
activityTag: "", //活动逻辑删除标识
afterSignIn: state.inputV5, //活动开始后多少分钟签到
beforeSignIn: state.inputV4, //活动开始前多少分钟签到
createTime: "", //创建时间
createUser: 0, //创建人
signOutTime: state.inputV6, //签退开始时间
standardSettings: state.radioV1, //标准设置
updateTime: "", //更新时间
updateUser: 0, //更新人
};
api
if(props.edit){
//更新编辑活动信息
updateActivity();
}else{
//新建活动信息
api
.createActivity(obj)
.then((res) => {
console.log("创建成功", res);
@@ -396,7 +437,7 @@ export default {
}else{
apiTask
.addTask({
courseId: 0,
courseId: res.data.data.activityId,
duration: obj.activityDuration,
flag: true,
name: obj.activityName,
@@ -421,8 +462,36 @@ export default {
.catch((err) => {
console.log("创建失败",err);
})
}
};
//更新编辑活动信息
const updateActivity = (obj) => {
console.log("编辑");
api.updateActivity(obj)
.then((res) => {
console.log("更新成功",res);
let taskObj = {
courseId: res.data.data.activityId,
duration: obj.activityDuration,
flag: true,
name: obj.activityName,
projectId: props.projectId,
projectTaskId: props.projectTaskId,
stageId: 0,
type: 9,
}
api.updateTask(taskObj).then((res)=> {
console.log("更新任务列表成功",res);
})
.catch((err)=> {
console.log("更新任务列表失败",err);
})
})
.catch((err) => {
console.log("更新失败",err);
})
};
return {
...toRefs(state),
afterVisibleChange,

View File

@@ -130,6 +130,10 @@ export default {
editDiscussId: {
type: Number,
default: null,
},
projectTaskId: {
type: Number,
default: null,
}
},
setup(props, ctx) {
@@ -150,6 +154,7 @@ export default {
};
const afterVisibleChange = (bool) => {
console.log("state", bool);
console.log("项目任务ID",props.projectTaskId);
if(bool){
if(props.isStudiscuss == false){
if(props.edit){
@@ -157,6 +162,7 @@ export default {
console.log("props.editDiscussId",props.editDiscussId)
let formData = new FormData();
formData.append('discussId',props.editDiscussId);
console.log("formData",formData);
api.getDiscussDetail(formData).then(res => {
console.log('获取讨论信息成功',res.data.data)
//更新讨论信息
@@ -256,12 +262,13 @@ export default {
api
.updateDiscuss(obj)
.then((res)=> {
console.log("更新成功",res)
console.log("更新成功",res);
console.log("项目任务ID",props.projectTaskId)
let taskObj={
courseId: res.data.data.discussId,
name: obj.discussName,
projectId: props.projectId,
projectTaskId: "",
projectTaskId: props.projectTaskId,
stageId: props.stageId,
type: 8,

View File

@@ -28,11 +28,11 @@
maxlength="20"
/>
</div>
<div class="btns">
<div class="btns" @click="searchInvist">
<div class="search"></div>
<div class="btnText">搜索</div>
</div>
<div class="btnsn">
<div class="btnsn" @click="resetInvist">
<div class="search"></div>
<div class="btnText">重置</div>
</div>
@@ -182,7 +182,7 @@ export default {
return columns;
};
const rowSelection = {
type: 'radio',
type: "radio",
// onChange: (selectedRowKeys, selectedRows) => {
// this.selectedRowKeys = selectedRowKeys
// if (selectedRows.length > 1) {
@@ -199,9 +199,16 @@ export default {
// // // Column configuration not to be checked
// name: record.name,
// }),
onSelect: ( selectedRows, selected,selectedRowKeys) => {
console.log('selectedRowKeys',selectedRowKeys,'selectedRows', selectedRows, 'selected', selected)
}
onSelect: (selectedRows, selected, selectedRowKeys) => {
console.log(
"selectedRowKeys",
selectedRowKeys,
"selectedRows",
selectedRows,
"selected",
selected
);
},
};
const getTableDate = (tableData) => {
@@ -269,7 +276,6 @@ export default {
appraiseId: 0,
appraiseStartTime: "",
appraiseTag: "",
createTime: "",
createUser: 0,
researchId: 0,
researchName: "",
@@ -325,7 +331,71 @@ export default {
// state.createLoading = false;
});
};
//搜索评估信息接口
const searchInvist = () => {
let objsearch = {
assessmentName: state.inputV1,
pageNo: state.currentPage,
pageSize: state.pageSize,
releaseStatus: "",
searchEndTime: "",
searchStartTime: "",
};
api
.queryAssessmentDetailList(objsearch)
.then((res) => {
if (res.status === 200) {
console.log("获取搜索的评估信息", res.data.data);
let arr = res.data.data.rows;
if (
arr.length === 0 &&
res.data.data.total > 0 &&
state.currentPage > 1
) {
state.currentPage = state.currentPage - 1;
getAllInvistText();
}
getTableDate(arr);
state.tableDataTotal = Number(res.data.data.total);
}
})
.catch((err) => {
console.log("获取全部评估信息接口失败", err);
});
};
//重置评估信息
const resetInvist = () => {
state.inputV1 = "";
let objreset = {
assessmentName: state.inputV1,
pageNo: state.currentPage,
pageSize: state.pageSize,
releaseStatus: "",
searchEndTime: "",
searchStartTime: "",
};
api
.queryAssessmentDetailList(objreset)
.then((res) => {
if (res.status === 200) {
console.log("获取重置后的评估信息", res.data.data);
let arr = res.data.data.rows;
if (
arr.length === 0 &&
res.data.data.total > 0 &&
state.currentPage > 1
) {
state.currentPage = state.currentPage - 1;
getAllInvistText();
}
getTableDate(arr);
state.tableDataTotal = Number(res.data.data.total);
}
})
.catch((err) => {
console.log("获取重置的评估信息接口失败", err);
});
};
onMounted(() => {
// createInvist();
getAllInvistText();
@@ -338,6 +408,8 @@ export default {
rowSelection,
createInvist,
getAllInvistText,
searchInvist,
resetInvist,
};
},
};

View File

@@ -65,7 +65,7 @@
</button>
<div :style="{ display: creVote ? 'block' : 'none' }">
<div class="fileTigan">
<span style="color: #388be1">传过来的name</span>
<span style="color: #388be1">{{voteStemName}}</span>
<div class="delBox" @click="delBox()"></div>
</div>
</div>
@@ -197,6 +197,7 @@ export default {
ascriptionId: "",
voteStemId: "",
voteId:"",
voteStemName:"",
});
const closeDrawer = () => {
ctx.emit("update:addvoteVisible", false);
@@ -213,6 +214,7 @@ export default {
state.creVote = data.creVote;
state.ascriptionId = data.ascriptionId;
state.voteStemId = data.voteStemId;
state.voteStemName = data.voteStemName;
console.log("222", state.creVote);
console.log("333", state.ascriptionId);
};

View File

@@ -159,15 +159,21 @@ export default {
//创建题干接口
const createQueTit = () => {
if (!state.questions[0].inputV) {
if (state.inputV1 == "") {
message.destroy();
return message.info("请输入题干");
return message.info("请输入投票名称");
}
// if (!state.questions.inputV) {
// message.destroy();
// return message.info("请输入题干");
// }
// if (!state.questions.optins.opvalue) {
// message.destroy();
// return message.info("请输入选项");
// }
console.log(state.questions[0].inputV);
console.log('111111',state.questions);
// console.log('22222',state.questions.inputV);
// console.log('333333',state.questions.options);
let obj = [
{
ascriptionId: 0,
@@ -176,7 +182,7 @@ export default {
{
createUser: 0,
optionId: 0,
optionName: "",
optionName: state.questions[0].options[0].opvalue,
optionOrderNum: "",
optionPictureAddress: "",
stem: "",
@@ -190,15 +196,16 @@ export default {
updateUser: 0,
voteStemFlag: "",
voteStemId: 0,
voteStemName: "",
voteStemName: state.questions[0].inputV,
},
];
api
.createOptionMessage(obj)
.then((res) => {
console.log("创建成功", res);
console.log('res.data.data[0].ascriptionId',res.data.data[0].ascriptionId);
console.log('res.data.data[0].voteStemId',res.data.data[0].voteStemId);
// console.log('res.data.data[0].ascriptionId',res.data.data[0].ascriptionId);
// console.log('res.data.data[0].voteStemId',res.data.data[0].voteStemId);
// console.log('state.questions[0].inputV',state.questions[0].inputV);
message.success("创建成功");
//获取题干信息
let objstem = {
@@ -217,7 +224,8 @@ export default {
let stemData = {
creVote: state.creVote,
ascriptionId: res.data.data[0].ascriptionId,
voteStemId:res.data.data[0].voteStemId
voteStemId: res.data.data[0].voteStemId,
voteStemName: state.questions[0].inputV,
};
ctx.emit("getData", stemData);
closeDrawer();

View File

@@ -58,13 +58,13 @@
/>
</div>
<div style="display: flex; margin-bottom: 20px">
<div class="btnn btn1">
<div class="btnn btn1" @click="searchSubmit">
<div class="search"></div>
<div class="btnText" v-on:click="searchSubmit">搜索</div>
<div class="btnText" >搜索</div>
</div>
<div class="btn btn2">
<div class="btn btn2" @click="searchReset">
<div class="search"></div>
<div class="btnText" v-on:click="searchReset">重置</div>
<div class="btnText" >重置</div>
</div>
</div>
</div>
@@ -849,11 +849,11 @@
</div>
</div>
<div class="del_btnbox">
<div class="del_btn btn1">
<div class="btnText" @click="delete_exit">取消</div>
<div class="del_btn btn1" @click="closeStopModal">
<div class="btnText" >取消</div>
</div>
<div class="del_btn btn2">
<div class="btnText" @click="delete_exit">确定</div>
<div class="del_btn btn2" @click="finishProject">
<div class="btnText" >确定</div>
</div>
</div>
</div>
@@ -879,11 +879,11 @@
<span>您确定要删除此项目吗</span>
</div>
<div class="del_btnbox">
<div class="del_btn btn1">
<div class="btnText" @click="delete_exit">取消</div>
<div class="del_btn btn1" @click="closeDeleteModal">
<div class="btnText" >取消</div>
</div>
<div class="del_btn btn2">
<div class="btnText" @click="delete_exit">确定</div>
<div class="del_btn btn2" @click="deleteProject">
<div class="btnText" >确定</div>
</div>
</div>
</div>
@@ -910,10 +910,10 @@
</div>
<div class="del_btnbox">
<div class="del_btn btn1">
<div class="btnText" @click="delete_exit">取消</div>
<div class="btnText" @click="closeStartModal">取消</div>
</div>
<div class="del_btn btn2">
<div class="btnText" @click="delete_exit">确定</div>
<div class="btnText" @click="templateProject">确定</div>
</div>
</div>
</div>
@@ -1014,11 +1014,11 @@
<div class="back">项目撤回后学员进度保留发布后可继续学习</div>
</div>
<div class="del_btnbox">
<div class="del_btn btn1">
<div class="btnText" @click="delete_exit">取消</div>
<div class="del_btn btn1" @click="closeBackModal">
<div class="btnText" >取消</div>
</div>
<div class="del_btn btn2">
<div class="btnText" @click="delete_exit">确定</div>
<div class="del_btn btn2" @click="recallProject">
<div class="btnText" >确定</div>
</div>
</div>
</div>
@@ -1080,8 +1080,17 @@ export default {
currentEditChildrensProjectId: "",
dcProjectID: "",
currentPage: 1, //当前页
tableDataTotal: -1, //学习路径列表总数
pageSize: 10, //每页10条数据
projectStudentsNum:0,//发布弹窗-学员人数
releaseProjectId: null, //发布的项目id
recallProjectId:null,//撤回的项目id
finishProjectId:null,//结束的项目id
deleteProjectId:null,//删除的项目id
templateProjectId:null,//存为模版的项目id
});
// 数据接入 - start -
const router = useRouter();
@@ -1146,13 +1155,16 @@ export default {
endTime = "";
status = null;
managerid = "";
state.currentPage=1
getTableDate();
};
const searchSubmit = () => {
console.log('点击了搜索')
state.currentPage=1
const obj = {
pageNo: 1,
pageSize: 10,
pageNo: state.currentPage,
pageSize: state.pageSize,
beginTime: beginTime,
endTime: endTime,
status: status,
@@ -1354,6 +1366,7 @@ export default {
state.doublepro = false;
message.destroy();
message.success("创建成功");
state.currentPage=1
getTableDate();
}
})
@@ -1598,6 +1611,7 @@ export default {
state.doublesonpro = false;
message.destroy();
message.success("创建成功");
state.currentPage=1
getTableDate();
}
})
@@ -1608,6 +1622,9 @@ export default {
});
};
// 编辑多层子项目
const edvalue6 = ref("");
const edvalue7 = ref([]);
@@ -1743,26 +1760,8 @@ export default {
state.eddoublesonpro = false;
};
//确认发布项目
const releaseProject = () => {
console.log('点击发布')
let obj = {
projectId: state.releaseProjectId,
};
api
.releaseProject(obj)
.then((res) => {
console.log("发布成功", res);
message.destroy();
message.success("发布成功");
state.projectPub = false
getTableDate()
})
.catch((err) => {
console.log("发布失败", err);
});
};
//发布弹窗
//打开发布弹窗
const showProjectPub = (projectId) => {
state.projectPub = true;
state.releaseProjectId = projectId;
@@ -1783,9 +1782,142 @@ console.log('获取学员人数失败',err)
})
//获取阶段及任务总数
};
//撤回
//确认发布项目
const releaseProject = () => {
console.log('点击发布')
let obj = {
projectId: state.releaseProjectId,
};
api
.releaseProject(obj)
.then((res) => {
console.log("发布成功", res);
message.destroy();
message.success("发布成功");
state.projectPub = false
getTableDate()
})
.catch((err) => {
console.log("发布失败", err);
});
};
//关闭发布弹窗
const closeProjectPub = () => {
state.projectPub = false;
};
//打开撤回弹窗
const showBackModal = (projectId) => {
state.backModal = true;
state.recallProjectId = projectId;
};
//确认撤回发布
const recallProject = () => {
let obj = {
projectId: state.recallProjectId,
type: 0,
};
api
.handleProject(obj)
.then((res) => {
console.log("撤回成功", res);
message.destroy();
message.success("撤回成功");
state.backModal = false;
getTableDate();
})
.catch((err) => {
console.log("撤回失败", err);
});
};
//关闭撤回弹窗
const closeBackModal = () => {
state.backModal = false;
};
//打开结束弹窗
const showStopModal = (projectId) => {
state.stopModal = true;
state.finishProjectId=projectId
};
//确认结束
const finishProject=()=>{
let obj = {
projectId: state.finishProjectId,
type: -1,
};
api
.handleProject(obj)
.then((res) => {
console.log("结束成功", res);
message.destroy();
message.success("已结束");
state.stopModal = false;
getTableDate();
})
.catch((err) => {
console.log("结束失败", err);
});
}
//关闭结束弹窗
const closeStopModal = () => {
state.stopModal = false;
};
//打开删除弹窗
const showDeleteModal = (projectId) => {
state.deleteModal = true;
state.deleteProjectId=projectId
};
//确认删除
const deleteProject=()=>{
let obj = {
projectId: state.deleteProjectId,
type: -2,
};
api
.handleProject(obj)
.then((res) => {
console.log("删除成功", res);
message.destroy();
message.success("删除成功");
state.deleteModal = false;
getTableDate();
})
.catch((err) => {
console.log("删除失败", err);
});
}
//关闭删除弹窗
const closeDeleteModal = () => {
state.deleteModal = false;
};
//打开存为模版弹窗
const showStartModal = (projectId) => {
state.startModal = true;
state.templateProjectId=projectId
};
//确认存为模版
const templateProject=()=>{
let obj = {
projectId: state.templateProjectId,
type: 1,
};
api
.handleProject(obj)
.then((res) => {
console.log("模版保存成功", res);
message.destroy();
message.success("模版保存成功");
state.startModal = false;
getTableDate();
})
.catch((err) => {
console.log("模版保存失败", err);
});
}
//关闭存为模版弹窗
const closeStartModal = () => {
state.startModal = false;
};
// 数据接入 - end -
@@ -1802,9 +1934,7 @@ console.log('获取学员人数失败',err)
// 获取项目列表信息
let tableData = ref([]);
let currentPage = ref(1);
let tableDataTotal = ref("");
let pageSize = ref(10);
const columns = ref([
{
@@ -1995,7 +2125,7 @@ console.log('获取学员人数失败',err)
<a-select-option value="删除" label="删除">
<div
onClick={() => {
showDeleteModal();
showDeleteModal(value.record.projectId);
}}
>
删除
@@ -2181,7 +2311,7 @@ console.log('获取学员人数失败',err)
<a-select-option value="删除" label="删除">
<div
onClick={() => {
showDeleteModal();
showDeleteModal(value.record.projectId);
}}
>
删除
@@ -2296,7 +2426,7 @@ console.log('获取学员人数失败',err)
<a-select-option value="删除" label="删除">
<div
onClick={() => {
showDeleteModal();
showDeleteModal(value.record.projectId);
}}
>
删除
@@ -2448,7 +2578,7 @@ console.log('获取学员人数失败',err)
<a-select-option value="删除" label="删除">
<div
onClick={() => {
showDeleteModal();
showDeleteModal(value.record.projectId);
}}
>
删除
@@ -2589,7 +2719,7 @@ console.log('获取学员人数失败',err)
<a-select-option value="删除" label="删除">
<div
onClick={() => {
showDeleteModal();
showDeleteModal(value.record.projectId);
}}
>
删除
@@ -2598,7 +2728,7 @@ console.log('获取学员人数失败',err)
<a-select-option value="存为模版" label="存为模版">
<div
onClick={() => {
showStartModal();
showStartModal(value.record.projectId);
}}
>
存为模版
@@ -2639,7 +2769,7 @@ console.log('获取学员人数失败',err)
</a-select-option>
<div
onClick={() => {
showStartModal();
showStartModal(value.record.projectId);
}}
>
存为模版
@@ -2648,7 +2778,7 @@ console.log('获取学员人数失败',err)
<a-select-option value="结束" label="结束">
<div
onClick={() => {
showStopModal();
showStopModal(value.record.projectId);
}}
>
结束
@@ -2657,7 +2787,7 @@ console.log('获取学员人数失败',err)
<a-select-option value="撤回" label="撤回">
<div
onClick={() => {
showBackModal();
showBackModal(value.record.projectId);
}}
>
撤回
@@ -2686,7 +2816,7 @@ console.log('获取学员人数失败',err)
<a-select-option value="存为模版" label="存为模版">
<div
onClick={() => {
showStartModal();
showStartModal(value.record.projectId);
}}
>
存为模版
@@ -2704,7 +2834,7 @@ console.log('获取学员人数失败',err)
<a-select-option value="删除" label="删除">
<div
onClick={() => {
showDeleteModal();
showDeleteModal(value.record.projectId);
}}
>
删除
@@ -2738,17 +2868,25 @@ console.log('获取学员人数失败',err)
const getTableDate = (pagedata) => {
let obj = {
pageNo: 1,
pageSize: 10,
pageNo: state.currentPage,
pageSize: state.pageSize,
};
api
.getProjectList(pagedata ? pagedata : obj)
.then((res) => {
console.log(res);
if (res.status == 200 && res.data.code == 200) {
tableDataTotal.value = Number(res.data.data.total);
state.tableDataTotal = Number(res.data.data.total);
let data = res.data.data.rows;
// let data = state.tableData;
if (
data.length === 0 &&
res.data.data.total > 0 &&
state.currentPage > 1
) {
state.currentPage = state.currentPage - 1;
getTableDate();
}
console.log("1266", data);
data.map((value) => {
console.log("value %o", value);
@@ -2788,10 +2926,10 @@ console.log('获取学员人数失败',err)
// 翻页
const changePagination = (page) => {
console.log(page);
currentPage.value = page;
state.currentPage = page;
let pagedata = {
pageNo: page,
pageSize: 10,
pageSize: state.pageSize,
};
getTableDate(pagedata);
// getLearnPath();
@@ -2826,30 +2964,9 @@ console.log('获取学员人数失败',err)
const closeCopyModal = () => {
state.copyModal = false;
};
const showStopModal = () => {
state.stopModal = true;
};
const closeStopModal = () => {
state.stopModal = false;
};
const showDeleteModal = () => {
state.deleteModal = true;
};
const closeDeleteModal = () => {
state.deleteModal = false;
};
const showStartModal = () => {
state.startModal = true;
};
const closeStartModal = () => {
state.startModal = false;
};
const showBackModal = () => {
state.backModal = true;
};
const closeBackModal = () => {
state.backModal = false;
};
const showProjOwner = () => {
state.ProjOwnervisible = true;
};
@@ -2862,9 +2979,7 @@ console.log('获取学员人数失败',err)
const showProjManage = () => {
state.ProjManagevisible = true;
};
const closeProjectPub = () => {
state.projectPub = false;
};
return {
...toRefs(state),
selectProjectName,
@@ -2895,9 +3010,6 @@ console.log('获取学员人数失败',err)
closeProjectPub,
tableData,
currentPage,
tableDataTotal,
pageSize,
columns,
createStoreyProject,
classifyList,
@@ -2964,6 +3076,10 @@ console.log('获取学员人数失败',err)
closeeditModal3,
releaseProject,
showProjectPub,
recallProject,
finishProject,
deleteProject,
templateProject,
};
},
};

View File

@@ -236,6 +236,7 @@
v-model:projectId="projectId"
v-model:chooseStageId="chooseStageId"
v-model:editDiscussId="editDiscussId"
v-model:projectTaskId="projectTaskId"
@changeData="updateTableData"
/>
</div>
@@ -254,6 +255,8 @@
<add-active
v-model:addactiveVisible="addactivevisible"
v-model:projectId="projectId"
v-model:editActivityId="editActivityId"
v-model:projectTaskId="projectTaskId"
v-model:edit="edit"
v-model:chooseStageId="chooseStageId"
@changeData="updateTableData"
@@ -920,11 +923,12 @@ export default {
isLiveEdit: false, //直播编辑
EditRefId: null, //要编辑的外链的id
EditLiveId: null, //要编辑的直播的id
editDiscussId: null, //要编辑的讨论的id
EditWorkId: null, // 要编辑的作业id
EditTestId: null, // 要编辑的考试id
EditEvalId: null,
projectTaskId: null, // 要编辑的具体任务id
editDiscussId:null,//要编辑的讨论的id
editActivityId:null,//要编辑的活动id
EditWorkId:null, // 要编辑的作业id
EditTestId: null,// 要编辑的考试id
EditEvalId:null,
projectTaskId:null, // 要编辑的具体任务id
projectNameList: [
{
id: 1,

View File

@@ -70,7 +70,6 @@
animation="1000"
@start="onStart"
@end="onEnd"
:list="draggableList"
>
<template #item="{ element }">
<div class="item" :key="element.id">
@@ -78,6 +77,17 @@
</div>
</template>
</draggable>
<div id="qrcode" style="display:flex;flex-direction: column;">
<div>下载二维码</div>
<qrcode-vue
:value="qrcodeUrl"
:size="qrcodeSize"
style="width: 200px;height: 200px"
></qrcode-vue>
</div>
<div @click="downloadQr(200)">下载200</div>
<div @click="downloadQr(400)">下载400</div>
<div @click="downloadQr(800)">下载800</div>
</div>
</template>
<script>
@@ -93,6 +103,8 @@ import * as api from "../../api/index1";
// }
import { useRouter } from "vue-router";
import draggable from "vuedraggable";
import QrcodeVue from "qrcode.vue";
import html2canvas from "html2canvas";
export default {
name: "SystemManage",
components: {
@@ -100,6 +112,7 @@ export default {
// LoadingOutlined,
// PlusOutlined,
draggable,
QrcodeVue,
},
setup() {
const state = reactive({
@@ -135,6 +148,8 @@ export default {
name: "拖拽六",
},
],
qrcodeUrl: "https://www.baidu.com/",
qrcodeSize:800,
});
const showDrawer = () => {
@@ -214,6 +229,80 @@ export default {
const golearningpath = () => {
router.push({ path: "/learningpath", params: { id: 1 } });
};
//下载二维码图片
const downloadQr = (num) => {
console.log("num", num);
state.qrcodeSize=num
let filename = `${new Date().getTime()}.png`;
let canvas=document.getElementsByTagName('canvas')[0]
let imageUrl = canvas.toDataURL("image/png")
let canvasBox = document.createElement('canvas');
let ctx = canvasBox.getContext("2d");
var img = new Image();
// 需要添加文字的图片
img.src = imageUrl;
// 等待图片加载完成
img.onload = function(){
// 将图片添加到canvas
ctx.drawImage(img, 0, 0, 1240, 2208)
// 设置字体
ctx.font = "73px 微软雅黑 bolder"
// 设置字体颜色
ctx.fillStyle = "#955f17"
ctx.textAlign = "center"
// 添加文字和位置
ctx.fillText("微信名", 621, 1050);
// 导出为图片
let url = canvasBox.toDataURL("image/png")
let a = document.createElement("a");
a.style.display = "none";
a.download = filename;
a.href = url;
document.body.appendChild(a);
a.click();
}
// let a = document.createElement("a");
// a.style.display = "none";
// a.download = filename;
// a.href = imageUrl;
// document.body.appendChild(a);
// a.click();
html2canvas(document.querySelector("#qrcode"), {
useCORS: true, //支持图片跨域
}).then((canvas) => {
// var extra_canvas = document.createElement("canvas");
// extra_canvas.setAttribute('width',num);
// extra_canvas.setAttribute('height',num);
// var ctx = extra_canvas.getContext('2d');
// ctx.drawImage(canvas,0,0,num,num);
// let filename = `${new Date().getTime()}.png`;
// var imageUrl = extra_canvas.toDataURL("image/png",1.0);
console.log('canvas',canvas, canvas.width,canvas.style.width)
// // let ctx = canvas.getContext('2d');
// // ctx.drawImage(canvas,0,0,canvas.width, canvas.height);
// // canvas.width=num
// // canvas.height=num
// // canvas.style.width=num+'px'
// // canvas.style.height=num+'px'
// let filename = `${new Date().getTime()}.png`;
// let imageUrl = canvas.toDataURL("image/png");
// let a = document.createElement("a");
// a.style.display = "none";
// a.download = filename;
// a.href = imageUrl;
// document.body.appendChild(a);
// a.click();
});
};
return {
...toRefs(state),
showDrawer,
@@ -221,6 +310,7 @@ export default {
handleChange,
beforeUpload,
golearningpath,
downloadQr,
};
},
};
@@ -228,6 +318,7 @@ export default {
<style lang="scss">
.systemManage {
width: 100%;
.ant-input-textarea-show-count {
position: relative;
}