mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-11 03:46:45 +08:00
698 lines
20 KiB
Vue
698 lines
20 KiB
Vue
<template>
|
||
<a-drawer
|
||
:visible="ProjAuditvisible"
|
||
class="drawerStyle ProjectAudit"
|
||
placement="right"
|
||
width="60%"
|
||
@after-visible-change="afterVisibleChange"
|
||
>
|
||
<div class="drawerMain">
|
||
<div class="header">
|
||
<div class="headerTitle">审核项目</div>
|
||
<img
|
||
style="width: 29px; height: 29px; cursor: pointer"
|
||
src="../../assets/images/basicinfo/close.png"
|
||
@click="closeDrawer"
|
||
/>
|
||
</div>
|
||
<div class="main" style="padding-right: 10px">
|
||
<a-tabs v-model:activeKey="activeSetKey">
|
||
<a-tab-pane key="1" tab="基本信息">
|
||
<div class="content7" v-if="showDetail">
|
||
<div class="set_body">
|
||
<div class="set_content">
|
||
<div class="setc_name"><span>项目名称:</span></div>
|
||
<div class="setc_main">
|
||
<span style="color: #999999">{{ projectInfo.name }}</span>
|
||
</div>
|
||
</div>
|
||
<div class="set_content">
|
||
<div class="setc_name"><span>封面图:</span></div>
|
||
<div class="setc_main">
|
||
<img
|
||
style="width: 151px; height: 84px"
|
||
:src="projectInfo.picUrl"
|
||
alt=""
|
||
/>
|
||
</div>
|
||
</div>
|
||
<div class="set_content">
|
||
<div class="setc_name"><span>项目时间:</span></div>
|
||
<div class="setc_main">
|
||
<span style="color: #999999"
|
||
>{{ projectInfo.beginTime }} ~
|
||
{{ projectInfo.endTime }}</span
|
||
>
|
||
</div>
|
||
</div>
|
||
<div class="set_content">
|
||
<div class="setc_name"><span>项目经理:</span></div>
|
||
<div class="setc_main">
|
||
<span style="color: #999999">{{
|
||
projectInfo.manager
|
||
}}</span>
|
||
</div>
|
||
</div>
|
||
<div class="set_content">
|
||
<div class="setc_name"><span>资源归属:</span></div>
|
||
<div class="setc_main">
|
||
<span style="color: #999999">{{
|
||
(projectInfo.sourceBelongFullName || "") +
|
||
projectInfo.sourceBelongName
|
||
}}</span>
|
||
</div>
|
||
</div>
|
||
<div class="set_content">
|
||
<div class="setc_name"><span>项目级别:</span></div>
|
||
<div class="setc_main">
|
||
<ProjectLevel
|
||
v-model:value="projectInfo.level"
|
||
:tag="true"
|
||
></ProjectLevel>
|
||
</div>
|
||
</div>
|
||
<div class="set_content">
|
||
<div class="setc_name"><span>培训体系:</span></div>
|
||
<div class="setc_main">
|
||
<TrainClass
|
||
v-model:value="projectInfo.systemId"
|
||
:tag="true"
|
||
></TrainClass>
|
||
</div>
|
||
</div>
|
||
<div class="set_content">
|
||
<div class="setc_name"><span>同步学习记录:</span></div>
|
||
<div class="setc_main">
|
||
<a-switch
|
||
v-model:checked="projectInfo.courseSyncFlag"
|
||
:checkedValue="1"
|
||
:unCheckedValue="0"
|
||
:disabled="true"
|
||
><span
|
||
style="
|
||
width: 100%;
|
||
color: rgba(109, 117, 132, 1);
|
||
font-size: 14px;
|
||
"
|
||
>同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)</span
|
||
></a-switch
|
||
>
|
||
</div>
|
||
</div>
|
||
<div class="set_content" v-if="projectInfo.boeFlag">
|
||
<div class="setc_name"><span>是否BOEU实施:</span></div>
|
||
<div class="setc_main">
|
||
<a-switch
|
||
v-model:checked="projectInfo.boeFlag"
|
||
:checkedValue="1"
|
||
:unCheckedValue="0"
|
||
:disabled="true"
|
||
></a-switch>
|
||
</div>
|
||
</div>
|
||
<div class="set_content" v-if="projectInfo.remark">
|
||
<div class="setc_name"><span>项目说明:</span></div>
|
||
<div class="setc_main">
|
||
<span style="color: #999999">{{ projectInfo.remark }}</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="detaile">
|
||
<button class="debtn" @click="changeDe">
|
||
详情{{ showDetail ? "折叠" : "展开" }}
|
||
</button>
|
||
</div>
|
||
</a-tab-pane>
|
||
<a-tab-pane key="2" tab="修改记录" class="record">
|
||
<div
|
||
class="tableBox"
|
||
v-if="showRecord"
|
||
style="
|
||
margin-top: 22px;
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
margin-bottom: 20px;
|
||
"
|
||
>
|
||
<a-table
|
||
style="border: 1px solid #f2f6fe"
|
||
:columns="columns"
|
||
:data-source="tableData"
|
||
:loading="tableDataTotal === -1 ? true : false"
|
||
:scroll="{ x: 900 }"
|
||
:pagination="false"
|
||
childrenColumnName="childrens"
|
||
rowKey="id"
|
||
>
|
||
<template #expandedRowRender="{ record }">
|
||
<div class="reworkTitle">
|
||
<div style="width: 20%; text-align: center">内容</div>
|
||
<div style="width: 40%; text-align: center">修改前</div>
|
||
<div style="width: 40%; text-align: center">修改后</div>
|
||
</div>
|
||
<div
|
||
v-for="(elem, index) in record.children"
|
||
:key="index"
|
||
class="reworkCon"
|
||
>
|
||
<div style="width: 20%; text-align: center">
|
||
{{ elem.columnName }}
|
||
</div>
|
||
<div style="width: 40%; text-align: center">
|
||
{{ elem.beforeValue }}
|
||
</div>
|
||
<div style="width: 40%; text-align: center">
|
||
{{ elem.afterValue }}
|
||
</div>
|
||
</div>
|
||
</template>
|
||
</a-table>
|
||
<div class="pa" style="margin-top: 20px">
|
||
<a-pagination
|
||
v-if="tableDataTotal > 10"
|
||
:showSizeChanger="false"
|
||
showQuickJumper="true"
|
||
hideOnSinglePage="true"
|
||
:pageSize="pageSize"
|
||
:current="currentPage"
|
||
:total="tableDataTotal"
|
||
class="pagination"
|
||
@change="handelChangePage"
|
||
/>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="detaile">
|
||
<button class="debtn" @click="changeRe">
|
||
详情{{ showDetail ? "折叠" : "展开" }}
|
||
</button>
|
||
</div>
|
||
</a-tab-pane>
|
||
</a-tabs>
|
||
<div class="audit">
|
||
<div class="set_content">
|
||
<div class="setc_name"><span>审核:</span></div>
|
||
<div class="setc_main">
|
||
<a-radio-group v-model:value="valuePass">
|
||
<a-radio value="1">通过</a-radio>
|
||
<a-radio value="2">不通过</a-radio>
|
||
</a-radio-group>
|
||
</div>
|
||
</div>
|
||
<div class="set_content">
|
||
<div class="sign" style="position: relative; left: 70px; top: -3px">
|
||
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
|
||
</div>
|
||
<div class="setc_name"><span>审核意见:</span></div>
|
||
<div class="setc_main">
|
||
<a-textarea
|
||
v-model:value="valueSuggest"
|
||
:rows="4"
|
||
show-count
|
||
:maxlength="20"
|
||
/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="btnn">
|
||
<button class="btn1" @click="closeDrawer">取消</button>
|
||
<button class="btn2" @click="subMit">确定</button>
|
||
</div>
|
||
</div>
|
||
</a-drawer>
|
||
</template>
|
||
|
||
<script>
|
||
import { toRefs, reactive, onMounted } from "vue";
|
||
import { getTask } from "../../api/indexTaskadd";
|
||
import { toDate } from "../../api/method";
|
||
import { auditView, editRecord } from "../../api/indexAudit";
|
||
import { message } from "ant-design-vue";
|
||
import * as api1 from "@/api/index1";
|
||
import ProjectLevel from "@/components/project/ProjectLevel";
|
||
import TrainClass from "@/components/project/TrainClass";
|
||
|
||
export default {
|
||
name: "ProjectAudit",
|
||
components: {
|
||
ProjectLevel,
|
||
TrainClass,
|
||
},
|
||
props: {
|
||
ProjAuditvisible: {
|
||
type: Boolean,
|
||
default: false,
|
||
},
|
||
chooseProject: {
|
||
type: Number,
|
||
default: null,
|
||
},
|
||
chooseCreateId: {
|
||
type: Number,
|
||
default: null,
|
||
},
|
||
chooseCreater: {
|
||
type: String,
|
||
default: null,
|
||
},
|
||
finishdFun: {
|
||
type: Function,
|
||
default: null,
|
||
},
|
||
},
|
||
|
||
setup(props, ctx) {
|
||
const state = reactive({
|
||
activeSetKey: "1",
|
||
checkedBOEU: false, //是否BOEU实施
|
||
checkedSty: false, //同步学习记录
|
||
showDetail: false,
|
||
showRecord: false, //修改记录
|
||
valuePass: "1",
|
||
valueSuggest: null,
|
||
//基本信息
|
||
name: null, //项目名称 未改
|
||
startTime: null, //开始时间 已改
|
||
tstartTime: null, //开始事件 未改
|
||
endTime: null, //结束时间 已改
|
||
tendTime: null, //结束时间 未改
|
||
manager: null, //项目经理 未改
|
||
sourceBelong: null, //资源归属 已改
|
||
tsourceBelong: null, //资源归属 未改
|
||
remark: null, //项目说明 未改
|
||
level: null, //项目级别 已改
|
||
tlevel: null, //项目级别 未改
|
||
systemId: null, //培训分类
|
||
tsystemId: null, //培训分类 未改
|
||
picUrl: null, //未改
|
||
parentId: null, //未改
|
||
courseSyncFlag: null, //未改
|
||
boeFlag: null, //未改
|
||
managerId: null, //未改
|
||
notice: null, //未改
|
||
status: null, //未改
|
||
type: null, //未改
|
||
category: null, //未改
|
||
noticeFlag: null, //未改
|
||
templateId: null, //未改
|
||
attach: null,
|
||
calssifyList: [],
|
||
faceclassScene: [],
|
||
projectInfo: {},
|
||
|
||
tableDataTotal: 20,
|
||
pageSize: 10,
|
||
currentPage: 1,
|
||
tableData: [],
|
||
columns: [
|
||
{
|
||
title: "修改人",
|
||
dataIndex: "updateName",
|
||
key: "updateName",
|
||
align: "center",
|
||
className: "h",
|
||
width: "40%",
|
||
},
|
||
{
|
||
title: "修改时间",
|
||
dataIndex: "updateTime",
|
||
key: "updateTime",
|
||
align: "center",
|
||
className: "h",
|
||
width: "40%",
|
||
},
|
||
],
|
||
});
|
||
|
||
const closeDrawer = () => {
|
||
ctx.emit("update:ProjAuditvisible", false);
|
||
console.log(props.finishdFun);
|
||
props.finishdFun && props.finishdFun();
|
||
state.valueSuggest = null;
|
||
state.valuePass = "1";
|
||
};
|
||
|
||
//获取项目信息
|
||
const getTaskInfo = () => {
|
||
getTask({
|
||
projectId: props.chooseProject,
|
||
}).then((res) => {
|
||
console.log("get task", res.data.data);
|
||
state.projectInfo = res.data.data.projectInfo;
|
||
let info = res.data.data.projectInfo;
|
||
let start = toDate(info.beginTime / 1000, "Y-M-D h:m");
|
||
let end = toDate(info.endTime / 1000, "Y-M-D h:m");
|
||
state.tstartTime = info.beginTime;
|
||
state.tendTime = info.endTime;
|
||
state.tsourceBelong = info.sourceBelongId;
|
||
state.parentId = info.parentId;
|
||
state.name = info.name;
|
||
state.startTime = start;
|
||
state.endTime = end;
|
||
state.manager = info.manager;
|
||
state.remark = info.remark;
|
||
state.level =
|
||
info.level == 1
|
||
? "集团级"
|
||
: info.level == 2
|
||
? "组织级"
|
||
: info.level == 3
|
||
? "现地级"
|
||
: info.level == 4
|
||
? "部门级"
|
||
: "-";
|
||
state.tlevel = info.level;
|
||
state.systemId =
|
||
info.systemId == 1
|
||
? "集团级"
|
||
: info.systemId == 2
|
||
? "组织级"
|
||
: info.systemId == 3
|
||
? "现地级"
|
||
: info.systemId == 4
|
||
? "部门级"
|
||
: "-";
|
||
state.tsystemId = info.systemId;
|
||
state.checkedSty = info.courseSyncFlag == 1 ? true : false;
|
||
state.courseSyncFlag = info.courseSyncFlag;
|
||
state.checkedBOEU = info.boeFlag == 1 ? true : false;
|
||
state.boeFlag = info.boeFlag;
|
||
state.picUrl = info.picUrl;
|
||
state.managerId = info.managerId;
|
||
state.notice = info.notice;
|
||
state.status = info.status;
|
||
state.type = info.type;
|
||
state.category = info.category;
|
||
state.noticeFlag = info.noticeFlag;
|
||
// state.attach = info.attach;
|
||
// state.templateId = info.templateId;
|
||
state.sourceBelong =
|
||
info.sourceBelongId == 1
|
||
? "项目一"
|
||
: info.sourceBelongId == 2
|
||
? "项目二"
|
||
: info.sourceBelongId == 3
|
||
? "项目三"
|
||
: "-";
|
||
});
|
||
};
|
||
|
||
const afterVisibleChange = () => {
|
||
getTaskInfo();
|
||
getrecord();
|
||
};
|
||
const changeDe = () => {
|
||
state.showDetail = !state.showDetail;
|
||
};
|
||
const changeRe = () => {
|
||
state.showRecord = !state.showRecord;
|
||
};
|
||
|
||
const subMit = () => {
|
||
if (!state.valueSuggest) {
|
||
message.error(`请输入审核意见!`);
|
||
return;
|
||
}
|
||
|
||
auditView({
|
||
createId: props.chooseCreateId,
|
||
createName: props.chooseCreater,
|
||
description: state.valueSuggest,
|
||
pass: state.valuePass == "1" ? 1 : -1,
|
||
projectId: props.chooseProject,
|
||
})
|
||
.then((res) => {
|
||
console.log("提交成功", res);
|
||
message.destroy();
|
||
message.success("提交成功");
|
||
closeDrawer();
|
||
})
|
||
.catch((err) => {
|
||
console.log(err);
|
||
message.warning("提交失败");
|
||
});
|
||
};
|
||
const getDictList = async (param) =>
|
||
api1.getDict({
|
||
pageNo: 1,
|
||
pageSize: 20,
|
||
setCode: param,
|
||
})
|
||
.then((res) => res.data.data.rows);
|
||
onMounted(async () => {
|
||
state.calssifyList = (await getDictList("faceclassClass")).map((e) => ({
|
||
label: e.dictName,
|
||
value: e.dictCode,
|
||
})); //内容
|
||
state.faceclassScene = (await getDictList("faceclassScene")).map((e) => ({
|
||
label: e.dictName,
|
||
value: e.dictCode,
|
||
})); //场景
|
||
});
|
||
|
||
//获取项目修改记录
|
||
const getrecord = () => {
|
||
console.log("props.chooseProject", props.chooseProject);
|
||
editRecord(props.chooseProject)
|
||
.then((res) => {
|
||
console.log("获取修改记录2", res);
|
||
if (res.data.code === 200) {
|
||
state.tableData = res.data.data.records;
|
||
// console.log("state.tableData", state.tableData);
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
console.log("获取修改记录失败", err);
|
||
});
|
||
};
|
||
return {
|
||
...toRefs(state),
|
||
closeDrawer,
|
||
afterVisibleChange,
|
||
getTaskInfo,
|
||
changeDe,
|
||
changeRe,
|
||
subMit,
|
||
};
|
||
},
|
||
};
|
||
</script>
|
||
|
||
<style lang="scss">
|
||
.ProjectAudit {
|
||
.drawerMain {
|
||
min-width: 600px;
|
||
margin: 0px 32px 0px 32px;
|
||
// overflow-x: auto;
|
||
display: flex;
|
||
flex-direction: column;
|
||
|
||
.header {
|
||
height: 73px;
|
||
border-bottom: 1px solid #e8e8e8;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
// background-color: red;
|
||
margin-bottom: 20px;
|
||
flex-shrink: 0;
|
||
|
||
.headerTitle {
|
||
font-size: 18px;
|
||
font-weight: 600;
|
||
color: #333333;
|
||
line-height: 25px;
|
||
|
||
// margin-left: 24px;
|
||
}
|
||
}
|
||
|
||
.main {
|
||
width: 100%;
|
||
height: 100%;
|
||
// background-color: #bfa;
|
||
overflow-y: auto;
|
||
padding-right: 10px;
|
||
|
||
.content7 {
|
||
margin-top: 20px;
|
||
|
||
.set_tit {
|
||
margin-left: 34px;
|
||
font-size: 18px;
|
||
font-weight: 500;
|
||
color: #232425;
|
||
}
|
||
|
||
.line {
|
||
width: 100%;
|
||
height: 1px;
|
||
background-color: #e8e8e8;
|
||
margin-top: 10px;
|
||
}
|
||
|
||
.set_body {
|
||
margin-left: 34px;
|
||
margin-right: 34px;
|
||
position: relative;
|
||
|
||
.edit {
|
||
position: absolute;
|
||
width: 100px;
|
||
height: 40px;
|
||
background: #4ea6ff;
|
||
border-radius: 8px;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
right: 0;
|
||
cursor: pointer;
|
||
|
||
.img {
|
||
width: 18px;
|
||
height: 18px;
|
||
background-image: url(../../assets/images/basicinfo/edit.png);
|
||
background-size: 100%;
|
||
margin-right: 7px;
|
||
}
|
||
|
||
.ed {
|
||
font-size: 14px;
|
||
font-weight: 400;
|
||
color: #ffffff;
|
||
}
|
||
}
|
||
|
||
.set_content {
|
||
margin: 32px auto;
|
||
display: flex;
|
||
|
||
// justify-content: end;
|
||
.setc_name {
|
||
width: 150px;
|
||
display: flex;
|
||
justify-content: end;
|
||
}
|
||
|
||
.setc_main {
|
||
flex: 1;
|
||
margin-left: 12px;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
.detaile {
|
||
width: 100%;
|
||
// background-color: blue;
|
||
display: flex;
|
||
justify-content: center;
|
||
|
||
.can {
|
||
width: 130px;
|
||
height: 40px;
|
||
border-radius: 4px;
|
||
border: 1px solid #387df7;
|
||
color: #387df7;
|
||
background-color: #fff;
|
||
margin-right: 30px;
|
||
}
|
||
|
||
.debtn {
|
||
width: 130px;
|
||
height: 40px;
|
||
background: #4ea6ff;
|
||
border-radius: 8px;
|
||
border: 0;
|
||
color: #ffffff;
|
||
cursor: pointer;
|
||
}
|
||
}
|
||
|
||
.audit {
|
||
margin-left: 34px;
|
||
margin-right: 34px;
|
||
position: relative;
|
||
|
||
.set_content {
|
||
margin: 32px auto;
|
||
display: flex;
|
||
|
||
// justify-content: end;
|
||
.setc_name {
|
||
width: 150px;
|
||
display: flex;
|
||
justify-content: end;
|
||
}
|
||
|
||
.setc_main {
|
||
flex: 1;
|
||
margin-left: 12px;
|
||
|
||
textarea {
|
||
border-radius: 4px !important;
|
||
resize: none;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
.record {
|
||
.reworkTitle {
|
||
height: 56px;
|
||
display: flex;
|
||
align-items: center;
|
||
background-color: #fafafa;
|
||
}
|
||
.reworkCon {
|
||
height: 56px;
|
||
display: flex;
|
||
align-items: center;
|
||
border-bottom: 1px solid #f0f6fc;
|
||
background-color: #fff;
|
||
}
|
||
.ant-table-thead > tr > th {
|
||
background: #f0f6fc;
|
||
}
|
||
tr.ant-table-expanded-row > td,
|
||
tr.ant-table-expanded-row:hover > td {
|
||
padding: 0px;
|
||
}
|
||
}
|
||
}
|
||
.btnn {
|
||
height: 72px;
|
||
width: 100%;
|
||
background-color: #fff;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
|
||
.btn1 {
|
||
width: 100px;
|
||
height: 40px;
|
||
border: 1px solid #4ea6ff;
|
||
border-radius: 8px;
|
||
color: #4ea6ff;
|
||
background-color: #fff;
|
||
cursor: pointer;
|
||
}
|
||
.btn2 {
|
||
cursor: pointer;
|
||
width: 100px;
|
||
height: 40px;
|
||
background: #4ea6ff;
|
||
border-radius: 8px;
|
||
border: 0;
|
||
margin-left: 15px;
|
||
color: #fff;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
</style>
|
||
|