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.

535 lines
12 KiB

@@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-2">
<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.OBJECT_PATH"
name="OBJECT_PATH"
class="form-control"
id="recipient-name"
/>
</div>
<div class="form-group">
<label
for="message-text"
class="control-label"
>实体表名:
</label>
<div class="input-group">
<input
v-model="formData.MAPPING_TABLE"
type="text"
name="MAPPING_TABLE"
class="form-control"
/>
<span class="input-group-btn">
<button
@click="openImportEntity(item)"
class="btn btn-default"
type="button"
>
选择表
</button>
</span>
</div>
</div>
<div class="form-group">
<label
for="message-text"
class="control-label"
>实体归属:</label
>
<input
type="radio"
id="contactChoice2"
name="ASSEMBLY_TYPE"
value="0"
v-model="formData.ASSEMBLY_TYPE"
checked
/>
<label for="contactChoice2">系统</label>
<input
type="radio"
id="contactChoice1"
name="ASSEMBLY_TYPE"
value="1"
v-model="formData.ASSEMBLY_TYPE"
/>
<label for="contactChoice1">三方</label>
</div>
<div class="form-group">
<label
for="message-text"
class="control-label"
>实体类型:</label
>
<input
type="radio"
id="contactChoice2"
name="OBJECT_TYPE"
value="0"
v-model="formData.OBJECT_TYPE"
checked
/>
<label for="contactChoice2">对象</label>
<input
type="radio"
id="contactChoice1"
name="OBJECT_TYPE"
value="1"
v-model="formData.OBJECT_TYPE"
/>
<label for="contactChoice1">列表</label>
</div>
<div class="form-group">
<label
for="message-text"
class="control-label"
>参数类型:</label
>
<input
type="radio"
id="contactChoice2"
name="PARAMETR_TYPE"
value="0"
v-model="formData.PARAMETR_TYPE"
checked
/>
<label for="contactChoice2">入参</label>
<input
type="radio"
id="contactChoice1"
name="PARAMETR_TYPE"
value="1"
v-model="formData.PARAMETR_TYPE"
/>
<label for="contactChoice1">出参</label>
</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="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 border3CCC"
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="master-table-container">
<table class="table table-bordered">
<thead>
<tr>
<th>表名</th>
<th>描述</th>
</tr>
</thead>
<tbody v-if="tables.length>0">
<tr
v-for="item in tables"
@click="selectTable(item)"
:style="{
'background-color':item.Id ==isSelectTable.Id? '#f5f5f5': ''
}"
>
<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>
</div>
<script>
var vueObj = new Vue({
el: '#apibox',
data: {
data: null,
error: null,
addTitle: '添加动态接口分类',
editTitle: '修改态接口分类',
title: '',
formData: {},
methodId: '',
databaseId: 1,
database: [],
tables: [],
isSelectTable: {},
},
mounted() {
var url = window.location.href
var methodId = url.substring(url.lastIndexOf('?') + 1)
this.methodId = methodId
this.fetchData('')
},
methods: {
fetchData(append) {
var url = `/std_entity/list?methodID=${this.methodId}` + 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({
title: 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) {
console.log(item)
var urlById = '/std_entity/get?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 = {
OBJECT_TYPE: 0,
PARAMETR_TYPE: 0,
ASSEMBLY_TYPE: 0,
METHOD_REF: this.methodId,
MAPPING_TABLE: '',
}
},
addOrUpdate: function () {
var th = this
var frmId = 'frmEdit'
var json = this.formData
var url = json.METHOD_ID ? '/std_entity/update' : '/std_entity/create'
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
})
},
openImportEntity: function () {
btnImportEntity.click()
this.bindImportTables()
},
bindImportTables: function () {
var url =
'/PrivateReZeroRoute/100004/GetAllTables?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
})
},
selectTable(item) {
this.isSelectTable = item
},
importEntitySubmit: function () {
this.formData.MAPPING_TABLE = this.isSelectTable.Name
btnImportEntityClose.click()
},
},
})
</script>