user_manager.html 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. {% extends "info/layout.html" %}
  2. {% load static %}
  3. {% block script %}
  4. {% comment %}
  5. <script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script>
  6. <script src="https://cdn.staticfile.org/react-dom/16.4.0/umd/react-dom.development.js"></script>
  7. <script crossorigin src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
  8. <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
  9. <script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>
  10. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  11. <script src="https://cdn.staticfile.org/jquery/2.1.4/jquery.min.js"></script>
  12. <script src="https://cdn.bootcdn.net/ajax/libs/qs/6.10.1/qs.js"></script> {% endcomment %}
  13. <script src="{% static 'axios.min.js' %}"></script>
  14. <script src="{% static 'qs.js' %}"></script>
  15. <script src="{% static 'react.production.min.js' %}"></script>
  16. <script src="{% static 'react-dom.production.min.js' %}"></script>
  17. <script src="{% static 'babel.min.js' %}"></script>
  18. {% endblock script %}
  19. {% block body %}
  20. {% verbatim %}
  21. <div id="main" class="container-fluid">
  22. <div id="message"></div>
  23. <div id="userTable"></div>
  24. <div id="button-area">
  25. <a href="/home/">返回</a>
  26. </div>
  27. </div>
  28. <script type="text/babel">
  29. var users = []
  30. class UserTable2 extends React.Component {
  31. constructor(props) {
  32. super(props);
  33. this.message = props.message
  34. this.state = { users: [] }
  35. // this.getUsers()
  36. }
  37. componentDidMount() {
  38. this.getUsers()
  39. }
  40. getUsers() {
  41. // var that = this
  42. axios
  43. .get("/home/company/api/user/list/")
  44. .then(function (response) {
  45. if (response.data.code == 0) {
  46. this.setState({ users: response.data.content })
  47. } else {
  48. alert("服务器连接错误")
  49. }
  50. }.bind(this))
  51. .catch(function (error) {
  52. console.log(error)
  53. })
  54. }
  55. isAdmin(value) {
  56. if (value == 1) {
  57. return true
  58. console.log(1)
  59. } else {
  60. return false
  61. console.log(0)
  62. }
  63. }
  64. adminChange(e, user_id, user_name) {
  65. console.log("checked status", e.currentTarget.getAttribute("checked"))
  66. if (e.currentTarget.getAttribute("checked") == null) {
  67. var admin_status_target = true
  68. }
  69. if (e.currentTarget.getAttribute("checked") == "") {
  70. var admin_status_target = false
  71. }
  72. var that = this
  73. var result = confirm("确认修改" + user_name + "管理员权限?")
  74. if (result == true) {
  75. axios({
  76. method: "POST",
  77. headers: { 'content-type': 'application/x-www-form-urlencoded' },
  78. data: Qs.stringify({
  79. target_user_id: user_id,
  80. new_admin_status: admin_status_target
  81. }),
  82. url: "/home/company/api/user/admin/change/"
  83. })
  84. .then(function (response) {
  85. if (response.data.code == 0) {
  86. alert("修改成功")
  87. } else {
  88. alert(response.data.content)
  89. console.log(response.data.code)
  90. }
  91. that.getUsers()
  92. })
  93. .catch(function (error) {
  94. console.log(error)
  95. })
  96. }
  97. }
  98. deleteUser(user_id, user_name) {
  99. var that = this
  100. var result = confirm("确认删除用户" + user_name + "?")
  101. if (result == true) {
  102. // $.post("/home/company/api/user/delete/",
  103. // {
  104. // delete_user_id: user_id
  105. // },
  106. // function (response) {
  107. // console.log(response)
  108. // if (response.code == 0) {
  109. // alert("删除成功")
  110. // that.getUsers()
  111. // } else {
  112. // alert("服务器连接错误")
  113. // }
  114. // }
  115. // )
  116. axios({
  117. method: "POST",
  118. headers: { 'content-type': 'application/x-www-form-urlencoded' },
  119. data: Qs.stringify({ delete_user_id: user_id }),
  120. url: "/home/company/api/user/delete/"
  121. }).then(function (response) {
  122. if (response.data.code == 0) {
  123. alert("删除成功")
  124. that.getUsers()
  125. } else {
  126. alert("服务器连接错误")
  127. }
  128. })
  129. .catch(function (error) {
  130. console.log(error)
  131. })
  132. }
  133. }
  134. render() {
  135. return (
  136. <div>
  137. <table className="table table-striped">
  138. <thead>
  139. <tr>
  140. <th>姓名</th>
  141. <th>手机号码</th>
  142. <th>电子邮件</th>
  143. <th>职位</th>
  144. <th>是否管理员</th>
  145. <th>删除</th>
  146. </tr>
  147. </thead>
  148. <tbody>
  149. {this.state.users.map((row, index) =>
  150. <tr key={index}>
  151. <td>{row.name}</td>
  152. <td>{row.mobile}</td>
  153. <td>{row.email}</td>
  154. <td>{row.position}</td>
  155. <td>
  156. <div className="form-check form-switch">
  157. <input name="isAdmin" className="form-check-input" type="checkbox" role="switch" id="flexSwitchCheckDefault" checked={this.isAdmin(row.admin)} onChange={(e) => this.adminChange(e, row.id, row.name)} />
  158. <label className="form-check-label" htmlFor="flexSwitchCheckDefault"></label>
  159. </div>
  160. </td>
  161. <td>{this.isAdmin(row.admin) ? "" : <div onClick={() => this.deleteUser(row.id, row.name)}>删除</div>}</td>
  162. </tr>
  163. )}
  164. </tbody>
  165. </table>
  166. </div>
  167. )
  168. }
  169. }
  170. // ReactDOM.render(
  171. // <h1>Hello, world!</h1>,
  172. // document.getElementById('message'));
  173. ReactDOM.render(
  174. <UserTable2 message={message} />,
  175. document.getElementById('userTable'))
  176. </script>
  177. <style type="text/css">
  178. #button-area {
  179. display: flex;
  180. justify-content: space-around;
  181. margin-top: 10px;
  182. }
  183. </style>
  184. {% endverbatim %}
  185. {% endblock body %}