9 changed files with 3524 additions and 2274 deletions
@ -1,58 +1,58 @@
|
||||
.table-responsive th { |
||||
text-align: center; |
||||
text-align: center; |
||||
} |
||||
|
||||
.table_opt { |
||||
text-align: center; |
||||
width: 250px; |
||||
text-align: center; |
||||
width: 250px; |
||||
} |
||||
|
||||
.table_opt button { |
||||
max-width: 80px; |
||||
margin: 0 10px; |
||||
} |
||||
.table_opt button { |
||||
max-width: 80px; |
||||
margin: 0 10px; |
||||
} |
||||
|
||||
.table_opt2 { |
||||
text-align: center; |
||||
width: 330px; |
||||
text-align: center; |
||||
width: 330px; |
||||
} |
||||
|
||||
.table_opt2 button { |
||||
max-width: 90px; |
||||
margin: 0 5px; |
||||
} |
||||
.table_opt2 button { |
||||
max-width: 90px; |
||||
margin: 0 5px; |
||||
} |
||||
|
||||
.table_opt3 { |
||||
text-align: center; |
||||
width: 450px; |
||||
text-align: center; |
||||
width: 450px; |
||||
} |
||||
|
||||
.table_opt3 button { |
||||
max-width: 75px; |
||||
margin: 0 5px; |
||||
} |
||||
.table_opt3 button { |
||||
max-width: 75px; |
||||
margin: 0 5px; |
||||
} |
||||
|
||||
.form-group label { |
||||
border: 0 !important; |
||||
text-align: right |
||||
border: 0 !important; |
||||
text-align: right; |
||||
} |
||||
|
||||
.search-bar { |
||||
padding: 0 15px; |
||||
padding-top: 35px; |
||||
padding: 0 15px; |
||||
padding-top: 35px; |
||||
} |
||||
.pagination { |
||||
margin-left:20px; |
||||
margin-top:-20px; |
||||
margin-left: 20px; |
||||
margin-top: -20px; |
||||
} |
||||
.pagination select { |
||||
border: 1px solid #ccc; |
||||
width: 40px; |
||||
text-align: center; |
||||
position: relative; |
||||
top: 4px; |
||||
} |
||||
.pagination select { |
||||
border:1px solid #ccc; |
||||
width:40px; |
||||
text-align:center; |
||||
position:relative; |
||||
top:4px |
||||
} |
||||
|
||||
.lyear-checkbox { |
||||
padding-left: 10px; |
||||
padding-left: 10px; |
||||
} |
||||
|
@ -1,393 +1,389 @@
|
||||
@@master_page.html |
||||
<link href="css/page_table_list.css" rel="stylesheet" /> |
||||
<div id="apibox" class="card"> |
||||
<div class="search-bar"> |
||||
|
||||
<form id="frmSearach" action="lyear_forms_elements.html" method="post" onsubmit="return false;"> |
||||
<div class="form-group"> |
||||
<div class="row"> |
||||
<div class="col-md-1"><label class="form-control" t>库备注:</label></div> |
||||
<div class="col-md-3"><input class="form-control" type="text" id="txtSearch" name="example-text-input" placeholder="数据库备注"></div> |
||||
<div class="col-md-3"> |
||||
<button @click="onSearch()" id="btnSearch" class="btn btn-secondary"><i class="mdi mdi-magnify"></i>搜索</button> |
||||
<button onclick="frmSearach.reset()" class="btn btn-close" type="submit">清空</button> |
||||
</div> |
||||
<div class="col-md-4"></div> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
|
||||
<div class="toolbar-btn-action"> |
||||
<button @click="openAddDiv()" class="btn btn-primary m-r-5" data-toggle="modal" data-target="#gridSystemModal"><i class="mdi mdi-plus"></i> 新增</button> |
||||
<button @click="openSynchronousDataDiv()" class="btn btn-success m-r-5" data-toggle="modal" data-target="#btnSynchronousData"><i class="mdi mdi-redo-variant"></i> 同步接口</button> |
||||
<div class="search-bar"> |
||||
<form id="frmSearach" action="lyear_forms_elements.html" method="post" onsubmit="return false;"> |
||||
<div class="form-group"> |
||||
<div class="row"> |
||||
<div class="col-md-1"><label class="form-control" t>库备注:</label></div> |
||||
<div class="col-md-3"><input class="form-control" type="text" id="txtSearch" name="example-text-input" placeholder="数据库备注"></div> |
||||
<div class="col-md-3"> |
||||
<button @click="onSearch()" id="btnSearch" class="btn btn-secondary"><i class="mdi mdi-magnify"></i>搜索</button> |
||||
<button onclick="frmSearach.reset()" class="btn btn-close" type="submit">清空</button> |
||||
</div> |
||||
<div class="col-md-4"></div> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
<div class="toolbar-btn-action"> |
||||
<button @click="openAddDiv()" class="btn btn-primary m-r-5" data-toggle="modal" data-target="#gridSystemModal"><i class="mdi mdi-plus"></i> 新增</button> |
||||
<button @click="openSynchronousDataDiv()" class="btn btn-success m-r-5" data-toggle="modal" data-target="#btnSynchronousData"><i class="mdi mdi-redo-variant"></i> 同步接口</button> |
||||
</div> |
||||
<div class="card-body"> |
||||
</div> |
||||
<div class="card-body"> |
||||
|
||||
<h5> </h5> |
||||
<div class="table-responsive"> |
||||
<table class="table table-bordered"> |
||||
<thead> |
||||
<tr v-if="data && data.Columns && data.Columns.length > 0"> |
||||
<th class="mi-w-100" v-for="column in data.Columns">{{column.ColumnDescription}}</th> |
||||
<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"> |
||||
<h5> </h5> |
||||
<div class="table-responsive"> |
||||
<table class="table table-bordered"> |
||||
<thead> |
||||
<tr v-if="data && data.Columns && data.Columns.length > 0"> |
||||
<th class="mi-w-100" v-for="column in data.Columns">{{column.ColumnDescription}}</th> |
||||
<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 v-for="(column,index) in data.Columns" class="word-all"> |
||||
<div v-if="index == 0" class="mi-w-150"> |
||||
{{ item[column.PropertyName] }} |
||||
</div> |
||||
<div v-else> |
||||
{{ item[column.PropertyName] }} |
||||
</div> |
||||
</td> |
||||
<td v-for="(column,index) in data.Columns" class="word-all"> |
||||
<div v-if="index == 0" class="mi-w-150"> |
||||
{{ item[column.PropertyName] }} |
||||
</div> |
||||
<div v-else> |
||||
{{ item[column.PropertyName] }} |
||||
</div> |
||||
</td> |
||||
|
||||
<td class="table_opt3"> |
||||
<button data-toggle="modal" @click="testDatabase(item)" class="btn btn-link" type="button"> |
||||
<i class="mdi mdi-test-tube"></i> 测试 |
||||
</button> |
||||
<button data-toggle="modal" @click="createDatabase(item)" class="btn btn-link" type="button"> |
||||
<i class="mdi mdi-cube"></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> |
||||
<td class="table_opt3"> |
||||
<button data-toggle="modal" @click="testDatabase(item)" class="btn btn-link" type="button"> |
||||
<i class="mdi mdi-test-tube"></i> 测试 |
||||
</button> |
||||
<button data-toggle="modal" @click="createDatabase(item)" class="btn btn-link" type="button"> |
||||
<i class="mdi mdi-cube"></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> |
||||
@@page_control.html |
||||
<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 for="recipient-name" class="control-label">库备注:</label> |
||||
<input type="text" v-model="formData.Name" name="Name" class="form-control" id="recipient-name"> |
||||
</div> |
||||
<div class="form-group"> |
||||
<label for="message-text" class="control-label">数据库类型:</label> |
||||
<select @change="showMessage" class="form-control" v-model="formData.DbType" name="DbType"> |
||||
<option v-for="item in dbTypeList" v-bind:value="item.Value"> {{item.Name}} </option> |
||||
</select> |
||||
</div> |
||||
<div class="form-group"> |
||||
<label for="message-text" class="control-label">字符串:</label> |
||||
<textarea class="form-control" v-model="formData.Connection" name="Connection" id="message-text"></textarea> |
||||
</div> |
||||
<div class="form-group"> |
||||
<code class="db0 hidden dbmessage"> |
||||
MySql示例:<br /> |
||||
server=localhost;Database=SqlSugar4xTest;Uid=root;Pwd=haosql; |
||||
非默认端口要用port=3306 |
||||
</code> |
||||
<code class="db1 hidden dbmessage"> |
||||
SqlServer示例:<br /> |
||||
server=localhost;Database=SqlSugar4xTest;Uid=root;Pwd=haosql;<br /> |
||||
.net8需要注意 启动文件csproj文件 ,InvariantGlobalization设置为false<br /> |
||||
有端口localhost:1433; |
||||
</code> |
||||
<code class="db2 hidden dbmessage"> |
||||
Sqlite示例:<br /> |
||||
DataSource=xxx.sqlite |
||||
</code> |
||||
<code class="db3 hidden dbmessage"> |
||||
Oracle示例:<br /> |
||||
//写法1<br /> |
||||
Data Source=localhost/orcl;User ID=system;Password=haha<br /> |
||||
//字法2 上面连不上可以试用下面写法<br /> |
||||
Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=150.158.57.125)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORCL)));User Id=xx;Password=xx;Pooling='true';Max Pool Size=150 |
||||
</code> |
||||
<code class="db4 hidden dbmessage"> |
||||
Postgresql 示例:<br /> |
||||
PORT=5432;DATABASE=SqlSugar4xTest;HOST=localhost;PASSWORD=haosql;USER ID=postgres<br /> |
||||
不是public需要设置架构名searchpath=架构名 |
||||
</code> |
||||
<code class="db5 hidden dbmessage"> |
||||
达梦 示例:<br /> |
||||
Server=153.101.101:5236;User Id=SYSDBA;PWD=123456;SCHEMA=架构;DATABASE=DAMENG |
||||
</code> |
||||
<code class="db6 hidden dbmessage"> |
||||
人大金仓 示例:<br /> |
||||
Server=127.0.0.1;Port=54321;UID=SYSTEM;PWD=system;database=SQLSUGAR4XTEST1<br> |
||||
默认是Oracle模式,如果不是Oracle模式需要看SqlSugar文档改ReZero源码<br> |
||||
通过SQL可以查看安装模式 show database_mode; |
||||
</code> |
||||
</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> |
||||
@@page_control.html |
||||
<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 for="recipient-name" class="control-label">库备注:</label> |
||||
<input type="text" v-model="formData.Name" name="Name" class="form-control" id="recipient-name"> |
||||
</div> |
||||
<div class="form-group"> |
||||
<label for="message-text" class="control-label">数据库类型:</label> |
||||
<select @change="showMessage" class="form-control" v-model="formData.DbType" name="DbType"> |
||||
<option v-for="item in dbTypeList" v-bind:value="item.Value"> {{item.Name}} </option> |
||||
</select> |
||||
</div> |
||||
<div class="form-group"> |
||||
<label for="message-text" class="control-label">字符串:</label> |
||||
<textarea class="form-control" v-model="formData.Connection" name="Connection" id="message-text"></textarea> |
||||
</div> |
||||
<div class="form-group"> |
||||
<code class="db0 hidden dbmessage"> |
||||
MySql示例:<br /> |
||||
server=localhost;Database=SqlSugar4xTest;Uid=root;Pwd=haosql; |
||||
非默认端口要用port=3306 |
||||
</code> |
||||
<code class="db1 hidden dbmessage"> |
||||
SqlServer示例:<br /> |
||||
server=localhost;Database=SqlSugar4xTest;Uid=root;Pwd=haosql;<br /> |
||||
.net8需要注意 启动文件csproj文件 ,InvariantGlobalization设置为false<br /> |
||||
有端口localhost:1433; |
||||
</code> |
||||
<code class="db2 hidden dbmessage"> |
||||
Sqlite示例:<br /> |
||||
DataSource=xxx.sqlite |
||||
</code> |
||||
<code class="db3 hidden dbmessage"> |
||||
Oracle示例:<br /> |
||||
//写法1<br /> |
||||
Data Source=localhost/orcl;User ID=system;Password=haha<br /> |
||||
//字法2 上面连不上可以试用下面写法<br /> |
||||
Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=150.158.57.125)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORCL)));User Id=xx;Password=xx;Pooling='true';Max Pool Size=150 |
||||
</code> |
||||
<code class="db4 hidden dbmessage"> |
||||
Postgresql 示例:<br /> |
||||
PORT=5432;DATABASE=SqlSugar4xTest;HOST=localhost;PASSWORD=haosql;USER ID=postgres<br /> |
||||
不是public需要设置架构名searchpath=架构名 |
||||
</code> |
||||
<code class="db5 hidden dbmessage"> |
||||
达梦 示例:<br /> |
||||
Server=153.101.101:5236;User Id=SYSDBA;PWD=123456;SCHEMA=架构;DATABASE=DAMENG |
||||
</code> |
||||
<code class="db6 hidden dbmessage"> |
||||
人大金仓 示例:<br /> |
||||
Server=127.0.0.1;Port=54321;UID=SYSTEM;PWD=system;database=SQLSUGAR4XTEST1<br> |
||||
默认是Oracle模式,如果不是Oracle模式需要看SqlSugar文档改ReZero源码<br> |
||||
通过SQL可以查看安装模式 show database_mode; |
||||
</code> |
||||
</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 class="modal fade" tabindex="-1" role="dialog" aria-labelledby="gridSystemModalLabel" id="btnSynchronousData" 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">同步数据</h4> |
||||
</div> |
||||
|
||||
<div class="card-body"> |
||||
<p class="alert alert-success"> |
||||
注意:这儿只同步四张配置表,业务表需要在【菜单:实体表维护】选实体点同步<br /> |
||||
1、接口数据 : [zero_interface_list] |
||||
[zero_interface_category]<br /> |
||||
2、实体数据 : [zero_entity_info] |
||||
[zero_entity_column_info] |
||||
</p> |
||||
<form class="form-horizontal"> |
||||
<div class="form-group has-success"> |
||||
<label class="col-xs-12 text-align-left" for="example-text-input-success">基准库</label> |
||||
<div class="col-xs-12"> |
||||
<select v-model="od_originaldb" class="form-control" type="text" id="example-text-input-success" name="example-text-input-success" placeholder="成功状态.."> |
||||
<option value="1">启动库Rezro</option> |
||||
</select> |
||||
</div> |
||||
</div> |
||||
<div class="form-group has-success"> |
||||
<label class="col-xs-12 text-align-left" for="example-text-input-success2">更新库</label> |
||||
<div class="col-xs-12"> |
||||
<select v-model="od_targetdb" class="form-control" type="text" id="example-text-input-success2" name="example-text-input-success" placeholder="成功状态.."> |
||||
<option :value="item.Id" v-if="item.Id!=1" v-for="item in dataAll">{{item.Name}}</option> |
||||
</select> |
||||
</div> |
||||
</div> |
||||
<div class="form-group has-success"> |
||||
<label class="col-xs-12 text-align-left" for="example-text-input-success">备份表</label> |
||||
<div class="col-xs-12"> |
||||
<label class="lyear-checkbox checkbox-primary text-align-left"> |
||||
<input v-model="od_isbak" type="checkbox" class="checkbox-parent checkbox-child" dataid="id-1-6" value="true"> |
||||
<span class="m-l-15"> 表名+时间HHmmss</span> |
||||
</label> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
</div> |
||||
<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="gridSystemModalLabel" id="btnSynchronousData" 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">同步数据</h4> |
||||
</div> |
||||
|
||||
<div class="modal-footer"> |
||||
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button> |
||||
<button type="button" @click="synchronousData" class="btn btn-primary">同步</button> |
||||
</div> |
||||
<div class="card-body"> |
||||
<p class="alert alert-success"> |
||||
注意:这儿只同步四张配置表,业务表需要在【菜单:实体表维护】选实体点同步<br /> |
||||
1、接口数据 : [zero_interface_list] |
||||
[zero_interface_category]<br /> |
||||
2、实体数据 : [zero_entity_info] |
||||
[zero_entity_column_info] |
||||
</p> |
||||
<form class="form-horizontal"> |
||||
<div class="form-group has-success"> |
||||
<label class="col-xs-12 text-align-left" for="example-text-input-success">基准库</label> |
||||
<div class="col-xs-12"> |
||||
<select v-model="od_originaldb" class="form-control" type="text" id="example-text-input-success" name="example-text-input-success" placeholder="成功状态.."> |
||||
<option value="1">启动库Rezro</option> |
||||
</select> |
||||
</div> |
||||
</div> |
||||
<div class="form-group has-success"> |
||||
<label class="col-xs-12 text-align-left" for="example-text-input-success2">更新库</label> |
||||
<div class="col-xs-12"> |
||||
<select v-model="od_targetdb" class="form-control" type="text" id="example-text-input-success2" name="example-text-input-success" placeholder="成功状态.."> |
||||
<option :value="item.Id" v-if="item.Id!=1" v-for="item in dataAll">{{item.Name}}</option> |
||||
</select> |
||||
</div> |
||||
</div> |
||||
<div class="form-group has-success"> |
||||
<label class="col-xs-12 text-align-left" for="example-text-input-success">备份表</label> |
||||
<div class="col-xs-12"> |
||||
<label class="lyear-checkbox checkbox-primary text-align-left"> |
||||
<input v-model="od_isbak" type="checkbox" class="checkbox-parent checkbox-child" dataid="id-1-6" value="true"> |
||||
<span class="m-l-15"> 表名+时间HHmmss</span> |
||||
</label> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
|
||||
<div class="modal-footer"> |
||||
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button> |
||||
<button type="button" @click="synchronousData" class="btn btn-primary">同步</button> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var vueObj = new Vue({ |
||||
el: '#apibox', |
||||
data: { |
||||
data: null, |
||||
dataAll: null, |
||||
error: null, |
||||
addTitle: "添加数据库配置", |
||||
editTitle: "修改数据库配置", |
||||
title: "", |
||||
dbTypeList: [], |
||||
formData: { |
||||
var vueObj = new Vue({ |
||||
el: '#apibox', |
||||
data: { |
||||
data: null, |
||||
dataAll: null, |
||||
error: null, |
||||
addTitle: "添加数据库配置", |
||||
editTitle: "修改数据库配置", |
||||
title: "", |
||||
dbTypeList: [], |
||||
formData: { |
||||
|
||||
}, |
||||
od_isbak: false, |
||||
od_originaldb: null, |
||||
od_targetdb: null, |
||||
lock: false |
||||
}, |
||||
mounted() { |
||||
this.fetchData(""); |
||||
}, |
||||
methods: { |
||||
fetchData(append) { |
||||
var url = "/PrivateReZeroRoute/100003/GetDatabaseInfoList?ParentId=200" + append; |
||||
axios.get(url, jwHeader) |
||||
.then(response => { |
||||
this.data = response.data; |
||||
this.error = null; |
||||
}) |
||||
.catch(error => { |
||||
this.error = error.message; |
||||
this.data = null; |
||||
}); |
||||
}, |
||||
od_isbak: false, |
||||
od_originaldb: null, |
||||
od_targetdb: null, |
||||
lock: false |
||||
}, |
||||
mounted() { |
||||
this.fetchData(""); |
||||
}, |
||||
methods: { |
||||
fetchData(append) { |
||||
var url = "/PrivateReZeroRoute/100003/GetDatabaseInfoList?ParentId=200" + append; |
||||
axios.get(url, jwHeader) |
||||
.then(response => { |
||||
this.data = response.data; |
||||
this.error = null; |
||||
}) |
||||
.catch(error => { |
||||
this.error = error.message; |
||||
this.data = null; |
||||
}); |
||||
|
||||
|
||||
axios.get("/PrivateReZeroRoute/100004/GetDbTypeList", jwHeader) |
||||
.then(response => { |
||||
this.dbTypeList = response.data; |
||||
this.error = null; |
||||
}) |
||||
.catch(error => { |
||||
this.error = error.message; |
||||
this.data = null; |
||||
}); |
||||
axios.get("/PrivateReZeroRoute/100004/GetDbTypeList", jwHeader) |
||||
.then(response => { |
||||
this.dbTypeList = response.data; |
||||
this.error = null; |
||||
}) |
||||
.catch(error => { |
||||
this.error = error.message; |
||||
this.data = null; |
||||
}); |
||||
|
||||
axios.get("/PrivateReZeroRoute/100004/GetDatabaseInfoAllList", jwHeader) |
||||
.then(response => { |
||||
this.dataAll = response.data; |
||||
}) |
||||
.catch(error => { |
||||
this.error = error.message; |
||||
this.data = null; |
||||
}); |
||||
}, |
||||
onSearch: function (page) { |
||||
axios.get("/PrivateReZeroRoute/100004/GetDatabaseInfoAllList", jwHeader) |
||||
.then(response => { |
||||
this.dataAll = response.data; |
||||
}) |
||||
.catch(error => { |
||||
this.error = error.message; |
||||
this.data = null; |
||||
}); |
||||
}, |
||||
onSearch: function (page) { |
||||
|
||||
var urlParameters = "&" + tools.objectToQueryString({ |
||||
Name: txtSearch.value, |
||||
__pageNumber: page, |
||||
__pageSize: tools.getValue("selPageSize"), |
||||
}); |
||||
var urlParameters = "&" + tools.objectToQueryString({ |
||||
Name: txtSearch.value, |
||||
__pageNumber: page, |
||||
__pageSize: tools.getValue("selPageSize"), |
||||
}); |
||||
|
||||
this.fetchData(urlParameters); |
||||
}, |
||||
deleteAndConfirm: function (item) { |
||||
if (item == null) { |
||||
var url = "/PrivateReZeroRoute/100003/DeleteDataBaseInfo?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/GetDataBaseInfoById?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.formData = {}; |
||||
this.title = this.addTitle; |
||||
}, |
||||
addOrUpdate: function () { |
||||
var th = this; |
||||
var frmId = "frmEdit"; |
||||
var json = this.formData; |
||||
var url = json.Id ? |
||||
"/PrivateReZeroRoute/100003/UpdateDatabaseInfo" : |
||||
"/PrivateReZeroRoute/100003/AddDatabaseInfo"; |
||||
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; |
||||
}); |
||||
}, |
||||
testDatabase: function (item) { |
||||
axios.post("/PrivateReZeroRoute/100003/TestDatabaseInfo", { Id: item.Id }, jwHeader) |
||||
.then(response => { |
||||
this.error = null; |
||||
tools.alert(response.data + ""); |
||||
}) |
||||
.catch(error => { |
||||
this.error = error.message; |
||||
|
||||
}); |
||||
}, |
||||
createDatabase: function (item) { |
||||
axios.post("/PrivateReZeroRoute/100003/CreateDatabaseInfo", { Connection: item.Connection, DbType: item.DbType }, jwHeader) |
||||
.then(response => { |
||||
this.error = null; |
||||
tools.alert(response.data + ""); |
||||
}) |
||||
.catch(error => { |
||||
this.error = error.message; |
||||
}); |
||||
}, |
||||
openSynchronousDataDiv: function () { |
||||
}, |
||||
synchronousData: function () { |
||||
if (!this.od_originaldb) { |
||||
tools.alert("请选择基准库"); |
||||
return; |
||||
} |
||||
if (!this.od_targetdb) { |
||||
tools.alert("请选择更新库"); |
||||
return; |
||||
} |
||||
if (this.od_targetdb == this.od_originaldb) { |
||||
tools.alert("相同库不需要同步"); |
||||
return; |
||||
} |
||||
if (this.lock == true) |
||||
{ |
||||
return; |
||||
} |
||||
this.lock = true; |
||||
axios.post("/PrivateReZeroRoute/100003/SynchronousData", |
||||
{ |
||||
OriginalDb: this.od_originaldb, |
||||
TargetDb: this.od_targetdb, |
||||
IsBak: this.od_isbak |
||||
}, jwHeader) |
||||
.then(response => { |
||||
this.lock = false; |
||||
this.error = null; |
||||
if (response.data == true) { |
||||
tools.alert("同步成功"); |
||||
} else { |
||||
tools.alert(response.data.message); |
||||
} |
||||
}) |
||||
.catch(error => { |
||||
this.error = error.message; |
||||
}); |
||||
}, |
||||
showMessage: function () |
||||
{ |
||||
var id = this.formData.DbType; |
||||
$(".dbmessage").addClass("hidden"); |
||||
$(".db" + id).removeClass("hidden"); |
||||
this.fetchData(urlParameters); |
||||
}, |
||||
deleteAndConfirm: function (item) { |
||||
if (item == null) { |
||||
var url = "/PrivateReZeroRoute/100003/DeleteDataBaseInfo?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/GetDataBaseInfoById?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.formData = {}; |
||||
this.title = this.addTitle; |
||||
}, |
||||
addOrUpdate: function () { |
||||
var th = this; |
||||
var frmId = "frmEdit"; |
||||
var json = this.formData; |
||||
var url = json.Id ? |
||||
"/PrivateReZeroRoute/100003/UpdateDatabaseInfo" : |
||||
"/PrivateReZeroRoute/100003/AddDatabaseInfo"; |
||||
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; |
||||
}); |
||||
}, |
||||
testDatabase: function (item) { |
||||
axios.post("/PrivateReZeroRoute/100003/TestDatabaseInfo", { Id: item.Id }, jwHeader) |
||||
.then(response => { |
||||
this.error = null; |
||||
tools.alert(response.data + ""); |
||||
}) |
||||
.catch(error => { |
||||
this.error = error.message; |
||||
|
||||
}); |
||||
}, |
||||
createDatabase: function (item) { |
||||
axios.post("/PrivateReZeroRoute/100003/CreateDatabaseInfo", { Connection: item.Connection, DbType: item.DbType }, jwHeader) |
||||
.then(response => { |
||||
this.error = null; |
||||
tools.alert(response.data + ""); |
||||
}) |
||||
.catch(error => { |
||||
this.error = error.message; |
||||
}); |
||||
}, |
||||
openSynchronousDataDiv: function () { |
||||
}, |
||||
synchronousData: function () { |
||||
if (!this.od_originaldb) { |
||||
tools.alert("请选择基准库"); |
||||
return; |
||||
} |
||||
if (!this.od_targetdb) { |
||||
tools.alert("请选择更新库"); |
||||
return; |
||||
} |
||||
});</script> |
||||
if (this.od_targetdb == this.od_originaldb) { |
||||
tools.alert("相同库不需要同步"); |
||||
return; |
||||
} |
||||
if (this.lock == true) { |
||||
return; |
||||
} |
||||
this.lock = true; |
||||
axios.post("/PrivateReZeroRoute/100003/SynchronousData", |
||||
{ |
||||
OriginalDb: this.od_originaldb, |
||||
TargetDb: this.od_targetdb, |
||||
IsBak: this.od_isbak |
||||
}, jwHeader) |
||||
.then(response => { |
||||
this.lock = false; |
||||
this.error = null; |
||||
if (response.data == true) { |
||||
tools.alert("同步成功"); |
||||
} else { |
||||
tools.alert(response.data.message); |
||||
} |
||||
}) |
||||
.catch(error => { |
||||
this.error = error.message; |
||||
}); |
||||
}, |
||||
showMessage: function () { |
||||
var id = this.formData.DbType; |
||||
$(".dbmessage").addClass("hidden"); |
||||
$(".db" + id).removeClass("hidden"); |
||||
} |
||||
} |
||||
});</script> |
@ -1,191 +1,190 @@
|
||||
@@master_page.html |
||||
<link href="css/page_interface.css?v=2" rel="stylesheet" /> |
||||
<div id="apibox"> |
||||
<div class="form-group row"> |
||||
<form id="frmSearch" onsubmit="return false;"> |
||||
<div class="row "> |
||||
<div class="col-md-2"> </div> |
||||
<div class="col-md-6"> |
||||
<input class="form-control" type="text" id="txtSearch" name="example-text-input" placeholder="Url or name"> |
||||
</div> |
||||
<div class="col-md-4"> |
||||
<button @click="onSearch()" id="btnSearch" class="btn btn-success" type="submit"><i class="mdi mdi-magnify"></i>搜索</button> |
||||
<button onclick="frmSearch.reset()" id="btnSearch" class="btn btn-close" type="submit">清空</button> |
||||
<div class="btn-group"> |
||||
<button type="button" class="btn btn-danger dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> |
||||
数据库 <span class="caret"></span> |
||||
</button> |
||||
<ul class="dropdown-menu"> |
||||
<li v-for="item in database"><a :href="getDynamicApiDocUrlByDatabase(item)">{{item.Name}}</a></li> |
||||
</ul> |
||||
</div> |
||||
<div class="btn-group m-l-10"> |
||||
<button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> |
||||
分类 <span class="caret"></span> |
||||
</button> |
||||
<ul class="dropdown-menu"> |
||||
<li v-for="item in interfaceCategroyList"><a :href="getDynamicApiDocUrl(item)">{{item.Name}}</a></li> |
||||
</ul> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
<div class="data" v-for="masterItem in data" :key="masterItem.Key"> |
||||
<h2>{{ masterItem.Key }} </h2> |
||||
<section v-for="item in masterItem.Value" :key="item.Id"> |
||||
<div :class="getEndpointType(item)"> |
||||
<p class="p" @click="toggleEndpoint"> |
||||
<span class="method">{{ item.HttpMethod }}</span> |
||||
<span class="url"> {{item.Url}} {{item.Name}}</span> |
||||
<span class="openapi">+</span> |
||||
</p> |
||||
<p>{{ item.Description }}</p> |
||||
<div class="parameter-title" style="display:none"> |
||||
Parameters: |
||||
<div class="try-out"> |
||||
<button class="btn try-out__btn" @click="tryItOut(item)">Try it out </button> |
||||
</div> |
||||
</div> |
||||
<div class="parameter" style="display:none" v-if="item.DataModel.DefaultParameters && item.DataModel.DefaultParameters.length > 0"> |
||||
<ul> |
||||
<li v-for="param in item.DataModel.DefaultParameters.filter(p => !p.ValueIsReadOnly && p.Value !== undefined && p.Value !== '')" :key="param.Name"> |
||||
<code>{{ param.ValueIsReadOnly ? 'Readonly:':''}}{{ param.Name }}</code> ({{ param.ValueType }}) - {{param.Type}} {{ param.Description }} {{ param.Value ? ' ['+param.Name +' = ' + param.Value+']' : ''}} |
||||
</li> |
||||
<li v-if="item.DataModel.OrderDynamicParemters"> |
||||
<code>OrderBy:[{FieldName:"FieldName",OrderByType:0}] 0 Asc, 1 Desc </code> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
</div> |
||||
</section> |
||||
</div> |
||||
<!-- 添加这个div来显示“还没有数据”当data为空时 --> |
||||
<div v-if="data==null||data.length === 0" class="no-data-message"> |
||||
<div class="alert alert-warning" role="alert"> |
||||
<p> 没有创建接口:1、先创建实体,2、点同步创建表,3、创建接口</p> |
||||
<p> 创建了没显示: 菜单:【系统配置-接口授权】 给用户授权可以访问的接口 或者 清空所有接口授权</p> |
||||
<div class="form-group row"> |
||||
<form id="frmSearch" onsubmit="return false;"> |
||||
<div class="row "> |
||||
<div class="col-md-2"> </div> |
||||
<div class="col-md-6"> |
||||
<input class="form-control" type="text" id="txtSearch" name="example-text-input" placeholder="Url or name"> |
||||
</div> |
||||
<div class="col-md-4"> |
||||
<button @click="onSearch()" id="btnSearch" class="btn btn-success" type="submit"><i class="mdi mdi-magnify"></i>搜索</button> |
||||
<button onclick="frmSearch.reset()" id="btnSearch" class="btn btn-close" type="submit">清空</button> |
||||
<div class="btn-group"> |
||||
<button type="button" class="btn btn-danger dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> |
||||
数据库 <span class="caret"></span> |
||||
</button> |
||||
<ul class="dropdown-menu"> |
||||
<li v-for="item in database"><a :href="getDynamicApiDocUrlByDatabase(item)">{{item.Name}}</a></li> |
||||
</ul> |
||||
</div> |
||||
<div class="btn-group m-l-10"> |
||||
<button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> |
||||
分类 <span class="caret"></span> |
||||
</button> |
||||
<ul class="dropdown-menu"> |
||||
<li v-for="item in interfaceCategroyList"><a :href="getDynamicApiDocUrl(item)">{{item.Name}}</a></li> |
||||
</ul> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
<div class="data" v-for="masterItem in data" :key="masterItem.Key"> |
||||
<h2>{{ masterItem.Key }} </h2> |
||||
<section v-for="item in masterItem.Value" :key="item.Id"> |
||||
<div :class="getEndpointType(item)"> |
||||
<p class="p" @click="toggleEndpoint"> |
||||
<span class="method">{{ item.HttpMethod }}</span> |
||||
<span class="url"> {{item.Url}} {{item.Name}}</span> |
||||
<span class="openapi">+</span> |
||||
</p> |
||||
<p>{{ item.Description }}</p> |
||||
<div class="parameter-title" style="display:none"> |
||||
Parameters: |
||||
<div class="try-out"> |
||||
<button class="btn try-out__btn" @click="tryItOut(item)">Try it out </button> |
||||
</div> |
||||
</div> |
||||
<div class="parameter" style="display:none" v-if="item.DataModel.DefaultParameters && item.DataModel.DefaultParameters.length > 0"> |
||||
<ul> |
||||
<li v-for="param in item.DataModel.DefaultParameters.filter(p => !p.ValueIsReadOnly && p.Value !== undefined && p.Value !== '')" :key="param.Name"> |
||||
<code>{{ param.ValueIsReadOnly ? 'Readonly:':''}}{{ param.Name }}</code> ({{ param.ValueType }}) - {{param.Type}} {{ param.Description }} {{ param.Value ? ' ['+param.Name +' = ' + param.Value+']' : ''}} |
||||
</li> |
||||
<li v-if="item.DataModel.OrderDynamicParemters"> |
||||
<code>OrderBy:[{FieldName:"FieldName",OrderByType:0}] 0 Asc, 1 Desc </code> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
</div> |
||||
</section> |
||||
</div> |
||||
<!-- 添加这个div来显示“还没有数据”当data为空时 --> |
||||
<div v-if="data==null||data.length === 0" class="no-data-message"> |
||||
<div class="alert alert-warning" role="alert"> |
||||
<p> 没有创建接口:1、先创建实体,2、点同步创建表,3、创建接口</p> |
||||
<p> 创建了没显示: 菜单:【系统配置-接口授权】 给用户授权可以访问的接口 或者 清空所有接口授权</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
new Vue({ |
||||
el: '#apibox', |
||||
data: { |
||||
data: null, |
||||
error: null, |
||||
interfaceCategroyList: [], |
||||
database: [], |
||||
}, |
||||
mounted() { |
||||
// 在组件加载时触发数据获取 |
||||
this.fetchData(null); |
||||
this.bindInterfaceCategroySelect(); |
||||
this.bindDatabaseSelect(); |
||||
}, |
||||
methods: { |
||||
fetchData(name) { |
||||
var urlParams = new URLSearchParams(window.location.search); |
||||
var idFromUrl = urlParams.get('InterfaceCategoryId'); |
||||
var databaseIdFromUrl = urlParams.get('DatabaseId'); |
||||
var url = url = '/PrivateReZeroRoute/100003/GetInternalInterfaceList?IsInitialized=0'; |
||||
var urlParameters = "&" + tools.objectToQueryString({ |
||||
Name: txtSearch.value, |
||||
InterfaceCategoryId: idFromUrl, |
||||
DatabaseId:databaseIdFromUrl |
||||
}); |
||||
url = url + urlParameters; |
||||
axios.get(url, jwHeader) |
||||
.then(response => { |
||||
this.data = response.data; |
||||
this.error = null; |
||||
}) |
||||
.catch(error => { |
||||
this.error = error.message; |
||||
this.data = null; |
||||
}); |
||||
}, |
||||
tryItOut(item) { |
||||
var urlParams = new URLSearchParams(window.location.search); |
||||
var token = urlParams.get('token'); |
||||
window.open('/rezero/try_api.html?id=' + item.Id + "&token=" + token, '_blank'); |
||||
}, |
||||
onSearch: function () { |
||||
this.fetchData(txtSearch.value); |
||||
}, |
||||
toggleEndpoint(event) { |
||||
var $currentTarget = $(event.currentTarget); |
||||
var $parent = $currentTarget.parent(); |
||||
var $parameterElements = $parent.find(".parameter-title, .parameter"); |
||||
var $textEle = $currentTarget.find(".openapi"); |
||||
var isTextPlus = $textEle.text() === "+"; |
||||
$parameterElements.toggle(100); |
||||
$textEle.text(isTextPlus ? "-" : "+").toggleClass("reduction", isTextPlus); |
||||
}, |
||||
bindInterfaceCategroySelect: function () { |
||||
axios.get("/PrivateReZeroRoute/100004/GetDynamicInterfaceCategoryList", jwHeader) |
||||
.then(response => { |
||||
this.interfaceCategroyList = 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; |
||||
}); |
||||
}, |
||||
getEndpointType(item) { |
||||
var actionType =item.DataModel.ActionType; |
||||
if (item.HttpMethod == "Get") { |
||||
return 'endpoint endpointGet'; |
||||
} else if (item.HttpMethod == "Post") { |
||||
return 'endpoint endpointPost'; |
||||
} else if (item.HttpMethod == "Delete") { |
||||
return 'endpoint endpointDelete'; |
||||
} else if (item.HttpMethod == "Put") { |
||||
return 'endpoint endpointPut'; |
||||
} else if (actionType.startsWith('1')) { |
||||
return 'endpoint endpointGet'; |
||||
} else if (actionType.startsWith('2')) { |
||||
return 'endpoint endpointPost'; |
||||
} else if (actionType.startsWith('6')) { |
||||
return 'endpoint endpointPost'; |
||||
} else if (actionType.startsWith('3')) { |
||||
return 'endpoint endpointDelete'; |
||||
} else if (actionType.startsWith('4')) { |
||||
return 'endpoint endpointPut'; |
||||
} else if (actionType.startsWith('9')) { |
||||
return 'endpoint endpointSql'; |
||||
} else { |
||||
return 'endpoint endpointOther'; |
||||
} |
||||
}, |
||||
getDynamicApiDocUrl: function (item) |
||||
{ |
||||
var urlParams = new URLSearchParams(window.location.search); |
||||
var token = urlParams.get('token'); |
||||
var model = urlParams.get('model'); |
||||
return "/rezero/dynamic_interface.html?InterfaceCategoryId=" + item.Id + "&model=" + model + "&token=" + token; |
||||
}, |
||||
getDynamicApiDocUrlByDatabase: function (item) { |
||||
var urlParams = new URLSearchParams(window.location.search); |
||||
var token = urlParams.get('token'); |
||||
var model = urlParams.get('model'); |
||||
return "/rezero/dynamic_interface.html?DatabaseId=" + item.Id + "&model=" + model + "&token=" + token; |
||||
} |
||||
new Vue({ |
||||
el: '#apibox', |
||||
data: { |
||||
data: null, |
||||
error: null, |
||||
interfaceCategroyList: [], |
||||
database: [], |
||||
}, |
||||
mounted() { |
||||
// 在组件加载时触发数据获取 |
||||
this.fetchData(null); |
||||
this.bindInterfaceCategroySelect(); |
||||
this.bindDatabaseSelect(); |
||||
}, |
||||
methods: { |
||||
fetchData(name) { |
||||
var urlParams = new URLSearchParams(window.location.search); |
||||
var idFromUrl = urlParams.get('InterfaceCategoryId'); |
||||
var databaseIdFromUrl = urlParams.get('DatabaseId'); |
||||
var url = url = '/PrivateReZeroRoute/100003/GetInternalInterfaceList?IsInitialized=0'; |
||||
var urlParameters = "&" + tools.objectToQueryString({ |
||||
Name: txtSearch.value, |
||||
InterfaceCategoryId: idFromUrl, |
||||
DatabaseId: databaseIdFromUrl |
||||
}); |
||||
url = url + urlParameters; |
||||
axios.get(url, jwHeader) |
||||
.then(response => { |
||||
this.data = response.data; |
||||
this.error = null; |
||||
}) |
||||
.catch(error => { |
||||
this.error = error.message; |
||||
this.data = null; |
||||
}); |
||||
}, |
||||
tryItOut(item) { |
||||
var urlParams = new URLSearchParams(window.location.search); |
||||
var token = urlParams.get('token'); |
||||
window.open('/rezero/try_api.html?id=' + item.Id + "&token=" + token, '_blank'); |
||||
}, |
||||
onSearch: function () { |
||||
this.fetchData(txtSearch.value); |
||||
}, |
||||
toggleEndpoint(event) { |
||||
var $currentTarget = $(event.currentTarget); |
||||
var $parent = $currentTarget.parent(); |
||||
var $parameterElements = $parent.find(".parameter-title, .parameter"); |
||||
var $textEle = $currentTarget.find(".openapi"); |
||||
var isTextPlus = $textEle.text() === "+"; |
||||
$parameterElements.toggle(100); |
||||
$textEle.text(isTextPlus ? "-" : "+").toggleClass("reduction", isTextPlus); |
||||
}, |
||||
bindInterfaceCategroySelect: function () { |
||||
axios.get("/PrivateReZeroRoute/100004/GetDynamicInterfaceCategoryList", jwHeader) |
||||
.then(response => { |
||||
this.interfaceCategroyList = 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; |
||||
}); |
||||
}, |
||||
getEndpointType(item) { |
||||
var actionType = item.DataModel.ActionType; |
||||
if (item.HttpMethod == "Get") { |
||||
return 'endpoint endpointGet'; |
||||
} else if (item.HttpMethod == "Post") { |
||||
return 'endpoint endpointPost'; |
||||
} else if (item.HttpMethod == "Delete") { |
||||
return 'endpoint endpointDelete'; |
||||
} else if (item.HttpMethod == "Put") { |
||||
return 'endpoint endpointPut'; |
||||
} else if (actionType.startsWith('1')) { |
||||
return 'endpoint endpointGet'; |
||||
} else if (actionType.startsWith('2')) { |
||||
return 'endpoint endpointPost'; |
||||
} else if (actionType.startsWith('6')) { |
||||
return 'endpoint endpointPost'; |
||||
} else if (actionType.startsWith('3')) { |
||||
return 'endpoint endpointDelete'; |
||||
} else if (actionType.startsWith('4')) { |
||||
return 'endpoint endpointPut'; |
||||
} else if (actionType.startsWith('9')) { |
||||
return 'endpoint endpointSql'; |
||||
} else { |
||||
return 'endpoint endpointOther'; |
||||
} |
||||
}); |
||||
}, |
||||
getDynamicApiDocUrl: function (item) { |
||||
var urlParams = new URLSearchParams(window.location.search); |
||||
var token = urlParams.get('token'); |
||||
var model = urlParams.get('model'); |
||||
return "/rezero/dynamic_interface.html?InterfaceCategoryId=" + item.Id + "&model=" + model + "&token=" + token; |
||||
}, |
||||
getDynamicApiDocUrlByDatabase: function (item) { |
||||
var urlParams = new URLSearchParams(window.location.search); |
||||
var token = urlParams.get('token'); |
||||
var model = urlParams.get('model'); |
||||
return "/rezero/dynamic_interface.html?DatabaseId=" + item.Id + "&model=" + model + "&token=" + token; |
||||
} |
||||
} |
||||
}); |
||||
</script> |
||||
|
@ -0,0 +1,317 @@
|
||||
@@master_page.html |
||||
<link |
||||
href="css/page_table_list.css" |
||||
rel="stylesheet" |
||||
/> |
||||
<div |
||||
id="apibox" |
||||
class="card" |
||||
> |
||||
<div class="search-bar"> |
||||
<form |
||||
id="frmSearach" |
||||
action="lyear_forms_elements.html" |
||||
method="post" |
||||
onsubmit="return false;" |
||||
> |
||||
<div class="form-group"> |
||||
<div class="row"> |
||||
<div class="col-md-1"> |
||||
<label |
||||
class="form-control" |
||||
t |
||||
>名称:</label |
||||
> |
||||
</div> |
||||
<div class="col-md-3"> |
||||
<input |
||||
class="form-control" |
||||
type="text" |
||||
id="txtSearch" |
||||
name="example-text-input" |
||||
placeholder="分类名称" |
||||
/> |
||||
</div> |
||||
<div class="col-md-3"> |
||||
<button |
||||
@click="onSearch()" |
||||
id="btnSearch" |
||||
class="btn btn-secondary" |
||||
> |
||||
<i class="mdi mdi-magnify"></i>搜索 |
||||
</button> |
||||
<button |
||||
onclick="frmSearach.reset()" |
||||
class="btn btn-close m-l-15" |
||||
type="submit" |
||||
> |
||||
清空 |
||||
</button> |
||||
</div> |
||||
<div class="col-md-4"></div> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
<div class="toolbar-btn-action"> |
||||
<button |
||||
@click="openAddDiv()" |
||||
class="btn btn-primary m-l-15" |
||||
data-toggle="modal" |
||||
data-target="#gridSystemModal" |
||||
> |
||||
<i class="mdi mdi-plus"></i> 新增 |
||||
</button> |
||||
</div> |
||||
</div> |
||||
<div class="card-body"> |
||||
<h5></h5> |
||||
<div class="table-responsive"> |
||||
<table class="table table-bordered"> |
||||
<thead> |
||||
<tr v-if="data && data.Columns && data.Columns.length > 0"> |
||||
<th |
||||
class="mi-w-100" |
||||
v-for="column in data.Columns" |
||||
> |
||||
{{column.ColumnDescription}} |
||||
</th> |
||||
<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 v-for="column in data.Columns"> |
||||
{{ item[column.PropertyName] }} |
||||
</td> |
||||
|
||||
<td class="table_opt"> |
||||
<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 |
||||
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 |
||||
for="recipient-name" |
||||
class="control-label" |
||||
>名称:</label |
||||
> |
||||
<input |
||||
type="text" |
||||
v-model="formData.Name" |
||||
name="Name" |
||||
class="form-control" |
||||
id="recipient-name" |
||||
/> |
||||
</div> |
||||
<div class="form-group"> |
||||
<label |
||||
for="message-text" |
||||
class="control-label" |
||||
>内容:</label |
||||
> |
||||
<textarea |
||||
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> |
||||
<script> |
||||
var vueObj = new Vue({ |
||||
el: '#apibox', |
||||
data: { |
||||
data: null, |
||||
error: null, |
||||
addTitle: '添加动态接口分类', |
||||
editTitle: '修改态接口分类', |
||||
title: '', |
||||
formData: {}, |
||||
}, |
||||
mounted() { |
||||
this.fetchData('') |
||||
}, |
||||
methods: { |
||||
fetchData(append) { |
||||
var url = '/trs/page' + append |
||||
axios |
||||
.get(url, jwHeader) |
||||
.then(response => { |
||||
this.data = response.data |
||||
this.error = null |
||||
}) |
||||
.catch(error => { |
||||
this.error = error.message |
||||
this.data = null |
||||
}) |
||||
}, |
||||
onSearch: function (page) { |
||||
var urlParameters = |
||||
'&' + |
||||
tools.objectToQueryString({ |
||||
Name: txtSearch.value, |
||||
__pageNumber: page, |
||||
__pageSize: tools.getValue('selPageSize'), |
||||
}) |
||||
this.fetchData(urlParameters) |
||||
}, |
||||
deleteAndConfirm: function (item) { |
||||
if (item == null) { |
||||
if (localStorage.delId == 200100) { |
||||
tools.alert('初始化分类不能删除') |
||||
btnDelClose.click() |
||||
return |
||||
} |
||||
var url = |
||||
'/PrivateReZeroRoute/100003/DeleteDynamicInterfaceCategory?IsDeleted=true&Id=' + |
||||
localStorage.delId |
||||
axios |
||||
.get(url, jwHeader) |
||||
.then(response => { |
||||
this.data = response.data |
||||
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/GetDynamicInterfaceCategoryById?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 = {} |
||||
}, |
||||
addOrUpdate: function () { |
||||
var th = this |
||||
var frmId = 'frmEdit' |
||||
var json = this.formData |
||||
var url = json.Id |
||||
? '/PrivateReZeroRoute/100003/UpdateDynamicInterfaceCategory' |
||||
: '/PrivateReZeroRoute/100003/AddDynamicInterfaceCategory' |
||||
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 |
||||
}) |
||||
}, |
||||
}, |
||||
}) |
||||
</script> |
@ -1,197 +1,194 @@
|
||||
@@master_page.html |
||||
<link href="css/page_table_list.css" rel="stylesheet" /> |
||||
<div id="apibox" class="card"> |
||||
<div class="search-bar"> |
||||
<div class="search-bar"> |
||||
|
||||
<form id="frmSearach" action="lyear_forms_elements.html" method="post" onsubmit="return false;"> |
||||
<div class="form-group"> |
||||
<div class="row"> |
||||
<div class="col-md-1"><label class="form-control" t>名称:</label></div> |
||||
<div class="col-md-3"><input class="form-control" type="text" id="txtSearch" name="example-text-input" placeholder="分类名称"></div> |
||||
<div class="col-md-3"> |
||||
<button @click="onSearch()" id="btnSearch" class="btn btn-secondary"><i class="mdi mdi-magnify"></i>搜索</button> |
||||
<button onclick="frmSearach.reset()" class="btn btn-close m-l-15" type="submit">清空</button> |
||||
<form id="frmSearach" action="lyear_forms_elements.html" method="post" onsubmit="return false;"> |
||||
<div class="form-group"> |
||||
<div class="row"> |
||||
<div class="col-md-1"><label class="form-control" t>名称:</label></div> |
||||
<div class="col-md-3"><input class="form-control" type="text" id="txtSearch" name="example-text-input" placeholder="分类名称"></div> |
||||
<div class="col-md-3"> |
||||
<button @click="onSearch()" id="btnSearch" class="btn btn-secondary"><i class="mdi mdi-magnify"></i>搜索</button> |
||||
<button onclick="frmSearach.reset()" class="btn btn-close m-l-15" type="submit">清空</button> |
||||
|
||||
</div> |
||||
<div class="col-md-4"></div> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
<div class="toolbar-btn-action"> |
||||
<button @click="openAddDiv()" class="btn btn-primary m-l-15 " data-toggle="modal" data-target="#gridSystemModal"><i class="mdi mdi-plus"></i> 新增</button> |
||||
</div> |
||||
<div class="col-md-4"></div> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
<div class="toolbar-btn-action"> |
||||
<button @click="openAddDiv()" class="btn btn-primary m-l-15 " data-toggle="modal" data-target="#gridSystemModal"><i class="mdi mdi-plus"></i> 新增</button> |
||||
</div> |
||||
<div class="card-body"> |
||||
</div> |
||||
<div class="card-body"> |
||||
|
||||
<h5> </h5> |
||||
<div class="table-responsive"> |
||||
<table class="table table-bordered"> |
||||
<thead> |
||||
<tr v-if="data && data.Columns && data.Columns.length > 0"> |
||||
<th class="mi-w-100" v-for="column in data.Columns">{{column.ColumnDescription}}</th> |
||||
<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"> |
||||
<h5> </h5> |
||||
<div class="table-responsive"> |
||||
<table class="table table-bordered"> |
||||
<thead> |
||||
<tr v-if="data && data.Columns && data.Columns.length > 0"> |
||||
<th class="mi-w-100" v-for="column in data.Columns">{{column.ColumnDescription}}</th> |
||||
<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 v-for="column in data.Columns"> |
||||
{{ item[column.PropertyName] }} |
||||
</td> |
||||
<td v-for="column in data.Columns"> |
||||
{{ item[column.PropertyName] }} |
||||
</td> |
||||
|
||||
<td class="table_opt"> |
||||
<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> |
||||
<td class="table_opt"> |
||||
<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> |
||||
@@page_control.html |
||||
<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 for="recipient-name" class="control-label">名称:</label> |
||||
<input type="text" v-model="formData.Name" name="Name" class="form-control" id="recipient-name"> |
||||
</div> |
||||
<div class="form-group"> |
||||
<label for="message-text" class="control-label">内容:</label> |
||||
<textarea 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> |
||||
@@page_control.html |
||||
<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 for="recipient-name" class="control-label">名称:</label> |
||||
<input type="text" v-model="formData.Name" name="Name" class="form-control" id="recipient-name"> |
||||
</div> |
||||
<div class="form-group"> |
||||
<label for="message-text" class="control-label">内容:</label> |
||||
<textarea 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> |
||||
<script> |
||||
var vueObj = new Vue({ |
||||
el: '#apibox', |
||||
data: { |
||||
data: null, |
||||
error: null, |
||||
addTitle: "添加动态接口分类", |
||||
editTitle: "修改态接口分类", |
||||
title: "", |
||||
formData: { |
||||
var vueObj = new Vue({ |
||||
el: '#apibox', |
||||
data: { |
||||
data: null, |
||||
error: null, |
||||
addTitle: "添加动态接口分类", |
||||
editTitle: "修改态接口分类", |
||||
title: "", |
||||
formData: { |
||||
|
||||
} |
||||
}, |
||||
mounted() { |
||||
this.fetchData(""); |
||||
}, |
||||
methods: { |
||||
fetchData(append) { |
||||
var url = "/PrivateReZeroRoute/100003/GetDynamicInterfaceCategoryPageList?ParentId=200" + append; |
||||
axios.get(url, jwHeader) |
||||
.then(response => { |
||||
this.data = response.data; |
||||
this.error = null; |
||||
}) |
||||
.catch(error => { |
||||
this.error = error.message; |
||||
this.data = null; |
||||
}); |
||||
}, |
||||
onSearch: function (page) { |
||||
} |
||||
}, |
||||
mounted() { |
||||
this.fetchData(""); |
||||
}, |
||||
methods: { |
||||
fetchData(append) { |
||||
var url = "/PrivateReZeroRoute/100003/GetDynamicInterfaceCategoryPageList?ParentId=200" + append; |
||||
axios.get(url, jwHeader) |
||||
.then(response => { |
||||
this.data = response.data; |
||||
this.error = null; |
||||
}) |
||||
.catch(error => { |
||||
this.error = error.message; |
||||
this.data = null; |
||||
}); |
||||
}, |
||||
onSearch: function (page) { |
||||
|
||||
var urlParameters="&"+tools.objectToQueryString({ |
||||
Name: txtSearch.value, |
||||
__pageNumber: page, |
||||
__pageSize: tools.getValue("selPageSize"), |
||||
}); |
||||
this.fetchData(urlParameters); |
||||
}, |
||||
deleteAndConfirm: function (item) { |
||||
if (item == null) { |
||||
if (localStorage.delId == 200100) { |
||||
tools.alert("初始化分类不能删除"); |
||||
btnDelClose.click(); |
||||
return; |
||||
} |
||||
var url = "/PrivateReZeroRoute/100003/DeleteDynamicInterfaceCategory?IsDeleted=true&Id=" + localStorage.delId; |
||||
axios.get(url, jwHeader) |
||||
.then(response => { |
||||
this.data = response.data; |
||||
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/GetDynamicInterfaceCategoryById?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 = {}; |
||||
}, |
||||
addOrUpdate: function () { |
||||
var th = this; |
||||
var frmId = "frmEdit"; |
||||
var json = this.formData; |
||||
var url = json.Id ? |
||||
"/PrivateReZeroRoute/100003/UpdateDynamicInterfaceCategory" : |
||||
"/PrivateReZeroRoute/100003/AddDynamicInterfaceCategory"; |
||||
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; |
||||
}); |
||||
} |
||||
var urlParameters = "&" + tools.objectToQueryString({ |
||||
Name: txtSearch.value, |
||||
__pageNumber: page, |
||||
__pageSize: tools.getValue("selPageSize"), |
||||
}); |
||||
this.fetchData(urlParameters); |
||||
}, |
||||
deleteAndConfirm: function (item) { |
||||
if (item == null) { |
||||
if (localStorage.delId == 200100) { |
||||
tools.alert("初始化分类不能删除"); |
||||
btnDelClose.click(); |
||||
return; |
||||
} |
||||
var url = "/PrivateReZeroRoute/100003/DeleteDynamicInterfaceCategory?IsDeleted=true&Id=" + localStorage.delId; |
||||
axios.get(url, jwHeader) |
||||
.then(response => { |
||||
this.data = response.data; |
||||
this.error = null; |
||||
this.onSearch(); |
||||
btnDelClose.click(); |
||||
}) |
||||
.catch(error => { |
||||
this.error = error.message; |
||||
this.data = null; |
||||
}); |
||||
} else { |
||||
localStorage.delId = item.Id; |
||||
} |
||||
});</script> |
||||
}, |
||||
openEditDiv: function (item) { |
||||
var urlById = "/PrivateReZeroRoute/100003/GetDynamicInterfaceCategoryById?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 = {}; |
||||
}, |
||||
addOrUpdate: function () { |
||||
var th = this; |
||||
var frmId = "frmEdit"; |
||||
var json = this.formData; |
||||
var url = json.Id ? |
||||
"/PrivateReZeroRoute/100003/UpdateDynamicInterfaceCategory" : |
||||
"/PrivateReZeroRoute/100003/AddDynamicInterfaceCategory"; |
||||
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; |
||||
}); |
||||
} |
||||
} |
||||
});</script> |
Loading…
Reference in new issue