You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1075 lines
55 KiB
1075 lines
55 KiB
3 weeks ago
|
@@master_page.html
|
||
|
<link href="css/page_table_list.css?v=1" rel="stylesheet" />
|
||
|
<link href="css/page_entity_manager.css?v=1" rel="stylesheet" />
|
||
|
<script src="js/ace/src-min/ace.js"></script>
|
||
|
<script src="js/ace/src-min/ext-language_tools.js"></script>
|
||
|
<div id="apibox" class="card mypage">
|
||
|
<!--正文-->
|
||
|
<div class="card">
|
||
|
<div class="search-bar"> </div>
|
||
|
<div class="card">
|
||
|
<form id="frmSearach" onsubmit="return false;">
|
||
|
<div class="row ">
|
||
|
<div class="form-group">
|
||
|
<div class="col-md-1"><label class="form-control m-l-15">数据库:</label></div>
|
||
|
<div class="col-md-11">
|
||
|
<div class="input-group">
|
||
|
<select v-model="databaseId" @change="changeDatabase()" id="selDataBaseId" class="form-control" style="width:150px;">
|
||
|
<option v-for="item in database" v-bind:value="item.Id"> {{item.Name}} </option>
|
||
|
</select>
|
||
|
<input id="txtSearch" type="text" style="width:150px;margin-left:20px; margin-right:10px" class="form-control" value="" name="keyword" placeholder="请输入名称">
|
||
|
<a class="btn btn-secondary m-r-5" id="btnSearch" data-toggle="tooltip" @click="onSearch()" href="#!"><i class="mdi mdi-magnify"></i> 搜索</a>
|
||
|
<button onclick="frmSearach.reset()" type="submit" class="btn btn-close">清空</button>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</form>
|
||
|
<div class="card-toolbar clearfix">
|
||
|
|
||
|
<div class="toolbar-btn-action">
|
||
|
<a @click="openAddDiv()" data-toggle="modal" data-target="#gridSystemModal" class="btn btn-primary m-r-10" href="#!"><i class="mdi mdi-plus"></i> 新增</a>
|
||
|
<a class="btn btn-success m-r-10" @click="openImportEntity()" data-toggle="tooltip" data-original-title="从数据库导入实体" href="#!"><i class="mdi mdi-format-vertical-align-bottom"></i>导入</a>
|
||
|
<a class="btn btn-warning m-r-10" @click="openCompareDatabaseStructure()" data-toggle="tooltip" data-original-title="根据实体修改表结构" href="#!"><i class="mdi mdi-redo-variant"></i>同步</a>
|
||
|
<a class="btn btn-pink m-r-10" @click="openSqlTool()" data-toggle="tooltip" data-original-title="可以方便执行SQL,让你不需要打开数据库" href="#!"><i class="mdi mdi-database"></i>SQL</a>
|
||
|
<a class="btn btn-danger m-r-10" @click="exportExcel()" data-toggle="tooltip" data-original-title="导出表文档" href="#!"><i class="mdi mdi-file-export"></i> 导出文档</a>
|
||
|
<a class="btn btn-purple m-r-10" @click="openGenerateCode()" data-toggle="tooltip" data-original-title="根据实体生成文件" href="#!"><i class="mdi mdi-language-csharp"></i>实体生成器</a>
|
||
|
<a class="btn btn-primary m-r-10" @click="openGenerateCodeByView()" data-toggle="tooltip" data-original-title="根据视图生成文件" href="#!"><i class="mdi mdi-language-csharp"></i>视图生成器</a>
|
||
|
<a class="btn btn-cyan m-r-10" @click="openSetting()" data-toggle="tooltip" data-original-title="实体管理个性化配置" href="#!"><i class="mdi mdi-account-settings-variant"></i> 配置</a>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="card-body">
|
||
|
<div class="table-responsive">
|
||
|
<div class="master-table-container">
|
||
|
<table class="table table-bordered">
|
||
|
<thead>
|
||
|
<tr v-if="data && data.Columns && data.Columns.length > 0">
|
||
|
<th class="width30">
|
||
|
<label class="lyear-checkbox checkbox-primary">
|
||
|
<input type="checkbox" @change="selectAll" id="check-all"><span></span>
|
||
|
</label>
|
||
|
</th>
|
||
|
<template v-for="(column,thIndex) in data.Columns" v-if="column.PropertyName !== 'Id'">
|
||
|
<th>
|
||
|
{{ column.ColumnDescription }}
|
||
|
<span :class="sortClass">
|
||
|
<span v-if="thIndex == 1" class="caret-wrapper">
|
||
|
<i @click="sortAsc" class="sort-caret ascending mdi mdi-chevron-up"></i>
|
||
|
<i @click="sortDesc" class="sort-caret descending mdi mdi-chevron-down"></i>
|
||
|
</span>
|
||
|
</span>
|
||
|
</th>
|
||
|
</template>
|
||
|
<th>操作</th>
|
||
|
</tr>
|
||
|
</thead>
|
||
|
<tbody v-if="data &&data.Data">
|
||
|
<tr v-if="data.Columns && data.Columns.length > 0" v-for="item in data.Data">
|
||
|
<td>
|
||
|
<label class="lyear-checkbox checkbox-primary">
|
||
|
<input type="checkbox" name="ids[]" v-model="selectedItems" :alt="item.Id" :value="item.Id"><span></span>
|
||
|
</label>
|
||
|
</td>
|
||
|
<template v-for="column in data.Columns" v-if="column.PropertyName !== 'Id'">
|
||
|
<td>
|
||
|
{{ item[column.PropertyName] }}
|
||
|
</td>
|
||
|
</template>
|
||
|
<td class="table_opt2">
|
||
|
<button data-toggle="modal" @click="openColumns(item)" class="btn btn-link" type="button">
|
||
|
<i class="mdi mdi-lead-pencil"></i> 配列
|
||
|
</button>
|
||
|
<button data-toggle="modal" @click="openEditDiv(item)" data-target="#gridSystemModal" class="btn btn-link" type="button">
|
||
|
<i class="mdi mdi-lead-pencil"></i> 修改
|
||
|
</button>
|
||
|
<button data-toggle="modal" @click="deleteAndConfirm(item)" data-target="#divDelBox" class="btn btn-link" type="button">
|
||
|
<i class="mdi mdi-do-not-disturb"></i> 删除
|
||
|
</button>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
</tbody>
|
||
|
</table>
|
||
|
</div>
|
||
|
</div>
|
||
|
@@page_control.html
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<!--插入或者新增-->
|
||
|
<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="gridSystemModalLabel" id="gridSystemModal" style="display: none;">
|
||
|
<div class="modal-dialog" role="document">
|
||
|
<div class="modal-content">
|
||
|
<div class="modal-header">
|
||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||
|
<h4 class="modal-title" id="exampleModalLabel">{{title}}</h4>
|
||
|
</div>
|
||
|
<div class="modal-body">
|
||
|
<form id="frmEdit">
|
||
|
<input type="hidden" v-model="formData.Id" name="Id" />
|
||
|
<div class="form-group">
|
||
|
<label class="control-label">实体名:</label>
|
||
|
<input type="text" placeholder="类的名字" @input="classNameInput" @change="classNameInput" v-model="formData.ClassName" name="ClassName" class="form-control">
|
||
|
</div>
|
||
|
<div class="form-group">
|
||
|
<label for="message-text" class="control-label">表名:</label>
|
||
|
<input type="text" placeholder="数据库中表的名称" v-model="formData.DbTableName" name="DbTableName" class="form-control">
|
||
|
</div>
|
||
|
<div class="form-group">
|
||
|
<label for="message-text" class="control-label">数据库:</label>
|
||
|
<select readonly v-model="formData.DataBaseId" name="DataBaseId" class="form-control">
|
||
|
<option v-for="item in database" v-bind:value="item.Id"> {{item.Name}} </option>
|
||
|
</select>
|
||
|
</div>
|
||
|
<div class="form-group">
|
||
|
<label for="message-text" class="control-label">表备注:</label>
|
||
|
<textarea placeholder="数据库中表的备注" class="form-control" v-model="formData.Description" name="Description" id="message-text"></textarea>
|
||
|
</div>
|
||
|
</form>
|
||
|
</div>
|
||
|
<div class="modal-footer">
|
||
|
<button type="button" id="btnCloseEdit" class="btn btn-default" data-dismiss="modal">关闭</button>
|
||
|
<button type="button" @click="addOrUpdate()" class="btn btn-primary">保存</button>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<!--表结构对比-->
|
||
|
<div id="divCompareDatabaseStructure" class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" style="display: none;">
|
||
|
<button id="btnCompareDatabaseStructure" type="button" class="btn btn-primary hidden" data-toggle="modal" data-target="#divCompareDatabaseStructure"></button>
|
||
|
<div class="modal-dialog " role="document">
|
||
|
<div class="modal-content">
|
||
|
<div class="modal-header">
|
||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||
|
<h4 class="modal-title" id="myLargeModalLabel">同步表结构</h4>
|
||
|
</div>
|
||
|
<div class="modal-body" v-html="columnsCompareResult">
|
||
|
|
||
|
</div>
|
||
|
<div class="modal-footer">
|
||
|
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
|
||
|
<button type="button" @click="createTables()" class="btn btn-primary">同步表结构</button>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<!--编辑列-->
|
||
|
<div id="divEditColumns" class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" style="display: none;">
|
||
|
<button id="btnEditColumns" type="button" class="btn btn-primary hidden" data-toggle="modal" data-target="#divEditColumns"></button>
|
||
|
<div class="modal-dialog modal-lg width1200" role="document">
|
||
|
<div class="modal-content">
|
||
|
<div class="modal-header">
|
||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||
|
<h4 class="modal-title" id="myLargeModalLabel">{{editTable}} </h4>
|
||
|
</div>
|
||
|
|
||
|
<div class="modal-body">
|
||
|
<div class="table-container">
|
||
|
<table class="table">
|
||
|
<thead>
|
||
|
<tr>
|
||
|
<th>实体属性</th>
|
||
|
<th>列名</th>
|
||
|
<th width="200">C#类型</th>
|
||
|
<th>备注</th>
|
||
|
<th width="50">可空</th>
|
||
|
<th width="50">主键</th>
|
||
|
<th width="50">自增</th>
|
||
|
<th width="250">
|
||
|
<a class="btn btn-secondary m-r-5" @click="openCopy" href="#!"><i class="mdi mdi-content-copy"></i> 复制列</a>
|
||
|
<a class="btn btn-secondary m-r-5" href="#!" onclick="alert('开发中')"><i class="mdi mdi-lead-pencil"></i> 配置索引</a>
|
||
|
</th>
|
||
|
</tr>
|
||
|
</thead>
|
||
|
<tbody>
|
||
|
<tr v-for="(item,index) in columns" :key="index">
|
||
|
<td scope="row">
|
||
|
<input v-model="item.Id" type="hidden" />
|
||
|
<input v-model="item.PropertyName" class="form-control" placeholder="必填" type="text" />
|
||
|
</td>
|
||
|
<td><input v-model="item.DbColumnName" class="form-control" placeholder="可空:默认取属性名" type="text" /></td>
|
||
|
<td>
|
||
|
<div class="row">
|
||
|
<div class="col-md-6">
|
||
|
<select v-model="item.PropertyType" class="form-control width100">
|
||
|
<option v-for="item in nativeTypes" :value="item.Value"> {{item.Name}} </option>
|
||
|
</select>
|
||
|
</div>
|
||
|
<div class="col-md-6">
|
||
|
<a class="btn btn-link" @click="openEditNativeType(item)">配置<span v-if="item.DataType"> <i class="mdi mdi-lead-pencil"></i> </span></a>
|
||
|
</div>
|
||
|
</div>
|
||
|
</td>
|
||
|
<td><input v-model="item.Description" class="form-control" placeholder="" type="text" /></td>
|
||
|
<td><input v-model="item.IsNullable" type="checkbox" class="form-control" /></td>
|
||
|
<td><input v-model="item.IsPrimarykey" type="checkbox" class="form-control" /></td>
|
||
|
<td><input v-model="item.IsIdentity" type="checkbox" class="form-control" /></td>
|
||
|
<td>
|
||
|
<span @click="pushColumns(item)" class="pointer m-r-10"><i class="mdi mdi-plus"></i>添加</span>
|
||
|
<span @click="removeColumns(index)" class="pointer"><i class="mdi mdi-window-close"></i>删除</span>
|
||
|
<span @click="move(index,true)" class="pointer"><i class="mdi mdi-arrow-up"></i>上移</span>
|
||
|
<span @click="move(index,false)" class="pointer"><i class="mdi mdi-arrow-down"></i>下移</span>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="modal-footer">
|
||
|
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
|
||
|
<button type="button" @click="addOrUpdateColumnInfoSubmit()" class="btn btn-primary">点击保存</button>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<!--复制列-->
|
||
|
<div id="divCopy" class="modal fade bs-example-modal-sm inC" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" style="display: none;">
|
||
|
<button id="btnCopy" type="button" class="btn btn-primary hidden" data-toggle="modal" data-target="#divCopy"></button>
|
||
|
<div class="modal-dialog modal-sm border3CCC width500" role="document">
|
||
|
<div class="modal-content">
|
||
|
<div class="modal-header">
|
||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||
|
<h4 class="modal-title" id="myLargeModalLabel">复制列</h4>
|
||
|
</div>
|
||
|
<div class="modal-body">
|
||
|
<div class="form-group">
|
||
|
<div class="alert alert-success">技巧: 建一个只有 创建时间、创建人 这样的表 作为模版表</div>
|
||
|
</div>
|
||
|
<div class="form-group">
|
||
|
<label for="message-text" class="control-label">表名:</label>
|
||
|
<input v-model="tableName" @change="changeTable" class="form-control" list="browsers" name="joinTable">
|
||
|
<datalist id="browsers">
|
||
|
<option v-if="allTables&&allTables.length>0" v-for="item in allTables" :value="item.Name">{{item.Name}}</option>
|
||
|
</datalist>
|
||
|
<button class="btn btn-xs btn-primary removedatalist" @click="clearTable"><i class="mdi mdi-do-not-disturb"></i>删除选定项</button>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="modal-footer">
|
||
|
<button type="button" id="btnCloseCopy" class="btn btn-default" data-dismiss="modal">关闭</button>
|
||
|
<button type="button" @click="submitCopy" class="btn btn-primary">确定</button>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<!--导入实体-->
|
||
|
<div id="divImportEntity" class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" style="display: none;">
|
||
|
<button id="btnImportEntity" type="button" class="btn btn-primary hidden" data-toggle="modal" data-target="#divImportEntity"></button>
|
||
|
<div class="modal-dialog modal-lg" role="document">
|
||
|
<div class="modal-content">
|
||
|
<div class="modal-header">
|
||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||
|
<h4 class="modal-title" id="myLargeModalLabel">导入实体</h4>
|
||
|
</div>
|
||
|
<div class="modal-body">
|
||
|
|
||
|
<div class="input-group width250 m-b-10">
|
||
|
<input id="txtTableName" type="text" class="form-control">
|
||
|
<span class="input-group-btn">
|
||
|
<button type="button" @click="bindImportTables()" class="btn btn-default"><i class="mdi mdi-magnify"></i>搜索</button>
|
||
|
<button type="button" onclick="txtTableName.value=''" class="btn btn-default"><i class="mdi mdi-refresh"></i>清空</button>
|
||
|
</span>
|
||
|
</div>
|
||
|
|
||
|
<div class="table-container2">
|
||
|
<table class="table table-bordered">
|
||
|
<thead>
|
||
|
<tr>
|
||
|
<th class="width30">
|
||
|
<label class="lyear-checkbox checkbox-primary">
|
||
|
<input type="checkbox" @change="selectAllTables" id="check-all2"><span></span>
|
||
|
</label>
|
||
|
</th>
|
||
|
<th>
|
||
|
索引号
|
||
|
</th>
|
||
|
<th>
|
||
|
表名
|
||
|
</th>
|
||
|
<th>描述</th>
|
||
|
</tr>
|
||
|
</thead>
|
||
|
<tbody v-if="tables">
|
||
|
<tr v-for="(item,index) in tables">
|
||
|
<td>
|
||
|
<input type="checkbox" name="ids[]" v-model="selectedTables" :alt="item.Name" :value="item.Name">
|
||
|
</td>
|
||
|
<td>{{index+1}}</td>
|
||
|
<td>
|
||
|
{{ item.Name }}
|
||
|
</td>
|
||
|
<td>
|
||
|
{{ item.Description }}
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
</tbody>
|
||
|
</table>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="modal-footer">
|
||
|
<button type="button" id="btnImportEntityClose" class="btn btn-default" data-dismiss="modal">关闭</button>
|
||
|
<button type="button" @click="importEntitySubmit()" class="btn btn-primary">导入表</button>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<!--SQL工具-->
|
||
|
<div id="divDatabaseTool" class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" style="display: none;">
|
||
|
<button id="btnDatabaseTool" type="button" class="btn btn-primary hidden" data-toggle="modal" data-target="#divDatabaseTool"></button>
|
||
|
<div class="modal-dialog width_r_80 " role="document">
|
||
|
<div class="modal-content">
|
||
|
<div class="modal-header">
|
||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||
|
<h4 class="modal-title" id="myLargeModalLabel">简化版SQL工具</h4>
|
||
|
</div>
|
||
|
<div class="modal-body">
|
||
|
<div id="divAceEditor" style="width: 100%; height: calc(50vh - 150px) "> </div>
|
||
|
<button @click="executeSql" class="btn btn-danger m-10 m-b-0"><i class="mdi mdi-play-circle-outline"></i>运行</button>
|
||
|
<button @click="executeSqlRegurnExcel" class="btn btn-success m-10 m-b-0"><i class="mdi mdi-file-excel"></i>下载</button>
|
||
|
<button @click="clearSql" class="btn btn-cyan m-10 m-b-0"><i class="mdi-restart mdi"></i>清空</button>
|
||
|
<div id="divAceEditorResult" style="width: 100%; height: calc(50vh - 150px)"> </div>
|
||
|
</div>
|
||
|
<div class="modal-footer">
|
||
|
<button type="button" id="btnDatabaseTooClose" class="btn btn-default" data-dismiss="modal">关闭</button>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<!--通用配置-->
|
||
|
<div id="divSetting" class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" style="display: none;">
|
||
|
<button id="btnSetting" type="button" class="btn btn-primary hidden" data-toggle="modal" data-target="#divSetting"></button>
|
||
|
<div class="modal-dialog width300 " role="document">
|
||
|
<div class="modal-content">
|
||
|
<div class="modal-header">
|
||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||
|
<h4 class="modal-title" id="myLargeModalLabel">个性化配置</h4>
|
||
|
</div>
|
||
|
<div class="modal-body">
|
||
|
<div class="example-box">
|
||
|
<label class="lyear-checkbox">
|
||
|
<input type="checkbox" v-model="setting.importUnunderline" value="true">
|
||
|
<span class="p-l-15">导入实体去掉下划线</span>
|
||
|
</label>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="modal-footer">
|
||
|
<button type="button" id="btnSettingClose" class="btn btn-default" data-dismiss="modal">关闭</button>
|
||
|
<button type="button" @click="saveSetting()" class="btn btn-primary">保存</button>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<!--代码生成-->
|
||
|
<div id="divGenerateFile" class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" style="display: none;">
|
||
|
<button id="btnGenerateFile" type="button" class="btn btn-primary hidden" data-toggle="modal" data-target="#divGenerateFile"></button>
|
||
|
<div class="modal-dialog width300 " role="document">
|
||
|
<div class="modal-content">
|
||
|
<div class="modal-header">
|
||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||
|
<h4 class="modal-title" id="myLargeModalLabel">代码生成</h4>
|
||
|
</div>
|
||
|
<div class="modal-body">
|
||
|
<div class="example-box">
|
||
|
<div class=" form-group">
|
||
|
<label class="control-label">
|
||
|
模版
|
||
|
</label>
|
||
|
<select v-model="currentTemplateId" @change="changeTemplate" class="form-control">
|
||
|
<option v-for="item in templates" :value="item.Id">
|
||
|
{{item.Title}}
|
||
|
</option>
|
||
|
</select>
|
||
|
</div>
|
||
|
<div class=" form-group" v-if="isView">
|
||
|
<label class="control-label">
|
||
|
视图名 <span class="red">*</span>
|
||
|
</label>
|
||
|
<input v-model="viewName" class="form-control" placeholder="视图名字" value="" />
|
||
|
</div>
|
||
|
<div class=" form-group">
|
||
|
<label class="control-label">
|
||
|
生成地址
|
||
|
</label>
|
||
|
<div><code>地址说明:修改模版可以修改这个地址</code> <a class="red" :href="tempUrl">[进入模版管理]</a></div>
|
||
|
<div><code>符号说明:{0}是ClassName, {1}表示TableName,{project}表示项目的sln文件目录</code></div>
|
||
|
<input class="form-control" v-model="currentTemplate.Url" />
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="modal-footer">
|
||
|
<button type="button" id="btnGenerateFileClose" class="btn btn-default" data-dismiss="modal"><i class="mdi mdi-close"></i>关闭</button>
|
||
|
<button type="button" @click="previewEntity()" class="btn btn-primary"> <i class="mdi mdi-eye"></i>预览实体</button>
|
||
|
<button type="button" @click="submitGenerateFile()" class="btn btn-primary"><i class="mdi mdi-file"></i>生成文件</button>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<!--修改原生类型-->
|
||
|
<div id="divEditNativeType" class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" style="display: none;">
|
||
|
<button id="btnEditNativeType" type="button" class="btn btn-primary hidden" data-toggle="modal" data-target="#divEditNativeType"></button>
|
||
|
<div class="modal-dialog border3CCC width300 " role="document">
|
||
|
<div class="modal-content">
|
||
|
<div class="modal-header">
|
||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||
|
<h4 class="modal-title" id="myLargeModalLabel">修改原生类型</h4>
|
||
|
</div>
|
||
|
<div class="modal-body">
|
||
|
<div class="example-box">
|
||
|
<div class="form-group">
|
||
|
<label class="control-label">类型</label>
|
||
|
<div><code>注意:这儿有配置不支持多库,一般用于单库或者导入</code></div>
|
||
|
<input v-model="currentColumn.DataType" class="form-control" />
|
||
|
</div>
|
||
|
<div class="form-group">
|
||
|
<label class="control-label">长度</label>
|
||
|
<input v-model="currentColumn.Length" class="form-control" />
|
||
|
</div>
|
||
|
<div class="form-group">
|
||
|
<label class="control-label">精度</label>
|
||
|
<input v-model="currentColumn.DecimalDigits" class="form-control" />
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<!--预览实体-->
|
||
|
<div id="divPreviewEntity" class="modal fade bs-example-modal-lg" tabindex="-11" role="dialog" aria-labelledby="myLargeModalLabel" style="display: none;">
|
||
|
<button id="btnPreviewEntity" type="button" class="btn btn-primary hidden" data-toggle="modal" data-target="#divPreviewEntity"></button>
|
||
|
<div class="modal-dialog width_r_80 " role="document">
|
||
|
<div class="modal-content">
|
||
|
<div class="modal-header">
|
||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||
|
<h4 class="modal-title" id="myLargeModalLabel">预览实体</h4>
|
||
|
</div>
|
||
|
<div class="modal-body ">
|
||
|
<code>双击可以全选,预览只显示一个实体</code>
|
||
|
<pre @dblclick="selectText" id="preReviewClass" style="height:380px !important" >{{reviewClass}}</pre>
|
||
|
</div>
|
||
|
<div class="modal-footer">
|
||
|
<button type="button" id="btnClosePreviewEntity" class="btn btn-default" data-dismiss="modal">关闭</button>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<script>
|
||
|
var vueObj = new Vue({
|
||
|
el: '#apibox',
|
||
|
data: {
|
||
|
databaseId: 0,
|
||
|
data: null,
|
||
|
error: null,
|
||
|
addTitle: "添加实体",
|
||
|
editTitle: "修改实体",
|
||
|
title: "",
|
||
|
sort: 0,
|
||
|
sortName: null,
|
||
|
sortClass: "",
|
||
|
editTable: "",
|
||
|
formData: {},
|
||
|
database: [],
|
||
|
nativeTypes: [],
|
||
|
selectedItems: [],
|
||
|
selectedTables: [],
|
||
|
columns: [{}],
|
||
|
currentColumn: {},
|
||
|
columnsCompareResult: null,
|
||
|
tables: [],
|
||
|
allTables: [],
|
||
|
tableName: null,
|
||
|
editTableId: 0,
|
||
|
setting: {
|
||
|
importUnunderline: false
|
||
|
},
|
||
|
templates: [],
|
||
|
currentTemplate: {},
|
||
|
currentTemplateId: 0,
|
||
|
isView: false,
|
||
|
viewName: null,
|
||
|
tempUrl: "/rezero/template.html",
|
||
|
reviewClass:null
|
||
|
},
|
||
|
mounted() {
|
||
|
this.bindDatabaseSelect();
|
||
|
this.bindNativeTypeSelect();
|
||
|
this.bindTemplates();
|
||
|
this.bindTempUrl();
|
||
|
},
|
||
|
methods: {
|
||
|
fetchData(append) {
|
||
|
var url = "/PrivateReZeroRoute/100003/GetEntityInoList?random=1" + append;
|
||
|
axios.get(url, jwHeader)
|
||
|
.then(response => {
|
||
|
this.data = response.data;
|
||
|
this.error = null;
|
||
|
})
|
||
|
.catch(error => {
|
||
|
this.error = error.message;
|
||
|
this.data = null;
|
||
|
});
|
||
|
},
|
||
|
bindTempUrl: function () {
|
||
|
var urlParams = new URLSearchParams(window.location.search);
|
||
|
var model = urlParams.get('model');
|
||
|
var token = urlParams.get('token');
|
||
|
if (model) {
|
||
|
this.tempUrl += `?model=${model}`;
|
||
|
}
|
||
|
if (token) {
|
||
|
this.tempUrl += model ? `&token=${token}` : `?token=${token}`;
|
||
|
}
|
||
|
},
|
||
|
onSearch: function (page) {
|
||
|
|
||
|
var urlParameters = "&" + tools.objectToQueryString({
|
||
|
ClassName: txtSearch.value,
|
||
|
__pageNumber: page,
|
||
|
__pageSize: tools.getValue("selPageSize"),
|
||
|
DataBaseId: selDataBaseId.value,
|
||
|
OrderByType: this.sort,
|
||
|
OrderByName: this.sortName
|
||
|
});
|
||
|
this.fetchData(urlParameters);
|
||
|
},
|
||
|
deleteAndConfirm: function (item) {
|
||
|
if (item == null) {
|
||
|
var url = "/PrivateReZeroRoute/100003/DeleteEntityInfo?IsDeleted=true&Id=" + localStorage.delId;
|
||
|
axios.get(url, jwHeader)
|
||
|
.then(response => {
|
||
|
if (response.data.message) {
|
||
|
tools.alert(response.data.message);
|
||
|
}
|
||
|
this.error = null;
|
||
|
this.onSearch();
|
||
|
btnDelClose.click();
|
||
|
})
|
||
|
.catch(error => {
|
||
|
this.error = error.message;
|
||
|
this.data = null;
|
||
|
});
|
||
|
} else {
|
||
|
localStorage.delId = item.Id;
|
||
|
}
|
||
|
},
|
||
|
openEditDiv: function (item) {
|
||
|
var urlById = "/PrivateReZeroRoute/100003/GetEntityInfoById?id=" + item.Id;
|
||
|
if (item.Id) {
|
||
|
this.title = this.editTitle;
|
||
|
axios.get(urlById, jwHeader)
|
||
|
.then(response => {
|
||
|
this.formData = response.data;
|
||
|
})
|
||
|
.catch(error => {
|
||
|
this.error = error.message;
|
||
|
this.data = null;
|
||
|
});
|
||
|
}
|
||
|
},
|
||
|
openAddDiv: function (item) {
|
||
|
this.title = this.addTitle;
|
||
|
this.formData = { DataBaseId: this.databaseId };
|
||
|
},
|
||
|
addOrUpdate: function () {
|
||
|
var th = this;
|
||
|
var frmId = "frmEdit";
|
||
|
var json = this.formData;
|
||
|
var url = json.Id ?
|
||
|
"/PrivateReZeroRoute/100003/UpdateEntityInfo" :
|
||
|
"/PrivateReZeroRoute/100003/AddEntityInfo";
|
||
|
this.addOrUpdateSubmit(url, json);
|
||
|
},
|
||
|
addOrUpdateSubmit: function (url, json) {
|
||
|
var th = this;
|
||
|
axios.post(url, json, jwHeader)
|
||
|
.then(response => {
|
||
|
this.error = null;
|
||
|
this.onSearch();
|
||
|
if (response.data == true) {
|
||
|
frmEdit.reset();
|
||
|
btnCloseEdit.click();
|
||
|
}
|
||
|
else {
|
||
|
tools.highlightErrorFields(response.data)
|
||
|
}
|
||
|
})
|
||
|
.catch(error => {
|
||
|
this.error = error.message;
|
||
|
this.data = null;
|
||
|
});
|
||
|
},
|
||
|
bindDatabaseSelect: function () {
|
||
|
axios.get("/PrivateReZeroRoute/100004/GetDatabaseInfoAllList", jwHeader)
|
||
|
.then(response => {
|
||
|
this.database = response.data;
|
||
|
this.databaseId = this.database[0].Id;
|
||
|
var th = this;
|
||
|
setTimeout(function () {
|
||
|
th.onSearch();
|
||
|
}, 50);
|
||
|
})
|
||
|
.catch(error => {
|
||
|
this.error = error.message;
|
||
|
this.data = null;
|
||
|
});
|
||
|
},
|
||
|
bindNativeTypeSelect: function () {
|
||
|
axios.get("/PrivateReZeroRoute/100004/GetNativeTypeList", jwHeader)
|
||
|
.then(response => {
|
||
|
this.nativeTypes = response.data;
|
||
|
})
|
||
|
.catch(error => {
|
||
|
this.error = error.message;
|
||
|
this.data = null;
|
||
|
});
|
||
|
},
|
||
|
openColumns: function (item) {
|
||
|
btnEditColumns.click();
|
||
|
this.editTableId = item.Id;
|
||
|
this.editTable = item.ClassName + " - " + item.DataBaseName;
|
||
|
var url = "/PrivateReZeroRoute/100003/GetEntityColuminsByEntityId?TableId=" + item.Id;
|
||
|
axios.get(url, jwHeader)
|
||
|
.then(response => {
|
||
|
this.columns = response.data;
|
||
|
if (this.columns.length == 0) {
|
||
|
this.columns.push({ TableId: item.Id });
|
||
|
}
|
||
|
})
|
||
|
.catch(error => {
|
||
|
this.error = error.message;
|
||
|
});
|
||
|
},
|
||
|
openEditNativeType: function (item) {
|
||
|
this.currentColumn = item;
|
||
|
btnEditNativeType.click();
|
||
|
},
|
||
|
removeColumns: function (index) {
|
||
|
this.columns.splice(index, 1);
|
||
|
},
|
||
|
addOrUpdateColumnInfoSubmit: function () {
|
||
|
var url = "/PrivateReZeroRoute/100003/SaveEntityColumnInfos"
|
||
|
var th = this;
|
||
|
axios.post(url, { Columns: this.columns }, jwHeader)
|
||
|
.then(response => {
|
||
|
this.error = null;
|
||
|
if (response.data == true) {
|
||
|
tools.alert("保存成功");
|
||
|
th.onSearch(1);
|
||
|
}
|
||
|
else {
|
||
|
tools.alert(response.data);
|
||
|
}
|
||
|
})
|
||
|
.catch(error => {
|
||
|
this.error = error.message;
|
||
|
});
|
||
|
},
|
||
|
pushColumns: function (item) {
|
||
|
this.columns.push({ TableId: item.TableId, IsNullable: true });
|
||
|
},
|
||
|
openCompareDatabaseStructure: function () {
|
||
|
if (!this.selectedItems || this.selectedItems.length == 0) {
|
||
|
tools.alert("请选择实体");
|
||
|
return;
|
||
|
}
|
||
|
btnCompareDatabaseStructure.click();
|
||
|
var url = " /PrivateReZeroRoute/100003/CompareDatabaseStructure";
|
||
|
axios.post(url, { ids: this.selectedItems }, jwHeader)
|
||
|
.then(response => {
|
||
|
this.columnsCompareResult = response.data;
|
||
|
this.error = null;
|
||
|
})
|
||
|
.catch(error => {
|
||
|
this.error = error.message;
|
||
|
this.data = null;
|
||
|
});
|
||
|
},
|
||
|
// 其他方法...
|
||
|
previewEntity: function () {
|
||
|
//if (!this.selectedItems || this.selectedItems.length == 0) {
|
||
|
// tools.alert("请选择实体");
|
||
|
// return;
|
||
|
//}
|
||
|
if (this.isView && !this.viewName)
|
||
|
{
|
||
|
tools.alert("请填写视图名");
|
||
|
return;
|
||
|
}
|
||
|
var tableId = this.selectedItems[0];
|
||
|
var url = `/PrivateReZeroRoute/100003/ViewTemplate?databaseId=${this.databaseId}&viewName=${this.isView ? this.viewName : tableId}&templateId=${this.currentTemplateId}&isView=${this.isView}`;
|
||
|
axios.get(url, jwHeader)
|
||
|
.then(response => {
|
||
|
btnGenerateFileClose.click();
|
||
|
btnPreviewEntity.click();
|
||
|
this.reviewClass=response.data;
|
||
|
})
|
||
|
.catch(error => {
|
||
|
this.error = error.message;
|
||
|
});
|
||
|
},
|
||
|
selectText(event) {
|
||
|
// 方法1:使用现代浏览器的 Selection API
|
||
|
const range = document.createRange();
|
||
|
range.selectNodeContents(event.target);
|
||
|
const selection = window.getSelection();
|
||
|
selection.removeAllRanges();
|
||
|
selection.addRange(range);
|
||
|
},
|
||
|
createTables: function () {
|
||
|
var url = "/PrivateReZeroRoute/100003/CreateTables";
|
||
|
this.columnsCompareResult = "同步中....";
|
||
|
axios.post(url, { ids: this.selectedItems }, jwHeader)
|
||
|
.then(response => {
|
||
|
this.columnsCompareResult = response.data == true ? "同步成功" : response.data.message;
|
||
|
this.error = null;
|
||
|
})
|
||
|
.catch(error => {
|
||
|
this.error = error.message;
|
||
|
this.data = null;
|
||
|
});
|
||
|
},
|
||
|
openImportEntity: function () {
|
||
|
btnImportEntity.click();
|
||
|
this.bindImportTables();
|
||
|
},
|
||
|
importEntitySubmit: function () {
|
||
|
var url = " /PrivateReZeroRoute/100003/ImportEntities";
|
||
|
var th = this;
|
||
|
axios.post(url, { databasdeId: this.databaseId, tableNames: this.selectedTables }, jwHeader)
|
||
|
.then(response => {
|
||
|
this.error = null;
|
||
|
if (response.data == true) {
|
||
|
btnImportEntityClose.click();
|
||
|
th.onSearch(1);
|
||
|
th.selectedTables = [];
|
||
|
document.getElementById('check-all2').checked = false;
|
||
|
tools.alert("导入成功,删除实体可以重新导入。");
|
||
|
}
|
||
|
else {
|
||
|
tools.alert(response.data.message);
|
||
|
}
|
||
|
})
|
||
|
.catch(error => {
|
||
|
this.error = error.message;
|
||
|
});
|
||
|
},
|
||
|
changeDatabase: function () {
|
||
|
this.onSearch();
|
||
|
},
|
||
|
bindImportTables: function () {
|
||
|
var url = "/PrivateReZeroRoute/100004/GetImportTables?databaseId=" + this.databaseId + "&tableName=" + txtTableName.value;
|
||
|
axios.get(url, jwHeader)
|
||
|
.then(response => {
|
||
|
this.tables = response.data;
|
||
|
this.error = null;
|
||
|
})
|
||
|
.catch(error => {
|
||
|
this.error = error.message;
|
||
|
});
|
||
|
},
|
||
|
bindAllTables: function () {
|
||
|
var url = "/PrivateReZeroRoute/100004/GetAllTables?databaseId=" + this.databaseId;
|
||
|
axios.get(url, jwHeader)
|
||
|
.then(response => {
|
||
|
this.allTables = response.data;
|
||
|
this.error = null;
|
||
|
})
|
||
|
.catch(error => {
|
||
|
this.error = error.message;
|
||
|
});
|
||
|
},
|
||
|
selectAll(event) {
|
||
|
if (event.target.checked) {
|
||
|
// 全选
|
||
|
this.selectedItems = this.data.Data.map(item => item.Id);
|
||
|
} else {
|
||
|
// 全不选
|
||
|
this.selectedItems = [];
|
||
|
}
|
||
|
},
|
||
|
selectAllTables(event) {
|
||
|
if (event.target.checked) {
|
||
|
// 全选
|
||
|
this.selectedTables = this.tables.map(item => item.Name);
|
||
|
} else {
|
||
|
// 全不选
|
||
|
this.selectedTables = [];
|
||
|
}
|
||
|
},
|
||
|
classNameInput: function () {
|
||
|
this.formData.DbTableName = this.formData.ClassName;
|
||
|
},
|
||
|
move: function (index, tyep) {
|
||
|
if (tyep) {
|
||
|
if (index == 0) {
|
||
|
return;
|
||
|
}
|
||
|
var temp = this.columns[index];
|
||
|
this.columns.splice(index, 1);
|
||
|
this.columns.splice(index - 1, 0, temp);
|
||
|
}
|
||
|
else {
|
||
|
if (index == this.columns.length - 1) {
|
||
|
return;
|
||
|
}
|
||
|
var temp = this.columns[index];
|
||
|
this.columns.splice(index, 1);
|
||
|
this.columns.splice(index + 1, 0, temp);
|
||
|
}
|
||
|
},
|
||
|
sortAsc: function () {
|
||
|
this.sort = 0;
|
||
|
this.sortName = "ClassName";
|
||
|
this.sortClass = "sort-asc";
|
||
|
this.onSearch(1);
|
||
|
},
|
||
|
sortDesc: function () {
|
||
|
this.sort = 1;
|
||
|
this.sortName = "ClassName";
|
||
|
this.sortClass = "sort-desc";
|
||
|
this.onSearch(1);
|
||
|
},
|
||
|
openCopy: function () {
|
||
|
this.bindAllTables();
|
||
|
btnCopy.click();
|
||
|
},
|
||
|
submitCopy: function () {
|
||
|
var tableName = this.tableName;
|
||
|
var table = this.allTables.find(table => table.Name === tableName);
|
||
|
var tableId = table ? table.Id : null;
|
||
|
if (tableId == null) {
|
||
|
tools.alert("请选择表");
|
||
|
return;
|
||
|
}
|
||
|
var editId = this.editTableId;
|
||
|
var url = "/PrivateReZeroRoute/100003/GetEntityColuminsByEntityId?TableId=" + tableId;
|
||
|
axios.get(url, jwHeader)
|
||
|
.then(response => {
|
||
|
response.data.forEach(item => {
|
||
|
item.TableId = editId;
|
||
|
item.Id = 0;
|
||
|
this.columns.push(item);
|
||
|
btnCloseCopy.click();
|
||
|
});
|
||
|
})
|
||
|
.catch(error => {
|
||
|
this.error = error.message;
|
||
|
});
|
||
|
},
|
||
|
changeTable: function () {
|
||
|
|
||
|
},
|
||
|
clearTable: function () {
|
||
|
this.tableName = null;
|
||
|
},
|
||
|
executeSql: function () {
|
||
|
var editor = ace.edit("divAceEditor");
|
||
|
var sql = editor.getValue("\r\n");
|
||
|
var url = "/PrivateReZeroRoute/100003/ExecuetSql";
|
||
|
axios.post(url, { databaseId: this.databaseId, sql: sql }, jwHeader)
|
||
|
.then(response => {
|
||
|
var editorResult = ace.edit("divAceEditorResult");
|
||
|
editorResult.setValue(JSON.stringify(response.data, null, 4));
|
||
|
editorResult.selection.clearSelection();
|
||
|
this.error = null;
|
||
|
})
|
||
|
.catch(error => {
|
||
|
this.error = error.message;
|
||
|
});
|
||
|
},
|
||
|
executeSqlRegurnExcel: function () {
|
||
|
var editor = ace.edit("divAceEditor");
|
||
|
var sql = editor.getValue("\r\n");
|
||
|
var th = this;
|
||
|
axios.get("/PrivateReZeroRoute/100003/ExecuetSqlReturnExcel", {
|
||
|
params: {
|
||
|
databaseId: this.databaseId, sql: sql
|
||
|
},
|
||
|
responseType: 'blob',
|
||
|
headers: jwHeader.headers
|
||
|
})
|
||
|
.then(function (response) {
|
||
|
// 创建一个 Blob 对象,指向数据的 URL
|
||
|
var url = window.URL.createObjectURL(new Blob([response.data]));
|
||
|
var link = document.createElement('a');
|
||
|
link.href = url;
|
||
|
|
||
|
// 设置下载文件的名称,可以根据实际情况调整
|
||
|
var fileName = 'sql.xlsx';
|
||
|
link.setAttribute('download', fileName);
|
||
|
|
||
|
// 触发下载
|
||
|
document.body.appendChild(link);
|
||
|
link.click();
|
||
|
|
||
|
// 清理资源
|
||
|
window.URL.revokeObjectURL(link.href);
|
||
|
document.body.removeChild(link);
|
||
|
})
|
||
|
.catch(function (error) {
|
||
|
console.error("Error downloading the Excel file:", error);
|
||
|
});
|
||
|
},
|
||
|
openSqlTool: function () {
|
||
|
var editor = ace.edit("divAceEditor");
|
||
|
editor.setOption("showPrintMargin", false);
|
||
|
editor.setTheme("ace/theme/twilight"); // 设置主题
|
||
|
editor.getSession().setMode("ace/mode/sql"); // 设置语言模式为SQL
|
||
|
editor.setOption("enableBasicAutocompletion", true);
|
||
|
editor.setOption("enableSnippets", true);
|
||
|
editor.setOption("enableLiveAutocompletion", true)
|
||
|
editor.setValue("\r\n");
|
||
|
editor.selection.clearSelection();
|
||
|
this.bindSqlResult();
|
||
|
btnDatabaseTool.click();
|
||
|
},
|
||
|
clearSql: function() {
|
||
|
var editor = ace.edit("divAceEditor");
|
||
|
editor.setValue("\r\n");
|
||
|
editor.selection.clearSelection();
|
||
|
|
||
|
var editorResult = ace.edit("divAceEditorResult");
|
||
|
editorResult.setValue("\r\n");
|
||
|
editorResult.selection.clearSelection()
|
||
|
},
|
||
|
bindSqlResult: function ()
|
||
|
{
|
||
|
var editor = ace.edit("divAceEditorResult");
|
||
|
editor.setOption("showPrintMargin", false);
|
||
|
editor.setTheme("ace/theme/twilight"); // 设置主题
|
||
|
editor.getSession().setMode("ace/mode/json5"); // 设置语言模式为SQL
|
||
|
editor.setOption("enableBasicAutocompletion", true);
|
||
|
editor.setOption("enableSnippets", true);
|
||
|
editor.setOption("enableLiveAutocompletion", true)
|
||
|
editor.setValue("\r\n");
|
||
|
editor.selection.clearSelection();
|
||
|
},
|
||
|
openSetting: function ()
|
||
|
{
|
||
|
btnSetting.click();
|
||
|
this.getSettingItem(1, 1);
|
||
|
|
||
|
},
|
||
|
saveSetting: function () {
|
||
|
|
||
|
this.saveSettingItem(1, 1, this.setting.importUnunderline);
|
||
|
},
|
||
|
exportExcel: function () {
|
||
|
var th = this;
|
||
|
axios.get("/PrivateReZeroRoute/100003/ExportEntities", {
|
||
|
params: {
|
||
|
tableIds: JSON.stringify(this.selectedItems),
|
||
|
DataBaseId: this.databaseId
|
||
|
},
|
||
|
responseType: 'blob',
|
||
|
headers: jwHeader.headers
|
||
|
})
|
||
|
.then(function (response) {
|
||
|
// 创建一个 Blob 对象,指向数据的 URL
|
||
|
var url = window.URL.createObjectURL(new Blob([response.data]));
|
||
|
var link = document.createElement('a');
|
||
|
link.href = url;
|
||
|
|
||
|
// 设置下载文件的名称,可以根据实际情况调整
|
||
|
var fileName = $("#selDataBaseId option:selected").text() + '.xlsx';
|
||
|
link.setAttribute('download', fileName);
|
||
|
|
||
|
// 触发下载
|
||
|
document.body.appendChild(link);
|
||
|
link.click();
|
||
|
|
||
|
// 清理资源
|
||
|
window.URL.revokeObjectURL(link.href);
|
||
|
document.body.removeChild(link);
|
||
|
})
|
||
|
.catch(function (error) {
|
||
|
console.error("Error downloading the Excel file:", error);
|
||
|
});
|
||
|
},
|
||
|
getSettingItem: function (typeId, childTypeId)
|
||
|
{
|
||
|
var url = "/PrivateReZeroRoute/100003/GetSetting";
|
||
|
var th = this;
|
||
|
axios.post(url, { typeId: typeId, childTypeId: childTypeId }, jwHeader)
|
||
|
.then(response => {
|
||
|
th.setting.importUnunderline = response.data.BoolValue;
|
||
|
this.error = null;
|
||
|
})
|
||
|
.catch(error => {
|
||
|
this.error = error.message;
|
||
|
this.data = null;
|
||
|
});
|
||
|
},
|
||
|
saveSettingItem: function (typeId, childTypeId,value) {
|
||
|
var url = "/PrivateReZeroRoute/100003/UpdateSetting";
|
||
|
axios.post(url, { typeId: typeId, childTypeId: childTypeId, value: value }, jwHeader)
|
||
|
.then(response => {
|
||
|
tools.alert("保存成功");
|
||
|
btnSettingClose.click();
|
||
|
this.error = null;
|
||
|
})
|
||
|
.catch(error => {
|
||
|
this.error = error.message;
|
||
|
this.data = null;
|
||
|
});
|
||
|
},
|
||
|
openGenerateCode: function () {
|
||
|
if (!this.selectedItems || this.selectedItems.length == 0) {
|
||
|
tools.alert("请选择实体");
|
||
|
return;
|
||
|
}
|
||
|
this.isView = false;
|
||
|
this.viewName = null;
|
||
|
btnGenerateFile.click();
|
||
|
},
|
||
|
openGenerateCodeByView: function () {
|
||
|
|
||
|
this.isView = true;
|
||
|
btnGenerateFile.click();
|
||
|
},
|
||
|
submitGenerateFile: function () {
|
||
|
if (this.isView && !this.viewName)
|
||
|
{
|
||
|
tools.alert("视图名不能为空");
|
||
|
return;
|
||
|
}
|
||
|
var url = "/PrivateReZeroRoute/100003/ExecTemplateByTableIds";
|
||
|
axios.post(url, {
|
||
|
TableIds: JSON.stringify(this.selectedItems),
|
||
|
DataBaseId: this.databaseId,
|
||
|
TemplateId: this.currentTemplate.Id,
|
||
|
Url: this.currentTemplate.Url,
|
||
|
ViewName: this.viewName
|
||
|
}, jwHeader)
|
||
|
.then(response => {
|
||
|
if (response.data && response.data.message){
|
||
|
tools.alert("生成出错:" + response.data.message);
|
||
|
} else {
|
||
|
tools.alert("已生成到目录" + response.data);
|
||
|
}
|
||
|
})
|
||
|
.catch(error => {
|
||
|
this.error = error.message;
|
||
|
});
|
||
|
},
|
||
|
bindTemplates: function ()
|
||
|
{
|
||
|
var th = this;
|
||
|
var url = "/PrivateReZeroRoute/100003/GetTemplateListByTypeId?typeId=1";
|
||
|
axios.get(url, jwHeader)
|
||
|
.then(response => {
|
||
|
th.templates = response.data;
|
||
|
th.currentTemplate = th.templates[0];
|
||
|
th.currentTemplateId = th.templates[0].Id;
|
||
|
})
|
||
|
.catch(error => {
|
||
|
th.error = error.message;
|
||
|
});
|
||
|
},
|
||
|
changeTemplate: function (template)
|
||
|
{
|
||
|
this.currentTemplate = this.templates.find(item => item.Id === this.currentTemplateId);
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
</script>
|