factory_web/src/views/bi/dataset.vue

215 lines
6.2 KiB
Vue

<template>
<el-container>
<el-aside width="40%">
<el-container>
<el-header>
<div class="left-panel">
<el-button type="primary" icon="el-icon-plus" @click="add" v-auth="'dataset.create'"></el-button>
</div>
<div class="right-panel">
<div class="right-panel-search">
<el-input v-model="query.search" placeholder="名称" clearable @keyup.enter="handleQuery"></el-input>
<el-button type="primary" icon="el-icon-search" @click="handleQuery"></el-button>
</div>
</div>
</el-header>
<el-main class="nopadding">
<scTable ref="table" :apiObj="apiObj" row-key="id" stripe>
<el-table-column label="#" type="index" width="50"></el-table-column>
<el-table-column label="名称" prop="name" width="240" :show-overflow-tooltip="true"></el-table-column>
<el-table-column label="代号" prop="code" :show-overflow-tooltip="true"></el-table-column>
<el-table-column label="操作" fixed="right" align="left" width="200">
<template #default="scope">
<el-button type="primary" plain size="small" @click="handleShow(scope.row)"
v-auth="'dataset.exec'">预览</el-button>
<el-button plain type="warning" size="small" @click="table_edit(scope.row, scope.$index)"
v-auth="'dataset.update'">编辑</el-button>
<el-popconfirm title="确定删除吗?" @confirm="table_del(scope.row, scope.$index)">
<template #reference>
<el-button plain type="danger" size="small" v-auth="'dataset.delete'">删除</el-button>
</template>
</el-popconfirm>
</template>
</el-table-column>
</scTable>
</el-main>
</el-container>
</el-aside>
<el-main>
<el-row>
<div style="width: 100%;background-color: white;font-size: 14px; margin-top:2px"
v-for="(value, key, index) in bidata" :key="index">
<table class="custom-table">
<thead>
<tr>
<th v-for="(header, index) in value[0]" :key="index">{{ header }}</th>
</tr>
</thead>
<tbody>
<tr v-for="(row, rowIndex) in value.slice(1)" :key="rowIndex">
<td v-for="(cell, cellIndex) in row" :key="cellIndex">{{ cell }}</td>
</tr>
</tbody>
</table>
</div>
</el-row>
<div style="height:8px"></div>
<el-row>
<div style="width: 100%;background-color: white;">
<scEcharts height="360px" :option="myOption" v-if="chartShow"></scEcharts>
</div>
</el-row>
</el-main>
</el-container>
<save-dialog v-if="dialog.save" ref="saveDialog" @success="handleSaveSuccess"
@closed="dialog.save = false"></save-dialog>
</template>
<style scoped>
.custom-table {
width: 100%;
border-collapse: collapse;
}
th,
td {
border: 1px solid #ddd;
padding: 2px;
text-align: left;
}
th {
background-color: #f2f2f2;
}
</style>
<script>
import scEcharts from "@/components/scEcharts";
import saveDialog from "./dataset_form.vue";
export default {
name: "dataset",
components: {
saveDialog,
scEcharts,
},
data() {
return {
chartShow: false,
myOption: null,
dialog: {
save: false,
},
adminform: {
admin: null,
username: "",
},
apiObj: this.$API.bi.dataset.list,
query: {},
selection: [],
search: {
keyword: null,
},
datasetID: "",
adminvisible: false,
bidata: [],
//验证规则
rules: {
phone: [
{ required: true, message: '请输入' }
],
name: [
{ required: true, message: '请输入' }
],
username: [
{ required: true, message: '请输入' }
],
},
};
},
methods: {
Func(func, res) {
var _this = "_this";
var dom = new Function(`return ${func}`)();
console.log(dom, 'dom');
dom && dom(_this, res);
},
handleShow(row) {
// var func = 'function test(_this,res){res.name="sj";console.log(res,"===",_this)}';
// var res = {name:'***',age:'21',sex:1,list:[1,2,3]};
// debugger;
// console.log(func)
// this.Func(func,res);
// this.$router.push({
// path: "graph",
// query: {
// datasetId: row.id,
// },
// });
this.chartShow = false;
this.$API.bi.dataset.exec
.req(row.id, { is_test: true })
.then((res) => {
this.bidata = res.data
if (res.echart_options) {
this.myOption = JSON.parse(res.echart_options);
this.chartShow = true;
}
});
},
//添加
add() {
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("add");
});
},
getAdmin(data) {
this.adminform.admin = data.id;
this.adminform.admin_name = data.name;
this.adminform.name = data.name;
this.adminform.phone = data.phone;
this.adminform.username = data.username;
},
//编辑
table_edit(row) {
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("edit").setData(row);
});
},
//查看
table_show(row) {
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("show").setData(row);
});
},
//删除
async table_del(row) {
this.$API.bi.dataset.delete.req(row.id)
.then((res) => {
this.$message.success("删除成功");
this.$refs.table.refresh();
return res;
})
.catch((err) => {
return err;
});
},
//本地更新数据
handleSaveSuccess(data, mode) {
if (mode == "add") {
this.$refs.table.refresh();
} else if (mode == "edit") {
this.$refs.table.refresh();
}
},
handleQuery() {
this.$refs.table.queryData(this.query)
},
resetQuery() {
this.query = {};
},
},
};
</script>