mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-11 11:56:46 +08:00
Merge branch 'zcwy-0425-remark' into zcwy-0415
This commit is contained in:
@@ -34,4 +34,6 @@ export const savePermission = (obj) => http.post(`${process.env.VUE_APP_ACT_API}
|
|||||||
export const saveLists = (obj) => http.post(`${process.env.VUE_APP_ACT_API}/permission/list`,obj)
|
export const saveLists = (obj) => http.post(`${process.env.VUE_APP_ACT_API}/permission/list`,obj)
|
||||||
//删除配置管理
|
//删除配置管理
|
||||||
export const deleteId = (obj) => http.post(`${process.env.VUE_APP_ACT_API}/permission/delete`,obj)
|
export const deleteId = (obj) => http.post(`${process.env.VUE_APP_ACT_API}/permission/delete`,obj)
|
||||||
|
//普通管理员权限
|
||||||
|
export const getByUserId = (obj) => http.post(`${process.env.VUE_APP_ACT_API}/permission/getByUserId`,obj)
|
||||||
|
|
||||||
|
|||||||
@@ -512,7 +512,7 @@ const qrcodeVisibleSign = () => {
|
|||||||
courseName: props.courseName,
|
courseName: props.courseName,
|
||||||
createName: data.value[coursePlanIndex.value].offteachers.map(teacher => teacher.teacherName).join(', '),
|
createName: data.value[coursePlanIndex.value].offteachers.map(teacher => teacher.teacherName).join(', '),
|
||||||
name: signName + '课程签到',
|
name: signName + '课程签到',
|
||||||
url: `${location.protocol}//${location.host}${process.env.VUE_APP_BASE_API}/admin/student/studentSign?taskId=${taskId}&taskType=${2}&type=${3}`,
|
url: `${location.protocol}//${location.host}${process.env.VUE_APP_BASE_API}/admin/student/studentSign?taskId=${taskId}&taskType=${2}&type=${3}&openCourseId=${taskId}`,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// qrCode({
|
// qrCode({
|
||||||
|
|||||||
@@ -540,7 +540,7 @@ const tablecolumns = ref([
|
|||||||
title: "操作",
|
title: "操作",
|
||||||
dataIndex: "operation",
|
dataIndex: "operation",
|
||||||
key: "operation",
|
key: "operation",
|
||||||
width: 210,
|
width: 260,
|
||||||
align: "center",
|
align: "center",
|
||||||
slots: { customRender: "action" },
|
slots: { customRender: "action" },
|
||||||
},
|
},
|
||||||
|
|||||||
36
src/utils/zipdownload.js
Normal file
36
src/utils/zipdownload.js
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
import axios from 'axios'
|
||||||
|
import {getCookieForName} from "@/api/method";
|
||||||
|
|
||||||
|
const mimeMap = {
|
||||||
|
xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
||||||
|
zip: 'application/zip'
|
||||||
|
}
|
||||||
|
|
||||||
|
const baseUrl = process.env.VUE_APP_ACT_API
|
||||||
|
export function downLoadZip(str, filename) {
|
||||||
|
var url = baseUrl + str
|
||||||
|
axios({
|
||||||
|
method: 'get',
|
||||||
|
url: url,
|
||||||
|
responseType: 'blob',
|
||||||
|
headers: { 'Authorization': 'Bearer ' + getCookieForName("token") }
|
||||||
|
}).then(res => {
|
||||||
|
resolveBlob(res, mimeMap.zip,filename)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 解析blob响应内容并下载
|
||||||
|
* @param {*} res blob响应内容
|
||||||
|
* @param {String} mimeType MIME类型
|
||||||
|
*/
|
||||||
|
export function resolveBlob(res, mimeType,filename) {
|
||||||
|
const link = document.createElement('a');// 创建a标签
|
||||||
|
let blob = new Blob([res.data], { type: mimeType }); // 设置文件类型
|
||||||
|
link.style.display = "none";
|
||||||
|
link.href = URL.createObjectURL(blob); // 创建URL
|
||||||
|
link.setAttribute("download", `${filename}`);
|
||||||
|
document.body.appendChild(link);
|
||||||
|
link.click();
|
||||||
|
URL.revokeObjectURL(link.href);
|
||||||
|
document.body.removeChild(link);
|
||||||
|
}
|
||||||
@@ -5118,7 +5118,9 @@ function onFocusEnd(){
|
|||||||
: process.env.VUE_APP_BASE_API +
|
: process.env.VUE_APP_BASE_API +
|
||||||
`/admin/student/studentSign?taskId=${
|
`/admin/student/studentSign?taskId=${
|
||||||
record.id
|
record.id
|
||||||
}&taskType=${2}&type=${3}`,
|
}&taskType=${2}&type=${3}&openCourseId=${
|
||||||
|
record.id
|
||||||
|
}`,
|
||||||
};
|
};
|
||||||
console.log("codeInfo", state.codeInfo, record);
|
console.log("codeInfo", state.codeInfo, record);
|
||||||
state.codeIndex = 0;
|
state.codeIndex = 0;
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ import { useRoute } from "vue-router";
|
|||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
import { useStore } from "vuex";
|
import { useStore } from "vuex";
|
||||||
import {boeRequest} from "@/api/request";
|
import {boeRequest} from "@/api/request";
|
||||||
|
import {downLoadZip} from "@/utils/zipdownload";
|
||||||
export default {
|
export default {
|
||||||
name: "evadown",
|
name: "evadown",
|
||||||
components: {},
|
components: {},
|
||||||
@@ -165,7 +166,8 @@ import {boeRequest} from "@/api/request";
|
|||||||
message.info('请先上传报告')
|
message.info('请先上传报告')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
window.open(`/activityApi/evaluation/download?id=${route.query.id}`);
|
// window.open(`/activityApi/evaluation/download?id=${route.query.id}`);
|
||||||
|
downLoadZip(`/evaluation/download?id=${route.query.id}`,route.query.name)
|
||||||
}
|
}
|
||||||
const listData = async () => {
|
const listData = async () => {
|
||||||
state.tableLoading = true
|
state.tableLoading = true
|
||||||
|
|||||||
@@ -49,6 +49,69 @@
|
|||||||
:pagination="false"
|
:pagination="false"
|
||||||
>
|
>
|
||||||
<template #operation="{ record, column }">
|
<template #operation="{ record, column }">
|
||||||
|
<a-space style="margin-left: 70px">
|
||||||
|
<template v-for="(permissionCode, index) in (record.permission.split(',').slice(0,2))">
|
||||||
|
<a-button
|
||||||
|
v-if="trueFalse(record.permission, permissionCode)"
|
||||||
|
type="link"
|
||||||
|
:key="`button${index}`"
|
||||||
|
@click="() => handleButtonClick(record, permissionCode)"
|
||||||
|
>
|
||||||
|
<a-tooltip>
|
||||||
|
<template #title>
|
||||||
|
<span v-if="permissionCode == 1">查看</span>
|
||||||
|
<span v-else-if="permissionCode == 2">上传</span>
|
||||||
|
<span v-else-if="permissionCode == 5">下载</span>
|
||||||
|
<span v-else-if="permissionCode == 4">编辑</span>
|
||||||
|
<span v-else-if="permissionCode == 6">删除</span>
|
||||||
|
<span v-else-if="permissionCode == 3">清空</span>
|
||||||
|
</template>
|
||||||
|
<span v-if="permissionCode == 1" class="check"></span>
|
||||||
|
<span v-else-if="permissionCode == 2" class="upload"></span>
|
||||||
|
<span v-else-if="permissionCode == 5" class="download"></span>
|
||||||
|
<span v-else-if="permissionCode == 4" class="release"></span>
|
||||||
|
<span v-else-if="permissionCode == 6" class="delete"></span>
|
||||||
|
<span v-else-if="permissionCode == 3" class="empty"></span>
|
||||||
|
</a-tooltip>
|
||||||
|
</a-button>
|
||||||
|
</template>
|
||||||
|
<a-button
|
||||||
|
type="link"
|
||||||
|
:key="'permissionSetting'"
|
||||||
|
@click="authorityItem(record)"
|
||||||
|
>
|
||||||
|
<a-tooltip title="权限设置">
|
||||||
|
<span class="authority"></span>
|
||||||
|
</a-tooltip>
|
||||||
|
</a-button>
|
||||||
|
<a-dropdown
|
||||||
|
v-if="record.permission.split(',').length > 2"
|
||||||
|
:getPopupContainer="(triggerNode) => triggerNode.parentNode"
|
||||||
|
:trigger="['click']"
|
||||||
|
>
|
||||||
|
<a class="ant-dropdown-link" @click.prevent>
|
||||||
|
更多 <DownOutlined />
|
||||||
|
</a>
|
||||||
|
<template #overlay>
|
||||||
|
<a-menu>
|
||||||
|
<template v-for="(permissionCode, index) in (record.permission.split(',').slice(2))">
|
||||||
|
<a-menu-item
|
||||||
|
v-if="trueFalse(record.permission, permissionCode)"
|
||||||
|
:key="`${index}`"
|
||||||
|
@click="() => handleButtonClick(record, permissionCode)"
|
||||||
|
>
|
||||||
|
<a-button type="link" class="btn_item">
|
||||||
|
<span :class="getIconClass(permissionCode)"></span>
|
||||||
|
{{ getButtonTitle(permissionCode) }}
|
||||||
|
</a-button>
|
||||||
|
</a-menu-item>
|
||||||
|
</template>
|
||||||
|
</a-menu>
|
||||||
|
</template>
|
||||||
|
</a-dropdown>
|
||||||
|
</a-space>
|
||||||
|
</template>
|
||||||
|
<!-- <template #operation="{ record, column }">
|
||||||
<a-space>
|
<a-space>
|
||||||
<a-button v-if="trueFalse(record.permission,1)" type="link" @click="bgcheck(record)">
|
<a-button v-if="trueFalse(record.permission,1)" type="link" @click="bgcheck(record)">
|
||||||
<a-tooltip>
|
<a-tooltip>
|
||||||
@@ -103,7 +166,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</a-dropdown>
|
</a-dropdown>
|
||||||
</a-space>
|
</a-space>
|
||||||
</template>
|
</template> -->
|
||||||
</a-table>
|
</a-table>
|
||||||
<div class="tableBox">
|
<div class="tableBox">
|
||||||
<div class="pa">
|
<div class="pa">
|
||||||
@@ -161,7 +224,7 @@
|
|||||||
<div class="bg_body_input" style="display: flex;">
|
<div class="bg_body_input" style="display: flex;">
|
||||||
<a-upload name="avatar" list-type="picture-card" class="avatar-uploader" :show-upload-list="false"
|
<a-upload name="avatar" list-type="picture-card" class="avatar-uploader" :show-upload-list="false"
|
||||||
:headers="headers"
|
:headers="headers"
|
||||||
:before-upload="beforeUpload">
|
:before-upload="beforeUpload" @change="handleChangeImg">
|
||||||
<img class="i_upload_img" v-if="formData.cover" :src="formData.cover" alt="avatar" />
|
<img class="i_upload_img" v-if="formData.cover" :src="formData.cover" alt="avatar" />
|
||||||
<div class="i_upload" v-else>
|
<div class="i_upload" v-else>
|
||||||
<div class="addimg">
|
<div class="addimg">
|
||||||
@@ -177,15 +240,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="bg_body_bt" v-if="btShowEdit">
|
<div class="bg_body_bt" v-if="btShow">
|
||||||
<div class="bg_body_bttext">上传说明</div>
|
<div class="bg_body_bttext">备注</div>
|
||||||
<div class="bg_body_input">
|
<div class="bg_body_input">
|
||||||
<span style="color: #999ba3">
|
<a-textarea placeholder="请输入备注(限200个字以内)" style="width: 334px;height: 88px;" v-model:value="formData.remarks" showCount :maxlength="200" />
|
||||||
1、仅支持1个zip压缩包和pdf报告上传;<br/>
|
|
||||||
2、单个附件命名规则:测评名称+姓名+工号(名称中间用英文输入法-连接)例如:大五职业性格测评-李玉冰-00004409.pdf
|
|
||||||
</span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="bg_body_bt" v-if="btShowEdit">
|
<div class="bg_body_bt" v-if="btShowEdit">
|
||||||
<div class="bg_body_bttext">
|
<div class="bg_body_bttext">
|
||||||
<div class="bg_body_btimg">
|
<div class="bg_body_btimg">
|
||||||
@@ -215,14 +276,49 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="bg_body_bt" v-if="btShowEdit" style="justify-content: flex-start;">
|
<div class="bg_body_bt" v-if="btShowEdit" style="justify-content: flex-start;">
|
||||||
<div class="mbl_items12">
|
<a-table
|
||||||
|
:columns="columnsUpload"
|
||||||
|
:dataSource="uploadList"
|
||||||
|
rowKey="name"
|
||||||
|
size="small"
|
||||||
|
:pagination="false"
|
||||||
|
:scroll="{ x: '100%' }"
|
||||||
|
v-if="uploadList.length > 0"
|
||||||
|
style="margin-left: 16px;"
|
||||||
|
>
|
||||||
|
<template #status="{ record }">
|
||||||
|
<div v-if="record.status"
|
||||||
|
:style="{color: {uploading: '#1890ff', done: '#52c41a', error: '#f5222d'}[record.status] || '' }"
|
||||||
|
>
|
||||||
|
{{ {uploading: '正在上传', done: '上传完成', error: '报告错误'}[record.status] || '' }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #percent="{ record }">
|
||||||
|
<div class="file_updata">
|
||||||
|
<div class="updatabox" style="margin-right: 5px">
|
||||||
|
<div
|
||||||
|
:class="`${{uploading: 'updatacolor3', done: 'updatacolor3' ,error: 'updatacolor3'}[record.status] || 'updatacolor'}`"
|
||||||
|
:style="{width:`${record.status==='uploading'?parseInt(record.percent):100}%`}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{Math.floor(record.percent)}}%
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #uploadAction="{record}">
|
||||||
|
<a-button type="link" @click="failedDownload(record)">记录下载</a-button>
|
||||||
|
<span style="margin-left: 10px"></span>
|
||||||
|
<a-button type="link" @click="delUploadList(record)">删除</a-button>
|
||||||
|
</template>
|
||||||
|
</a-table>
|
||||||
|
|
||||||
|
<!-- <div class="mbl_items12">
|
||||||
<div
|
<div
|
||||||
class="i12_box1"
|
class="i12_box1"
|
||||||
v-for="(item, index) in uploadList"
|
v-for="(item, index) in uploadList"
|
||||||
style="align-items: flex-end"
|
style="align-items: flex-end"
|
||||||
:key="index"
|
:key="index"
|
||||||
>
|
>
|
||||||
<!-- <div class="file_img"></div> -->
|
<div class="file_img"></div>
|
||||||
<div class="file_detail">
|
<div class="file_detail">
|
||||||
<div class="file_name">
|
<div class="file_name">
|
||||||
<span style="color: #6f6f6f;width:200px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;">
|
<span style="color: #6f6f6f;width:200px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;">
|
||||||
@@ -235,9 +331,12 @@
|
|||||||
:class="`${{uploading: 'updatacolor3', done: 'updatacolor' ,error: 'updatacolor2'}[item.status] || 'updatacolor'}`"
|
:class="`${{uploading: 'updatacolor3', done: 'updatacolor' ,error: 'updatacolor2'}[item.status] || 'updatacolor'}`"
|
||||||
:style="{width:`${item.status==='uploading'?parseInt(item.percent):100}%`}"></div>
|
:style="{width:`${item.status==='uploading'?parseInt(item.percent):100}%`}"></div>
|
||||||
<div v-if="item.status"
|
<div v-if="item.status"
|
||||||
style="right:-62px;"
|
style="right:-95px;"
|
||||||
:class="`${{uploading: 'updataxq1', done: 'updataxq' ,error: 'updataxq2'}[item.status] || 'updataxq'}`">
|
:class="`${{uploading: 'updataxq1', done: 'updataxq' ,error: 'updataxq2'}[item.status] || 'updataxq'}`">
|
||||||
{{ {uploading: '正在上传', done: '上传完成', error: '上传失败'}[item.status] || '' }}
|
{{ {uploading: '正在上传', done: '上传完成', error: '报告错误'}[item.status] || '' }}
|
||||||
|
<span v-if="totalNumber?.failedEntries>0||totalNumber?.successfulEntries>0" @click="failedDownload" style="color: #4ea6ff;cursor: pointer;margin-left: 5px;">
|
||||||
|
下载
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="upjd" v-if="item.percent">
|
<div class="upjd" v-if="item.percent">
|
||||||
@@ -245,16 +344,22 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="file_operation" @click="delUploadList(index)" style="color: #4ea6ff;cursor: pointer">
|
<div class="file_operation btn_item" @click="delUploadList(index)" style="color: #4ea6ff;cursor: pointer">
|
||||||
删除
|
<span style="width: 23px;height: 21px;" class="delete"></span>
|
||||||
|
<span v-if="totalNumber?.failedEntries>0||totalNumber?.successfulEntries>0" @click="failedDownload" style="color: #4ea6ff;cursor: pointer;margin-left: 5px;">
|
||||||
|
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
<div class="bg_body_bt" v-if="btShow">
|
<div class="bg_body_bt" v-if="btShowEdit">
|
||||||
<div class="bg_body_bttext">备注</div>
|
<div class="bg_body_bttext">上传说明</div>
|
||||||
<div class="bg_body_input">
|
<div class="bg_body_input">
|
||||||
<a-textarea placeholder="请输入备注(限200个字以内)" style="width: 334px;height: 88px;" v-model:value="formData.remarks" showCount :maxlength="200" />
|
<span style="color: #999ba3">
|
||||||
|
1、仅支持1个zip压缩包和pdf报告上传;<br/>
|
||||||
|
2、单个附件命名规则:测评名称+姓名+工号(名称中间用英文输入法-连接)例如:大五职业性格测评-李玉冰-00004409.pdf
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="bg_footer">
|
<div class="bg_footer">
|
||||||
@@ -264,6 +369,8 @@
|
|||||||
<a-button
|
<a-button
|
||||||
class="btn btn6"
|
class="btn btn6"
|
||||||
:loading="uploadDownLoad"
|
:loading="uploadDownLoad"
|
||||||
|
:disabled="totalNumber?.failedEntries>0"
|
||||||
|
:style="{background: totalNumber?.failedEntries>0?'#d9d9d9':'#4ea6ff'}"
|
||||||
@click="formData.id&&btShow?showUpload():reportUpload()"
|
@click="formData.id&&btShow?showUpload():reportUpload()"
|
||||||
>
|
>
|
||||||
确定
|
确定
|
||||||
@@ -421,9 +528,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="bg_body">
|
<div class="bg_body">
|
||||||
<div>上传结果</div>
|
<div>上传结果</div>
|
||||||
<div style="margin: 25px 0 0 24px;">上传的测评报告总文件数{{totalNumber.totalEntries}}个,成功{{totalNumber.successfulEntries}}个,失败{{totalNumber.failedEntries}}个;<br/>上传结果<span @click="failedDownload" style="color: #4ea6ff;cursor: pointer;">请下载</span>查看!</div>
|
<div style="margin: 25px 0 0 24px;">上传的测评报告总文件数{{totalNumber.totalEntries}}个,成功{{totalNumber.successfulEntries}}个,失败{{totalNumber.failedEntries}}个;<br/>请点击"记录下载"查看!</div>
|
||||||
<div class="bg_footer" style="margin-left: 90px;">
|
<div class="bg_footer" style="margin-left: 90px;">
|
||||||
<div class="btn btn6" @click="of_results">
|
<!-- <div class="btn btn6" @click="of_results">
|
||||||
<div class="btnText">取消</div>
|
<div class="btnText">取消</div>
|
||||||
</div>
|
</div>
|
||||||
<a-button
|
<a-button
|
||||||
@@ -431,7 +538,7 @@
|
|||||||
@click="resultsUp"
|
@click="resultsUp"
|
||||||
>
|
>
|
||||||
确定
|
确定
|
||||||
</a-button>
|
</a-button> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -511,15 +618,17 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content" style="padding: 10px 35px;">
|
<div class="content back_color" style="padding: 10px 35px;">
|
||||||
<a-table
|
<a-table
|
||||||
:columns="columnsAdd"
|
:columns="columnsAdd"
|
||||||
:data-source="tableDataAdd"
|
:data-source="tableDataAdd"
|
||||||
:loading="tableLoadingAdd"
|
:loading="tableLoadingAdd"
|
||||||
:scroll="{ x: 1000,y: 500 }"
|
:scroll="{ x: 800,y: 500 }"
|
||||||
:pagination="paginationAdd"
|
:pagination="paginationAdd"
|
||||||
|
:customRow="customRow"
|
||||||
|
:row-class-name="getRowClassName"
|
||||||
>
|
>
|
||||||
<template #addAuthority="{ record, column }">
|
<!-- <template #addAuthority="{ record, column }">
|
||||||
<a-space>
|
<a-space>
|
||||||
<a-button type="link" @click="powerSetting(record)">
|
<a-button type="link" @click="powerSetting(record)">
|
||||||
<span>权限配置</span>
|
<span>权限配置</span>
|
||||||
@@ -531,7 +640,7 @@
|
|||||||
<span class="download">删除</span>
|
<span class="download">删除</span>
|
||||||
</a-button>
|
</a-button>
|
||||||
</a-space>
|
</a-space>
|
||||||
</template>
|
</template> -->
|
||||||
</a-table>
|
</a-table>
|
||||||
</div>
|
</div>
|
||||||
<div class="bg_body">
|
<div class="bg_body">
|
||||||
@@ -605,7 +714,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
<a-modal
|
<!-- <a-modal
|
||||||
v-model:visible="bg_power2"
|
v-model:visible="bg_power2"
|
||||||
:footer="null"
|
:footer="null"
|
||||||
closable="false"
|
closable="false"
|
||||||
@@ -658,7 +767,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-modal>
|
</a-modal> -->
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="aeLoading" style="z-index:999999" :style="{ display: uploadDownLoad ? 'flex' : 'none' }">
|
<!-- <div class="aeLoading" style="z-index:999999" :style="{ display: uploadDownLoad ? 'flex' : 'none' }">
|
||||||
<a-spin :spinning="uploadDownLoad" tip="" />
|
<a-spin :spinning="uploadDownLoad" tip="" />
|
||||||
@@ -681,6 +790,7 @@ import {
|
|||||||
adminList,
|
adminList,
|
||||||
saveEvaluationDetail,
|
saveEvaluationDetail,
|
||||||
updateStatus,
|
updateStatus,
|
||||||
|
getByUserId,
|
||||||
deleteList,
|
deleteList,
|
||||||
clear,
|
clear,
|
||||||
savePermission,
|
savePermission,
|
||||||
@@ -692,6 +802,7 @@ import { useStore } from "vuex";
|
|||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
import {timeoutUpload} from "@/api/configPublic";
|
import {timeoutUpload} from "@/api/configPublic";
|
||||||
// import md5 from 'js-md5';
|
// import md5 from 'js-md5';
|
||||||
|
import {downLoadZip} from "@/utils/zipdownload";
|
||||||
export default {
|
export default {
|
||||||
name: 'evaluationUpload',
|
name: 'evaluationUpload',
|
||||||
components:{
|
components:{
|
||||||
@@ -705,6 +816,7 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
const state = reactive({
|
const state = reactive({
|
||||||
activeUrl: process.env.VUE_APP_ACT_API + '/evaluation/import',
|
activeUrl: process.env.VUE_APP_ACT_API + '/evaluation/import',
|
||||||
uploadTypes: true,
|
uploadTypes: true,
|
||||||
|
selectedRows: null,
|
||||||
uploadStatusType: true,
|
uploadStatusType: true,
|
||||||
saveNotUpload: true,
|
saveNotUpload: true,
|
||||||
stateUpload: true,
|
stateUpload: true,
|
||||||
@@ -718,7 +830,7 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
uploadDownLoad: false,
|
uploadDownLoad: false,
|
||||||
uploadDownId: null,
|
uploadDownId: null,
|
||||||
loadData: false,
|
loadData: false,
|
||||||
saveList: [],
|
saveList: {},
|
||||||
powerStatus:{},
|
powerStatus:{},
|
||||||
saveListPid: '',
|
saveListPid: '',
|
||||||
idValue: null,
|
idValue: null,
|
||||||
@@ -735,7 +847,7 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
totalAdd: 0,
|
totalAdd: 0,
|
||||||
params: {
|
params: {
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
pageSize: 100,
|
pageSize: 10,
|
||||||
},
|
},
|
||||||
paramsAdd: {
|
paramsAdd: {
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
@@ -766,6 +878,7 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
bg_remarks: false,
|
bg_remarks: false,
|
||||||
checkclick: [],
|
checkclick: [],
|
||||||
permissionId:'',
|
permissionId:'',
|
||||||
|
perWorkNum: '',
|
||||||
filesList:[],
|
filesList:[],
|
||||||
tableData:[],
|
tableData:[],
|
||||||
tableData1:[],
|
tableData1:[],
|
||||||
@@ -822,7 +935,7 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
width: "20%",
|
width: "20%",
|
||||||
dataIndex: "id",
|
dataIndex: "id",
|
||||||
key: "id",
|
key: "id",
|
||||||
align: "right",
|
align: "left",
|
||||||
slots: { customRender: "operation" },
|
slots: { customRender: "operation" },
|
||||||
};
|
};
|
||||||
if (!addedOperationColumn && state.isRegularAdministrator == '0') {
|
if (!addedOperationColumn && state.isRegularAdministrator == '0') {
|
||||||
@@ -855,6 +968,22 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
saveListItem()
|
saveListItem()
|
||||||
})
|
})
|
||||||
// 添加权限
|
// 添加权限
|
||||||
|
const customRow = (record) => ({
|
||||||
|
onClick: () => {
|
||||||
|
// 添加或移除记录,以确保其在选中数组中的状态
|
||||||
|
// const index = state.selectedRows.findIndex((item) => JSON.stringify(item) === JSON.stringify(record));
|
||||||
|
// if (index === -1) {
|
||||||
|
// state.selectedRows.push(record);
|
||||||
|
// } else {
|
||||||
|
// state.selectedRows.splice(index, 1);
|
||||||
|
// }
|
||||||
|
state.selectedRows = record
|
||||||
|
state.saveList = { ...record };
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const getRowClassName = (record, index) => {
|
||||||
|
return state.selectedRows==record ? 'highlight-row' : '';
|
||||||
|
}
|
||||||
const paginationAdd = computed(() => ({
|
const paginationAdd = computed(() => ({
|
||||||
total: state.totalAdd,
|
total: state.totalAdd,
|
||||||
showSizeChanger: true,
|
showSizeChanger: true,
|
||||||
@@ -1029,16 +1158,16 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
className: "h",
|
className: "h",
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
align: "center",
|
align: "center",
|
||||||
width: 50,
|
width: 80,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "工号",
|
title: "工号",
|
||||||
dataIndex: "departId",
|
dataIndex: "userNo",
|
||||||
key: "departId",
|
key: "userNo",
|
||||||
className: "h",
|
className: "h",
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
align: "center",
|
align: "center",
|
||||||
width: 100,
|
width: 80,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "组织部门",
|
title: "组织部门",
|
||||||
@@ -1050,28 +1179,114 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
width: 100,
|
width: 100,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "添加时间",
|
title: "归属组织",
|
||||||
dataIndex: "createTime",
|
dataIndex: "orgName",
|
||||||
key: "createTime",
|
key: "orgName",
|
||||||
className: "h",
|
className: "h",
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
align: "center",
|
align: "center",
|
||||||
width: 100,
|
width: 200,
|
||||||
|
},
|
||||||
|
// {
|
||||||
|
// title: "操作",
|
||||||
|
// width: "20%",
|
||||||
|
// fixed: 'right',
|
||||||
|
// dataIndex: "id",
|
||||||
|
// key: "id",
|
||||||
|
// align: "center",
|
||||||
|
// slots: { customRender: "addAuthority" },
|
||||||
|
// },
|
||||||
|
])
|
||||||
|
const columnsUpload = ref([
|
||||||
|
{
|
||||||
|
title: '文件名称',
|
||||||
|
dataIndex: 'name',
|
||||||
|
width: '150px',
|
||||||
|
align: 'center',
|
||||||
|
ellipsis: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "操作",
|
title: '上传状态',
|
||||||
width: "20%",
|
dataIndex: 'status',
|
||||||
fixed: 'right',
|
width: '60px',
|
||||||
dataIndex: "id",
|
align: 'center',
|
||||||
key: "id",
|
slots: { customRender: 'status' },
|
||||||
align: "center",
|
|
||||||
slots: { customRender: "addAuthority" },
|
|
||||||
},
|
},
|
||||||
])
|
{
|
||||||
|
title: '上传进度',
|
||||||
|
dataIndex: 'percent',
|
||||||
|
width: '100px',
|
||||||
|
slots: { customRender: 'percent' },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
dataIndex: 'action',
|
||||||
|
width: '100px',
|
||||||
|
align: 'center',
|
||||||
|
slots: { customRender: 'uploadAction' },
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
const handleButtonClick = (record, permissionCode) => {
|
||||||
|
switch (permissionCode) {
|
||||||
|
case '1':
|
||||||
|
bgcheck(record);
|
||||||
|
break;
|
||||||
|
case '2':
|
||||||
|
bgupload1(record);
|
||||||
|
break;
|
||||||
|
case '5':
|
||||||
|
downloadAll(record);
|
||||||
|
break;
|
||||||
|
case '4':
|
||||||
|
openEdit(record);
|
||||||
|
break;
|
||||||
|
case '6':
|
||||||
|
deleteItem(record);
|
||||||
|
break;
|
||||||
|
case '3':
|
||||||
|
emptyItem(record);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function getButtonTitle(permissionCode) {
|
||||||
|
switch (permissionCode) {
|
||||||
|
case '1':
|
||||||
|
return '查看';
|
||||||
|
case '2':
|
||||||
|
return '上传';
|
||||||
|
case '3':
|
||||||
|
return '清空';
|
||||||
|
case '4':
|
||||||
|
return '编辑';
|
||||||
|
case '5':
|
||||||
|
return '下载';
|
||||||
|
case '6':
|
||||||
|
return '删除';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getIconClass(permissionCode) {
|
||||||
|
switch (permissionCode) {
|
||||||
|
case '1':
|
||||||
|
return 'check';
|
||||||
|
case '2':
|
||||||
|
return 'upload';
|
||||||
|
case '3':
|
||||||
|
return 'empty';
|
||||||
|
case '4':
|
||||||
|
return 'release';
|
||||||
|
case '5':
|
||||||
|
return 'download';
|
||||||
|
case '6':
|
||||||
|
return 'delete';
|
||||||
|
}
|
||||||
|
}
|
||||||
const textDisabled = async (record) => {
|
const textDisabled = async (record) => {
|
||||||
await updateStatus({status:1,id:record.id}).then((res)=>{
|
await updateStatus({status:1,id:record.id}).then((res)=>{
|
||||||
if(res.code === 200){
|
if(res.code === 200){
|
||||||
message.success('禁用成功')
|
message.success('禁用成功')
|
||||||
|
getByUserIds(record.workNum)
|
||||||
saveListItem()
|
saveListItem()
|
||||||
listData()
|
listData()
|
||||||
}
|
}
|
||||||
@@ -1084,6 +1299,7 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
deleteId({id:record.id}).then((res)=>{
|
deleteId({id:record.id}).then((res)=>{
|
||||||
if(res.code === 200){
|
if(res.code === 200){
|
||||||
message.success('删除成功')
|
message.success('删除成功')
|
||||||
|
getByUserIds(record.workNum)
|
||||||
saveListItem()
|
saveListItem()
|
||||||
listData()
|
listData()
|
||||||
}
|
}
|
||||||
@@ -1094,6 +1310,7 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
const updateAuthority = (record) => {
|
const updateAuthority = (record) => {
|
||||||
state.bg_power = true
|
state.bg_power = true
|
||||||
state.permissionId = record.id
|
state.permissionId = record.id
|
||||||
|
state.perWorkNum = record.workNum
|
||||||
if(record.permission){
|
if(record.permission){
|
||||||
state.checkclick = record.permission.split(',')
|
state.checkclick = record.permission.split(',')
|
||||||
}
|
}
|
||||||
@@ -1142,10 +1359,12 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
message.info('请先上传报告')
|
message.info('请先上传报告')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
window.open(`${process.env.VUE_APP_ACT_API}/evaluation/download?id=${record.id}`);
|
// window.open(`${process.env.VUE_APP_ACT_API}/evaluation/download?id=${record.id}`);
|
||||||
|
downLoadZip(`/evaluation/download?id=${record.id}`,record.evaluationName)
|
||||||
}
|
}
|
||||||
const of_exit = () => {
|
const of_exit = () => {
|
||||||
// state.tableLoading = false
|
// state.tableLoading = false
|
||||||
|
state.totalNumber = {}
|
||||||
state.uploadTypes = false
|
state.uploadTypes = false
|
||||||
state.uploadDownLoad = false
|
state.uploadDownLoad = false
|
||||||
state.bg_check = false;
|
state.bg_check = false;
|
||||||
@@ -1161,11 +1380,6 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
}
|
}
|
||||||
// 上传结果
|
// 上传结果
|
||||||
const of_results = () => {
|
const of_results = () => {
|
||||||
if(state.totalNumber.failedEntries!=0){
|
|
||||||
message.warning('上传文件含有错误信息,已自动删除,请上传正确文件')
|
|
||||||
delUploadList()
|
|
||||||
}
|
|
||||||
state.totalNumber = {}
|
|
||||||
state.bg_results = false
|
state.bg_results = false
|
||||||
}
|
}
|
||||||
const resultsUp = () => {
|
const resultsUp = () => {
|
||||||
@@ -1192,6 +1406,10 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
message.error('上传报告含有错误报告,请检查后重新上传')
|
message.error('上传报告含有错误报告,请检查后重新上传')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if(state.uploadList.length==0&&state.btShowEdit){
|
||||||
|
message.error('请您上传附件')
|
||||||
|
return
|
||||||
|
}
|
||||||
// state.tableLoading = true
|
// state.tableLoading = true
|
||||||
state.uploadDownLoad = true
|
state.uploadDownLoad = true
|
||||||
if( !state.loadData&&state.loadNewDown){
|
if( !state.loadData&&state.loadNewDown){
|
||||||
@@ -1225,7 +1443,9 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
successIds:state.saveNotUpload?state.sussessIds.length!=0?state.sussessIds.split(','):null:null
|
successIds:state.saveNotUpload?state.sussessIds.length!=0?state.sussessIds.split(','):null:null
|
||||||
}).then((res)=>{
|
}).then((res)=>{
|
||||||
if(res.status == 500){
|
if(res.status == 500){
|
||||||
message.error('测评标题和报告名称不一致')
|
if(res.message){
|
||||||
|
message.error(res.message)
|
||||||
|
}
|
||||||
state.uploadDownLoad = false
|
state.uploadDownLoad = false
|
||||||
state.uploadStatusType = false
|
state.uploadStatusType = false
|
||||||
}
|
}
|
||||||
@@ -1233,6 +1453,9 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
state.uploadDownLoad = false
|
state.uploadDownLoad = false
|
||||||
state.bg_check = false
|
state.bg_check = false
|
||||||
}
|
}
|
||||||
|
}).catch(err=>{
|
||||||
|
state.uploadDownLoad = false
|
||||||
|
state.uploadStatusType = false
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
if(state.uploadStatusType){
|
if(state.uploadStatusType){
|
||||||
@@ -1247,6 +1470,7 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
//上传图片
|
//上传图片
|
||||||
const headers = { token: getCookieForName("token") };
|
const headers = { token: getCookieForName("token") };
|
||||||
const beforeUpload = (file) => {
|
const beforeUpload = (file) => {
|
||||||
|
console.log(file,'file')
|
||||||
const isJpgOrPng =
|
const isJpgOrPng =
|
||||||
file.type === "image/jpeg" ||
|
file.type === "image/jpeg" ||
|
||||||
file.type === "image/png"
|
file.type === "image/png"
|
||||||
@@ -1264,11 +1488,14 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
formData.append("file", file);
|
formData.append("file", file);
|
||||||
uploadImage(formData).then((res) => {
|
uploadImage(formData).then((res) => {
|
||||||
if (res.status === 200) {
|
if (res.status === 200) {
|
||||||
state.formData.cover = res.data.split('Path:')[1];
|
state.formData.cover = res.data.split('elearning')[1];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
const handleChangeImg = (info) =>{
|
||||||
|
console.log(info,'info')
|
||||||
|
}
|
||||||
const beforeUpload3 = async (file) => {
|
const beforeUpload3 = async (file) => {
|
||||||
if(!state.formData.evaluationName){
|
if(!state.formData.evaluationName){
|
||||||
message.error('请先填写测评名称')
|
message.error('请先填写测评名称')
|
||||||
@@ -1374,6 +1601,7 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
};
|
};
|
||||||
const uploadRef = ref()
|
const uploadRef = ref()
|
||||||
const delUploadList = (i) => {
|
const delUploadList = (i) => {
|
||||||
|
state.totalNumber = {}
|
||||||
state.uploadTypes = false
|
state.uploadTypes = false
|
||||||
state.uploadDownLoad = false
|
state.uploadDownLoad = false
|
||||||
state.sussessIds = null
|
state.sussessIds = null
|
||||||
@@ -1462,7 +1690,8 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
state.bg_addsetting = false
|
state.bg_addsetting = false
|
||||||
state.searchParam.createName = ''
|
state.searchParam.createName = ''
|
||||||
state.tableDataAdd = []
|
state.tableDataAdd = []
|
||||||
state.saveList = []
|
state.saveList = {}
|
||||||
|
state.selectedRows = []
|
||||||
}
|
}
|
||||||
//搜索权限
|
//搜索权限
|
||||||
const searchSave = async () => {
|
const searchSave = async () => {
|
||||||
@@ -1491,7 +1720,9 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
}
|
}
|
||||||
//添加权限确定
|
//添加权限确定
|
||||||
const addSettingUp = async () => {
|
const addSettingUp = async () => {
|
||||||
await savePermission({userList:state.saveList,pid:state.saveListPid})
|
if(JSON.stringify(state.saveList) !== '{}'){
|
||||||
|
await savePermission({userList:[state.saveList],pid:state.saveListPid})
|
||||||
|
}
|
||||||
saveListItem()
|
saveListItem()
|
||||||
of_addsetting()
|
of_addsetting()
|
||||||
listData()
|
listData()
|
||||||
@@ -1505,13 +1736,22 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
state.bg_power2 = false
|
state.bg_power2 = false
|
||||||
state.powerStatus = {}
|
state.powerStatus = {}
|
||||||
state.permissionId = ''
|
state.permissionId = ''
|
||||||
|
state.perWorkNum = ''
|
||||||
state.checkclick = []
|
state.checkclick = []
|
||||||
}
|
}
|
||||||
|
const getByUserIds = async (workNum) => {
|
||||||
|
await getByUserId({workNum,}).then(res=>{
|
||||||
|
// if(res.code == 200){
|
||||||
|
// console.log(res.data,'workUnum')
|
||||||
|
// }
|
||||||
|
})
|
||||||
|
}
|
||||||
const powerTrue = async () => {
|
const powerTrue = async () => {
|
||||||
state.powerStatus.permission = state.checkclick.join(",")
|
state.powerStatus.permission = state.checkclick.join(",")
|
||||||
if(state.permissionId){
|
if(state.permissionId){
|
||||||
await updateStatus({id:state.permissionId,permission:state.checkclick.join(",")}).then((res)=>{
|
await updateStatus({id:state.permissionId,permission:state.checkclick.join(",")}).then((res)=>{
|
||||||
saveListItem()
|
saveListItem()
|
||||||
|
getByUserIds(state.perWorkNum)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
listData()
|
listData()
|
||||||
@@ -1521,6 +1761,7 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
await updateStatus({status:0,id:record.id}).then((res)=>{
|
await updateStatus({status:0,id:record.id}).then((res)=>{
|
||||||
if(res.code === 200){
|
if(res.code === 200){
|
||||||
message.success('启用成功')
|
message.success('启用成功')
|
||||||
|
getByUserIds(record.workNum)
|
||||||
listData()
|
listData()
|
||||||
saveListItem()
|
saveListItem()
|
||||||
}
|
}
|
||||||
@@ -1560,6 +1801,7 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
powerSetting,
|
powerSetting,
|
||||||
of_power,
|
of_power,
|
||||||
powerTrue,
|
powerTrue,
|
||||||
|
getByUserIds,
|
||||||
textDeleteAdd,
|
textDeleteAdd,
|
||||||
searchStatusVal2,
|
searchStatusVal2,
|
||||||
serchList,
|
serchList,
|
||||||
@@ -1568,6 +1810,10 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
uploadAdmin,
|
uploadAdmin,
|
||||||
columns,
|
columns,
|
||||||
columnsAdd,
|
columnsAdd,
|
||||||
|
columnsUpload,
|
||||||
|
handleButtonClick,
|
||||||
|
getIconClass,
|
||||||
|
getButtonTitle,
|
||||||
columns2,
|
columns2,
|
||||||
bgupload,
|
bgupload,
|
||||||
of_exit,
|
of_exit,
|
||||||
@@ -1585,6 +1831,7 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
downloadAll,
|
downloadAll,
|
||||||
headers,
|
headers,
|
||||||
beforeUpload,
|
beforeUpload,
|
||||||
|
handleChangeImg,
|
||||||
beforeUpload3,
|
beforeUpload3,
|
||||||
handleChange,
|
handleChange,
|
||||||
delUploadList,
|
delUploadList,
|
||||||
@@ -1604,6 +1851,8 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
changePaginationsAdd,
|
changePaginationsAdd,
|
||||||
pagination,
|
pagination,
|
||||||
paginationAdd,
|
paginationAdd,
|
||||||
|
customRow,
|
||||||
|
getRowClassName,
|
||||||
textDisabled,
|
textDisabled,
|
||||||
textDelete,
|
textDelete,
|
||||||
updateAuthority,
|
updateAuthority,
|
||||||
@@ -1614,9 +1863,83 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
::v-deep .ant-dropdown-content{
|
||||||
|
width: 84px;
|
||||||
|
}
|
||||||
|
.back_color{
|
||||||
|
::v-deep .ant-table-wrapper .ant-table-tbody > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td{
|
||||||
|
background: initial;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.file_updata {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.updatabox {
|
||||||
|
position: relative;
|
||||||
|
width: 230px;
|
||||||
|
height: 5px;
|
||||||
|
background-color: rgba(192, 192, 192, 0.25);
|
||||||
|
border-radius: 3px;
|
||||||
|
|
||||||
|
.updatacolor {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 5px;
|
||||||
|
background-color: #57c887;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.updatacolor2 {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
width: 80%;
|
||||||
|
height: 5px;
|
||||||
|
background-color: #ff7474;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.updatacolor3 {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
width: 60%;
|
||||||
|
height: 5px;
|
||||||
|
background-color: #4ea6ff;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
.updataxq1{
|
||||||
|
margin-top: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.updataxq {
|
||||||
|
position: absolute;
|
||||||
|
right: 2px;
|
||||||
|
top: -37px;
|
||||||
|
color: #57c887;
|
||||||
|
}
|
||||||
|
|
||||||
|
.updataxq2 {
|
||||||
|
position: absolute;
|
||||||
|
right: 2px;
|
||||||
|
top: -35px;
|
||||||
|
color: #ff7474;
|
||||||
|
}
|
||||||
|
|
||||||
|
.updataxq3 {
|
||||||
|
position: absolute;
|
||||||
|
right: 2px;
|
||||||
|
top: -30px;
|
||||||
|
color: #4ea6ff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
::v-deep .ant-dropdown{
|
::v-deep .ant-dropdown{
|
||||||
left: 120px !important;
|
left: 120px !important;
|
||||||
}
|
}
|
||||||
|
::v-deep .highlight-row{
|
||||||
|
background: #e7e7e7 !important;
|
||||||
|
}
|
||||||
.evaluationUpload{
|
.evaluationUpload{
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
@@ -1715,6 +2038,41 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
background: url("../../assets/images/evaluation/download.png") no-repeat;
|
background: url("../../assets/images/evaluation/download.png") no-repeat;
|
||||||
background-size: 100%;
|
background-size: 100%;
|
||||||
}
|
}
|
||||||
|
.release{
|
||||||
|
width: 19px;
|
||||||
|
height: 20px;
|
||||||
|
background: url("../../assets/images/evaluation/release.png") no-repeat;
|
||||||
|
background-size: 100%;
|
||||||
|
// margin-right: 2px;
|
||||||
|
}
|
||||||
|
.authority{
|
||||||
|
width: 19px;
|
||||||
|
height: 20px;
|
||||||
|
background: url("../../assets/images/evaluation/authority.png") no-repeat;
|
||||||
|
background-size: 100%;
|
||||||
|
// margin-right: 2px;
|
||||||
|
}
|
||||||
|
.edit{
|
||||||
|
width: 19px;
|
||||||
|
height: 20px;
|
||||||
|
background: url("../../assets/images/evaluation/edit.png") no-repeat;
|
||||||
|
background-size: 100%;
|
||||||
|
// margin-right: 2px;
|
||||||
|
}
|
||||||
|
.delete{
|
||||||
|
width: 19px;
|
||||||
|
height: 20px;
|
||||||
|
background: url("../../assets/images/evaluation/delete.png") no-repeat;
|
||||||
|
background-size: 100%;
|
||||||
|
// margin-right: 2px;
|
||||||
|
}
|
||||||
|
.empty{
|
||||||
|
width: 19px;
|
||||||
|
height: 20px;
|
||||||
|
background: url("../../assets/images/evaluation/empty.png") no-repeat;
|
||||||
|
background-size: 100%;
|
||||||
|
// margin-right: 2px;
|
||||||
|
}
|
||||||
.tableBox {
|
.tableBox {
|
||||||
padding-bottom: 20px;
|
padding-bottom: 20px;
|
||||||
margin: 20px 38px 30px;
|
margin: 20px 38px 30px;
|
||||||
@@ -1806,7 +2164,7 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.mbl_items12 {
|
.mbl_items12 {
|
||||||
width: 334px;
|
width: 333px;
|
||||||
margin-left: 128px;
|
margin-left: 128px;
|
||||||
.item_text{
|
.item_text{
|
||||||
width: 300px;
|
width: 300px;
|
||||||
@@ -1882,7 +2240,7 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
.updataxq {
|
.updataxq {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 2px;
|
right: 2px;
|
||||||
top: -30px;
|
top: -37px;
|
||||||
color: #57c887;
|
color: #57c887;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2005,6 +2363,10 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
background-color: #4ea6ff;
|
background-color: #4ea6ff;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
}
|
}
|
||||||
|
.btndesign {
|
||||||
|
background-color: #eff4fc;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.headers{
|
.headers{
|
||||||
@@ -2087,40 +2449,61 @@ import {timeoutUpload} from "@/api/configPublic";
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
|
.check{
|
||||||
|
width: 15px;
|
||||||
|
height: 16px;
|
||||||
|
background: url("../../assets/images/evaluation/check.png") no-repeat;
|
||||||
|
background-size: 100%;
|
||||||
|
margin-right: 6px;
|
||||||
|
}
|
||||||
|
.download{
|
||||||
|
width: 15px;
|
||||||
|
height: 16px;
|
||||||
|
background: url("../../assets/images/evaluation/download.png") no-repeat;
|
||||||
|
background-size: 100%;
|
||||||
|
margin-right: 6px;
|
||||||
|
}
|
||||||
|
.upload{
|
||||||
|
width: 15px;
|
||||||
|
height: 16px;
|
||||||
|
background: url("../../assets/images/evaluation/upload.png") no-repeat;
|
||||||
|
background-size: 100%;
|
||||||
|
margin-right: 6px;
|
||||||
|
}
|
||||||
.release{
|
.release{
|
||||||
width: 15px;
|
width: 15px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
background: url("../../assets/images/evaluation/release.png") no-repeat;
|
background: url("../../assets/images/evaluation/release.png") no-repeat;
|
||||||
background-size: 100%;
|
background-size: 100%;
|
||||||
margin-right: 2px;
|
margin-right: 6px;
|
||||||
}
|
}
|
||||||
.authority{
|
.authority{
|
||||||
width: 15px;
|
width: 15px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
background: url("../../assets/images/evaluation/authority.png") no-repeat;
|
background: url("../../assets/images/evaluation/authority.png") no-repeat;
|
||||||
background-size: 100%;
|
background-size: 100%;
|
||||||
margin-right: 2px;
|
margin-right: 6px;
|
||||||
}
|
}
|
||||||
.edit{
|
.edit{
|
||||||
width: 15px;
|
width: 15px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
background: url("../../assets/images/evaluation/edit.png") no-repeat;
|
background: url("../../assets/images/evaluation/edit.png") no-repeat;
|
||||||
background-size: 100%;
|
background-size: 100%;
|
||||||
margin-right: 2px;
|
margin-right: 6px;
|
||||||
}
|
}
|
||||||
.delete{
|
.delete{
|
||||||
width: 15px;
|
width: 15px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
background: url("../../assets/images/evaluation/delete.png") no-repeat;
|
background: url("../../assets/images/evaluation/delete.png") no-repeat;
|
||||||
background-size: 100%;
|
background-size: 100%;
|
||||||
margin-right: 2px;
|
margin-right: 6px;
|
||||||
}
|
}
|
||||||
.empty{
|
.empty{
|
||||||
width: 15px;
|
width: 15px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
background: url("../../assets/images/evaluation/empty.png") no-repeat;
|
background: url("../../assets/images/evaluation/empty.png") no-repeat;
|
||||||
background-size: 100%;
|
background-size: 100%;
|
||||||
margin-right: 2px;
|
margin-right: 6px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -845,6 +845,11 @@
|
|||||||
@click="showChangeGroupModal(record)"
|
@click="showChangeGroupModal(record)"
|
||||||
>换组
|
>换组
|
||||||
</a-button>
|
</a-button>
|
||||||
|
<a-button
|
||||||
|
type="link"
|
||||||
|
@click="modifyRemarks(record)"
|
||||||
|
>修改备注
|
||||||
|
</a-button>
|
||||||
</template>
|
</template>
|
||||||
</TableStudent>
|
</TableStudent>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
@@ -2347,6 +2352,43 @@
|
|||||||
<!-- 换组弹窗 -->
|
<!-- 换组弹窗 -->
|
||||||
<!-- 面授课开课弹框 -->
|
<!-- 面授课开课弹框 -->
|
||||||
<AddOpenCourse @call-parent-method="getTaskListAll" ref="coursePlanRef" :type="1"/>
|
<AddOpenCourse @call-parent-method="getTaskListAll" ref="coursePlanRef" :type="1"/>
|
||||||
|
<!-- 修改备注弹窗 -->
|
||||||
|
<a-modal
|
||||||
|
v-model:visible="showRemarks"
|
||||||
|
:footer="null"
|
||||||
|
closable="false"
|
||||||
|
style="margin-top: 400px"
|
||||||
|
@cancel="of_remarks"
|
||||||
|
>
|
||||||
|
<div class="selectonlineface" :style="{ display: showRemarks ? 'block' : 'none' }">
|
||||||
|
<div class="bg_headers"></div>
|
||||||
|
<div class="bg_main">
|
||||||
|
<div class="bg_main_header">
|
||||||
|
<div>修改备注</div>
|
||||||
|
<div class="bg_main_header_close" @click="of_remarks"></div>
|
||||||
|
</div>
|
||||||
|
<div class="bg_body">
|
||||||
|
<div class="bg_body_bt" style="align-items: flex-start;">
|
||||||
|
<!-- <div class="bg_body_bttext" style="margin-top: 5px;">修改备注</div> -->
|
||||||
|
<div class="bg_body_input">
|
||||||
|
<a-input v-model:value="remarks" placeholder="请输入" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="bg_footer">
|
||||||
|
<div class="btn btn6" @click="of_remarks">
|
||||||
|
<div class="btnText">取消</div>
|
||||||
|
</div>
|
||||||
|
<a-button
|
||||||
|
class="btn btn6"
|
||||||
|
@click="RemarksUpdata"
|
||||||
|
>
|
||||||
|
确定
|
||||||
|
</a-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a-modal>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script lang="jsx">
|
<script lang="jsx">
|
||||||
@@ -2620,6 +2662,15 @@ export default {
|
|||||||
className: "h",
|
className: "h",
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: "备注",
|
||||||
|
dataIndex: "lastLearnTime",
|
||||||
|
key: "lastLearnTime",
|
||||||
|
width: 120,
|
||||||
|
align: "center",
|
||||||
|
className: "h",
|
||||||
|
ellipsis: true,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
loading: false,
|
loading: false,
|
||||||
projectId: route.query.projectId,
|
projectId: route.query.projectId,
|
||||||
@@ -3038,6 +3089,8 @@ export default {
|
|||||||
facestudent: {},
|
facestudent: {},
|
||||||
modal1Visible: false, // 证书预览
|
modal1Visible: false, // 证书预览
|
||||||
changegroupV: false, //换组弹窗
|
changegroupV: false, //换组弹窗
|
||||||
|
remarks: '',
|
||||||
|
showRemarks: false, //修改备注
|
||||||
checkgroupStuId: null, //换组id
|
checkgroupStuId: null, //换组id
|
||||||
ImpoterGroupLeaderV: false, //导入小组长抽屉
|
ImpoterGroupLeaderV: false, //导入小组长抽屉
|
||||||
certificatelist: [],
|
certificatelist: [],
|
||||||
@@ -3394,6 +3447,16 @@ export default {
|
|||||||
state.checkgroupStuId = [];
|
state.checkgroupStuId = [];
|
||||||
state.checkgroupStuId.push(record.id);
|
state.checkgroupStuId.push(record.id);
|
||||||
};
|
};
|
||||||
|
//修改备注
|
||||||
|
const modifyRemarks = (record) => {
|
||||||
|
state.showRemarks = true;
|
||||||
|
}
|
||||||
|
const of_remarks = () => {
|
||||||
|
state.showRemarks = false;
|
||||||
|
}
|
||||||
|
const RemarksUpdata = () => {
|
||||||
|
of_remarks()
|
||||||
|
}
|
||||||
const showModal2 = (item, isEdit) => {
|
const showModal2 = (item, isEdit) => {
|
||||||
state.isEdit = isEdit;
|
state.isEdit = isEdit;
|
||||||
state.stugroup = true;
|
state.stugroup = true;
|
||||||
@@ -5183,6 +5246,9 @@ export default {
|
|||||||
cancelyou,
|
cancelyou,
|
||||||
cancelcanyou,
|
cancelcanyou,
|
||||||
showChangeGroupModal,
|
showChangeGroupModal,
|
||||||
|
modifyRemarks,
|
||||||
|
of_remarks,
|
||||||
|
RemarksUpdata,
|
||||||
changePaginationStu,
|
changePaginationStu,
|
||||||
handleChange,
|
handleChange,
|
||||||
toEdit,
|
toEdit,
|
||||||
@@ -6083,7 +6149,113 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.selectonlineface{
|
||||||
|
z-index: 999;
|
||||||
|
width: 679px;
|
||||||
|
background: #ffffff;
|
||||||
|
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
top: -100%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
.bg_headers {
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
height: 40px;
|
||||||
|
background: linear-gradient(
|
||||||
|
rgba(78, 166, 255, 0.2) 0%,
|
||||||
|
rgba(78, 166, 255, 0) 100%
|
||||||
|
);
|
||||||
|
}
|
||||||
|
.bg_main {
|
||||||
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
|
.bg_main_header {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
padding-top: 20px;
|
||||||
|
padding-left: 26px;
|
||||||
|
font-size: 16px;
|
||||||
|
.bg_main_header_close {
|
||||||
|
position: absolute;
|
||||||
|
right: 42px;
|
||||||
|
cursor: pointer;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
background-image: url(@/assets/images/coursewareManage/close.png);
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.bg_body {
|
||||||
|
width: 80%;
|
||||||
|
margin: 3px auto;
|
||||||
|
|
||||||
|
.bg_body_bt {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: end;
|
||||||
|
margin: 14px auto;
|
||||||
|
|
||||||
|
.bg_body_bttext {
|
||||||
|
width: 110px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: end;
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.bg_body_input {
|
||||||
|
flex: 1;
|
||||||
|
position: relative;
|
||||||
|
.ant-upload-picture-card-wrapper{
|
||||||
|
width: 200px;
|
||||||
|
margin-right: 18px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.bg_footer {
|
||||||
|
width: 100%;
|
||||||
|
margin-left: 174px;
|
||||||
|
margin-top: 25px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
width: 100px;
|
||||||
|
height: 40px;
|
||||||
|
background: rgba(64, 158, 255, 0);
|
||||||
|
border-radius: 8px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin-right: 14px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
.btnText {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
line-height: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn6 {
|
||||||
|
background-color: #4ea6ff;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.headers{
|
||||||
|
margin-left: 38px;
|
||||||
|
margin-right: 38px;
|
||||||
|
margin-top: 30px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
.btn{
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
.taskpage {
|
.taskpage {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
Reference in New Issue
Block a user