$(function () { $("#jqGrid").Grid({ url: '../sys/user/list', rownumWidth:60, colModel: [ {label: '用户ID', name: 'userId', index: "user_id", key: true, hidden: true}, {label: '用户名', name: 'username', width: 75}, // {label: '所属部门', name: 'deptName', width: 75}, // {label: '邮箱', name: 'email', width: 90}, {label: '手机号', name: 'mobile', width: 100}, {label: '店铺关联', name: 'brandList', width: 100,sortable:false,formatter:function (value) { let temp = [] value.forEach(function (item) { temp.push(item.brandName||item.name) }) return temp.join('、') }}, {label: '角色', name: 'roleList', width: 100,sortable:false,formatter:function (value,row,col) { let roleList = col.roleList return roleList[0]? roleList[0].roleName:'-' }}, { label: '状态', name: 'status', width: 80, formatter: function (value) { return value === 0 ? '禁用' : '正常'; } }, { label: '创建时间', name: 'createTime', index: "create_time", width: 80, formatter: function (value) { return transDate(value); } }] }); }); var setting = { data: { simpleData: { enable: true, idKey: "deptId", pIdKey: "parentId", rootPId: -1 }, key: { url: "nourl" } } }; var ztree; const validatePhoneCheck = function (rule, value, callback){ if (value === ''||!value) { callback(new Error('手机号不能为空')); } else if(!(/^1[3456789]\d{9}$/.test(value))){ callback(new Error('手机号不正确')); } else { callback(); } }; var vm = new Vue({ el: '#rrapp', data: { modal1:false, q: { username: null }, showList: true, title: null, roleList: {}, user: { status: 1, deptName: '', roleIdList: [], brandIdList: [], brandList: [] }, ruleValidate: { username: [ {required: true, message: '姓名不能为空', trigger: 'blur'} ], email: [ {required: true, message: '邮箱不能为空', trigger: 'blur'}, {type: 'email', message: '邮箱格式不正确', trigger: 'blur'} ], mobile: [ {required: true, validator: validatePhoneCheck, trigger: 'blur'} ] }, brandsList:[], brandPage:1, brandPerPage:10, brandTotal:0, brandSeleced:[], social:[], cacheData:{}, cacheDataFirst:{} }, watch:{ brandPage:function name(newVal) { this.getBrandList() } }, methods: { clickCheck:function(item,idx){ item['checked'] = !item['checked'] this.$set(this.brandsList,idx,item) }, ok: function() { let temp = [] let tempid = [] var that = this Object.keys(vm.cacheData).forEach(function(item){ that.cacheData[item].page.list.forEach(function(sub){ if (sub['checked']) { temp.push(sub) tempid.push(sub.id) } }) }) vm.user.brandList = temp vm.user.brandIdList = tempid }, cancel:function () { this.cacheData={} this.modal1 = false }, query: function () { vm.reload(); }, add: function () { vm.showList = false; vm.title = "新增(默认密码:888888)"; vm.roleList = {}; vm.user = {status: 1, roleIdList: [], brandIdList:[], deptId: '', deptName: ''}; //获取角色信息 this.getRoleList(); vm.getDept(); }, getDept: function () { //加载部门树 Ajax.request({ url: '../sys/dept/list', async: true, successCallback: function (r) { ztree = $.fn.zTree.init($("#deptTree"), setting, r.list); var node = ztree.getNodeByParam("deptId", vm.user.deptId); if (node != null) { ztree.selectNode(node); vm.user.deptName = node.name; } } }); }, pageChange:function(page){ this.brandPage = page }, getBrandList: function () { this.modal1 = true if (this.cacheData[this.brandPage]) { let temp = this.cacheData[this.brandPage] this.brandsList = temp.page.list this.brandPage = temp.page.currPage this.brandTotal = temp.page.totalCount return } let that = this Ajax.request({ url: '../brand/list?_search=false&limit='+that.brandPerPage+'&page='+that.brandPage+'&sidx=&order=asc', async: true, successCallback: function (res) { res.page.list.forEach(function (item,index){ item['checked'] = false if (that.user.brandList) { that.user.brandList.forEach(function(sub){ // item['checked'] = false if (item.id===sub.brandId) { item['checked'] = true return } }) } }) that.cacheData[res.page.currPage] = res that.brandsList = res.page.list that.brandPage = res.page.currPage that.brandTotal = res.page.totalCount } }); }, update: function () { var userId = getSelectedRow("#jqGrid"); if (userId == null) { return; } vm.showList = false; vm.title = "修改"; Ajax.request({ url: "../sys/user/info/" + userId, async: true, successCallback: function (r) { vm.user = r.user; //获取角色信息 vm.getRoleList(); vm.getDept(); } }); }, del: function () { var userIds = getSelectedRows("#jqGrid"); if (userIds == null) { return; } confirm('确定要删除选中的记录?', function () { Ajax.request({ url: "../sys/user/delete", params: JSON.stringify(userIds), contentType: "application/json", type: 'POST', successCallback: function () { alert('操作成功', function (index) { vm.reload(); }); } }); }); }, saveOrUpdate: function (event) { var url = vm.user.userId == null ? "../sys/user/save" : "../sys/user/update"; Ajax.request({ url: url, params: JSON.stringify(vm.user), contentType: "application/json", type: 'POST', successCallback: function () { alert('操作成功', function (index) { vm.reload(); }); } }); }, getRoleList: function () { Ajax.request({ url: '../sys/role/select', async: true, successCallback: function (r) { vm.roleList = r.list; } }); }, reload: function (event) { vm.showList = true; var page = $("#jqGrid").jqGrid('getGridParam', 'page'); $("#jqGrid").jqGrid('setGridParam', { postData: {'username': vm.q.username}, page: page }).trigger("reloadGrid"); vm.handleReset('formValidate'); }, deptTree: function () { openWindow({ title: "选择部门", area: ['300px', '450px'], content: jQuery("#deptLayer"), btn: ['确定', '取消'], btn1: function (index) { var node = ztree.getSelectedNodes(); //选择上级部门 vm.user.deptId = node[0].deptId; vm.user.deptName = node[0].name; layer.close(index); } }); }, handleSubmit: function (name) { handleSubmitValidate(this, name, function () { vm.saveOrUpdate() }); }, handleReset: function (name) { handleResetForm(this, name); this.cacheData = {} this.user= { status: 1, deptName: '', roleIdList: [], brandIdList: [], brandList: [] } } } });