<template>
|
<div style="padding: 15px 20px 15px 5px">
|
<div class="pre-text">{{ text }}</div>
|
<vol-form
|
ref="form"
|
:labelWidth="80"
|
:load-key="false"
|
:formFields="options.fields"
|
:formRules="options.formOptions"
|
>
|
</vol-form>
|
<div class="tables">
|
<div
|
class="table-item"
|
v-for="(item, index) in options.tables"
|
:key="index"
|
>
|
<div class="table-header">
|
<div class="header-text">
|
{{ item.name }}
|
</div>
|
<div class="header-btns">
|
<el-button
|
type="primary"
|
size="small"
|
:key="bindex"
|
plain
|
@click="tableBtnClick(item, bindex, index)"
|
:icon="btnItem.icon"
|
v-for="(btnItem, bindex) in item.buttons"
|
>
|
{{ btnItem.name }}
|
</el-button>
|
</div>
|
</div>
|
<vol-table
|
:url="item.url"
|
:load-key="false"
|
:index="true"
|
:ref="'table' + index"
|
:tableData="item.tableData"
|
:columns="item.columns"
|
:max-height="250"
|
:pagination-hide="item.pagination"
|
:column-index="true"
|
:ck="true"
|
></vol-table>
|
</div>
|
</div>
|
|
<div class="tables" style="padding-bottom: 10px">
|
<el-tabs
|
v-model="tabsModel"
|
v-show="options.tabs.length"
|
@tab-click="() => {}"
|
>
|
<el-tab-pane
|
style="padding: 0"
|
class="table-item"
|
v-for="(item, index) in options.tabs"
|
:label="item.name"
|
:name="index"
|
:key="index"
|
>
|
<div class="table-header">
|
<div class="header-text">
|
{{ item.name }}
|
</div>
|
<div class="header-btns">
|
<el-button
|
type="primary"
|
size="small"
|
:key="bindex"
|
:icon="btnItem.icon"
|
plain
|
@click="tabsTableBtnClick(item, bindex, index)"
|
v-for="(btnItem, bindex) in item.buttons"
|
>
|
{{ btnItem.name }}
|
</el-button>
|
</div>
|
</div>
|
<vol-table
|
:url="item.url"
|
:load-key="false"
|
:index="true"
|
:ref="'tabsTable' + index"
|
:tableData="item.tableData"
|
:columns="item.columns"
|
:max-height="250"
|
:pagination-hide="item.pagination"
|
:column-index="true"
|
:ck="true"
|
></vol-table>
|
</el-tab-pane>
|
</el-tabs>
|
</div>
|
|
<div class="form-btns">
|
<el-button type="primary" @click="submit" icon="el-icon-check" size="small"
|
>提交</el-button
|
>
|
<el-button
|
type="primary"
|
@click="reset"
|
plain
|
icon="el-icon-refresh-right"
|
size="small"
|
>重置</el-button
|
>
|
<el-button
|
type="primary"
|
@click="download"
|
plain
|
icon="el-icon-refresh-right"
|
size="small"
|
>下载代码</el-button
|
>
|
</div>
|
</div>
|
</template>
|
|
<script>
|
import VolTable from "./../VolTable";
|
import VolBox from "./../VolBox";
|
import VolForm from "./../VolForm";
|
import downloadForm from "./DownloadForm";
|
export default {
|
props: {
|
options: {
|
type: Object,
|
default: () => {
|
return { fields: {}, formOptions: [], tables: [], tabs: [] };
|
},
|
},
|
},
|
data() {
|
return {
|
text: "",
|
tabsModel: 0,
|
};
|
},
|
created() {},
|
methods: {
|
tableBtnClick(item, btnIndex, index) {
|
if (item.buttons[btnIndex].value == "add") {
|
this.$refs["table" + index].addRow({});
|
return;
|
}
|
if (item.buttons[btnIndex].value == "del") {
|
this.$refs["table" + index].delRow();
|
return;
|
}
|
},
|
tabsTableBtnClick(item, btnIndex, index) {
|
if (item.buttons[btnIndex].value == "add") {
|
this.$refs["tabsTable" + index].addRow({});
|
return;
|
}
|
if (item.buttons[btnIndex].value == "del") {
|
this.$refs["tabsTable" + index].delRow();
|
return;
|
}
|
},
|
submit() {},
|
reset() {
|
this.$refs.form.reset();
|
this.$Message.success("表单已重置");
|
},
|
download() {
|
downloadForm.call(this);
|
},
|
},
|
components: {
|
"vol-table": VolTable,
|
"vol-box": VolBox,
|
"vol-form": VolForm,
|
},
|
};
|
|
VolForm;
|
</script>
|
<style lang="less" scoped>
|
.form-btns {
|
text-align: center;
|
}
|
.tables {
|
padding-left: 15px;
|
.table-item {
|
padding: 10px;
|
}
|
.table-header {
|
display: flex;
|
margin-bottom: 8px;
|
}
|
.header-text {
|
position: relative;
|
bottom: -9px;
|
flex: 1;
|
font-weight: bold;
|
}
|
.header-btns {
|
text-align: right;
|
}
|
}
|
</style>
|