<template> <view> <scroll-view scroll-y="" id="warp"> <view class="t_login_passList"> <view class="input_icon">头像</view>: <view class="input_img" @tap="upLoadAvatar"> <image :src="avatarUrl"></image> </view> </view> <view class="t_login_passList"> <view class="input_icon">姓名</view>: <input class="input_css" v-model="formData.employeeName" border="none" placeholder="请输入员工姓名"></input> </view> <view class="t_login_passList"> <view class="input_icon">手机</view>: <input class="input_css" v-model="formData.employeePhone" type="number" border="none" placeholder="手机号将自动成为登录号"></input> </view> <view class="t_login_passList1 no_center"> <view class="input_icon">角色</view>: <view class="input_css">(账号角色设定后将在下一次登陆后)</view> <view class="input_css2"> <radio-group name="radio" class="input_radio" @change="selectRole" > <label class="radio_list" v-for="(item,index) in roleLists" :key="index" > <radio color="#1B64F8FF" :value="item.id" :checked="item.checked" /> <text>{{item.name}}</text> </label> </radio-group> </view> </view> <view class="t_login_passList bor_bot"> <view class="input_icon">启用状态:</view> <view class="input_img"> <switch :checked="formData.status==1" color="#007AFF" @change="change" /> </view> </view> </scroll-view> <view class="btn_css"> <button class="btn" @tap="nextHandle">保存</button> </view> </view> </template> <script> const COS = require('@/static/cos-wx-sdk-v5'); const { urlList, https, uploadImg } = require("@/static/api"); export default { data() { return { avatarUrl: "", formData: { employeeName: "", employeePhone: "", roleId: "", status: 1, }, roleLists: [], //角色列表 id: "", }; }, onLoad(options) { const {id} = options; if (id) { this.id = id; this.getUserInfoId(); uni.setNavigationBarTitle({ title: "人员编辑", }); } }, onShow() { let roleId = uni.getStorageSync("userinfo").roleId; if(roleId==1002){ this.roleLists= [{ "id": 1001, "name": "车组人员", "intro": null, "checked":true }, { "id": 1010, "name": "外租伙伴", "intro": null, "checked":false },{ "id": 1006, "name": "业务", "intro": null, "checked":false },{ "id": 1011, "name": "兼职业务", "intro": null, "checked":false }] //角色列表 }else{ this.roleLists= [{ "id": 1001, "name": "车组人员", "intro": null, "checked":true }, { "id": 1002, "name": "调度", "intro": null, "checked":false }, { "id": 1005, "name": "管理员", "intro": null, "checked":false }, { "id": 1004, "name": "财务", "intro": null, "checked":false },{ "id": 1006, "name": "业务", "intro": null, "checked":false }, { "id": 1007, "name": "车队长", "intro": null, "checked":false }, { "id": 1008, "name": "仓管", "intro": null, "checked":false }, { "id": 1009, "name": "工地施工员", "intro": null, "checked":false }, { "id": 1010, "name": "外租伙伴", "intro": null, "checked":false }, { "id": 1011, "name": "兼职业务", "intro": null, "checked":false }] //角色列表 } }, methods: { change(e) { console.log(e.detail.value) if (e.detail.value) { this.formData.status = 1 } else { this.formData.status = -1 } }, upLoadAvatar() { const that = this; uni.chooseImage({ count: 1, // 默认9 sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有 sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有 success: res => { let imgPath = res.tempFilePaths[0]; // 压缩图片 uni.compressImage({ src: imgPath, quality: 10, success: ress => { let img = ress.tempFilePath; let Key = 'dispatching/wx/upload/avatar/'+imgPath.substr(imgPath.lastIndexOf('/') + 1); uploadImg(Key,img).then(data => { uni.showToast({ title:'上传成功', duration:1200 }); that.avatarUrl = data; }).catch(err => { uni.showToast({ title:err, icon:'none', duration:1500 }) }); } }) } }); }, // 保存 nextHandle() { let { employeeName, employeePhone, roleId } = this.formData; if (employeeName == "") { uni.showToast({ title: "员工姓名不能为空", icon: "none", }); return; } if (!/^1[3456789]\d{9}$/.test(employeePhone)) { uni.showToast({ title: "请输入正确的手机号", icon: "none", }); return; } if (roleId == "") { uni.showToast({ title: "请选择角色", icon: "none", }); return; } this.id ? this.putAddUser("put") : this.putAddUser("add"); }, // 修改、新增 人员信息 putAddUser(type) { let roleLists = this.roleLists, { employeeName, employeePhone, roleId, status } = this.formData; let roleName = roleLists.find((item) => { if (item.id == roleId) { return item; } }).name; const postData = { employeeName, employeePhone, roleName, roleId, status, avatarUrl: this.avatarUrl }; console.log(postData); if (type == "add") { https(urlList.putAddUserInfo, "POST", postData, "正在新增...") .then((data) => { uni.showToast({ title: "新增成功", icon: "none", }); uni.navigateBack(); }) .catch((err) => { uni.showToast({ title: err, icon: "none", duration: 1500, }); }); } else { postData.id = this.id; https(urlList.putAddUserInfo, "PUT", postData, "正在修改...").then((data) => { const that = this; uni.showToast({ title: "修改成功", icon: "none", duration: 1500, }); setTimeout(() => { // var pages = getCurrentPages(); // // pages.splice(pages.length-1,1) // var prevPage = pages[pages.length - 2]; //上一个页面 // var prevPage_index; // prevPage.$vm._data.peopleList.forEach((item, index) => { // if (item.id == that.id) { // prevPage_index = index; // } // }); // prevPage.$vm._data.peopleList[prevPage_index].employeeName = // employeeName; // prevPage.$vm._data.peopleList[prevPage_index].employeePhone = // employeePhone; // prevPage.$vm._data.peopleList[prevPage_index].roleName = roleName; // prevPage.$vm._data.peopleList[prevPage_index].roleId = roleId; // prevPage.$vm._data.peopleList[prevPage_index].status = status; // // prevPage.$vm._data.peopleList = that.selectList; uni.navigateBack(); //返回上一页面 }, 1500); }).catch((err) => { uni.showToast({ title: err, icon: "none", duration: 1500, }); }); } }, // 选择角色 selectRole(e) { const val = e.detail.value; this.formData.roleId = val; }, // 获取人员信息 getUserInfoId() { const _that = this; https(urlList.getemployeesInfo + "/" + _that.id, "GET", "", "").then((data) => { console.log("角色ID", data); let { employeeName, employeePhone, roleId, status, avatarUrl } = data.data; _that.formData = { employeeName, employeePhone, roleId, status, }; this.avatarUrl = avatarUrl let roles = _that.roleLists; roles = roles.map((item) => { item.checked = item.id == _that.formData.roleId?true:false; return item; }); _that.roleLists = roles; }).catch((err) => { uni.showToast({ title: err, icon: "none", duration: 1500, }); }); }, // 获取角色列表 getRoleList() { const _that = this; https(urlList.getRoleList, "GET", "", "").then((data) => { console.log('角色列表', data) let roles = data.data; let roleList = _that.roleLists; if (_that.id) { roles = roles.map((item) => { if (item.id == _that.formData.roleId) { item.checked = true; } return item; }); _that.roleLists = roles; } else { roles[0].checked = true; _that.roleLists = roles; _that.formData.roleId = roles[0].id; } }).catch((err) => { uni.showToast({ title: err, icon: "none", duration: 1500, }); }); }, }, }; </script> <style lang="scss" scoped> #warp { width: 100%; height: 92vh; display: flex; flex-direction: column; align-items: center; .t_login_passList { width: 100%; padding: 10rpx 20rpx; border-bottom: 1rpx solid #e6e6e6; display: flex; flex-direction: row; align-items: center; .input_icon { letter-spacing: 20rpx; // border: 1px solid red; margin-top: 5rpx; display: flex; align-items: center; padding-left: 10rpx; } .input_img { width: 400rpx; display: flex; // justify-content: flex-end; image { width: 80rpx; height: 80rpx; } } .input_css { width: 400rpx; height: 70rpx; } .input_css2 { width: 400rpx; } .input_radio { display: flex; flex-direction: column; .radio_list { margin-bottom: 20rpx; } } } .t_login_passList1 { width: 100%; padding: 10rpx 20rpx; border-bottom: 1rpx solid #e6e6e6; .input_icon { letter-spacing: 20rpx; // border: 1px solid red; margin-top: 5rpx; display: inline-block; align-items: center; padding-left: 10rpx; } .input_css { display: inline-block; height: 70rpx; color: #aeaeae; } .input_css2 { width: 400rpx; margin-left: 150rpx; } .input_radio { display: flex; flex-direction: column; .radio_list { margin-bottom: 20rpx; } } } .no_center { align-items: flex-start; } } .btn_css { height: 8vh; display: flex; justify-content: center; align-items: center; .btn { width: 650rpx; margin-left: 50rpx; margin-top: 30rpx; height: 80rpx; line-height: 80rpx; background-color: #1b64f8ff; color: white; margin-bottom: 48rpx; } } </style>