member.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <template>
  2. <view class="content">
  3. <view class="title">成员管理</view>
  4. <view class="list">
  5. <uni-collapse>
  6. <uni-collapse-item
  7. v-for="member in memberList"
  8. :key="member.user_id"
  9. :title="member.User.CName"
  10. >
  11. <uni-card>
  12. <view>工号:{{ member.User.UserName }}</view>
  13. <view>联系方式:{{ member.User.Mobile }}</view>
  14. <view
  15. slot="actions"
  16. class="actions"
  17. v-if="notManager(member)"
  18. @click="deleteMember(member)"
  19. >
  20. <view>移除</view>
  21. </view>
  22. </uni-card>
  23. </uni-collapse-item>
  24. </uni-collapse>
  25. </view>
  26. </view>
  27. </template>
  28. <script>
  29. import { mapState } from "vuex";
  30. import { queryMember, deleteMember } from "@/services/project";
  31. export default {
  32. data() {
  33. return {
  34. memberList: [],
  35. };
  36. },
  37. computed: {
  38. ...mapState(["currentProject"]),
  39. },
  40. onLoad() {
  41. this.init();
  42. },
  43. methods: {
  44. async init() {
  45. let res;
  46. res = await queryMember({ project_code_id: this.currentProject.id });
  47. this.memberList = res.data;
  48. },
  49. notManager(member) {
  50. return (
  51. member.user_id != this.currentProject.author &&
  52. member.user_id != this.currentProject.LeaderId &&
  53. member.user_id != this.currentProject.wty_manager_id &&
  54. member.user_id != this.currentProject.opt_manager_id
  55. );
  56. },
  57. deleteMember(member) {
  58. uni.showModal({
  59. title: "移除成员",
  60. content: "是否确认从项目中移除该成员",
  61. confirmText: "移除",
  62. confirmColor: "#ff7875",
  63. success: async (res) => {
  64. if (res.confirm) {
  65. await deleteMember({
  66. project_code_id: this.currentProject.id,
  67. user_id: member.user_id,
  68. });
  69. uni.showToast({
  70. title: "删除成功",
  71. });
  72. setTimeout(() => {
  73. uni.hideToast();
  74. this.init();
  75. }, 1800);
  76. }
  77. },
  78. });
  79. },
  80. },
  81. };
  82. </script>
  83. <style lang="less">
  84. .content {
  85. display: flex;
  86. flex-wrap: wrap;
  87. }
  88. .title {
  89. width: 100%;
  90. padding: 0 20px 20px 20px;
  91. font: 24px bold;
  92. }
  93. .list {
  94. margin: 0 5% 20px 5%;
  95. width: 100%;
  96. }
  97. .actions {
  98. font-size: 14px;
  99. border-top: 1px solid gray;
  100. padding: 4px 10px 4px 0px;
  101. display: flex;
  102. justify-content: flex-end;
  103. }
  104. ::v-deep {
  105. .uni-collapse-item__title-text {
  106. font-size: 16px;
  107. }
  108. }
  109. </style>