dataControl/src/views/Model.vue

216 lines
6.1 KiB
Vue

<template>
<el-card class="content-div">
<div class="all-content">
<div class="top-div">
<el-button type="primary" size="large" @click="addData"></el-button>
</div>
<el-table :data="tableData" style="width: 100%" border stripe
:header-cell-style="{ background: '#F6F7FC' }" size="large">
<el-table-column type="index" label="序号" width="80" align="center" />
<el-table-column prop="template_name" label="模板名称" width="240" align="center" show-overflow-tooltip />
<el-table-column prop="template_type" label="模板类型" width="240" align="center" show-overflow-tooltip>
<template #default="scope">
<span>{{ templateData[scope.row.template_type] }}</span>
</template>
</el-table-column>
<el-table-column prop="template_description" label="模板描述" align="center" show-overflow-tooltip />
<el-table-column label="模板管理" align="center" show-overflow-tooltip width="300">
<template #default="scope">
<el-button type="primary" size="large" @click="viewData(scope.row)">
</el-button>
<el-button size="large" @click="editData(scope.row)">
</el-button>
<el-button type="danger" size="large" @click="delData(scope.row)">
</el-button>
</template>
</el-table-column>
</el-table>
<div>
<el-pagination
style="float:right"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="listQuery.page"
:page-sizes="[10, 30, 50]"
:page-size="listQuery.pageNum"
layout="total, sizes, prev, pager, next, jumper"
:total="totalNum"
>
</el-pagination>
</div>
</div>
<AddMb :type="type" :formData="formData" :templateData="templateData" :dialogVisible="dialogVisible"
v-if="dialogVisible" @dialogClose="dialogClose" @dialogSuccess="dialogSuccess">
</AddMb>
<ViewPoint :formData="formData1" :templateData="templateData" :dialogVisible="dialogVisible2" v-if="dialogVisible2" @dialogClose="dialogClose"
@dialogSuccess="dialogSuccess">
</ViewPoint>
</el-card>
</template>
<script>
import { onMounted, reactive, ref, toRefs, computed } from "vue";
import { ElMessage, ElMessageBox } from "element-plus";
import AddMb from "@/components/AddMb.vue";
import infoApi from "@/api/infoApi.js";
import ViewPoint from "@/components/ViewPoint.vue"
export default {
name: "model",
components: {
AddMb,
ViewPoint
},
setup() {
const state = reactive({
dialogVisible: false,
dialogVisible2: false,
// tableData: [],
tableData1:[],
formData: {
template_name: '',
template_description: '',
template_type: '1'
},
formData1: {},
type: 'I',
templateData: {},
listQuery: {
page: 1,
pageNum: 10
}
});
const tableData = computed(() => {
// 分页的起始下标
const startIndex = (state.listQuery.page - 1) * state.listQuery.pageNum;
// 分页的末尾下标
const endIndex = startIndex + state.listQuery.pageNum;
// 返回切割后的数据
return state.tableData1 && state.tableData1.length > 0 && state.tableData1.slice(startIndex, endIndex);
});
const totalNum = computed(() => {
return state.tableData1 && state.tableData1.length;
})
const total = computed(() => {
return state.tableData1 && Math.ceil(state.tableData1.length / state.listQuery.pageNum);
})
onMounted(() => {
getTemplateType();
getTableData();
});
const getTemplateType = async () => {
const res = await infoApi.getTemplateType();
if (res.code == 0) {
// 获取数据
state.templateData = res.data;
} else {
}
}
const getTableData = async () => {
const res = await infoApi.getMb();
if (res.code == 0) {
// 获取数据
state.tableData1 = res.data && res.data.length > 0 && res.data.sort((a,b) => {
return (a.name > b.name ? 1 : -1) || []
});
} else {
}
};
const editData = (item) => {
state.dialogVisible = true;
state.type = 'U';
state.formData = JSON.parse(JSON.stringify(item));
};
const delData = (item) => {
ElMessageBox.confirm("确定删除该数据?", "删除模板", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(async () => {
const res = await infoApi.delMb(item);
if (res.code == 0) {
ElMessage.success(res.data || res.message || "请求成功");
getTableData();
} else {
ElMessage.error(res.data || res.message || "请求失败");
}
})
.catch(() => {
ElMessage.info("已取消删除");
});
};
const addData = () => {
state.dialogVisible = true;
//清空数据
state.formData = {
template_name: '',
template_description: '',
template_type: 1
}
state.type = 'I';
};
const viewData = (item) => {
state.dialogVisible2 = true;
state.formData1 = item;
}
const dialogClose = () => {
state.dialogVisible = false;
state.dialogVisible2 = false;
};
const dialogSuccess = () => {
state.dialogVisible = false;
state.dialogVisible2 = false;
getTableData();
};
const handleSizeChange =(val) => {
state.listQuery.pageNum = val;
}
const handleCurrentChange = (val) => {
state.listQuery.page = val;
}
return {
...toRefs(state),
editData,
delData,
getTableData,
addData,
dialogSuccess,
dialogClose,
viewData,
tableData,
totalNum,
total,
handleSizeChange,
handleCurrentChange
};
},
};
</script>
<style lang="scss" scoped>
.all-content {
display: flex;
flex-direction: column;
}
.top-div {
display: flex;
justify-content: flex-end;
}
</style>