Files
fe-manage/src/views/projectcenter/TemplateLibrary.vue

393 lines
10 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div class="templatelibrary">
<div class="tmpl">
<div class="tmpl_header">
<div class="tmplh_inp">
<div class="inpbox">
<div class="inpbox1">
<span>模版名称</span>
<a-input
v-model:value="value1"
style="
width: 270px;
height: 40px;
border-radius: 8px;
margin-right: 14px;
"
placeholder="请输入项目名称"
/>
</div>
<div class="inpbox1">
<span>创建时间</span>
<a-date-picker
v-model="selectTime"
type="date"
placeholder="创建时间"
style="
width: 270px;
height: 40px;
border-radius: 8px;
margin-right: 14px;
"
/>
</div>
</div>
</div>
<div class="tmplh_btn">
<div class="btn btn1" @click="searchLevel">
<div class="search"></div>
<div class="btnText btnText1">搜索</div>
</div>
<div class="btn btn2" @click="resetLevel">
<div class="search"></div>
<div class="btnText btnText2">重置</div>
</div>
</div>
</div>
<div class="tmpl_body">
<div class="tmpl_tabbox">
<a-table
:columns="columns1"
:data-source="tableData1"
:loading="tableDataTotal === -1 ? true : false"
expandRowByClick="true"
@expand="expandTable"
:pagination="false"
/>
</div>
</div>
</div>
</div>
</template>
<script>
import { reactive, defineComponent, toRefs, onMounted } from "vue";
import { message } from "ant-design-vue";
import * as api from "@/api/indexLibrary"
const columns1 = [
{
title: "模版名称",
width: "20%",
dataIndex: "name",
key: "name",
ellipsis: true,
align: "center",
},
{
title: "状态",
width: "15%",
dataIndex: "status",
key: "status",
align: "center",
},
{
title: "创建人",
width: "18%",
dataIndex: "creator",
key: "creator",
align: "center",
},
{
title: "最近学习时间",
width: "25%",
dataIndex: "stutime",
key: "stutime",
align: "center",
},
{
title: "操作",
width: "22%",
className: "h",
dataIndex: "operation",
key: "operation",
align: "center",
},
];
export default defineComponent({
name: "TemplateLibrary",
setup() {
const state = reactive({
value1:null,
tableData1: [
{
key: "1",
name: "测试模板1",
status: "已发布",
creator: "李部长",
stutime: "2022-10-31 23:12:00",
operation: "operation",
},
{
key: "2",
name: "测试模板2",
status: "未发布",
creator: "李部长",
stutime: "2022-10-31 23:12:00",
operation: "operation",
}
],
// state
});
const getTableDate1 = () => {
let data = state.tableData1;
data.map((value) => {
{
//单层项目
value.operation = (
<div class="operation" style="justify-content: flex-end;">
<div class="nSelect">
{value.status === "已发布" ? (
<div class="nselect">
<div class="ops2">
<router-link to="/libraryadd">
<div class="jc">
查看{" "}
<span style="color:#E9E9E9;margin-left:15px;">|</span>
</div>
</router-link>
</div>
<div class="ops3">
<div class="jc"
onClick={() => {templateHadler({"projectTemplateId": value.projectTemplateId,"type": 0})}}
>撤回</div>
</div>
</div>
) : (
<div></div>
)}
{value.status === "未发布" ? (
<div class="nselect">
<div class="ops1">
<div class="jc"
onClick={() => {templateHadler({"projectTemplateId": value.projectTemplateId,"type": 1})}}>
发布
<span style="color:#E9E9E9;margin-left:15px;">|</span>
</div>
</div>
<div class="ops2">
<router-link to="/libraryadd">
<div class="jc">
查看
<span style="color:#E9E9E9;margin-left:15px;">|</span>
</div>
</router-link>
</div>
<div class="ops3">
<div class="jc"
onClick={() => {templateHadler({"projectTemplateId": value.projectTemplateId,"type": -1})}}
>删除</div>
</div>
</div>
) : (
<div></div>
)}
</div>
</div>
);
}
});
state.tableData = data;
};
getTableDate1();
onMounted(() => {
getLibraryList();
})
const getLibraryList = () => {
let obj = {
"beginTime": 0,
"endTime": 0,
"name": "",
"pageNo": 0,
"pageSize": 0,
"status": 0
}
api.templateList(obj).then((res) =>{
console.log(res);
let resData = res.data.data.rows
if(resData.length) {
for(let i in resData) {
state.tableData1[i].id = i+1;
state.tableData1[i].projectTemplateId = resData[i].projectTemplateId;
state.tableData1[i].status = resData[i].status ? "已发布":"未发布" ;
state.tableData1[i].name = resData[i].name;
state.tableData1[i].creator = resData[i].createName;
state.tableData1[i].stutime = resData[i].publishTime;
state.tableData1[i].operation = "operation";
}
} else {
message.warning("获取的列表数据为空值")
}
}).catch((error) => {
message.error(`获取模板列表失败`+error)
});
};
const templateHadler = (obj) => {
api.templateHadle(obj).then((res) => {
if(res.data.success) {
message.success(`模板操作成功`)
getLibraryList();
}
}).catch((error) => {
message.error(`模板操作失败`+error)
})
}
const searchLevel = () => {
const result = state.tableData1.filter(item => item.name == state.value1)
state.tableData1 = result;
};
const resetLevel = () => {
state.value1 = '';
// getLibraryList();
state.tableData1 = [
{
key: "1",
name: "测试模板1",
status: "已发布",
creator: "李部长",
stutime: "2022-10-31 23:12:00",
operation: "operation",
},
{
key: "2",
name: "测试模板2",
status: "未发布",
creator: "李部长",
stutime: "2022-10-31 23:12:00",
operation: "operation",
}
]
};
return {
...toRefs(state),
columns1,
templateHadler,
searchLevel,
resetLevel,
};
},
});
</script>
<style lang="scss">
.templatelibrary {
width: 100%;
.tmpl {
width: 100%;
.tmpl_header {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
margin-bottom: 32px;
margin-left: 32px;
margin-right: 32px;
.tmplh_inp {
.inpbox {
display: flex;
margin-top: 32px;
.inpbox1 {
display: flex;
justify-content: center;
align-items: center;
margin-right: 24px;
span {
white-space: nowrap;
}
}
}
}
.tmplh_btn {
display: flex;
margin-left: 38px;
margin-top: 32px;
.btn {
padding: 0px 26px 0px 26px;
height: 38px;
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
margin-left: 14px;
cursor: pointer;
flex-shrink: 0;
.search {
background-size: 100%;
}
.btnText {
font-size: 14px;
font-weight: 400;
line-height: 36px;
margin-left: 5px;
}
.btnText1 {
color: rgb(255, 255, 255);
}
.btnText2 {
color: rgba(64, 158, 255, 1);
}
}
.btn1 {
background: #409eff;
.search {
width: 15px;
height: 17px;
background-image: url("../../assets/images/courseManage/search0.png");
}
}
.btn2 {
background: #ffffff;
border: 1px solid #388be1;
.search {
width: 16px;
height: 18px;
background-image: url("../../assets/images/courseManage/reset1.png");
}
}
.btn1:hover {
background: rgb(255, 255, 255);
border: 1px solid #388be1;
.search {
background-image: url("../../assets/images/courseManage/search1.png");
}
.btnText {
color: rgba(64, 158, 255, 1);
}
}
.btn2:hover {
background: rgba(64, 158, 255, 1);
.search {
background-image: url("../../assets/images/courseManage/reset0.png");
}
.btnText {
color: #ffffff;
}
}
}
}
.tmpl_body {
padding:0px 30px;
.tmpl_tabbox {
.operation {
display: flex;
justify-content: center;
align-items: center;
color: #4ea6ff;
.nselect {
justify-content: center;
align-items: center;
display: flex;
.jc {
margin-left: 20px;
white-space: nowrap;
cursor: pointer;
}
}
}
}
}
}
}
</style>