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", "axios": "^1.1.3",
"core-js": "^3.8.3", "core-js": "^3.8.3",
"element-plus": "^2.2.17", "element-plus": "^2.2.17",
"html2canvas": "^1.4.1",
"jquery": "^3.6.1", "jquery": "^3.6.1",
"qrcode.vue": "^3.3.3",
"qs": "^6.11.0", "qs": "^6.11.0",
"sortablejs": "^1.15.0", "sortablejs": "^1.15.0",
"vue": "^3.2.13", "vue": "^3.2.13",
@@ -3514,6 +3516,14 @@
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true "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": { "node_modules/base64-js": {
"version": "1.5.1", "version": "1.5.1",
"resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
@@ -4279,6 +4289,14 @@
"node": "^10 || ^12 || >=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": { "node_modules/css-loader": {
"version": "6.7.1", "version": "6.7.1",
"resolved": "https://registry.npmmirror.com/css-loader/-/css-loader-6.7.1.tgz", "resolved": "https://registry.npmmirror.com/css-loader/-/css-loader-6.7.1.tgz",
@@ -6332,6 +6350,18 @@
"node": ">=10.13.0" "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": { "node_modules/htmlparser2": {
"version": "6.1.0", "version": "6.1.0",
"resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz", "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz",
@@ -8757,6 +8787,14 @@
"node": ">=6" "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": { "node_modules/qs": {
"version": "6.11.0", "version": "6.11.0",
"resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz", "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==", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true "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": { "node_modules/text-table": {
"version": "0.2.0", "version": "0.2.0",
"resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz",
@@ -10186,6 +10232,14 @@
"node": ">= 0.4.0" "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": { "node_modules/uuid": {
"version": "8.3.2", "version": "8.3.2",
"resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz", "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz",
@@ -14091,6 +14145,11 @@
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true "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": { "base64-js": {
"version": "1.5.1", "version": "1.5.1",
"resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
@@ -14733,6 +14792,14 @@
"integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==", "integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==",
"dev": true "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": { "css-loader": {
"version": "6.7.1", "version": "6.7.1",
"resolved": "https://registry.npmmirror.com/css-loader/-/css-loader-6.7.1.tgz", "resolved": "https://registry.npmmirror.com/css-loader/-/css-loader-6.7.1.tgz",
@@ -16424,6 +16491,15 @@
"tapable": "^2.0.0" "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": { "htmlparser2": {
"version": "6.1.0", "version": "6.1.0",
"resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz", "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz",
@@ -18387,6 +18463,12 @@
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true "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": { "qs": {
"version": "6.11.0", "version": "6.11.0",
"resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz", "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": { "text-table": {
"version": "0.2.0", "version": "0.2.0",
"resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz",
@@ -19578,6 +19668,14 @@
"integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
"dev": true "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": { "uuid": {
"version": "8.3.2", "version": "8.3.2",
"resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz", "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz",

View File

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

View File

@@ -2,7 +2,7 @@
* @Author: lixg lixg@dongwu-inc.com * @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-07 17:06:45 * @Date: 2022-11-07 17:06:45
* @LastEditors: lixg lixg@dongwu-inc.com * @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 * @FilePath: /fe-manage/src/api/index.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
*/ */
@@ -57,3 +57,11 @@ export const getProjectDetail = (obj) => http.get('/admin/project/detail', { par
export const releaseProject=(obj)=>http.post('/admin/project/publish',obj) 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 * @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-04 22:45:31 * @Date: 2022-11-04 22:45:31
* @LastEditors: lixg lixg@dongwu-inc.com * @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 * @FilePath: /fe-manage/src/api/index1.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
*/ */

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 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 }); export const updateActivityToCompulsory = (obj) => http.post('/activity/updateActivityToCompulsory', { params: obj });

View File

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

View File

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

View File

@@ -28,11 +28,11 @@
maxlength="20" maxlength="20"
/> />
</div> </div>
<div class="btns"> <div class="btns" @click="searchInvist">
<div class="search"></div> <div class="search"></div>
<div class="btnText">搜索</div> <div class="btnText">搜索</div>
</div> </div>
<div class="btnsn"> <div class="btnsn" @click="resetInvist">
<div class="search"></div> <div class="search"></div>
<div class="btnText">重置</div> <div class="btnText">重置</div>
</div> </div>
@@ -182,7 +182,7 @@ export default {
return columns; return columns;
}; };
const rowSelection = { const rowSelection = {
type: 'radio', type: "radio",
// onChange: (selectedRowKeys, selectedRows) => { // onChange: (selectedRowKeys, selectedRows) => {
// this.selectedRowKeys = selectedRowKeys // this.selectedRowKeys = selectedRowKeys
// if (selectedRows.length > 1) { // if (selectedRows.length > 1) {
@@ -199,9 +199,16 @@ export default {
// // // Column configuration not to be checked // // // Column configuration not to be checked
// name: record.name, // name: record.name,
// }), // }),
onSelect: ( selectedRows, selected,selectedRowKeys) => { onSelect: (selectedRows, selected, selectedRowKeys) => {
console.log('selectedRowKeys',selectedRowKeys,'selectedRows', selectedRows, 'selected', selected) console.log(
} "selectedRowKeys",
selectedRowKeys,
"selectedRows",
selectedRows,
"selected",
selected
);
},
}; };
const getTableDate = (tableData) => { const getTableDate = (tableData) => {
@@ -269,7 +276,6 @@ export default {
appraiseId: 0, appraiseId: 0,
appraiseStartTime: "", appraiseStartTime: "",
appraiseTag: "", appraiseTag: "",
createTime: "",
createUser: 0, createUser: 0,
researchId: 0, researchId: 0,
researchName: "", researchName: "",
@@ -325,7 +331,71 @@ export default {
// state.createLoading = false; // 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(() => { onMounted(() => {
// createInvist(); // createInvist();
getAllInvistText(); getAllInvistText();
@@ -338,6 +408,8 @@ export default {
rowSelection, rowSelection,
createInvist, createInvist,
getAllInvistText, getAllInvistText,
searchInvist,
resetInvist,
}; };
}, },
}; };

View File

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

View File

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

View File

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

View File

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

View File

@@ -70,7 +70,6 @@
animation="1000" animation="1000"
@start="onStart" @start="onStart"
@end="onEnd" @end="onEnd"
:list="draggableList"
> >
<template #item="{ element }"> <template #item="{ element }">
<div class="item" :key="element.id"> <div class="item" :key="element.id">
@@ -78,6 +77,17 @@
</div> </div>
</template> </template>
</draggable> </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> </div>
</template> </template>
<script> <script>
@@ -93,6 +103,8 @@ import * as api from "../../api/index1";
// } // }
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import draggable from "vuedraggable"; import draggable from "vuedraggable";
import QrcodeVue from "qrcode.vue";
import html2canvas from "html2canvas";
export default { export default {
name: "SystemManage", name: "SystemManage",
components: { components: {
@@ -100,6 +112,7 @@ export default {
// LoadingOutlined, // LoadingOutlined,
// PlusOutlined, // PlusOutlined,
draggable, draggable,
QrcodeVue,
}, },
setup() { setup() {
const state = reactive({ const state = reactive({
@@ -135,6 +148,8 @@ export default {
name: "拖拽六", name: "拖拽六",
}, },
], ],
qrcodeUrl: "https://www.baidu.com/",
qrcodeSize:800,
}); });
const showDrawer = () => { const showDrawer = () => {
@@ -214,6 +229,80 @@ export default {
const golearningpath = () => { const golearningpath = () => {
router.push({ path: "/learningpath", params: { id: 1 } }); 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 { return {
...toRefs(state), ...toRefs(state),
showDrawer, showDrawer,
@@ -221,6 +310,7 @@ export default {
handleChange, handleChange,
beforeUpload, beforeUpload,
golearningpath, golearningpath,
downloadQr,
}; };
}, },
}; };
@@ -228,6 +318,7 @@ export default {
<style lang="scss"> <style lang="scss">
.systemManage { .systemManage {
width: 100%; width: 100%;
.ant-input-textarea-show-count { .ant-input-textarea-show-count {
position: relative; position: relative;
} }