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.
265 lines
13 KiB
265 lines
13 KiB
@@master_page.html |
|
<link href="css/page_table_list.css" rel="stylesheet" /> |
|
<link href="css/page_interface_manager.css" 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"> |
|
<!--主列表搜索--> |
|
<div class="search-bar"> |
|
<form id="frmSearach" action="lyear_forms_elements.html" method="post" onsubmit="return false;"> |
|
<div class="form-group hide"> |
|
<div class="row"> |
|
<div class="col-md-2"><input class="form-control" type="text" id="txtUserName" name="example-text-input" placeholder="用户名"></div> |
|
<div class="col-md-2 hide"><input class="form-control" type="text" id="txtPassword" name="example-text-input" placeholder="密码"></div> |
|
<div class="col-md-2"> |
|
<select id="selIsMasterAdmin" class="form-control"> |
|
<option value="">==是否管理员==</option> |
|
<option value="true">是</option> |
|
<option value="false">否</option> |
|
</select> |
|
</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> |
|
</div> |
|
</form> |
|
</div> |
|
<!--主表列表操作按钮--> |
|
<div class="card-toolbar clearfix hide"> |
|
<div class="toolbar-btn-action"> |
|
<a class="btn btn-primary m-r-5" @click="openAddAdmin()" href="#!"><i class="mdi mdi-plus"></i> 新增管理账号</a> |
|
<a class="btn btn-primary m-r-5" @click="openAddUser()" href="#!"><i class="mdi mdi-plus"></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> |
|
<th 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> |
|
<label class="lyear-checkbox checkbox-primary"> |
|
<input type="checkbox" name="ids[]" v-model="selectedItems" :alt="item.Id" :value="item.Id"><span></span> |
|
</label> |
|
</td> |
|
<td v-for="column in data.Columns"> |
|
{{ item[column.PropertyName] }} |
|
</td> |
|
<td class="table_opt"> |
|
<button data-toggle="modal" @click="openEdit(item)" 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> |
|
</div> |
|
<!--分页局部视图--> |
|
@@page_control.html |
|
<!--创建用户信息窗体--> |
|
<div id="divSave" class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" style="display: none;"> |
|
<button id="btnSave" type="button" class="btn btn-primary hidden" data-toggle="modal" data-target="#divSave"></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">{{title}} </h4> |
|
</div> |
|
<div class="modal-body"> |
|
<form id="frmSave" action="#!" method="post" name="edit-form" class="edit-form"> |
|
<input v-model="editId" type="hidden" value="0" /> |
|
<div class="form-group col-md-12"> |
|
<label>用户名</label> |
|
<input :readonly="isReadOnly" type="text" class="form-control" v-model="formData.UserName" placeholder="请输入用户名"> |
|
</div> |
|
<div class="form-group col-md-12"> |
|
<label>密码</label> |
|
<input type="password" class="form-control" v-model="formData.Password" placeholder="请输入密码"> |
|
</div> |
|
<div class="form-group col-md-12"> |
|
<label>确认密码</label> |
|
<input type="password" class="form-control" v-model="formData.ConfirmPassword" placeholder="请再次输入密码"> |
|
</div> |
|
<div class="form-group hide col-md-12"> |
|
<label>绑定业务账号</label> |
|
<code>初始化配置中的JWT用户表</code> |
|
<select v-if="bizUsers.length > 0&& bizUsers[0]" class="form-control" v-model="formData.BusinessAccount" placeholder="业务账号"> |
|
<option v-for="user in bizUsers" :value="user">{{user}}</option> |
|
</select> |
|
<div v-else class="alert alert-warning"> |
|
JWT的信息没有配置完整,不能加载下拉列表 |
|
详细:{{bizUserErrorMessage}}</div> |
|
</div> |
|
<div class="form-group col-md-12"> |
|
<label>是否管理员</label> |
|
<code>非管理员只能有动态接口请求的权限</code> |
|
<select disabled class="form-control" v-model="formData.IsMasterAdmin"> |
|
<option value="true">是</option> |
|
<option value="false">否</option> |
|
</select> |
|
<input type="hidden" v-model="formData.IsMasterAdmin" /> |
|
</div> |
|
<div class="form-group col-md-12"> |
|
<img :src="formData.Avatar" onerror="this.src='images/users/avatar.jpg';" @click="selectImage" style="height: 50px; width: 50px; cursor: pointer;" /> |
|
<input type="file" id="fileInput" @change="onFileChange" style="display: none;" /> |
|
</div> |
|
</form> |
|
</div> |
|
<div class="modal-footer"> |
|
<button type="button" id="btnAddOrUpdateColse" class="btn btn-default" data-dismiss="modal">关闭</button> |
|
<button type="button" @click="addOrUpdateUserInfo()" class="btn btn-primary">保存</button> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
<script> |
|
var vueObj = new Vue({ |
|
el: '#apibox', |
|
data: { |
|
data: null, |
|
error: null, |
|
title: "添加用户信息", |
|
editId: 0, |
|
isReadOnly: false, |
|
bizUsers: [], |
|
bizUserErrorMessage:"", |
|
formData: { |
|
UserName: '', |
|
Password: '', |
|
ConfirmPassword: '', |
|
IsMasterAdmin: false, |
|
BusinessAccount:'', |
|
Avatar: '' |
|
}, |
|
selectedItems: [] |
|
}, |
|
mounted() { |
|
//this.fetchData(""); |
|
this.fetchBizUsers(); |
|
}, |
|
methods: { |
|
fetchData: function (append) { |
|
var url = "/PrivateReZeroRoute/100003/GetUserInfoPageList" + 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({ |
|
__pageNumber: page, |
|
__pageSize: tools.getValue("selPageSize"), |
|
UserName: txtUserName.value, |
|
Password: txtPassword.value, |
|
IsMasterAdmin: selIsMasterAdmin.value |
|
}); |
|
this.fetchData(urlParameters); |
|
}, |
|
selectAll: function (event) { |
|
if (event.target.checked) { |
|
// 全选 |
|
this.selectedItems = this.data.Data.map(item => item.Id); |
|
} else { |
|
// 全不选 |
|
this.selectedItems = []; |
|
} |
|
}, |
|
openEdit: function (item) { |
|
var th = this; |
|
this.isReadOnly = true; |
|
this.title = "修改用户信息"; |
|
var urlById = "/PrivateReZeroRoute/100003/GetUserById?id=" + -1; |
|
axios.get(urlById, jwHeader) |
|
.then(response => { |
|
th.formData = response.data; |
|
btnSave.click(); |
|
}) |
|
.catch(error => { |
|
this.error = error.message; |
|
this.data = null; |
|
}); |
|
}, |
|
addOrUpdateUserInfo: function () { |
|
if (this.formData.Password !== this.formData.ConfirmPassword) { |
|
tools.alert("密码和确认密码不一致"); |
|
return; |
|
} |
|
if (!this.formData.IsMasterAdmin && !this.formData.BusinessAccount) { |
|
tools.alert("非管理员【绑定业务账号】是必填项"); |
|
return; |
|
} |
|
var formData = this.formData; |
|
var url = "/PrivateReZeroRoute/100003/SaveUser"; |
|
axios.post(url, formData, jwHeader) |
|
.then(response => { |
|
if (response.data == true) { |
|
tools.alert("保存成功"); |
|
setTimeout(function () { |
|
window.location.href = "/rezero/dynamic_interface.html?InterfaceCategoryId=200100"; |
|
}, 500); |
|
this.error = null; |
|
} else { |
|
tools.alert(response.data.message); |
|
} |
|
}) |
|
.catch(error => { |
|
this.error = error.message; |
|
}); |
|
}, |
|
selectImage: function () { |
|
document.getElementById('fileInput').click(); |
|
}, |
|
fetchBizUsers: function () { |
|
var url = "/PrivateReZeroRoute/100003/GetBizUsers"; |
|
axios.get(url, jwHeader) |
|
.then(response => { |
|
if (Array.isArray(response.data)) { |
|
this.bizUsers = response.data; |
|
} else if (response.data.message) { |
|
this.bizUserErrorMessage = response.data.message; |
|
this.bizUsers = [""]; |
|
} |
|
this.openEdit(); |
|
}) |
|
.catch(error => { |
|
this.error = error.message; |
|
this.openEdit(); |
|
}); |
|
}, |
|
onFileChange: function (e) { |
|
var files = e.target.files; |
|
if (!files.length) return; |
|
var reader = new FileReader(); |
|
reader.readAsDataURL(files[0]); |
|
reader.onload = e => { |
|
this.formData.Avatar = e.target.result; |
|
}; |
|
} |
|
} |
|
}); |
|
</script>
|
|
|