|
|
@@ -0,0 +1,224 @@
|
|
|
+ <template>
|
|
|
+ <div class="tab6">
|
|
|
+ <div class="crumbs">
|
|
|
+ <div>
|
|
|
+ <span @click="$router.push('/Layout/tab1')">数据 /</span>
|
|
|
+ <span @click="$router.go(-1)"> 表 /</span>
|
|
|
+ <span class="active"> 字段</span>
|
|
|
+ </div>
|
|
|
+ <div class="title">{{ $route.params.p }} / {{ $route.params.n }}</div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="search">
|
|
|
+ <div class="left">
|
|
|
+ <el-input
|
|
|
+ style="width: 380px"
|
|
|
+ v-model="pageData.searchKey"
|
|
|
+ placeholder="请输入字段名"
|
|
|
+ ></el-input>
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ icon="el-icon-search"
|
|
|
+ @click="getInfoById(pageData)"
|
|
|
+ >搜索</el-button
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ <div class="right">
|
|
|
+ <el-button
|
|
|
+ type="danger"
|
|
|
+ :disabled="selecArr.length === 0"
|
|
|
+ @click="recordDel"
|
|
|
+ >删除数据</el-button
|
|
|
+ >
|
|
|
+ <el-button type="success" @click="addData">新增数据</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="table">
|
|
|
+ <el-table
|
|
|
+ :data="tableData"
|
|
|
+ style="width: 100%"
|
|
|
+ @selection-change="selecChange"
|
|
|
+ >
|
|
|
+ <el-table-column type="selection" width="55" fixed> </el-table-column>
|
|
|
+ <el-table-column label="序号" width="80" fixed>
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ scope.$index + (pageData.pageNum - 1) * pageData.pageSize + 1 }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="操作" width="80" fixed>
|
|
|
+ <template #default="{ row }">
|
|
|
+ <el-button type="text" @click="editData(row.id)">编辑</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ width="200"
|
|
|
+ v-for="item in tableHead"
|
|
|
+ :key="item.name"
|
|
|
+ :label="`${item.remark}(${item.type})`"
|
|
|
+ >
|
|
|
+ <template #default="{ row }">
|
|
|
+ <span class="tabTxt" :title="row[item.name]">{{
|
|
|
+ row[item.name] ? row[item.name] : "-"
|
|
|
+ }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ <!-- 分页器 -->
|
|
|
+ <div class="paging">
|
|
|
+ <el-pagination
|
|
|
+ :current-page="pageData.pageNum"
|
|
|
+ @current-change="currentChange"
|
|
|
+ @size-change="sizeChange"
|
|
|
+ layout="prev, pager, next,sizes,jumper"
|
|
|
+ :total="total"
|
|
|
+ >
|
|
|
+ </el-pagination>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import { getInfoById, recordDel } from "@/utils/api";
|
|
|
+export default {
|
|
|
+ name: "tab6",
|
|
|
+ components: {},
|
|
|
+ data() {
|
|
|
+ //这里存放数据
|
|
|
+ return {
|
|
|
+ selecArr: [],
|
|
|
+ total: 0,
|
|
|
+ tableData: [],
|
|
|
+ tableId: null,
|
|
|
+ pageData: {
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ searchKey: "",
|
|
|
+ },
|
|
|
+ // 表头相关数据
|
|
|
+ tableHead: [],
|
|
|
+ };
|
|
|
+ },
|
|
|
+ //监听属性 类似于data概念
|
|
|
+ computed: {},
|
|
|
+ //监控data中的数据变化
|
|
|
+ watch: {},
|
|
|
+ //方法集合
|
|
|
+ methods: {
|
|
|
+ // 点击新增数据
|
|
|
+ addData() {
|
|
|
+ this.$router.push(`/Layout/tab6Add/${this.tableId}`);
|
|
|
+ },
|
|
|
+ // 点击编辑
|
|
|
+ editData(id) {
|
|
|
+ this.$router.push(`/Layout/tab6Add/${this.tableId}?k=${id}`);
|
|
|
+ },
|
|
|
+ selecChange(val) {
|
|
|
+ this.selecArr = val;
|
|
|
+ },
|
|
|
+ // 点击删除项目
|
|
|
+ async recordDel() {
|
|
|
+ this.$confirm("确定删除吗?", "提示", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning",
|
|
|
+ })
|
|
|
+ .then(async () => {
|
|
|
+ let temp = [];
|
|
|
+ this.selecArr.forEach((v) => {
|
|
|
+ temp.push(v.id);
|
|
|
+ });
|
|
|
+ let res = await recordDel(this.tableId, temp.join(","));
|
|
|
+ if (res.code === 0) {
|
|
|
+ this.$message.success("删除成功!");
|
|
|
+ this.getInfoById(this.pageData);
|
|
|
+ } else this.$message.warning(res.msg);
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ this.$message.info("已取消删除");
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 分页器
|
|
|
+ currentChange(val) {
|
|
|
+ this.pageData.pageNum = val;
|
|
|
+ this.getInfoById(this.pageData);
|
|
|
+ },
|
|
|
+ sizeChange(val) {
|
|
|
+ this.pageData.pageNum = 1;
|
|
|
+ this.pageData.pageSize = val;
|
|
|
+ this.getInfoById(this.pageData);
|
|
|
+ },
|
|
|
+
|
|
|
+ // 封装一个获取表列表的方法
|
|
|
+ async getInfoById(data) {
|
|
|
+ let res = await getInfoById(this.tableId, data);
|
|
|
+ this.total = res.data.fieldData.records.total;
|
|
|
+ this.tableData = res.data.fieldData.records;
|
|
|
+
|
|
|
+ this.tableHead = res.data.fieldNames;
|
|
|
+ this.tableHead.forEach((v) => {
|
|
|
+ if (v.type === "datetime") {
|
|
|
+ this.tableData.forEach((c) => {
|
|
|
+ if (c[v.name]) c[v.name] = c[v.name].substring(0, 10);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ if (v.type == "varchar") v.type = "字符串";
|
|
|
+ else if (v.type == "date" || v.type == "datetime") v.type = "日期";
|
|
|
+ else if (v.type == "int") v.type = "数字";
|
|
|
+ });
|
|
|
+ },
|
|
|
+ },
|
|
|
+ //生命周期 - 创建完成(可以访问当前this实例)
|
|
|
+ async created() {
|
|
|
+ this.tableId = Number(this.$route.params.id);
|
|
|
+ this.getInfoById(this.pageData);
|
|
|
+ },
|
|
|
+ //生命周期 - 挂载完成(可以访问DOM元素)
|
|
|
+ mounted() {},
|
|
|
+ beforeCreate() {}, //生命周期 - 创建之前
|
|
|
+ beforeMount() {}, //生命周期 - 挂载之前
|
|
|
+ beforeUpdate() {}, //生命周期 - 更新之前
|
|
|
+ updated() {}, //生命周期 - 更新之后
|
|
|
+ beforeDestroy() {}, //生命周期 - 销毁之前
|
|
|
+ destroyed() {}, //生命周期 - 销毁完成
|
|
|
+ activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
|
|
|
+};
|
|
|
+</script>
|
|
|
+<style lang='less' scoped>
|
|
|
+.tab6 {
|
|
|
+ position: relative;
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ .search {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ .left {
|
|
|
+ justify-content: space-between;
|
|
|
+ display: flex;
|
|
|
+ width: 500px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .table {
|
|
|
+ width: 1570px;
|
|
|
+ overflow-x: auto;
|
|
|
+ /deep/.el-table__body-wrapper {
|
|
|
+ width: 1570px;
|
|
|
+ height: 540px;
|
|
|
+ overflow-y: auto;
|
|
|
+ }
|
|
|
+ .tabTxt {
|
|
|
+ cursor: pointer;
|
|
|
+ width: 200px;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ white-space: nowrap;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .paging {
|
|
|
+ position: absolute;
|
|
|
+ right: 20px;
|
|
|
+ bottom: 40px;
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|