Authored by 鲁尚清

【#1162】 变更负责人相关业务-资源权限、资源责任人接口调用,http请求出错返回msg

... ... @@ -194,7 +194,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'upload', 'common', 'sessions',
title: '操作', fixed: 'right', align: 'center',minWidth: 280,
templet: '<div>' +
//lsq 新增变更按钮 2022-05-30
'<button data-username="{{d.username}}" lay-tips="人员相关业务变更" type="button" class="layui-btn layui-btn-xs layui-btn-normal user_batch_change_leaders_btn"><i class="layui-icon layui-icon-edit"></i></button>'+
'<button data-username="{{d.username}}" data-nickname="{{d.nickname}}" lay-tips="人员相关业务变更" type="button" class="layui-btn layui-btn-xs layui-btn-normal user_batch_change_leaders_btn"><i class="layui-icon layui-icon-edit"></i></button>'+
'<button data-id="{{d.id}}" lay-tips="删除" type="button" class="layui-btn layui-btn-xs layui-btn-normal user_delete_btn"><i class="layui-icon layui-icon-delete"></i></button>'+
'<button data-id="{{d.id}}" data-username="{{d.username}}" lay-tips="重置密码" type="button" class="layui-btn layui-btn-xs layui-btn-normal user_pass_btn"><i class="layui-icon layui-icon-password"></i></button>'+
... ... @@ -288,10 +288,10 @@ layui.define(['table', 'form', 'admin', 'layer', 'upload', 'common', 'sessions',
}
//start lsq 人员相关业务批量变更 2022-05-30
$('.user_batch_change_leaders_btn').unbind().on('click',function () {
if ($.inArray('back:user:impower',permissionList) == -1) {
layer.msg('暂无权限',{icon: 7,time:3000})
return false;
}
// if ($.inArray('back:user:impower',permissionList) == -1) {
// layer.msg('暂无权限',{icon: 7,time:3000})
// return false;
// }
let param = {
username: $(this).data('username'),
resName: ''
... ... @@ -305,7 +305,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'upload', 'common', 'sessions',
urlParams=urlParams.substr(0,urlParams.length-1);
let title=`
<div style="display: flex;justify-content: space-between; align-items: center;">
<span>相关业务批量变更</span>
<span>"`+$(this).data('nickname')+`"相关业务批量变更</span>
<button id="exportBtn" type="button" class="layui-btn layui-btn-sm layui-btn-normal exportBtn">导出</button>
</div>
`;
... ...
<div >
<!-- 表格-->
<el-table :border="showBorder" v-loading="loading" :size="size" ref="multipleTable" @selection-change="handleSelectionChange" :data="dataList" stripe header-row-class-name="tbl-header-class" :height="height"
style="width: 100%;margin: 0px 0px; font-size:13.5px;" :row-key="getRowKeys" :expand-row-keys="expands" :default-expand-all="defaultExpand">
style="width: 100%;margin: 0px 0px; font-size:13.5px;" :row-key="getRowKeys" :expand-row-keys="expands" :default-expand-all="defaultExpand"
@select="handleSelect" @select-all="handleSelectAll"
>
<el-table-column type="expand" v-if="showExpand">
<template #default="scope">
... ...
... ... @@ -229,6 +229,27 @@ export default {
return val;
}
//勾选数据行的Checkbox事件
let handleSelect=(selection, row)=>{
if(selection.some(el=>{ return row[props.getRowKeys] ===el[props.getRowKeys]})){
if(row.children){
row.children.map(j=>{
toggleSelection(j)
})
}
}else{
if(row.children){
row.children.map(j=>{
toggleSelection(j)
})
}
}
emit('handleSelect',selection)
}
//勾选全选checkbox事件
let handleSelectAll=(selection)=>{
emit('handleSelectAll',selection)
}
// 挂载完
Vue.onMounted(() => {
//callback();
... ... @@ -245,6 +266,8 @@ export default {
})
return {
handleSelect,
handleSelectAll,
toggleSelection,
handleSelectionChange,
// multipleSelection,
... ...
... ... @@ -14,7 +14,11 @@ let http = {
window.top.location.reload();
//window.top.location.href = localStorage.getItem('loginUrl');
} else {
__global.showMsg("服务异常,请联系管理员!","error");
let text='服务异常,请联系管理员!';
if(xhr.responseJSON.resp_msg){
text=xhr.responseJSON.resp_msg
}
__global.showMsg(text,"error");
}
}catch (e){
}
... ...
... ... @@ -3,7 +3,7 @@
<div class="condition" >
<el-form ref=“form” style="display: flex;">
<el-form-item style="margin-right: 6px;margin-bottom: 10px;">
<el-input v-model="search.keyword" placeholder="请输入关键字"></el-input>
<el-input v-model="search.keyword" placeholder="请输入资源名称/ip/端口号"></el-input>
</el-form-item>
<el-form-item style="margin-right: 6px;margin-bottom: 10px;">
<el-select filterable clearable v-model="search.resType" placeholder="请选择资源类型">
... ... @@ -30,7 +30,7 @@
</el-row>
<el-row class="margin-bottom-50" style="margin-top: 3px">
<el-col :span="24" class="table-height">
<cm-table-page :columns="columns"
<cm-table-page v-if="resourceData.length>0" :columns="columns"
:dataList="resourceData"
:total="count"
:layout="'total, prev,pager,next,sizes, jumper'"
... ... @@ -61,4 +61,4 @@
</el-col>
</el-row>
<ChangeUsersList :show="show" :isTwoGroup="true" :isMulti="isMulti" @hideDialog="hideDialog" @savebtn="savebtn"></ChangeUsersList>
<ChangeUsersList :show="show" :isTwoGroup="isTwoGroup" :isMulti="isMulti" @hideDialog="hideDialog" @savebtn="savebtn"></ChangeUsersList>
... ...
... ... @@ -12,6 +12,8 @@ export default {
},
setup: function (props, {attrs, slots, emit}) {
const {proxy} = Vue.getCurrentInstance();
//接收从用户列表中选中的用户
let userName=Vue.ref(proxy.$route.query.username);
//变更人员弹框
let show=Vue.ref(false);
//变更人员列表是否多选
... ... @@ -56,8 +58,14 @@ export default {
align: 'center',
},
{
prop: 'admin',
label: '负责人',
prop: 'resMainAdmin',
label: '主负责人',
sortable: true,
align: 'center',
},
{
prop: 'resAuxiliaryAdmin',
label: '辅负责人',
sortable: true,
align: 'center',
},
... ... @@ -100,18 +108,17 @@ export default {
let resourceData = Vue.ref([]);
//获取列表数据
const getListData = () => {
let username=proxy.$route.query.username;
let resName=proxy.$route.query.resName;
resourceData.value=[];
loading.value = true;
//定义列表参数
let getParams = {
resType:search.value.resType,
keyword:search.value.keyword,
resName: resName,
userId: username,
keywords:search.value.keyword,
userName:userName.value,
page: search.value.page,
limit: search.value.limit
};
proxy.$http.get("/api-web/manage/resource/getAllResByUser", getParams, function (res) {
proxy.$http.post("/api-web/personnelChange/getList/resourceLeader", getParams, function (res) {
if (res && res.data) {
resourceData.value = res.data ? res.data : [];
count.value = res.count;
... ... @@ -134,7 +141,7 @@ export default {
arr.push(item.resId)
})
resIds.value=arr.join(",");//选中的值
proxy.resourceData.map((v, i) => {
/*proxy.resourceData.map((v, i) => {
v.checked = false;
});
let selectData = val;
... ... @@ -150,7 +157,7 @@ export default {
proxy.resourceData.map((v, i) => {
v.checked = false;
})
}
}*/
}
//获取资源类型数据
let getResourceTypoe=()=>{
... ... @@ -177,19 +184,22 @@ export default {
}
})
}
//批量取消负责的相关资源
//批量取消相关资源
let changeCancel = () => {
if(pitch.value.length<1){
proxy.$global.showMsg('请至少选择一项','warning');
}else{
proxy.$global.confirm("确定取消负责的相关资源?", function () {
proxy.$global.showMsg('取消成功!');
// proxy.$http.get(`/api-web/`, {resIds:resIds.value}, function (res) {
// if (res && res.data) {
// proxy.$global.showMsg('取消成功!');
// getListData()
// }
// })
proxy.$global.confirm("确定取消相关资源?", function () {
let parmas={
userName:userName.value,
resId:resIds.value
}
proxy.$http.post(`/api-web/personnelChange/remove/resourceLeader`, parmas, function (res) {
if (res && res.success) {
proxy.$global.showMsg('取消成功!');
getListData()
}
})
});
}
}
... ... @@ -206,22 +216,26 @@ export default {
//变更人员的弹框关闭后
let hideDialog =(flag)=>{
show.value=flag;
// getListData();
}
//变更人员的弹框保存后
let savebtn =(obj)=>{
show.value=false;
//obj.selectModel 选中的用户组(一个/主负责人) obj.selectModelSecond 辅负责人,都是数组
let targetUserName='';
if(obj.selectModel){
targetUserName=obj.selectModel.join(',')
}
let params={
resIds:resIds.value,
selectModel:obj.selectModel,
resId:resIds.value,
targetUserName:targetUserName,
userName:userName.value,
}
// proxy.$http.get(`/api-web/`, {}, function (res) {
// if (res && res.data) {
// proxy.$global.showMsg('变更成功!');
// getListData()
// }
// })
proxy.$http.post(`/api-web/personnelChange/update/resourceLeader`, params, function (res) {
if (res && res.success) {
proxy.$global.showMsg('变更成功!');
getListData()
}
})
}
// 挂载完
Vue.onMounted(() => {
... ... @@ -253,7 +267,7 @@ export default {
getListData,
loadTableDataList,
userName
}
}
}
\ No newline at end of file
... ...
... ... @@ -3,7 +3,7 @@
<div class="condition" >
<el-form ref=“form” style="display: flex;">
<el-form-item style="margin-right: 6px;margin-bottom: 10px;">
<el-input v-model="search.keyword" placeholder="请输入关键字"></el-input>
<el-input v-model="search.keyword" placeholder="请输入资源名称/ip/端口号"></el-input>
</el-form-item>
<el-form-item style="margin-right: 6px;margin-bottom: 10px;">
<el-select filterable clearable v-model="search.resType" placeholder="请选择资源类型">
... ... @@ -30,7 +30,7 @@
</el-row>
<el-row class="margin-bottom-50" style="margin-top: 3px">
<el-col :span="24" class="table-height">
<cm-table-page :columns="columns"
<cm-table-page v-if="resourceData.length>0" :columns="columns"
:dataList="resourceData"
:total="count"
:layout="'total, prev,pager,next,sizes, jumper'"
... ...
... ... @@ -12,6 +12,8 @@ export default {
},
setup: function (props, {attrs, slots, emit}) {
const {proxy} = Vue.getCurrentInstance();
//接收从用户列表中选中的用户
let userName=Vue.ref(proxy.$route.query.username);
//变更人员弹框
let show=Vue.ref(false);
//变更人员列表是否多选
... ... @@ -100,18 +102,17 @@ export default {
let resourceData = Vue.ref([]);
//获取列表数据
const getListData = () => {
let username=proxy.$route.query.username;
let resName=proxy.$route.query.resName;
resourceData.value=[];
loading.value = true;
//定义列表参数
let getParams = {
resType:search.value.resType,
keyword:search.value.keyword,
resName: resName,
userId: username,
keywords:search.value.keyword,
userName:userName.value,
page: search.value.page,
limit: search.value.limit
};
proxy.$http.get("/api-web/manage/resource/getAllResByUser", getParams, function (res) {
proxy.$http.post("/api-web/personnelChange/getList/resourcePer", getParams, function (res) {
if (res && res.data) {
resourceData.value = res.data ? res.data : [];
count.value = res.count;
... ... @@ -134,7 +135,7 @@ export default {
arr.push(item.resId)
})
resIds.value=arr.join(",");//选中的值
proxy.resourceData.map((v, i) => {
/*proxy.resourceData.map((v, i) => {
v.checked = false;
});
let selectData = val;
... ... @@ -150,7 +151,7 @@ export default {
proxy.resourceData.map((v, i) => {
v.checked = false;
})
}
}*/
}
//获取资源类型数据
let getResourceTypoe=()=>{
... ... @@ -183,13 +184,16 @@ export default {
proxy.$global.showMsg('请至少选择一项','warning');
}else{
proxy.$global.confirm("确定取消相关资源?", function () {
proxy.$global.showMsg('取消成功!');
// proxy.$http.get(`/api-web/`, {resIds:resIds.value}, function (res) {
// if (res && res.data) {
// proxy.$global.showMsg('取消成功!');
// getListData()
// }
// })
let parmas={
userName:userName.value,
resId:resIds.value
}
proxy.$http.post(`/api-web/personnelChange/remove/resourcePer`, parmas, function (res) {
if (res && res.success) {
proxy.$global.showMsg('取消成功!');
getListData()
}
})
});
}
}
... ... @@ -206,22 +210,26 @@ export default {
//变更人员的弹框关闭后
let hideDialog =(flag)=>{
show.value=flag;
// getListData();
}
//变更人员的弹框保存后
let savebtn =(obj)=>{
show.value=false;
//obj.selectModel 选中的用户组(一个/主负责人) obj.selectModelSecond 辅负责人,都是数组
let targetUserName='';
if(obj.selectModel){
targetUserName=obj.selectModel.join(',')
}
let params={
resIds:resIds.value,
selectModel:obj.selectModel,
resId:resIds.value,
targetUserName:targetUserName,
userName:userName.value,
}
// proxy.$http.get(`/api-web/`, {}, function (res) {
// if (res && res.data) {
// proxy.$global.showMsg('变更成功!');
// getListData()
// }
// })
proxy.$http.post(`/api-web/personnelChange/update/resourcePer`, params, function (res) {
if (res && res.success) {
proxy.$global.showMsg('变更成功!');
getListData()
}
})
}
// 挂载完
Vue.onMounted(() => {
... ... @@ -253,7 +261,7 @@ export default {
getListData,
loadTableDataList,
userName
}
}
}
\ No newline at end of file
... ...
... ... @@ -3,7 +3,7 @@
<div class="condition" >
<el-form ref=“form” style="display: flex;">
<el-form-item style="margin-right: 6px;margin-bottom: 10px;">
<el-input v-model="search.keyword" placeholder="请输入关键字"></el-input>
<el-input v-model="search.keyword" placeholder="请输入资源名称/编码/类别"></el-input>
</el-form-item>
<el-form-item style="margin-right: 6px;margin-bottom: 10px;">
<el-select filterable clearable v-model="search.resType" placeholder="请选择资源类型">
... ... @@ -45,6 +45,7 @@
:showTools="false"
:getRowKeys="'resTypeId'"
:defaultExpand="true"
@handleSelect="handleSelect"
:height="(height - 200)">
<template #default="{row,prop,column}">
<div v-if="prop == 'paramDesc'">
... ...
... ... @@ -12,6 +12,8 @@ export default {
},
setup: function (props, {attrs, slots, emit}) {
const {proxy} = Vue.getCurrentInstance();
//接收从用户列表中选中的用户
let userName=Vue.ref(proxy.$route.query.username);
//变更人员弹框
let show=Vue.ref(false);
//变更人员列表是否多选
... ... @@ -110,22 +112,17 @@ export default {
let resourceData = Vue.ref([]);
//获取列表数据
const getListData = () => {
let username=proxy.$route.query.username;
let resTypeName=proxy.$route.query.resTypeName;
//定义列表参数
let getParams = {
resType:search.value.resType,
keyword:search.value.keyword,
resTypeName: resTypeName,
userAccount: username,
// page: search.value.page,
// limit: search.value.limit
keywords:search.value.keyword,
userName: userName.value,
page: search.value.page,
limit: search.value.limit
};
proxy.$http.get("/api-web/manage/restype/listAll", getParams, function (res) {
proxy.$http.post("/api-web/personnelChange/getList/resourceTypePer", getParams, function (res) {
if (res && res.data) {
resourceData.value = handleTree(res.data, 'resTypeCode', 'parentId')
console.log("(()",resourceData.value)
count.value = res.count;
loading.value = false;
}else{
... ... @@ -183,16 +180,16 @@ export default {
search.value.limit=limit;
getListData();
}
let resIds=Vue.ref('');//选中的ids
let resType=Vue.ref('');//选中的ids
//表格全选事件
let selectionChange = (val) => {
pitch.value = val;
let arr=[];
pitch.value.map(item=>{
arr.push(item.resId)
arr.push(item.resType)
})
resIds.value=arr.join(",");//选中的值
proxy.resourceData.map((v, i) => {
resType.value=arr.join(",");//选中的值
/*proxy.resourceData.map((v, i) => {
v.checked = false;
});
let selectData = val;
... ... @@ -208,7 +205,11 @@ export default {
proxy.resourceData.map((v, i) => {
v.checked = false;
})
}
}*/
}
//勾选数据行的checked
let handleSelect=(selection)=>{
console.log("selection",selection)
}
//获取资源类型数据
let getResourceTypoe=()=>{
... ... @@ -258,13 +259,16 @@ export default {
proxy.$global.showMsg('请至少选择一项','warning');
}else{
proxy.$global.confirm("确定取消负责的相关资源?", function () {
proxy.$global.showMsg('取消成功!');
// proxy.$http.get(`/api-web/`, {resIds:resIds.value}, function (res) {
// if (res && res.data) {
// proxy.$global.showMsg('取消成功!');
// getListData()
// }
// })
let parmas={
userName:userName.value,
resType:resType.value
}
proxy.$http.post(`/api-web/personnelChange/remove/resourceTypePer`, parmas, function (res) {
if (res && res.success) {
proxy.$global.showMsg('取消成功!');
getListData()
}
})
});
}
}
... ... @@ -281,22 +285,26 @@ export default {
//变更人员的弹框关闭后
let hideDialog =(flag)=>{
show.value=flag;
// getListData();
}
//变更人员的弹框保存后
let savebtn =(obj)=>{
show.value=false;
//obj.selectModel 选中的用户组(一个/主负责人) obj.selectModelSecond 辅负责人,都是数组
let targetUserName='';
if(obj.selectModel){
targetUserName=obj.selectModel.join(',')
}
let params={
resIds:resIds.value,
selectModel:obj.selectModel,
resType:resType.value,
targetUserName:targetUserName,
userName:userName.value,
}
// proxy.$http.get(`/api-web/`, {}, function (res) {
// if (res && res.data) {
// proxy.$global.showMsg('变更成功!');
// getListData()
// }
// })
proxy.$http.post(`/api-web/personnelChange/update/resourceTypePer`, params, function (res) {
if (res && res.success) {
proxy.$global.showMsg('变更成功!');
getListData()
}
})
}
// 挂载完
Vue.onMounted(() => {
... ... @@ -331,7 +339,7 @@ export default {
getListData,
loadTableDataList,
handleSelect
}
}
}
\ No newline at end of file
... ...