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 ? `
{}">
`: ''
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}',
`
`);
} 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)
}
}