customer-admin-add.html 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>添加管理员</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <meta name="viewport"
  7. content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
  8. <!-- 所有的 css & js 资源 -->
  9. <link rel="stylesheet" href="../../static/kj/element-ui/theme-chalk/index.css">
  10. <link rel="stylesheet" href="../../static/sa.css">
  11. <script src="../../static/kj/vue.min.js"></script>
  12. <script src="../../static/kj/element-ui/index.js"></script>
  13. <script src="https://unpkg.com/http-vue-loader@1.4.2/src/httpVueLoader.js"></script>
  14. <script src="../../static/kj/jquery.min.js"></script>
  15. <script src="../../static/kj/layer/layer.js"></script>
  16. <script src="../../static/sa.js"></script>
  17. <script src="../../static/kj/upload-util.js"></script>
  18. <style>
  19. .error {
  20. color: red;
  21. font-size: 12px;
  22. margin-left: 100px
  23. }
  24. </style>
  25. </head>
  26. <body>
  27. <div class="vue-box" style="display: none;" :style="'display: block;'">
  28. <!-- 参数栏 -->
  29. <div class="c-panel">
  30. <el-form>
  31. <!-- 防止密码框被填充 -->
  32. <div style="height: 0px; overflow: hidden;">
  33. <el-input></el-input>
  34. <el-input type="password"></el-input>
  35. </div>
  36. <!-- 表单 -->
  37. <sa-item type="text" name="用户名" v-model="m.name" placeholder="请输入用户名" br></sa-item>
  38. <sa-item type="password" name="密码" v-model="m.password" placeholder="请输入密码" @input="newPwdChange"
  39. br></sa-item>
  40. <div v-if="pwdError" class="error">{{pwdError}}</div>
  41. <sa-item type="password" name="再输一次" v-model="m.againPassword" @input="newPwd2Change"
  42. placeholder="请再输一次密码" br></sa-item>
  43. <div v-if="newPwd2Error" class="error">{{newPwd2Error}}</div>
  44. <div class="c-item">
  45. <label class="c-label"><span style="color: red;">*</span>角色:</label>
  46. <el-select v-model="m.roleIds" multiple>
  47. <el-option label="请选择" :value="0" disabled></el-option>
  48. <el-option v-for="role in roleList" :key="role.id" :label="role.name" :value="role.id">
  49. </el-option>
  50. </el-select>
  51. </div>
  52. <sa-item name="" br>
  53. <el-button type="primary" icon="el-icon-plus" @click="ok()">保存</el-button>
  54. </sa-item>
  55. </el-form>
  56. </div>
  57. </div>
  58. <script>
  59. const numStr = "123456789";
  60. const numStrDesc = "987654321";
  61. const varStr = "abcdefghijklmnopkrstuvwxyz"
  62. const varStrDesc = "zyxwvutsrkpomnlkjihgfedcba"
  63. var app = new Vue({
  64. components: {
  65. "sa-item": httpVueLoader('../../sa-frame/com/sa-item.vue')
  66. },
  67. el: '.vue-box',
  68. data: {
  69. sa: sa, // 超级对象
  70. m: {
  71. id: 0,
  72. customerId: sa.p('customerId', ''),
  73. name: '',
  74. avatar: '',
  75. password: '',
  76. againPassword: '',
  77. roleIds: []
  78. },
  79. pwdError: '',
  80. newPwd2Error: '',
  81. roleList: []
  82. },
  83. methods: {
  84. // 修改
  85. ok: function() {
  86. // 表单校验
  87. let m = this.m;
  88. sa.checkNull(m.name, '请输入用户名');
  89. sa.checkNull(m.password, '请输入密码');
  90. if (m.password !== m.againPassword) {
  91. sa.error('两次输入密码不一致');
  92. return;
  93. }
  94. if (this.pwdError || this.newPwd2Error) {
  95. return;
  96. }
  97. m.roleId = m.roleIds.join(',')
  98. // 添加
  99. sa.ajax('/admin/addPartnerAdmin', m, function(res) {
  100. sa.alert('增加成功', this.clean);
  101. }.bind(this));
  102. },
  103. clean() {
  104. parent.app.f5(); // 刷新父页面列表
  105. sa.closeCurrIframe(); // 关闭本页
  106. },
  107. newPwdChange(v) {
  108. let len = v.length;
  109. this.pwdError = '';
  110. if (!this.checkStong(v)) {
  111. this.pwdError = '密码长度8-16位,至少包含一个数字、一个大写字母、一个小写字母以及!@#$%^&*?之一'
  112. return;
  113. }
  114. if (len >= 3) {
  115. let s = v.toLowerCase();
  116. for (let i = 0; i < len - 2; i++) {
  117. let charStr = s.substring(i, i + 3);
  118. if (this.checkStr(charStr)) {
  119. this.pwdError = '密码不应该采用连续升序或者连续降序'
  120. return;
  121. }
  122. }
  123. }
  124. },
  125. newPwd2Change(v) {
  126. let len = v.length;
  127. this.newPwd2Error = '';
  128. if (this.m.password != v) {
  129. this.newPwd2Error = '两次输入密码不一致';
  130. return;
  131. }
  132. },
  133. checkStr(charStr) {
  134. return numStr.indexOf(charStr) != -1 || varStr.indexOf(charStr) != -1 || numStrDesc.indexOf(
  135. charStr) != -1 || varStrDesc.indexOf(charStr) != -1;
  136. },
  137. checkStong(v) {
  138. let pattern = /^.*(?=.{8,16})(?=.*\d)(?=.*[A-Z]{1,})(?=.*[a-z]{1,})(?=.*[!@#$%^&*?\(\)]).*$/;
  139. return pattern.test(v);
  140. },
  141. },
  142. mounted: function() {
  143. // 加载角色
  144. sa.ajax('/role/getCustomerRoleList', {
  145. customerId: this.m.customerId
  146. }, function(res) {
  147. this.roleList = res.data; // 数据
  148. }.bind(this), {
  149. msg: null
  150. });
  151. }
  152. })
  153. </script>
  154. </body>
  155. </html>