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