| 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) | 
|     } | 
| } |