import templateCode from './templateCode'
export default function () {
let code = templateCode;
let _formOptions = this.options.formOptions.map(m => {
let _op = m.map((m1, i) => {
let _obj;
//.data[0].hasOwnProperty("key")
if (m1.data && m1.data.length && !m1.dataKey) {
let m2 = JSON.parse(JSON.stringify(m1));
m2.data = m2.data.map(c => {
return { key: c.label || c.key, value: c.label }
})
_obj = JSON.stringify(m2)
} else {
_obj = JSON.stringify(m1)
}
return (i === 0 ? '' : '\n\t\t\t\t') + _obj
}).join(',');
//return JSON.stringify(m, null, '')
return _op;
})
code = code.replace('{#fields}', JSON.stringify(this.options.fields))
.replace('{#formOptions}', '[' + _formOptions.join('],\n\t\t\t\t[') + ']');
code = code.replace('}],', '\t\t\t\t\t}],')
.replace("[{#tableOptions}]", JSON.stringify(this.options.tables, null, '\t'))
.replace("[{#tabsOptions}]", JSON.stringify(this.options.tabs, null, '\t'))
// fields: {#fields},
// formOptions: [{#formOptions}],
// tables: [{#tables}],
// tabs: [{#tabs}]
var tabsText = this.options.tabs.length ? ` <div class="tables"
style="padding-bottom: 10px">
<el-tabs v-model="tabsModel"
@tab-click="() => {}">
<el-tab-pane style="padding: 0"
class="table-item"
v-for="(item, index) in 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="mini"
: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>`: ''
code = code.replace('{#tabs}', tabsText);
if (this.options.tables.length || this.options.tabs.length) {
code = code.replace("{import_VolTable}", "import VolTable from '@/components/basic/VolTable'")
code = code.replace(",{component_table}", ",'vol-table': VolTable")
} else {
code = code.replace("{import_VolTable}", '')
code = code.replace("{component_table}", '')
}
if (this.options.tables.length) {
code = code.replace('{table_ms}', `
tableBtnClick (item, btnIndex, index) {
if (item.buttons[btnIndex].value == "add") {
this.$refs["table" + index][0].addRow({});
return;
}
if (item.buttons[btnIndex].value == "del") {
this.$refs["table" + index][0].delRow();
return;
}
},
tabsTableBtnClick (item, btnIndex, index) {
if (item.buttons[btnIndex].value == "add") {
this.$refs["tabsTable" + index][0].addRow({});
return;
}
if (item.buttons[btnIndex].value == "del") {
this.$refs["tabsTable" + index][0].delRow();
return;
}
},`)
code = code.replace('{#tables}',
`
<!--tableé…ç½® -->
<div class="tables">
<div class="table-item"
v-for="(item, index) in tables"
:key="index">
<div class="table-header">
<div class="header-text">
{{ item.name }}
</div>
<div class="header-btns">
<el-button type="primary"
size="mini"
: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>`);
} else {
code = code.replace('{table_ms}', '')
code = code.replace('{#tables}', '');
}
const blob = new Blob([code], { type: "text/plain;charset=utf-8" })
if ('download' in document.createElement('a')) { // éžIE下载
const elink = document.createElement('a')
elink.download = `code${new Date().valueOf()}.vue`;
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href) // 释放URL 对象
document.body.removeChild(elink)
} else {
navigator.msSaveBlob(blob, fileName)
}
}