userMobiel.vue 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. <template>
  2. <el-dialog
  3. :title="modalTitle"
  4. :visible.sync="modalVisible"
  5. :width="formLabelWidth"
  6. @close="handleCancel">
  7. <div class="userMobile">
  8. <el-form label-width="80px" :model="form" :rules="rules" ref="from">
  9. <el-form-item label="账号" prop="name">
  10. <el-input v-model="form.name" :disabled="limit.isRead"></el-input>
  11. </el-form-item>
  12. <el-form-item label="登录密码" prop="pwd" v-if="limit.isAdd">
  13. <el-input v-model="form.pwd" show-password></el-input>
  14. <span class="hight">默认密码为:123456</span>
  15. </el-form-item>
  16. <el-form-item label="角色" prop="roleIds">
  17. <el-select
  18. v-model="form.roleIds"
  19. placeholder="请选择"
  20. @change="forceUpdate"
  21. :disabled="limit.isRead">
  22. <el-option
  23. v-for="item in rolesList"
  24. :key="item.id"
  25. :label="item.name"
  26. :value="item.id"
  27. ></el-option>
  28. </el-select>
  29. </el-form-item>
  30. <el-form-item label="组织机构">
  31. <el-cascader
  32. ref="refSubCat"
  33. v-model="form.branchId"
  34. :options="branchList"
  35. :props="optionProps"
  36. :clearable="true"
  37. :disabled="limit.isRead"></el-cascader>
  38. </el-form-item>
  39. <el-form-item label="姓名">
  40. <el-input v-model="form.realName" :disabled="limit.isRead"></el-input>
  41. </el-form-item>
  42. <el-form-item label="性别" prop="sex">
  43. <el-radio v-model="form.sex" label="男" :disabled="limit.isRead">男</el-radio>
  44. <el-radio v-model="form.sex" label="女" :disabled="limit.isRead">女</el-radio>
  45. </el-form-item>
  46. <el-form-item label="手机号码" prop="phone">
  47. <el-input v-model="form.phone" :disabled="limit.isRead"></el-input>
  48. </el-form-item>
  49. </el-form>
  50. </div>
  51. <div slot="footer" class="dialog-footer">
  52. <el-button @click="handleCancel">取 消</el-button>
  53. <el-button type="primary" @click="submit" v-if="!limit.isRead">确 定</el-button>
  54. </div>
  55. </el-dialog>
  56. </template>
  57. <script>
  58. import {globalReg} from '@/api/CONST'
  59. export default {
  60. name: 'userMobiel',
  61. props: {
  62. visible: {
  63. type: Boolean,
  64. default: false
  65. },
  66. title: {
  67. type: String,
  68. default: 'title'
  69. },
  70. action: {
  71. type: String,
  72. default: 'add'
  73. },
  74. selectRow:{
  75. type:Object,
  76. default:{}
  77. }
  78. },
  79. watch: {
  80. visible(newVal, oldVal) {
  81. this.modalVisible = newVal;
  82. },
  83. title(newVal, oldVal) {
  84. this.modalTitle = newVal;
  85. },
  86. action(newVal, oldVal) {
  87. this.modalAction = newVal;
  88. },
  89. selectRow(newVal,oldVal){
  90. this.modalSelectRow = newVal
  91. }
  92. },
  93. data() {
  94. return {
  95. modalTitle: this.title,
  96. modalVisible: this.visible,
  97. modalAction: this.action,
  98. modalSelectRow:this.selectRow,
  99. formLabelWidth: '820px',
  100. limit:{
  101. isRead:false,
  102. isAdd:false
  103. },
  104. optionProps: {
  105. expandTrigger:'hover',
  106. checkStrictly: true,
  107. value: 'id',
  108. label: 'branchName',
  109. children: 'children'
  110. },
  111. rolesList: [],
  112. branchList: [],
  113. rules:{
  114. name:[
  115. { required: true, message: '账号名称不能为空!', trigger: 'blur' }
  116. ],
  117. roleIds:[
  118. { required: true, message: '角色不能为空!', trigger: 'blur' }
  119. ],
  120. phone:[
  121. { validator:this.validateTel, trigger: 'blur' }
  122. ],
  123. pwd:[
  124. { required: true, message: '密码不能为空!', trigger: 'blur' }
  125. ],
  126. sex:[
  127. { required: true, message: '性别不能为空!', trigger: 'blur' }
  128. ]
  129. },
  130. form: {
  131. pwd:123456 //默认密码123456
  132. }
  133. };
  134. },
  135. created() {
  136. switch(this.modalAction) {
  137. case 'add':
  138. this.limit.isAdd = true
  139. break;
  140. case 'edit':
  141. this.getDetail(this.modalSelectRow.userId)
  142. break;
  143. case 'view':
  144. this.getDetail(this.modalSelectRow.userId)
  145. this.limit.isRead = true
  146. break;
  147. default:
  148. break;
  149. }
  150. this.initPage()
  151. },
  152. methods: {
  153. forceUpdate(){
  154. this.$forceUpdate()
  155. },
  156. //初始化角色和组织机构
  157. initPage(){
  158. this.getRoles();
  159. this.getBranchid();
  160. },
  161. //获取用户详情
  162. getDetail(id){
  163. let params = {
  164. id:id
  165. }
  166. this.$port.viewUser(params)
  167. .then(res => {
  168. console.log(res)
  169. this.form = res
  170. this.form.roleIds = res.roles
  171. })
  172. },
  173. getRoles() {
  174. this.$port.getRolesList()
  175. .then(res => {
  176. this.rolesList = res.list;
  177. });
  178. },
  179. getBranchid() {
  180. this.$port.getBranchidList()
  181. .then(res => {
  182. this.branchList = this.getTreeData(res.list);
  183. });
  184. },
  185. getTreeData(data) {
  186. for (let i = 0; i < data.length; i++) {
  187. if (data[i].children.length < 1) {
  188. data[i].children = undefined;
  189. } else {
  190. this.getTreeData(data[i].children);
  191. }
  192. }
  193. return data;
  194. },
  195. submit(){
  196. switch(this.modalAction){
  197. case 'add':
  198. this.add()
  199. break;
  200. case 'edit':
  201. this.update()
  202. break;
  203. default:
  204. break;
  205. }
  206. },
  207. add(){
  208. this.$refs.from.validate((valid) => {
  209. if (valid) {
  210. let params = this.form
  211. params["branchId"] = params["branchId"] === undefined ? '' : params["branchId"].slice(-1).toString()
  212. this.$port.addUser(params).then(res => {
  213. if(!res.code){
  214. this.modalVisible = false
  215. this.$emit('closeModal', true);
  216. }
  217. })
  218. }else {
  219. return false;
  220. }
  221. })
  222. },
  223. update(){
  224. this.$refs.from.validate((valid) => {
  225. if (valid) {
  226. let params = this.form
  227. params["branchId"] = Array.isArray(params["branchId"]) ? params["branchId"].slice(-1).toString() : params["branchId"]
  228. params.userId = params.id
  229. delete params.roles
  230. this.$port.updateUser(params).then(res => {
  231. if(!res.code){
  232. this.modalVisible = false
  233. this.$emit('closeModal', true);
  234. }
  235. })
  236. }else {
  237. return false;
  238. }
  239. })
  240. },
  241. validateTel(rule, value, callback){
  242. if (value === undefined || value === '' || value === null) {
  243. return callback()
  244. // new Error('请输入11位手机号,座机以 - 隔开')
  245. }
  246. let str = value.trim()
  247. if (globalReg.regPhone.test(str) || globalReg.regTel.test(str)) {
  248. callback()
  249. } else {
  250. callback(new Error('请输入11位手机号,座机以 - 隔开'))
  251. }
  252. callback()
  253. },
  254. handleCancel() {
  255. this.$emit('closeModal', false);
  256. }
  257. }
  258. };
  259. </script>
  260. <style scoped lang="less"></style>